国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

淺談 Linux 高負(fù)載的系統(tǒng)化分析

系統(tǒng)
講解 Linux Load 高如何排查的話題屬于老生常談了,但多數(shù)文章只是聚焦了幾個點(diǎn),缺少整體排查思路的介紹。所謂 “授人以魚不如授人以漁”。本文試圖建立一個方法和套路,來幫助讀者對 Load 高問題排查有一個更全面的認(rèn)識

講解 Linux Load 高如何排查的話題屬于老生常談了,但多數(shù)文章只是聚焦了幾個點(diǎn),缺少整體排查思路的介紹。所謂 “授人以魚不如授人以漁”。本文試圖建立一個方法和套路,來幫助讀者對 Load 高問題排查有一個更全面的認(rèn)識。

從消除誤解開始

沒有基線的 Load,是不靠譜的 Load

從接觸 Unix/Linux 系統(tǒng)管理的第一天起,很多人就開始接觸 System Load Average 這個監(jiān)控指標(biāo)了,然而,并非所有人都知道這個指標(biāo)的真正含義。一般說來,經(jīng)常能聽到以下誤解:

Load 高是 CPU 負(fù)載高……
傳統(tǒng) Unix 于 Linux 設(shè)計(jì)不同。Unix 系統(tǒng),Load 高就是可運(yùn)行進(jìn)程多引發(fā)的,但對 Linux 來說不是。對 Linux 來說 Load 高可能有兩種情況:
系統(tǒng)中處于 R 狀態(tài)的進(jìn)程數(shù)增加引發(fā)的
系統(tǒng)中處于 D 狀態(tài)的進(jìn)程數(shù)增加引發(fā)的
Loadavg 數(shù)值大于某個值就一定有問題……
Loadavg 的數(shù)值是相對值,受到 CPU 和 IO 設(shè)備多少的影響,甚至?xí)艿侥承┸浖x的虛擬資源的影響。Load 高的判斷需要基于某個歷史基線 (Baseline),不能無原則的跨系統(tǒng)去比較 Load。
Load 高系統(tǒng)一定很忙…..
Load 高系統(tǒng)可以很忙,例如 CPU 負(fù)載高,CPU 很忙。但 Load 高,系統(tǒng)不都很忙,如 IO 負(fù)載高,磁盤可以很忙,但 CPU 可以比較空閑,如 iowait 高。這里要注意,iowait 本質(zhì)上是一種特殊的 CPU 空閑狀態(tài)。另一種 Load 高,可能 CPU 和磁盤外設(shè)都很空閑,可能支持鎖競爭引起的,這時候 CPU 時間里,iowait 不高,但 idle 高。
Brendan Gregg 在最近的博客 [Linux Load Averages: Solving the Mystery] (http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html) 中,討論了 Unix 和 Linux Load Average 的差異,并且回朔到 24 年前 Linux 社區(qū)的討論,并找到了當(dāng)時為什么 Linux 要修改 Unix Load Average 的定義。文章認(rèn)為,正是由于 Linux 引入的 D 狀態(tài)線程的計(jì)算方式,從而導(dǎo)致 Load 高的原因變得含混起來。因?yàn)橄到y(tǒng)中引發(fā) D 狀態(tài)切換的原因?qū)嵲谑翘嗔耍^非 IO 負(fù)載,鎖競爭這么簡單!正是由于這種含混,Load 的數(shù)值更加難以跨系統(tǒng),跨應(yīng)用類型去比較。所有 Load 高低的依據(jù),全都應(yīng)該基于歷史的基線。本微信公眾號也曾寫過一篇相關(guān)文章,可以參見Linux Load Average那些事兒。

如何排查 Load 高的問題

如前所述,由于在 Linux 操作系統(tǒng)里,Load 是一個定義及其含混的指標(biāo),排查 loadavg 高就是一個很復(fù)雜的過程。其基本思路就是,根據(jù)引起 Load 變化的根源是 R 狀態(tài)任務(wù)增多,還是 D 狀態(tài)任務(wù)增多,來進(jìn)入到不同的流程。

這里給出了 Load 增高的排查的一般套路,僅供參考:

在 Linux 系統(tǒng)里,讀取 /proc/stat 文件,即可獲取系統(tǒng)中 R 狀態(tài)的進(jìn)程數(shù);但 D 狀態(tài)的任務(wù)數(shù)恐怕最直接的方式還是使用 ps 命令比較方便。而 /proc/stat 文件里 procs_blocked 則給出的是處于等待磁盤 IO 的進(jìn)程數(shù):

通過簡單區(qū)分 R 狀態(tài)任務(wù)增多,還是 D 狀態(tài)任務(wù)增多,我們就可以進(jìn)入到不同的排查流程里。下面,我們就這個大圖的排查思路,做一個簡單的梳理。

R 狀態(tài)任務(wù)增多

即通常所說的 CPU 負(fù)載高。此類問題的排查定位主要思路是系統(tǒng),容器,進(jìn)程的運(yùn)行時間分析上,找到在 CPU 上的熱點(diǎn)路徑,或者分析 CPU 的運(yùn)行時間主要是在哪段代碼上。

CPU user 和 sys 時間的分布通常能幫助人們快速定位與用戶態(tài)進(jìn)程有關(guān),還是與內(nèi)核有關(guān)。另外,CPU 的 run queue 長度和調(diào)度等待時間,非主動的上下文切換 (nonvoluntary context switch) 次數(shù)都能幫助大致理解問題的場景。

因此,如果要將問題的場景關(guān)聯(lián)到相關(guān)的代碼,通常需要使用 perf,systemtap, ftrace 這種動態(tài)的跟蹤工具。

關(guān)聯(lián)到代碼路徑后,接下來的代碼時間分析過程中,代碼中的一些無效的運(yùn)行時間也是分析中首要關(guān)注的,例如用戶態(tài)和內(nèi)核態(tài)中的自旋鎖 (Spin Lock)。

當(dāng)然,如果 CPU 上運(yùn)行的都是有非常意義,非常有效率的代碼,那唯一要考慮的就是,是不是負(fù)載真得太大了。

D 狀態(tài)任務(wù)增多

根據(jù) Linux 內(nèi)核的設(shè)計(jì), D 狀態(tài)任務(wù)本質(zhì)上是 TASK_UNINTERRUPTIBLE 引發(fā)的主動睡眠,因此其可能性非常多。但是由于 Linux 內(nèi)核 CPU 空閑時間上對 IO 棧引發(fā)的睡眠做了特殊的定義,即 iowait,因此iowait 成為 D 狀態(tài)分類里定位是否 Load 高是由 IO 引發(fā)的一個重要參考。

當(dāng)然,如前所述, /proc/stat 中的 procs_blocked 的變化趨勢也可以是一個非常好的判定因 iowait引發(fā)的 Load 高的一個參考。

CPU iowait 高

很多人通常都對 CPU iowait 有一個誤解,以為 iowait 高是因?yàn)檫@時的 CPU 正在忙于做 IO 操作。其實(shí)恰恰相反, iowait 高的時候,CPU 正處于空閑狀態(tài),沒有任何任務(wù)可以運(yùn)行。只是因?yàn)榇藭r存在已經(jīng)發(fā)出的磁盤 IO,因此這時的空閑狀態(tài)被標(biāo)識成了 iowait ,而不是 idle。

但此時,如果用 perf probe 命令,我們可以清楚得看到,在 iowait 狀態(tài)的 CPU,實(shí)際上是運(yùn)行在 pid 為 0 的 idle 線程上:

相關(guān)的 idle 線程的循環(huán)如何分別對 CPU iowait 和 idle 計(jì)數(shù)的代碼,如下所示:

而 Linux IO 棧和文件系統(tǒng)的代碼則會調(diào)用 io_schedule,等待磁盤 IO 的完成。這時候,對 CPU 時間被記為 iowait 起關(guān)鍵計(jì)數(shù)的原子變量 rq->nr_iowait 則會在睡眠前被增加。注意,io_schedule 在被調(diào)用前,通常 caller 會先將任務(wù)顯式地設(shè)置成 TASK_UNINTERRUPTIBLE 狀態(tài):

CPU idle 高

如前所述,有相當(dāng)多的內(nèi)核的阻塞,即 TASK_UNINTERRUPTIBLE 的睡眠,實(shí)際上與等待磁盤 IO 無關(guān),如內(nèi)核中的鎖競爭,再如內(nèi)存直接頁回收的睡眠,又如內(nèi)核中一些代碼路徑上的主動阻塞,等待資源。

Brendan Gregg 在最近的博客 [Linux Load Averages: Solving the Mystery] (http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html)中,使用 perf 命令產(chǎn)生的 TASK_UNINTERRUPTIBLE 的睡眠的火焰圖,很好的展示了引起 CPU idle 高的多樣性。本文不在贅述。

因此,CPU idle 高的分析,實(shí)質(zhì)上就是分析內(nèi)核的代碼路徑引起阻塞的主因是什么。通常,我們可以使用 perf inject 對 perf record 記錄的上下文切換的事件進(jìn)行處理,關(guān)聯(lián)出進(jìn)程從 CPU 切出 (swtich out) 和再次切入 (switch in) 的內(nèi)核代碼路徑,生成一個所謂的 Off CPU 火焰圖.

當(dāng)然,類似于鎖競爭這樣的比較簡單的問題,Off CPU 火焰圖足以一步定位出問題。但是對于更加復(fù)雜的因 D 狀態(tài)而阻塞的延遲問題,可能 Off CPU 火焰圖只能給我們一個調(diào)查的起點(diǎn)。

例如,當(dāng)我們看到,Off CPU 火焰圖的主要睡眠時間是因?yàn)?epoll_wait 等待引發(fā)的。那么,我們繼續(xù)要排查的應(yīng)該是網(wǎng)絡(luò)棧的延遲,即本文大圖中的 Net Delay 這部分。

至此,你也許會發(fā)現(xiàn),CPU iowait 和 idle 高的性能分析的實(shí)質(zhì)就是 延遲分析。這就是大圖按照內(nèi)核中資源管理的大方向,將延遲分析細(xì)化成了六大延遲分析

CPU 延遲
內(nèi)存延遲
文件系統(tǒng)延遲
IO 棧延遲
網(wǎng)絡(luò)棧延遲
鎖及同步原語競爭
任何上述代碼路徑引發(fā)的 TASK_UNINTERRUPTIBLE 的睡眠,都是我們要分析的對象!

以問題結(jié)束

限于篇幅,本文很難將其所涉及的細(xì)節(jié)一一展開,因?yàn)樽x到這里,你也許會發(fā)現(xiàn),原來 Load 高的分析,實(shí)際上就是對系統(tǒng)的全面負(fù)載分析。怪不得叫 System Load 呢。這也是 Load 分析為什么很難在一篇文章里去全面覆蓋。

責(zé)任編輯:梁菲 來源: 阿里云云棲號
相關(guān)推薦

2010-05-06 16:07:48

Websphere M負(fù)載均衡

2014-06-10 09:24:21

大數(shù)據(jù)

2009-12-17 15:35:28

2025-12-05 08:09:43

2012-05-11 14:10:08

linux桌面系統(tǒng)

2009-06-16 14:43:23

大型網(wǎng)站系統(tǒng)架構(gòu)

2012-04-09 11:23:20

ibmdw

2016-11-18 15:39:31

Liunx

2018-12-06 10:56:20

AndroidLinux系統(tǒng)

2014-05-14 09:12:40

數(shù)據(jù)恢復(fù)

2022-10-24 08:14:35

長連接負(fù)載均衡Conusmer

2021-02-11 14:36:13

入侵防御系統(tǒng)

2012-08-29 13:39:29

2018-04-26 09:33:16

2016-07-22 10:50:56

Linux內(nèi)核無線子系統(tǒng)

2021-07-04 07:07:06

Ceph分布式存儲架構(gòu)

2020-09-27 10:32:05

開發(fā) Github可視化

2021-08-07 05:00:20

存儲系統(tǒng)

2021-08-02 22:56:54

漏斗分析數(shù)據(jù)

2022-04-13 15:10:40

Linuxvmstat分析信息
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

66m—66摸成人免费视频| 欧美激情成人| 久久精品最新地址| 日韩在线视频精品| 精品日韩在线播放| 一级日本不卡的影视| 爱啪视频在线观看视频免费| 中文字幕在线日韩| 激情视频一区二区三区| 黄色a级片免费| 3d动漫精品啪啪| 欧美三级自拍| 宅男一区二区三区| 日韩欧中文字幕| 久久国产精品免费一区二区三区| 国产精品一区二区免费看| 国产亚洲1区2区3区| 日本不卡不卡| 国产成人+综合亚洲+天堂| 国产麻豆视频一区二区| 韩国三级av在线免费观看| 欧美精品免费在线| 蜜臀av一区二区在线免费观看| 免费成人高清| 亚洲日本成人网| av中文在线资源库| 成人写真福利网| 久久久久久久综合狠狠综合| 视频在线这里都是精品| 国产色婷婷国产综合在线理论片a| jiyouzz国产精品久久| 牛牛精品在线| 国产91亚洲精品一区二区三区| 国产喷白浆一区二区三区| 亚洲v.com| 欧美自拍资源在线| 欧洲一区在线电影| 欧美亚洲精品在线| 国产精品自拍视频在线| 日韩中文字幕在线播放| 久久国产生活片100| 免费观看久久久久| 91麻豆精品秘密入口| 一区二区三区不卡视频在线观看 | 免费一级网站| 九九久久精品一区| 成av人片一区二区| 桃子视频成人app| 国产精品av免费| 日韩免费电影一区| 99热这里只有精品8| 成年人在线观看网站| 91免费看蜜桃| 欧洲人成人精品| 亚洲一级黄色| 免费网站成人| 精品国产免费人成电影在线观...| 91久久精品国产91性色tv| 亚洲五月综合| 国产裸舞福利在线视频合集| 成人在线中文字幕| 色呦呦网站一区| 欧美日韩精品| 免费高清完整在线观看| 人禽交欧美网站免费| 亚洲成人网在线| 国产精品一区二区久激情瑜伽| 乱馆动漫1~6集在线观看| 久久免费看毛片| 中文字幕日韩专区| 国产欧美在线观看一区| 香蕉久久夜色精品国产使用方法 | 91精品国产自产精品男人的天堂 | v888av成人| 欧美在线视频观看| 亚洲成人免费看| 欧美色图麻豆| 五月婷婷在线视频| 三区精品视频观看| 国产一区av在线| 国产日产欧美一区二区视频| 亚洲aa在线| 黄色av网站在线| 欧美一级二级三级| 精品视频久久久久久久| 99精品国产视频| 亚洲最好看的视频| 九色网友自拍视频手机在线| 欧美区高清在线| 一区二区三区视频在线| 中文字幕欧美区| 天天天综合网| 久久香蕉av| 成年人免费在线播放| 国产精品久久国产精品99gif| 欧美亚洲高清一区| 国产麻豆精品95视频| 麻豆精品少妇| 大胆av不用播放器在线播放 | 日韩成人精品一区二区| 都市激情一区| 伊人狠狠色丁香综合尤物| 久久成人这里只有精品| 精品久久久在线观看| 热久久免费视频| 国产免费av国片精品草莓男男| 国精产品999国精产品官网| 国产在线视频欧美一区二区三区| 精品亚洲一区二区三区在线播放| 中文欧美字幕免费| 一本一道久久综合狠狠老精东影业| 三级成人黄色影院| 久草在线资源视频| 在线国产精品网| 日韩美女视频中文字幕| 欧美变态tickling挠脚心| 91视频观看免费| 91久久高清国语自产拍| 欧美色网一区| 国产网友自拍电影在线 | 波多野结衣乳巨码无在线| 国产精品亚洲精品| 国产视频精品免费播放| 亚洲高清一区二区三区| 国产精品538一区二区在线| 首页国产精品| 国产福利亚洲| av在线播放av| 日本肉体xxxx裸体xxx免费| 青娱乐国产91| 国产成人精品久久二区二区91| 精品国产乱子伦一区| 亚洲毛片av在线| 国内精品视频一区二区三区八戒| 亚洲免费观看高清完整版在线观| 美女尤物在线视频| 91精品久久久久久9s密挑| 久久福利一区二区| 91亚洲精品丁香在线观看| 欧美噜噜久久久xxx| 日韩一级片在线观看| 亚洲日本中文字幕区| 国产一区二区不卡在线| 韩国精品一区二区三区| 欧美爱爱网站| 日韩欧美少妇| gogo在线观看| 四虎影视在线观看2413| 国产裸体免费无遮挡| 国产系列第一页| 成人3d动漫一区二区三区91| 韩国视频理论视频久久| 一区二区成人av| 日韩欧美成人一区| 色综合久久88色综合天天6| 久久久精品免费观看| 国产在线麻豆精品观看| 国产一在线精品一区在线观看| 麻豆一区二区麻豆免费观看| 香蕉久久免费电影| 日本理论片午伦夜理片在线观看| 樱花在线免费观看| 91大神在线资源观看无广告| 国产精品无码av在线播放| 在线一区亚洲| 日韩啊v在线| 国产日韩欧美一区二区| 国产精品自产拍在线观看| 97精品一区二区三区| 久久天天躁狠狠躁夜夜躁| 日韩精品在线视频观看| 日韩欧美国产三级| 欧美日韩免费一区二区三区视频| 亚洲国产aⅴ天堂久久| 国产精品二区一区二区aⅴ污介绍| av在线这里只有精品| 国产成人自拍在线| 九九久久精品视频| 蜜臀av性久久久久蜜臀aⅴ流畅| 99精品视频免费观看| 综合久久综合| 亚洲二区三区不卡| 久久久久亚洲| 婷婷亚洲五月| 水蜜桃久久夜色精品一区| 国产欧美一区| 精品福利久久久| 国产91精品对白在线播放| 蜜桃成人av| 最新精品国偷自产在线| 在线观看欧美理论a影院| 一区二区三区视频免费观看| 视频小说一区二区| 麻豆成人入口| 四虎884aa成人精品最新| 亚洲图区在线| 日韩系列欧美系列| 欧美精品aa| 性感少妇一区| 久久99国产精品久久99|