欧美不卡在线-夜夜操影院-久久久久999-在线视频一区二区三区-国产精品五区-中文字幕在线日韩

二維碼
企資網(wǎng)

掃一掃關(guān)注

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

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

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

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

一、前言

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

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

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

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

二、線程在程序運(yùn)用得類(lèi)型

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

    2.1 CPU密集型程序

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

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

    2.2 I/O密集型程序

    與CPU密集型程序相對(duì),一個(gè)完整請(qǐng)求,CPU運(yùn)算操作完成之后還有很多I/O操作要做,也就是說(shuō)I/O操作占比很大部分。

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

    2.3 總結(jié)

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

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

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

    3.1 CPU密集型線程

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

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

    計(jì)算(CPU)密集型得線程恰好在某時(shí)因?yàn)榘l(fā)生一個(gè)頁(yè)錯(cuò)誤或者因?yàn)槠渌蚨鴷和#瑒偤糜幸粋€(gè)“額外”得線程,可以確保在這種情況下CPU周期不會(huì)中斷工作。

    3.2 I/O密集型

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

    舉例:

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

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

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

    那一定會(huì)問(wèn)怎么知道具體得I/O耗時(shí)和CPU耗時(shí)呢?和怎么查看CPU利用率?

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

    四、面試

    下面準(zhǔn)備幾個(gè)面試來(lái)提高下認(rèn)識(shí):

    面試一:

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

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

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

    面試二:

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

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

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

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

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

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

    引入一個(gè)定理:

    怎么理解這個(gè)公式呢?

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

    如何簡(jiǎn)單粗暴地理解串行百分比(其實(shí)都可以通過(guò)工具得出這個(gè)結(jié)果得)呢?來(lái)看個(gè)小Tips:

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

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

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

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

    粵ICP備16078936號(hào)

    微信

    關(guān)注
    微信

    微信二維碼

    WAP二維碼

    客服

    聯(lián)系
    客服

    聯(lián)系客服:

    在線QQ: 303377504

    客服電話: 020-82301567

    E_mail郵箱: weilaitui@qq.com

    微信公眾號(hào): weishitui

    客服001 客服002 客服003

    工作時(shí)間:

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

    反饋

    用戶
    反饋

    主站蜘蛛池模板: 欧美老熟妇bbbb毛片 | 欧美三级真做在线观看 | 亚洲国产日韩女人aaaaaa毛片在线 | 国产三级精品久久三级国专区 | 在线看日韩 | 精品9e精品视频在线观看 | 日本一区二区免费在线观看 | 亚洲 欧美 日韩 丝袜 另类 | 91久久精品青青草原伊人 | 欧美大片aaa | 91小视频在线观看免费版高清 | 日韩美女在线视频 | 日韩天天干 | 国产成人免费视频精品一区二区 | 人碰人操| 国产成人一区二区三区高清 | 久久久国产一区二区三区 | 欧美成人鲁丝片在线观看 | 精品成人在线观看 | 在线免费观看一级毛片 | 欧美yyy | 久久国产精品免费看 | 国产精品免费观看视频播放 | 97香蕉久久夜色精品国产 | 国产精品自拍亚洲 | 免费a一毛片 | 午夜手机视频 | 鲁丝一区二区三区不属 | 国产草草影院ccyycom软件 | 成人欧美一区二区三区在线观看 | 免费高清毛片在线播放视频 | 亚洲精品久久久成人 | 久久精品国产第一区二区 | 国产成人精品无缓存在线播放 | 黄色一级片在线看 | 美女黄频网站 | 一级毛片在线视频 | 成年人免费在线视频网站 | 国产成人一区二区三区视频免费 | 欧美成人观看视频在线 | 国产成人av性色在线影院 |