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