簡體   English   中英

處理器關聯組C#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM