【发布时间】:2011-12-13 09:26:01
【问题描述】:
(这与我通常问的基本编程问题无关!)
我们有一个有趣的问题。我们有一个多线程的非可视化服务器应用程序(每个进程运行 10-20 个工作线程),它使用大量 CPU。这是设计使然。
我们无法在开发人员系统上分析此代码的真实工作负载。工作量是高度(非常高度)多样化的。为了优化此代码,我们需要能够让生产位记录哪些工作作业占用了多少 CPU。
我们当前的实现使用 System.Diagnostics.ProcessThread.TotalProcessorTime 进行测量,但在 .NET v4 中并不能保证逻辑 .NET 线程与 ProcessThread 的亲和性,因此我们无法确定我们正在测量的究竟是什么.
我们可以做些什么来衡量每个线程/每个函数的 CPU 使用率?
我们听说线程的备用库是一种方法,有什么建议吗?
【问题讨论】:
-
您能否使用生产系统重现此服务器的工作负载,也许是在非工作时间?在这种情况下,您应该使用附加到生产系统的分析器,而不是尝试创建自己的轮子。
-
约翰——如果可以的话,我们会的!我们真的做不到。我们需要在生产过程中进行测量。
-
在试验设置之后,也许您仍然可以使用分析器。