首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows RPC调优

Windows RPC调优
EN

Stack Overflow用户
提问于 2012-04-18 14:04:26
回答 1查看 260关注 0票数 1

我正在使用WMI监控数百个主机。我大约每5秒就轮询CPU的使用情况。我使用C#的线程池来运行当前计划的适当WMI查询。通常情况下,运行这些查询的线程不超过30个。有时会出现16秒的间隔,而不是5秒,没有可见的CPU使用。由于CPU利用率不足,我怀疑瓶颈在RPC或TCP/IP堆栈中。然而,我认为这不是TCP/IP堆栈,因为连接是永久打开的。所以我怀疑监控机器上的瓶颈在RPC中。

我能在监控机器上做什么RPC调优吗?

更新1:

在发布之前,我已经做了一些.NET调优。我对ThreadPool进行了ThreadPool.SetMinThreads(200, 200)ThreadPool.SetMaxThreads(300,300)调用的调优。我正在使用Task对象,这些对象都是用TaskCreationOptions.LongRunning | TaskCreationOptions.PreferFairness创建的。

EN

回答 1

Stack Overflow用户

发布于 2012-04-18 16:11:52

我正在使用C#的线程池

这不是一个好主意,如果您正在运行的代码做了大量的阻塞和很少执行。就像WMI查询。线程池调度程序试图将执行线程的数量限制在计算机上的核心数量上。这是一种优化,它减少了线程上下文交换机损失的开销。但是它不能预测或检测线程实际上没有执行代码。它有一个自适应的调度算法来处理它,允许在现有线程尚未完成时执行额外的线程,但执行速度很慢。

您可以调用ThreadPool.SetMinThread()来增加允许并发执行的线程数。缺省值是核的数量。增加到30,可以解决你的问题,但有全球性的副作用。使用线程而不是线程池是一个本地解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10211074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档