如何使用 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。例如:
例子
cpulimit -l 50 COMMAND
否则,代码中可能存在导致此问题需要修复的错误(例如无限循环)。
我遇到了一个问题,我是 运行 在 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。例如:
例子
cpulimit -l 50 COMMAND
否则,代码中可能存在导致此问题需要修复的错误(例如无限循环)。