線程數(shù)與QPS計(jì)算

01 最佳線程數(shù)計(jì)算

1.1 cpu密集型

n+1
當(dāng)因?yàn)轫撊笔Щ蚱渌收隙鴮?dǎo)致某一線程暫停時(shí),額外的線程可以保證cpu的時(shí)鐘周期不被浪費(fèi)

1.2 Io密集型

2*n 這個(gè)是不準(zhǔn)的,因?yàn)檎I(yè)務(wù)都是IO密集型的。
真正使用時(shí)應(yīng)以下方為準(zhǔn)

1.3 同步最佳線程數(shù)目

(線程等待時(shí)間/線程消耗CPU時(shí)間 + 1)* cpu核數(shù)cpu利用率
線程數(shù)=cpu核數(shù)
cpu使用率*(1+wait time/cpu time)
W/C: 等待時(shí)間與計(jì)算時(shí)間的比值

1.4 單線程QPS

1000/(cpu time + wait time)

1.5 異步最佳線程數(shù)

wait time主要是阻塞于IO上的時(shí)間,改成異步后wait tme趨于0了,
線程數(shù)~=cpu核數(shù) * cpu利用率
此時(shí)退化成cpu密集型了

02 QPS計(jì)算

2.1 rpc同步調(diào)用

最佳線程數(shù) * 單線程的QPS
(1000/cpu time)*cpu核數(shù) * cpu利用率

2.2 rpc異步調(diào)用

異步最佳線程數(shù) * 單線程QPS
因?yàn)閣ait time已經(jīng)趨于0了,所以此處的單線程QPS要遠(yuǎn)大于同步時(shí)的QPS;

03 總結(jié)

客戶端RT=服務(wù)端RT+網(wǎng)絡(luò)開鎖
服務(wù)端RT=thread cup time(cpu消耗時(shí)間 CT) + thread wait time(cpu等待時(shí)間 WT)
單線程QPS:1000/RT
最佳線程數(shù)=(RT/CPU TIME)CPU核數(shù)cpu使用率
QPS=最佳線程數(shù)單線程的QPS
=((CT+WT)/CT)
CPU核數(shù)cpu使用率 * 1000/(WT+CT)
=(1000/CT)
cpu核數(shù)*cpu利用率 (沒有考慮線程的上下文切換)

cpu time 是所有環(huán)境上消耗的cpu時(shí)間之和,取決于數(shù)據(jù)結(jié)構(gòu)和算法;
cpu的利用率受 io 連接池 內(nèi)存 編程模型等影響;

amdahl定律:當(dāng)增加計(jì)算資源的時(shí)候(如cpu 內(nèi)存 寬帶),吞吐量能夠進(jìn)行相應(yīng)的改進(jìn),其加速比:
speedup <= 1/(F+(1-F)/N)
F表示必須串行執(zhí)行的比重
N 處理器個(gè)數(shù)
如CPU核數(shù)從1到4,只要F>0,最大加速比就不會(huì)翻4倍;

gustafson定律,對(duì)amdahl的補(bǔ)充:S= N-a(N-1)
N是處理器個(gè)數(shù),a是串行時(shí)間占總執(zhí)行時(shí)間的比例;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是QPS: QPS是每秒鐘處理完請(qǐng)求的次數(shù)。這里的請(qǐng)求不是指一個(gè)查詢或者數(shù)據(jù)庫查詢,是包括一個(gè)業(yè)務(wù)邏輯的整個(gè)流...
    一只小哈閱讀 22,955評(píng)論 5 30
  • 一. 操作系統(tǒng)概念 操作系統(tǒng)位于底層硬件與應(yīng)用軟件之間的一層.工作方式: 向下管理硬件,向上提供接口.操作系統(tǒng)進(jìn)行...
    月亮是我踢彎得閱讀 6,159評(píng)論 3 28
  • 很多Node.js初學(xué)者都會(huì)有這樣的疑惑,Node.js到底是單線程的還是多線程的?通過本章的學(xué)習(xí),能夠讓讀者較為...
    越努力越幸運(yùn)_952c閱讀 3,816評(píng)論 4 36
  • 下面是我自己收集整理的Java線程相關(guān)的面試題,可以用它來好好準(zhǔn)備面試。 參考文檔:-《Java核心技術(shù) 卷一》-...
    阿呆變Geek閱讀 15,136評(píng)論 14 507
  • iOS多線程編程 基本知識(shí) 1. 進(jìn)程(process) 進(jìn)程是指在系統(tǒng)中正在運(yùn)行的一個(gè)應(yīng)用程序,就是一段程序的執(zhí)...
    陵無山閱讀 6,345評(píng)論 1 14

友情鏈接更多精彩內(nèi)容