限制CPU使用率的线程数

麦可

我的应用程序是具有线程线程池的“每个请求线程” Web服务器M单个请求的所有处理都在同一线程中运行。

假设我正在具有N核心的计算机上运行该应用程序我想配置M限制CPU使用率:例如,最多50%所有CPU。

如果处理完全受CPU限制,那么我将设置MN/2但是,该处理会执行一些IO。

我可以运行不同的应用程序M和使用top -Hps -Ljstat等进行监控。

您如何建议我估算M

范安德烈

CPU使用率达到50%并不一定意味着线程数必须为N_Cores /2。在处理I / O时,CPU在等待数据从设备到达时浪费了很多周期。

因此,您需要一种工具来衡量实际CPU使用率,并通过实验来增加线程数,直到实际CPU使用率达到50%。

Linux的perf就是这样的工具。这个问题解决了这个问题。另外,请确保收集整个系统的统计信息:perf record -a

您对CPU发出并执行尽可能多的指令/周期(IPC)感兴趣现代服务器最多可以执行4个IPC,以处理大量的计算绑定工作负载。您想要尽可能地接近该值以获得良好的CPU利用率,这意味着您需要增加线程数。当然,如果由于许多上下文切换而带来许多代价(缓存刷新,内核代码等)而导致无法进行许多I / O操作,

因此,最终的答案就是增加线程数,直到实际CPU使用率达到50%。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章