我正在分析一些.net桌面應用程序。我發現,代碼:多核過程機器上的奇怪負載平衡
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)處理器:
正如我們看到的應用程序只加載第二核心(見代碼),但同時我也無法在我的電腦上做任何事情,即使3核心處於閒置狀態。
什麼是happing? 運行使用特定內核的應用程序是否有意義?
ADDED
有其他的應用(2),可容納其餘的處理器時間。它工作的優先級高,我不能改變它的設置。所以這個應用程序應該與那個應用程序競爭。
我不知道你觀察到的問題。但是一般來說,計算密集的線程/程序應該以正常或更低的優先級運行,並且永遠不會處於更高的優先級。高度優先考慮的是那些需要定期運行/低延遲的廉價產品。 – CodesInChaos 2011-03-18 13:39:38
你的程序在做什麼?訪問任何內存,磁盤或其他IO?處理器/內核不是唯一的共享資源。 – Justin 2011-03-18 13:41:33
從不建議優先級「更高」,除非絕對必要,因爲其他應用程序要求過高。沒有提高優先級再試一次;那麼你的系統應該更加敏感。如果沒有,其他的東西正在佔用你的資源。 – pyrocumulus 2011-03-18 13:42:59