美文网首页
线程数与QPS计算

线程数与QPS计算

作者: 弥芥716 | 来源:发表于2019-02-21 23:44 被阅读0次

    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是串行时间占总执行时间的比例;

    相关文章

      网友评论

          本文标题:线程数与QPS计算

          本文链接:https://www.haomeiwen.com/subject/rzijyqtx.html