[英]processor affinity group C#
我正在使用具有72個核心的Windows Server 2016。 我看到有2組處理器。 我的.net應用將使用一個或其他組。 我需要能夠強制我的應用使用我選擇的網上論壇。 我在下面看到一個代碼示例,但無法使其正常工作。 我可能傳遞了錯誤的變量。 我希望應用程序選擇組1和所有處理器,然后選擇組2和所有處理器。
我的問題是如何強制我的.net應用程序使用組1或組2? 我不確定下面的鏈接是否會工作。
https://gist.github.com/alexandrnikitin/babfa4781c68f1664d4a81339fe3a0aa
我確實嘗試將其添加到我的配置中,但該應用僅使用組0,但我確實顯示了此代碼的所有內核。 我知道一種選擇是去BIOS並選擇展平,但是我不確定這是做事情的正確方法。
<Thread_UseAllCpuGroups enabled="true"/>
<GCCpuGroup enabled="true"/>
<gcServer enabled="true"/>
發布的示例僅將當前線程設置為CPU處理器組。 但是您想為進程的所有線程設置它。 您需要為您的流程調用SetProcessAffinityMask。
不需要PInvoke到SetProcessAffinityMask,因為Process類已經具有屬性ProcessorAffinity ,可以直接設置它。
class Program
{
static void SetProcessAffinity(ulong groupMask)
{
Process.GetCurrentProcess().ProcessorAffinity = new IntPtr((long)groupMask);
}
static void Main(string[] args)
{
SetProcessAffinity(1); // group 0
// binary literals are a C# 7 feature for which you need VS 2017 or later.
SetProcessAffinity(0b11); // Both groups 0 and 1
SetProcessAffinity(0b1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111); // for all cpu groups all 64 bits enabled
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.