zoukankan      html  css  js  c++  java
  • 如何估算线程池的线程数?

    如何估算线程池的线程数

    估算线程数有个公式:

    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(网卡带宽, 网络带宽) / 单个线程的平均下载速度

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

  • 相关阅读:
    Ajax原生XHR对象
    node-sass报错解决方法
    AngularJS中的表单验证
    javaScirpt事件详解-原生事件基础(一)
    jQuery Ajax总结
    Ruby 方法
    JS中常遇到的浏览器兼容问题和解决方法
    History对象
    转码与解码
    Location对象
  • 原文地址:https://www.cnblogs.com/chenkeyu/p/14957003.html
Copyright © 2011-2022 走看看