
我们有一个有趣的问题.我们有一个多线程非可视服务器应用程序(每个进程运行10-20个工作线程),它使用了大量的cpu.这是设计的.
我们无法在开发人员系统上分析此代码的实际工作负载.工作量高度(非常高)杂色.为了优化此代码,我们需要能够让生产位记录哪些工作程序占用多少cpu.
我们当前的实现使用System.Diagnostics.Processthread.TotalProcessorTime来测量,但是在.NET v4中并不保证逻辑.NET线程与Processthread的亲和性,因此我们无法确定我们正在测量什么.
我们可以做些什么来衡量每个线程/每个功能的cpu使用情况?
我们听说过一个替代的线程库是一种方式,任何建议?
解决方法 Processthread和Thread之间的分割是从.NET 2.0开始的.灵感来自sql Server团队内部计划使用光纤实现.NET线程的项目.该项目被放弃,没有已知的CLR主机不使用 *** 作系统线程(也称为Processthread)来实现.NET线程.您将遇到的唯一问题是将Processthread与.NET线程相匹配.这在.NET 2.0中是有目的的.唯一不错的方法是让Thread本身对GetCurrentThreadID()进行pinvoke,然后找到与Processthread.ID的匹配.一旦你在那里,你也可以调整GetThreadTimes().这也要求OpenThread()获取句柄,而CloseHandle()再次关闭它.访问pinvoke.net获取声明.
总结以上是内存溢出为你收集整理的c# – 如何衡量特定逻辑线程的CPU使用情况?全部内容,希望文章能够帮你解决c# – 如何衡量特定逻辑线程的CPU使用情况?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)