gpt4 book ai didi

java - 限制CPU使用的线程数

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:19:52 25 4
gpt4 key购买 nike

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

假设我在一台有 N 核心的计算机上运行应用程序。我想配置 M 来限制 CPU 使用率:例如高达所有 CPU 的 50%

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

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

你建议我如何估算 M

最佳答案

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

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

perf for Linux 就是这样一个工具。 <强> This 问题解决了问题。还要确保在整个系统范围内收集统计信息:perf record -a

您对您的 CPU 发出和执行尽可能多的指令/周期 (IPC) 感兴趣。现代服务器最多可以执行 4 个 IPC,以应对密集的计算密集型工作负载。您希望尽可能接近该值以获得良好的 CPU 利用率,这意味着您需要增加线程数。当然,如果有许多 I/O 由于许多上下文切换而无法实现,这会带来一些惩罚(缓存刷新、内核代码等)

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

关于java - 限制CPU使用的线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30150735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com