【问题标题】:Is there any way to measure how the work is being spread among the cores?有什么方法可以衡量工作在核心之间的分布情况吗?
【发布时间】:2025-11-29 19:30:01
【问题描述】:

我想知道,是否有任何可靠的方法可以查看(或测量)我的应用程序的工作分配到服务器内核的情况?想到的唯一(非常不科学的)选项是:

  1. “观察”任务管理器中的 CPU 图表
  2. 让应用在每项工作完成后不断向控制台写入 Thread.CurrentThread.ManagedThreadId

肯定有更好的选择吗?

背景: 我的应用程序监听传入的数据包,做一些内存工作,并将内容写入数据库。 我的目标平台是具有四个内核的 Windows Server 机器。我的应用程序的第一个版本显然大量使用了一个内核,而其他三个大部分都处于空闲状态。我使用Task.Factory.StartNew() 部署了第二个版本,试图在每次收到数据包时在其他内核之间分配工作。现在看起来所有内核都比我的第一个应用程序中的单内核忙。

【问题讨论】:

标签: c# .net performance parallel-processing task-parallel-library


【解决方案1】:

并发可视化工具使您能够查看您的 多线程应用程序与自身、硬件、 操作系统和计算机上的其他进程。这些观点 提供显示时间的图形、表格和文本数据 程序中的线程与系统之间的关系 整个。

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

【讨论】:

    最近更新 更多