线程数与QPS计算

01 最佳线程数计算

1.1 cpu密集型

n+1
当因为页缺失或其它故障而导致某一线程暂停时,额外的线程可以保证cpu的时钟周期不被浪费

1.2 Io密集型

2*n 这个是不准的,因为正常业务都是IO密集型的。
真正使用时应以下方为准

1.3 同步最佳线程数目

(线程等待时间/线程消耗CPU时间 + 1)* cpu核数cpu利用率
线程数=cpu核数
cpu使用率*(1+wait time/cpu time)
W/C: 等待时间与计算时间的比值

1.4 单线程QPS

1000/(cpu time + wait time)

1.5 异步最佳线程数

wait time主要是阻塞于IO上的时间,改成异步后wait tme趋于0了,
线程数~=cpu核数 * cpu利用率
此时退化成cpu密集型了

02 QPS计算

2.1 rpc同步调用

最佳线程数 * 单线程的QPS
(1000/cpu time)*cpu核数 * cpu利用率

2.2 rpc异步调用

异步最佳线程数 * 单线程QPS
因为wait time已经趋于0了,所以此处的单线程QPS要远大于同步时的QPS;

03 总结

客户端RT=服务端RT+网络开锁
服务端RT=thread cup time(cpu消耗时间 CT) + thread wait time(cpu等待时间 WT)
单线程QPS:1000/RT
最佳线程数=(RT/CPU TIME)CPU核数cpu使用率
QPS=最佳线程数单线程的QPS
=((CT+WT)/CT)
CPU核数cpu使用率 * 1000/(WT+CT)
=(1000/CT)
cpu核数*cpu利用率 (没有考虑线程的上下文切换)

cpu time 是所有环境上消耗的cpu时间之和,取决于数据结构和算法;
cpu的利用率受 io 连接池 内存 编程模型等影响;

amdahl定律:当增加计算资源的时候(如cpu 内存 宽带),吞吐量能够进行相应的改进,其加速比:
speedup <= 1/(F+(1-F)/N)
F表示必须串行执行的比重
N 处理器个数
如CPU核数从1到4,只要F>0,最大加速比就不会翻4倍;

gustafson定律,对amdahl的补充:S= N-a(N-1)
N是处理器个数,a是串行时间占总执行时间的比例;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 什么是QPS: QPS是每秒钟处理完请求的次数。这里的请求不是指一个查询或者数据库查询,是包括一个业务逻辑的整个流...
    一只小哈阅读 22,963评论 5 30
  • 一. 操作系统概念 操作系统位于底层硬件与应用软件之间的一层.工作方式: 向下管理硬件,向上提供接口.操作系统进行...
    月亮是我踢弯得阅读 6,171评论 3 28
  • 很多Node.js初学者都会有这样的疑惑,Node.js到底是单线程的还是多线程的?通过本章的学习,能够让读者较为...
    越努力越幸运_952c阅读 3,818评论 4 36
  • 下面是我自己收集整理的Java线程相关的面试题,可以用它来好好准备面试。 参考文档:-《Java核心技术 卷一》-...
    阿呆变Geek阅读 15,142评论 14 507
  • iOS多线程编程 基本知识 1. 进程(process) 进程是指在系统中正在运行的一个应用程序,就是一段程序的执...
    陵无山阅读 6,351评论 1 14

友情链接更多精彩内容