【发布时间】:2014-08-07 04:14:13
【问题描述】:
我有一个 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。这就是我要的。我需要尽快完成这些大型计算
我的 1 个服务器是 C3.8XLARGE
英特尔至强 E5-2680 v2(常春藤桥)处理器
vCPU:32
内存(GiB):60
在这台服务器上,CPU 利用率从不超过 60%,而且运行非常缓慢。
什么可能导致这种情况仅在此服务器上发生?如何解决问题?
【问题讨论】:
-
听起来这个问题更适合serverfault.com
-
@p.s.w.g "Server Fault 是一个面向专业系统和网络管理员的问答网站"。这似乎与管理无关,它与编程直接相关。 Stack Overflow 对我来说似乎很好。
-
60% 并不意味着它的处理速度较慢。也许 XEON 比您的其他服务器快得多,以至于 CPU 不再是瓶颈。这要么意味着实际处理时间更快,要么其他硬件组件会造成瓶颈。
-
当您正在考虑将系统资源分配给正在运行的应用程序时,这似乎是服务器管理问题。
-
不,这(还)不是Server Fault 的问题。你需要先做很多很多的调试。我已投票决定重新打开它。
标签: c# asp.net amazon-ec2 parallel-processing