代码之家  ›  专栏  ›  技术社区  ›  Mau

查找.NET多线程瓶颈

  •  3
  • Mau  · 技术社区  · 14 年前

    我有一个.NET应用程序并行运行一系列模拟。它在做一个参数扫描,所以每个参数都有自己的 Parallel.Foreach 循环。我通常将最大并行度设置为除一个循环外的所有循环中的一个,以降低内存需求,因为每个参数的值都可能比我可用的内核多(4)。

    应用程序完全受CPU限制,并且只在最后执行I/O,以写出结果。我在数据结构周围只有一个锁来捕获结果,但是很少访问(每隔几秒钟访问一次)。无论我将并行性推进多远(通过控制循环上的最大并行性),我总是得到大约50%的平均CPU使用率(大约2个内核)。

    你知道怎么进行调查吗?

    谢谢。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Achim    14 年前

    http://msdn.microsoft.com/en-us/library/ms229357.aspx

    我也遇到过类似的问题,使用gcServer可以将cpu(8核)推到极限。