如何判断一个服务器能启动多少个进程

说到线程,那一定是和cpu核数相关的。在其它的文章里面,我们可以看到这样的结论:

一般说来,大家认为线程池的大小经验值应该这样设置:(其中N为CPU processors的个数)

如果是CPU密集型应用,则线程池大小设置为N+1,线程的应用场景:主要是复杂算法
如果是IO密集型应用,则线程池大小设置为2N+1,线程的应用场景:主要是:数据库数据的交互,文件上传下载,网络数据传输等等

+1的原因是:即使当计算密集型的线程偶尔由于缺失故障或者其他原因而暂停时,这个额外的线程也能确保CPU的时钟周期不会被浪费。
但是,IO优化中,这样的估算公式可能更适合:
最佳线程数目 = ((线程等待时间+线程CPU时间)/线程CPU时间 ) CPU数目

例:比如平均每个线程CPU运行时间为0.5s,而线程等待时间(非CPU运行时间,比如IO)为1.5s,CPU核心数为8,
那么根据上面这个公式估算得到:
((0.5+1.5)/0.5)*8=32。
这个公式进一步转化为:最佳线程数目 = (线程等待时间与线程CPU时间之比 + 1)* CPU数目。
刚刚说到的线程池大小的经验值,其实是这种公式的一种估算值。

发布了12 篇原创文章 · 获赞 2 · 访问量 167

猜你喜欢

转载自blog.csdn.net/qq_39595349/article/details/103919214
今日推荐