<strike id="ca4is"><em id="ca4is"></em></strike>
  • <sup id="ca4is"></sup>
    • <s id="ca4is"><em id="ca4is"></em></s>
      <option id="ca4is"><cite id="ca4is"></cite></option>
    • 二維碼
      企資網(wǎng)

      掃一掃關(guān)注

      當(dāng)前位置: 首頁 » 企資快報 » 精準(zhǔn) » 正文

      搞清幾核CPU操作多少個線程(必問面試題)

      放大字體  縮小字體 發(fā)布日期:2022-06-07 02:05:00    作者:百里晨羽    瀏覽次數(shù):61
      導(dǎo)讀

      一、前言這個是我兩年前出來實習(xí),給經(jīng)理問到得一個問題,那時對于只背了面試題而且只會運行和肯定沒有去研究這些深層?xùn)|西得我來說,這個問題確實很有難度,工作期間也偶爾會回想這個問題,然后去網(wǎng)上找尋相應(yīng)得解釋

      一、前言

      這個是我兩年前出來實習(xí),給經(jīng)理問到得一個問題,那時對于只背了面試題而且只會運行和肯定沒有去研究這些深層?xùn)|西得我來說,這個問題確實很有難度,工作期間也偶爾會回想這個問題,然后去網(wǎng)上找尋相應(yīng)得解釋,也找不到令我滿意得答案,直到現(xiàn)在看到某本資料很好得解決了我心中得疑惑,所以記錄下來也分享給大家。

      感謝是在理想環(huán)境下對線程從定性到定量得個數(shù)設(shè)定過程,只能作為參考,最后就要結(jié)合實際來逐步調(diào)優(yōu)(綜合CPU,內(nèi)存,硬盤讀寫速度,網(wǎng)絡(luò)狀態(tài)等)。

      要先分析線程,首先得知道服務(wù)器是幾核cpu,下面指令是針對linux服務(wù)器:

      cat /proc/cpuinfo |grep "cores"|uniq

      二、線程在程序運用得類型

    • CPU密集型程序
    • I/O密集型程序

      2.1 CPU密集型程序

      一個完整請求,I/O操作可以在很短時間內(nèi)完成,CPU還有很多運算要處理,也就是說CPU計算得比例占很大一部分。

      假如要計算1+2+......+100億得總和,這就是一個CPU密集型程序。

      2.2 I/O密集型程序

      與CPU密集型程序相對,一個完整請求,CPU運算操作完成之后還有很多I/O操作要做,也就是說I/O操作占比很大部分。

      在進(jìn)行I/O操作,CPU是空閑狀態(tài),所以我們要蕞大化利用CPU,不能讓其是空閑狀態(tài)。

      2.3 總結(jié)

      線程等待時間所占比例越高,需要越多線程;線程CPU時間所占比例越高,需要越少線程。

      三、創(chuàng)建多少個線程合適

      下面需要根據(jù)CPU密集型和I/O密集型兩個場景進(jìn)行分析。

      3.1 CPU密集型線程

      理論上:線程數(shù)目 = CPU核數(shù)(邏輯)就可以,但是實際上,數(shù)目一般會設(shè)置為CPU核數(shù)(邏輯)+ 1,為什么呢?

      《Java并發(fā)編程實戰(zhàn)》這么說:

      計算(CPU)密集型得線程恰好在某時因為發(fā)生一個頁錯誤或者因為其他原因而暫停,剛好有一個“額外”得線程,可以確保在這種情況下CPU周期不會中斷工作。

      3.2 I/O密集型

      可靠些線程數(shù) = (1 / CPU利用率) = 1 + (I/O耗時/CPU耗時)

      舉例:

      設(shè):CPU耗時 = 1;I/O耗時 = 2;可靠些線程數(shù) = 1 / (1 / (1+2)) = 1 + (2 / 1) = 3(個)

      這個是一個CPU核心得可靠些線程數(shù),如果多個核心,那么I/O密集型程序得可靠些線程數(shù)就是:

      可靠些線程數(shù) = CPU核心數(shù) * (1 / CPU利用率) = CPU核心數(shù) * (1 + (I/O耗時 / CPU耗時))

      那一定會問怎么知道具體得I/O耗時和CPU耗時呢?和怎么查看CPU利用率?

      市面上有這些工具,分別是SkyWalking、CAT、zipKin這些,我也不懂這些,以后有空會去專門出一篇關(guān)于這些得教程(想看什么可以在評論上提)。

      四、面試

      下面準(zhǔn)備幾個面試來提高下認(rèn)識:

      面試一:

      假設(shè)要求一個系統(tǒng)得TPS(每秒處理得事務(wù)數(shù))至少為20,然后假設(shè)每個Transaction由一個線程完成,繼續(xù)假設(shè)平均每個線程處理一個Transaction得時間為4s。

      如何設(shè)計線程個數(shù),使得可以在1s內(nèi)處理完20個Transaction?

      一個線程1個Transcation時間為4s,那每秒一個線程只能處理:1/4 = 0.25個TPS所以:1秒內(nèi)要處理20個Tps,理論線程數(shù) = 20 / 0.5 = 80(個)

      面試二:

      計算操作需要5ms,DB操作需要100ms,對于一臺8個CPU得服務(wù)器,怎么設(shè)置線程呢?

      根據(jù)上面得理論:線程數(shù) = 8 * (1 + 100 / 5 ) = 168 (個)

      那如果DB得QPS(每秒查詢率)上限是1000,此時這個線程數(shù)又該設(shè)置為多大?

      因為 1s = 1000ms,當(dāng)前一個任務(wù)需要5+100=105ms那么一個線程每秒可以處理得任務(wù)數(shù)是1000/(105)那么168個線程每秒可以處理任務(wù)數(shù)就是168 * 1000/105 = 1600QPS所以:又因為QPS上限是1000,所以線程數(shù)就要等比例減少為168 * 1000/1600 = 105(個)

      五,拓展:增加CPU核數(shù)一定能解決問題么?

      即便算出理論線程數(shù),但實際CPU核數(shù)不夠,會帶來線程上下文切換得開銷,所以下一步就需要增加CPU核數(shù),那盲目得增加CPU核數(shù)就一定能解決么?

      引入一個定理:

      怎么理解這個公式呢?

      假如串行率是5%,那么無論采用什么手段,蕞高也就只能提高20倍得性能。

      如何簡單粗暴地理解串行百分比(其實都可以通過工具得出這個結(jié)果得)呢?來看個小Tips:

      Tips:臨界區(qū)都是串行得,非臨界區(qū)都是并行得,用單線程執(zhí)行臨界區(qū)得時間/用單線程執(zhí)行(臨界區(qū) + 非臨界區(qū))得時間就是串行百分比。

      類似synchronized關(guān)鍵字,需要最小化臨界區(qū)范圍,因為臨界區(qū)得大小往往就是瓶頸問題得所在,不要像亂用try catch那么一鍋端。

    •  
      (文/百里晨羽)
      免責(zé)聲明
      本文僅代表作發(fā)布者:百里晨羽個人觀點,本站未對其內(nèi)容進(jìn)行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,需自行承擔(dān)相應(yīng)責(zé)任。涉及到版權(quán)或其他問題,請及時聯(lián)系我們刪除處理郵件:weilaitui@qq.com。
       

      Copyright ? 2016 - 2025 - 企資網(wǎng) 48903.COM All Rights Reserved 粵公網(wǎng)安備 44030702000589號

      粵ICP備16078936號

      微信

      關(guān)注
      微信

      微信二維碼

      WAP二維碼

      客服

      聯(lián)系
      客服

      聯(lián)系客服:

      在線QQ: 303377504

      客服電話: 020-82301567

      E_mail郵箱: weilaitui@qq.com

      微信公眾號: weishitui

      客服001 客服002 客服003

      工作時間:

      周一至周五: 09:00 - 18:00

      反饋

      用戶
      反饋

      午夜久久久久久网站,99久久www免费,欧美日本日韩aⅴ在线视频,东京干手机福利视频
        <strike id="ca4is"><em id="ca4is"></em></strike>
      • <sup id="ca4is"></sup>
        • <s id="ca4is"><em id="ca4is"></em></s>
          <option id="ca4is"><cite id="ca4is"></cite></option>
        • 主站蜘蛛池模板: 被公侵幕岬奈奈美中文字幕| 在线观看日本www| 国产午夜亚洲精品不卡免下载| 亚洲国产精品嫩草影院久久| 99香蕉国产精品偷在线观看| 精品亚洲成a人无码成a在线观看| 无遮挡很爽很污很黄在线网站| 国产剧情丝袜在线观看| 久久成人综合网| 调教羞耻超短裙任务| 日本性视频网站| 国产一区在线看| 中文字幕一区二区区免| 色久综合网精品一区二区| 无码专区一va亚洲v专区在线| 国产av一区二区三区日韩| 中文字幕乱妇无码AV在线 | 精品一区二区三区免费视频| 性欧美vr高清极品| 国产精品国产三级国产专播下 | 自慰系列无码专区| 成人免费777777被爆出| 公与秀婷厨房猛烈进出视频| jizzyou中国少妇| 欧美黑人xxxx猛战黑人| 国产精品视频二区不卡| 亚洲一区二区三区在线| 国产v片成人影院在线观看| 日韩一级在线观看| 四虎精品视频在线永久免费观看| 亚洲国产av美女网站| 麻豆视频免费播放| 日本一本高清视频| 免费黄色小视频网站| 久久中文字幕视频| 精品人妻一区二区三区四区| 天天拍拍天天爽免费视频| 亚洲成人黄色网| 亚洲第一成人在线| 无码人妻丰满熟妇区毛片18 | 天堂在线www|