如何使用 100% CPU 修复单声道?

How to fix mono using 100% CPU?

我遇到了一个问题,我是 运行 在 SLES 机器上使用 mono 3.0.3 的后台进程,在使用 top 时我发现它正在使用 100% CPU。我搜索并尝试了以下可能的解决方案:

1) 将 MONO_THREADS_PER_CPU 环境变量设置为 1000,即

export MONO_THREADS_PER_CPU=1000

这没有用。根据 this thread,我尝试使用 300,但这也没有用。

2) 根据 this Whosebug post,在使用单声道执行的程序中使用定时器可能会导致高 CPU 负载,但是我制作了一个非常简单的测试程序,只有一个无限循环和 运行 它...而且单声道仍然有 100% CPU 使用率。

这是我用来测试是否仅仅是因为使用了定时器的程序:

    static void Main(string[] args)
    {
        while(true)
        {
            //Console.WriteLine("Stayin alive.");
        }
    }

3) 我认为这可能是 mono 3.0.3 中的问题,所以我升级到 3.6.0,这显然是为 SLES 11.3 推荐的最新版本。单声道仍然占据 99-100% CPU.

所以我想知道发生了什么,我该如何解决这个问题。非常感谢任何帮助。

需要在 linux 级别设置限制 CPU。例如:

https://unix.stackexchange.com/questions/151883/limiting-processes-to-not-exceed-more-than-10-of-cpu-usage

例子

cpulimit -l 50 COMMAND

否则,代码中可能存在导致此问题需要修复的错误(例如无限循环)。