.net 多核进程机器上奇怪的负载平衡
我正在分析一些.net桌面应用程序。我发现了以下代码:.net 多核进程机器上奇怪的负载平衡,.net,load-balancing,multicore,.net,Load Balancing,Multicore,我正在分析一些.net桌面应用程序。我发现了以下代码: if (System.Environment.ProcessorCount > 1) { Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.High; Process.GetCurrentProcess().ProcessorAffinity = new IntPtr(2); } else { Process.GetCurrentP
if (System.Environment.ProcessorCount > 1)
{
Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.High;
Process.GetCurrentProcess().ProcessorAffinity = new IntPtr(2);
}
else
{
Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.AboveNormal;
}
Process.GetCurrentProcess().PriorityBoostEnabled = true;
我已在具有多核4处理器的机器上启动了此应用程序:
正如我们可以看到的,应用程序只加载第二个核心see代码,但同时我不能在我的计算机上做任何事情,即使有3个核心处于空闲状态
发生了什么事??
使用特定的核心运行应用程序有意义吗
增加
还有其他应用程序2可以保留rest处理器时间。它具有高优先级,我无法更改它的设置。因此,这个应用程序应该与那个应用程序竞争。您的应用程序有主窗口吗?它在前台吗?如果是,难怪PriorityBoostEnabled=true会使应用程序的优先级更高。应用程序是否有主窗口?它在前台吗?如果是,难怪PriorityBoostEnabled=true会使应用程序的优先级更高。我不知道您观察到的问题。但一般来说,计算密集型线程/程序应该以正常或较低的优先级运行,而不能以较高的优先级运行。高优先级是指那些需要定期/低延迟运行的便宜的东西。你的程序在做什么?访问任何内存、磁盘或其他IO?处理器/内核不是唯一的共享资源。除非由于其他应用程序要求太高而绝对必要,否则不建议使用“更高”的优先级。在不增加优先级的情况下重试;你的系统应该更灵敏。如果没有,其他东西正在占用您的资源。@CodeInChaos还有其他应用程序2可以占用剩余的处理器时间。它具有高优先级,我无法更改它的设置。所以这个应用程序1应该与那个应用程序竞争。我不知道您观察到的问题。但一般来说,计算密集型线程/程序应该以正常或较低的优先级运行,而不能以较高的优先级运行。高优先级是指那些需要定期/低延迟运行的便宜的东西。你的程序在做什么?访问任何内存、磁盘或其他IO?处理器/内核不是唯一的共享资源。除非由于其他应用程序要求太高而绝对必要,否则不建议使用“更高”的优先级。在不增加优先级的情况下重试;你的系统应该更灵敏。如果没有,其他东西正在占用您的资源。@CodeInChaos还有其他应用程序2可以占用剩余的处理器时间。它具有高优先级,我无法更改它的设置。所以这个应用程序1应该和那个应用程序竞争。是的,应用程序有主窗口。这是一个富UI的网格客户端,多线程任务…是的,应用程序有主窗口。它是一个富UI的网格客户端,多线程任务。。。