簡體   English   中英

在服務器上強制100%使用CPU

[英]Force 100% CPU usage on server

我有一個C#ASP.NET應用程序,它可以運行一些冗長的仿真,並且可以並行執行。 像這樣

    static void Main(string[] args)
    {
        var myArray = new[] {450, 586, 879, 457, 657, 852, 407, ... };

        myArray.AsParallel().ForAll(DoStuff);
    }

    static void DoStuff(int number)
    {
        //do stuff
    }

在本地以及我的大多數服務器(Amazon EC2實例)上運行時,執行此代碼將占用100%的CPU。 這就是我要的。 我需要這些大型計算盡快完成

我的一台服務器是C3.8XLARGE
英特爾至強E5-2680 v2(Ivy Bridge)處理器
vCPU:32
記憶(GiB):60

在此服務器上,CPU利用率永遠不會超過60%,並且運行非常緩慢。

是什么導致僅在此服務器上發生這種情況? 我該如何排除故障?

問題可能出在“ ForAll”方法及其擴展方式上。

要擁有100%的CPU,每個內核應該有1個線程來做一些非常繁重的事情。

TPL在內部創建任務,並具有默認的TaskScheduler類來處理請求並將其委派給線程池。 也許那里有些滯后。

我會創建另一種手動創建線程或任務的方法(每個內核1個)。 如果您仍然沒有獲得100%的CPU,我認為服務器故障是個好主意。 可能與物理/虛擬機有關或服務器中的某些限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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