繁体   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