多线程线程数经验公式
一般说来,大家认为线程池的大小经验值应该这样设置:(其中N为CPU的个数)
- 如果是CPU密集型应用,则线程池大小设置为N+1
- 如果是IO密集型应用,则线程池大小设置为2N+1(因为io读数据或者缓存的时候,线程等待,此时如果多开线程,能有效提高cpu利用率)
如果一台服务器上只部署这一个应用并且只有这一个线程池,那么这种估算或许合理,具体还需自行测试验证。
但是,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数目
刚刚说到的线程池大小的经验值,其实是这种公式的一种估算值。
作者:zhangya
链接:https://www.zhihu.com/question/38128980/answer/75041041
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明
转载:https://blog.csdn.net/qrne06/article/details/80587576
多线程线程数经验公式相关推荐
- 多线程线程数设置多少合适
前沿 大家都用过线程池,但是线程池数量设置为多少比较合理呢? 线程数的设置的最主要的目的是为了充分并合理地使用 CPU 和内存等资源,从而最大限度地提高程序的性能,因此让我们一起去探索吧! 首先要考虑 ...
- CPU核心数与线程数详解
CPU: CPU就是中央处理单元,物理CPU数就是CPU的硬件个数(socket). 核心: 一开始,每个物理 cpu 上只有一个核心(a single core),对操作系统而言,也就是同一时刻只能 ...
- Java多线程读取本地照片为二进制流,并根据系统核数动态确定线程数
Java多线程读取图片内容并返回 1. ExecutorService线程池 2. 效率截图 3. 源码 1. ExecutorService线程池 ExecutorService线程池,并可根据系统 ...
- Shell多线程操作及线程数控制实例
来源:http://www.jb51.net/article/51720.htm 这篇文章主要介绍了Shell多线程操作及线程数控制实例,文中从单线程实现一个需求开始,不断加入代码实现多线程以及线程数 ...
- postgres 支持的线程数_为什么 Java 坚持多线程不选择协程?
先说结论:协程是非常值得学习的概念,它是多任务编程的未来.但是Java全力推进这个事情的动力并不大. 先返回到问题的本源.当我们希望引入协程,我们想解决什么问题.我想不外乎下面几点: 节省资源,轻量, ...
- 多线程 空值线程数_【开发者成长】深入理解多线程编程
云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 为什么要使用多线程? 防止并发编程出错最好的办法就是不写并发程序 既然多线程编程容易出错,为什么它 ...
- pg多线程更新会发生死锁_何时用多线程?多线程需要加锁吗?线程数多少最合理?...
一.什么时候应该使用多线程? 今天看到一个问题,突然有感而发,想聊下这个话题. 不知道大家有没有想过这个问题,就是什么时候我该使用多线程呢?使用多线程就一定会提升系统性能吗? 1.其实是否应该使用多线 ...
- Java多线程之线程池配置合理线程数
Java多线程之线程池配置合理线程数 目录 代码查看公司服务器或阿里云是几核的 合理线程数配置之CPU密集型 合理线程数配置之IO密集型 1. 代码查看公司服务器或阿里云是几核的 要合理配置线程数首先 ...
- Python继承类的方式实现多线程及控制线程数
继承threading.Thread,并重写run方法实现多线程,这里用到logging日志模块是为了输出好看一些,直接print的话会几行叠在一起,不好看: 1 2 3 4 5 6 7 8 9 10 ...
最新文章
- 【Linux学习笔记】 -- 基本Shell命令
- 【RocketMQ工作原理】消息的消费
- php网站xml链接,xml图像超链接的制作代码
- 定时执行 Job - 每天5分钟玩转 Docker 容器技术(135)
- 漫画:什么是人工智能
- 纯js实现瀑布流布局及ajax动态新增数据
- 从云服务器上拷贝文件,从云服务器上拷贝文件
- 安徽医科大学计算机考研,这所985院校将现场面试!安徽医科大学缺额超800人!调剂信息更新...
- SQL语言基础【DDL、DML、DCL、DQL】
- CentOS 7 安装VirtualBox
- 排列组合公式/排列组合计算公式
- python+opencv实现人脸识别|采用现成训练好的模型
- 成都榆熙电子商务有限公司:拼多多商家如何剖析用户数据?
- ui标注android ios,IOS+ANDROID的UI切图与标注方法
- 用js实现鼠标的小尾巴
- docker服务器搬迁后遇到的问题:宿主ip不通
- C4D骨骼绑定和骨骼动画
- 中国合伙人及致青春电影名言
- java全栈系列之JavaSE-稀释数组029
- 物联网与大数据技术-1