首页 > 编程语言 > 详细

如何估算线程池的线程数?

时间:2021-07-01 09:38:26      阅读:24      评论:0      收藏:0      [点我收藏+]

如何估算线程池的线程数

估算线程数有个公式:

threadNum = (1 + (ioTime / cpuTime)) * coreNum

coreNum:cpu核心数

cpuTime:cpu运转时间,计算方式:注释io操作,mock结果,逻辑执行完的时间

allTime:所有逻辑正常执行的时间

ioTime = allTime - cpuTime;

推导:如果想最大化的利用cpu,就需要尽量减少cpu等待的时间,那么(1 + (ioTime / cpuTime)) * coreNum便是理想情况下线程数量,执行情况如下图:

技术分享图片

 

 

 

带入公式:(1 + (ioTime / cpuTime)) * coreNum = threadNum

如果线程数量为(1 + (3 / 1)) * 1 = 4时,可以最大化利用cpu

额外的考虑点

当io主要为网络io时,需要考虑带宽的影响此时计算公式如下

threadNum = min(网卡带宽, 网络带宽) / 单个线程的平均下载速度

如果机器有其他应用,需要预留带宽,那么线程数不宜超过此数,防止造成其他应用网络拥塞

 

如何估算线程池的线程数?

原文:https://www.cnblogs.com/chenkeyu/p/14957003.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!