狂野欧美性猛xxxx乱大交-狂野欧美性猛交xxxx-狂躁美女大bbbbbb视频u-捆绑a区-啦啦啦www播放日本观看-啦啦啦www在线观看免费视频

二維碼
企資網

掃一掃關注

當前位置: 首頁 » 企資快報 » 精準 » 正文

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

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

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

一、前言

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

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

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

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

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

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

    2.1 CPU密集型程序

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

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

    2.2 I/O密集型程序

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

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

    2.3 總結

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

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

    下面需要根據CPU密集型和I/O密集型兩個場景進行分析。

    3.1 CPU密集型線程

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

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

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

    3.2 I/O密集型

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

    舉例:

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

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

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

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

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

    四、面試

    下面準備幾個面試來提高下認識:

    面試一:

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

    如何設計線程個數,使得可以在1s內處理完20個Transaction?

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

    面試二:

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

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

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

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

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

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

    引入一個定理:

    怎么理解這個公式呢?

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

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

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

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

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

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

    粵ICP備16078936號

    微信

    關注
    微信

    微信二維碼

    WAP二維碼

    客服

    聯系
    客服

    聯系客服:

    在線QQ: 303377504

    客服電話: 020-82301567

    E_mail郵箱: weilaitui@qq.com

    微信公眾號: weishitui

    客服001 客服002 客服003

    工作時間:

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

    反饋

    用戶
    反饋

    主站蜘蛛池模板: 免费观看黄色a一级录像 | 九九九九九九精品免费 | 久久精品福利 | 久久久夜色精品国产噜噜 | 国产一级特黄aaaa大片野外 | 日本一级特黄aa毛片免费观看 | 日韩欧美视频免费观看 | 天天操天天射天天操 | 大片毛片女女女女女女女 | 精品二区 | 欧美三级一区二区 | 欧美中文字幕一二三四区 | 中文字幕日本一区波多野不卡 | 欧美一级艳片视频免费观看 | 亚洲第一视频在线播放 | 天天干夜夜怕 | 日本一区二区三区不卡在线视频 | 欧美精| 大尺度福利视频在线观看网址 | 国产伦精品一区二区免费 | 97理论三级九七午夜在线观看 | 日韩视频二区 | 乱人伦中文视频在线 | 日韩精品一区二区三区中文 | 少妇美女极品美軳人人体 | 天天爽天天爽 | 日本高清不卡网站免费 | 亚洲性久久久影院 | 天天射天天| 国产一级做a爱免费视频 | 亚洲精品久久久久久久福利 | 五月天天爱 | 四虎免费影视 | 一国产大片在线观看 | 午夜久久久久久网站 | 特级一级全黄毛片免费 | 欧美大黄大色一级毛片出红 | 老子影院午夜久久亚洲 | 国产高清国内精品福利99久久 | 免费观看黄色的网站 | 国产成人一区二区视频在线观看 |