性能監(jiān)控工具:vmstat

vmstat是一個查看虛擬內(nèi)存使用狀況的工具洪添。是相比于top随橘,可以看到整個機(jī)器的CPU,內(nèi)存,IO的使用情況跷究,而不是單單看到各個進(jìn)程的CPU使用率和內(nèi)存使用率(使用場景不一樣)

一. 虛擬內(nèi)存原理

在系統(tǒng)中運(yùn)行的每個進(jìn)程都需要使用到內(nèi)存洛退,但不是每個進(jìn)程都需要每時每刻使用系統(tǒng)分配的內(nèi)存空間。當(dāng)系統(tǒng)運(yùn)行所需內(nèi)存超過實際的物理內(nèi)存夹抗,內(nèi)核會釋放某些進(jìn)程所占用但未使用的部分或所有物理內(nèi)存绳慎,將這部分資料存儲在磁盤上直到進(jìn)程下一次調(diào)用,并將釋放出的內(nèi)存提供給有需要的進(jìn)程使用。

Linux內(nèi)存管理中偷线,主要是通過“調(diào)頁P(yáng)aging”和“交換Swapping”來完成上述的內(nèi)存調(diào)度。調(diào)頁算法是將內(nèi)存中最近不常使用的頁面換到磁盤上沽甥,把活動頁面保留在內(nèi)存中供進(jìn)程使用声邦。交換技術(shù)是將整個進(jìn)程,而不是部分頁面摆舟,全部交換到磁盤上亥曹。

分頁(Page)寫入磁盤的過程被稱作Page-Out,分頁(Page)從磁盤重新回到內(nèi)存的過程被稱作Page-In恨诱。當(dāng)內(nèi)核需要一個分頁時媳瞪,但發(fā)現(xiàn)此分頁不在物理內(nèi)存中(因為已經(jīng)被Page-Out了),此時就發(fā)生了分頁錯誤(Page Fault)照宝。

當(dāng)系統(tǒng)內(nèi)核發(fā)現(xiàn)可運(yùn)行內(nèi)存變少時蛇受,就會通過Page-Out來釋放一部分物理內(nèi)存。經(jīng)管Page-Out不是經(jīng)常發(fā)生厕鹃,但是如果Page-out頻繁不斷的發(fā)生兢仰,直到當(dāng)內(nèi)核管理分頁的時間超過運(yùn)行程式的時間時,系統(tǒng)效能會急劇下降剂碴。這時的系統(tǒng)已經(jīng)運(yùn)行非常慢或進(jìn)入暫停狀態(tài)把将,這種狀態(tài)亦被稱作thrashing(顛簸)。

二. vmstat詳解

  1. 用法
    一般vmstat工具的使用通過兩個數(shù)字參數(shù)來完成忆矛,第一個參數(shù)指采樣的時間間隔數(shù)察蹲,單位是秒,第二個參數(shù)是采樣的次數(shù):
# vmstat 2 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 2204340   2076 871160    0    0     1     1   50    7  0  0 99  0  0
  • 2:表示每隔2秒采集一次服務(wù)器狀態(tài)
  • 1:表示只采集1次

如果需要在一段時間一直監(jiān)控催训,不指定采集次數(shù)就行了:

# vmstat 2 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 2198572   2076 871208    0    0     1     1   52    9  0  0 99  0  0
 0  0      0 2198572   2076 871208    0    0     0     0  885  911  1  0 99  0  0
 0  0      0 2198572   2076 871208    0    0     0     0  902  926  0  0 99  0  0
 0  0      0 2198572   2076 871208    0    0     0     0 1025 1063  1  1 99  0  0
 0  0      0 2198572   2076 871208    0    0     0    15  863  912  0  0 99  0  0
 0  0      0 2198572   2076 871208    0    0     0    10  824  897  1  0 99  0  0
 0  0      0 2198572   2076 871208    0    0     0     0  816  878  1  1 99  0  0
 0  0      0 2198572   2076 871208    0    0     0     0  807  879  0  1 99  0  0
  1. 參數(shù)詳解
    1)procs(進(jìn)程):
    • r:運(yùn)行隊列中進(jìn)程數(shù)量(就是說多少個進(jìn)程真正分配到了cpu)洽议,當(dāng)這個值超過了cpu數(shù)目(長期大于1),就會出現(xiàn)cpu瓶頸
    • b:表示阻塞的進(jìn)程
      2)memory(內(nèi)存):
    • swpd:使用虛擬內(nèi)存大小漫拭,如果大于0绞铃,表示你的機(jī)器物理內(nèi)存不足了,如果不是程序內(nèi)存泄露的原因嫂侍,那么你該升級內(nèi)存了或者把耗內(nèi)存的任務(wù)遷移到其他機(jī)器
    • free:空閑的物理內(nèi)存大小
    • buff:用來給目錄做緩沖儿捧,目錄內(nèi)容,權(quán)限等
    • cache :用來給打開的文件做緩沖
      注意:如果cache的值大的時候挑宠,說明cache處的文件數(shù)多菲盾,如果頻繁訪問的文件都被cache,那么磁盤的讀IO會非常小
      3)swap(交換區(qū)):
    • si:每秒從磁盤讀入虛擬內(nèi)存的大小各淀,如果這個值大于0懒鉴,表示物理內(nèi)存不夠用或內(nèi)存泄漏,需要查找消耗內(nèi)存進(jìn)程解決
    • so:每秒虛擬內(nèi)存寫入磁盤的大小,如果值大于0临谱,同上
      4)io:
    • bi:塊設(shè)備每秒接收的塊數(shù)量璃俗。這里的塊設(shè)備是指系統(tǒng)上所有的磁盤和其他塊設(shè)備,默認(rèn)塊大小是1024byte
    • bo:塊設(shè)備每秒發(fā)送的塊數(shù)量悉默,例如我們讀取文件城豁,bo就要大于0。bi和bo一般都要接近0抄课,不然就是IO過于頻繁唱星,需要調(diào)整
      5)system:
    • in:每秒cpu的中斷次數(shù),包括時間中斷
    • cs:每秒上下午切換次數(shù)跟磨。例如我們調(diào)用系統(tǒng)函數(shù)间聊,就要進(jìn)行上下文切換,線程的切換抵拘,也要進(jìn)程上下文切換哎榴,這個值要越小越好,太大了僵蛛,要考慮調(diào)低線程或者進(jìn)程的數(shù)目,例如在apache和nginx這種web服務(wù)器中叹话,我們一般做性能測試時會進(jìn)行幾千并發(fā)甚至幾萬并發(fā)的測試,選擇web服務(wù)器的進(jìn)程可以由進(jìn)程或者線程的峰值一直下調(diào)墩瞳,壓測驼壶,直到cs到一個比較小的值,這個進(jìn)程和線程數(shù)就是比較合適的值了喉酌。系統(tǒng)調(diào)用也是热凹,每次調(diào)用系統(tǒng)函數(shù),我們的代碼就會進(jìn)入內(nèi)核空間泪电,導(dǎo)致上下文切換般妙,這個是很耗資源,也要盡量避免頻繁調(diào)用系統(tǒng)函數(shù)相速。上下文切換次數(shù)過多表示你的CPU大部分浪費在上下文切換碟渺,導(dǎo)致CPU干正經(jīng)事的時間少了,CPU沒有充分利用突诬,是不可取的苫拍。
      注意:上面兩個值越大,說明內(nèi)核消耗的cpu時間越大
      6)cpu:
    • us:用戶進(jìn)程執(zhí)行時間百分比(user time)旺隙。us的值比較高時绒极,說明用戶進(jìn)程消耗的CPU時間多,但是如果長期超50%的使用蔬捷,那么我們就該考慮優(yōu)化程序算法或者進(jìn)行加速
    • sy:內(nèi)核系統(tǒng)進(jìn)程執(zhí)行時間百分比垄提。sy的值高時榔袋,說明系統(tǒng)內(nèi)核消耗的CPU資源多,這并不是良性表現(xiàn)铡俐,我們應(yīng)該檢查原因凰兑。
    • id:空閑時間百分比,一般來說us+sy+id=100
    • wa:IO等待時間百分比审丘。wa的值高時吏够,說明IO等待比較嚴(yán)重,這可能由于磁盤大量作隨機(jī)訪問造成备恤,也有可能磁盤出現(xiàn)瓶頸(塊操作)。

三. vmstat使用

  1. 通過vmstat識別CPU瓶頸
    Linux下查看CPU核心數(shù)的命令:cat /proc/cpuinfo|grep processor|wc -l
    r(運(yùn)行隊列)展示了正在執(zhí)行和等待CPU資源的任務(wù)個數(shù)锦秒。當(dāng)這個值超過了CPU數(shù)目露泊,就會出現(xiàn)CPU瓶頸了。解決方法大體幾種:
    • 最簡單的就是增加CPU個數(shù)和核數(shù)
    • 通過調(diào)整任務(wù)執(zhí)行時間旅择,如大任務(wù)放到系統(tǒng)不繁忙的情況下進(jìn)行執(zhí)行惭笑,進(jìn)爾平衡系統(tǒng)任務(wù)
    • 調(diào)整已有任務(wù)的優(yōu)先級
  2. 通過vmstat識別CPU滿負(fù)荷
    首先需要聲明一點的是,vmstat中CPU的度量是百分比的生真。當(dāng)us+sy的值接近100的時候沉噩,表示CPU正在接近滿負(fù)荷工作。但要注意的是柱蟀,CPU 滿負(fù)荷工作并不能說明什么川蒙,Linux總是試圖要CPU盡可能的繁忙,使得任務(wù)的吞吐量最大化长已。唯一能夠確定CPU瓶頸的還是r(運(yùn)行隊列)的值畜眨。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市术瓮,隨后出現(xiàn)的幾起案子康聂,更是在濱河造成了極大的恐慌,老刑警劉巖胞四,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恬汁,死亡現(xiàn)場離奇詭異,居然都是意外死亡辜伟,警方通過查閱死者的電腦和手機(jī)氓侧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來导狡,“玉大人甘苍,你說我怎么就攤上這事『嫱悖” “怎么了载庭?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我囚聚,道長靖榕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任顽铸,我火速辦了婚禮茁计,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谓松。我一直安慰自己星压,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布鬼譬。 她就那樣靜靜地躺著娜膘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪优质。 梳的紋絲不亂的頭發(fā)上竣贪,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機(jī)與錄音巩螃,去河邊找鬼演怎。 笑死,一個胖子當(dāng)著我的面吹牛避乏,可吹牛的內(nèi)容都是我干的爷耀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拍皮,長吁一口氣:“原來是場噩夢啊……” “哼畏纲!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起春缕,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤盗胀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后锄贼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體票灰,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年宅荤,在試婚紗的時候發(fā)現(xiàn)自己被綠了屑迂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡冯键,死狀恐怖惹盼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惫确,我是刑警寧澤手报,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布蚯舱,位于F島的核電站,受9級特大地震影響掩蛤,放射性物質(zhì)發(fā)生泄漏枉昏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一揍鸟、第九天 我趴在偏房一處隱蔽的房頂上張望兄裂。 院中可真熱鬧,春花似錦阳藻、人聲如沸晰奖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匾南。三九已至,卻和暖如春道川,著一層夾襖步出監(jiān)牢的瞬間午衰,已是汗流浹背立宜。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工冒萄, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人橙数。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓尊流,卻偏偏與公主長得像,于是被迫代替她去往敵國和親灯帮。 傳聞我的和親對象是個殘疾皇子崖技,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容