【发布时间】:2018-03-09 04:10:52
【问题描述】:
如何在 AWS c5.18xlarge 实例上使用 .net 应用程序中的所有虚拟处理器?目前,该应用程序在 72 个虚拟处理器中占 36 个 (50%)。
在 AWS 上,我启动了一个 c5.18xlarge 实例,宣传有 72 个虚拟处理器。
- 当我运行 .NET 应用程序时,任务管理器显示最大负载为 50%。
- 当我查询 Environment.ProcessorCount 时,它返回 36。
- 当我打开“开始”>“系统信息”>“系统摘要”时,我可以看到“处理器:Intel(R) Xeon(R) Platinum 8124M ... 18 核,36 个逻辑处理器”的 2 个条目。
- 但是,当我运行 2 个单独的 .net 应用程序时,我实现了 100% 的负载。
- 最初我认为它可能是默认任务调度程序中的最大值,但即使我显式创建 72 个线程,它仍然会达到 50%。
示例应用1:
Parallel.For(0, 1000, i =>
{
var w = new Stopwatch();
w.Start();
Console.Write("#");
while (w.ElapsedMilliseconds < 1000);
});
示例 2:
for (var i = 0; i < 72; i++)
{
new System.Threading.Thread(() =>
{
var w = new Stopwatch();
w.Start();
Console.Write("#");
while (w.ElapsedMilliseconds < 5000);
}).Start();
}
我正在使用 Roslyn / C# 交互。
我找到的最匹配的文章没有帮助..
【问题讨论】:
标签: c# amazon-ec2 concurrency task-parallel-library