计算公式

  1. 1Nthreads = Ncpus * Ucpu * (1 + W/C);
  2. Nthreads 线程数
  3. NcpusCPU核心数
  4. Ucpu: cpu的使用率 0~1
  5. W:等待阻塞时间(wait)
  6. C: 计算时间(Calculate)
  7. W/C: 阻塞时间与计算时间的比率
  8. 2Nthreads = Ncpu / (1 - 阻塞参数)
  9. 阻塞参数: W / (W+C)

实际应用

线程的等待时间所占比例越高,需要越多的线程。
实际任务可分为两种类型

IO密集型

阻塞时间 >> 计算时间
Nthreads = Ncpu * (1 + 1) = 2Ncpu。
常见场景:数据库数据交互,文件上传下载,网络数据传输等。

计算密集型

计算时间 >> 阻塞时间
假设没有等待时间W=0,则W/C=0, Nthreads = Ncpu。
常见场景:复杂算法