线程数设置技巧——与CPU的关系

版权声明:可以转载,请注明链接出处 https://blog.csdn.net/xihuanyuye/article/details/85047815

1、简化设置

一般说来,线程池的大小可以这样设置:

1、如果是CPU密集型应用,则线程池大小设置为N+1
2、如果是IO密集型应用,则线程池大小设置为2N+1(因为io读数据或者缓存的时候,线程等待,此时如果多开线程,能有效提高cpu利用率)
(其中N为CPU的个数)

如果一台服务器上只部署这一个应用并且只有这一个线程池,那么这种估算或许合理,具体还需自行测试验证。

2、对IO优化有更高要求

可参考如下估算公式

最佳线程数目 = ((线程等待时间+线程CPU时间)/线程CPU时间 )* CPU数目

因为很显然,线程等待时间所占比例越高,需要越多线程。线程CPU时间所占比例越高,需要越少线程。

举个例子:

比如平均每个线程CPU运行时间为0.5s,而线程等待时间(非CPU运行时间,比如IO)为1.5s,CPU核心数为8,那么根据上面这个公式估算得到:((0.5+1.5)/0.5)*8=32。

这个公式进一步转化为:

最佳线程数目 = (线程等待时间与线程CPU时间之比 + 1)* CPU数目

参考:
线程数设置和CPU数的关系

猜你喜欢

转载自blog.csdn.net/xihuanyuye/article/details/85047815