自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

風(fēng)云再續(xù):他抖任他抖,IO診斷在我手

系統(tǒng)
話說(shuō)上回青囊協(xié)助曾泰處理完官道的網(wǎng)絡(luò)抖動(dòng)大案之后,接到急報(bào)說(shuō)邗溝發(fā)生鹽船劇烈抖動(dòng)以致傾覆的大案,狄仁杰又帶上青囊火速啟程趕往邗溝。

[[432179]]

本文轉(zhuǎn)載自微信公眾號(hào)「云巔論劍」,作者李光水、毛文安 。轉(zhuǎn)載本文請(qǐng)聯(lián)系云巔論劍公眾號(hào)。

一、引子

話說(shuō)上回青囊協(xié)助曾泰處理完官道的網(wǎng)絡(luò)抖動(dòng)大案之后,接到急報(bào)說(shuō)邗溝發(fā)生鹽船劇烈抖動(dòng)以致傾覆的大案,狄仁杰又帶上青囊火速啟程趕往邗溝。

[[432180]]

二、邗溝現(xiàn)場(chǎng)斷案

此時(shí)大運(yùn)河上一片沉寂,青囊遞給狄仁杰兩片從案發(fā)現(xiàn)場(chǎng)打撈上來(lái),標(biāo)記有“iostat印記”的鹽船龍骨碎片,沉聲道,“邗溝覆船案,兩年內(nèi)已發(fā)生多次。每到邗溝,大風(fēng)忽起,船只便開(kāi)始抖動(dòng)搖晃;更甚者,船只直接解體。為此,我收集到解體船只的碎片,發(fā)現(xiàn)這船體抖動(dòng)確有玄機(jī)。”運(yùn)河之上押運(yùn)官鹽的船只,遇風(fēng)浪或保持穩(wěn)健前行,或搖晃解體,如能知曉各部件抖動(dòng)之時(shí)間長(zhǎng)短,分析其關(guān)聯(lián)部位,便能揪出幕后真兇。

面對(duì)此龍骨碎片,青囊不禁聯(lián)想到之前處理 IO 問(wèn)題時(shí)的一件奇事,當(dāng)時(shí)系統(tǒng)也是抖得厲害,blktrace 等工具無(wú)法清楚解釋在哪里抖的,后來(lái)便研究了一下 IO 領(lǐng)域的抖動(dòng)問(wèn)題,它表現(xiàn)為在一段時(shí)間內(nèi),IO 性能無(wú)法始終保持一致,會(huì)突發(fā)性的下跌到不符合我們所預(yù)期的性能范圍。就業(yè)務(wù)影響而言,數(shù)據(jù)存儲(chǔ)效率低下、無(wú)法維持穩(wěn)定的對(duì)外服務(wù),影響用戶體驗(yàn)。目前看邗溝覆船案,極有可能跟 IO 抖動(dòng)有關(guān),不禁喜上眉梢。

狄仁杰接過(guò)碎片,仔細(xì)端詳 iostat 中的各指標(biāo),沉吟片刻道,“磁盤(pán) vda 乃官家所部署的云盤(pán),號(hào)稱 us 級(jí)別延遲,現(xiàn)在可以看到寫(xiě) iops 最高也不過(guò)十、寫(xiě) IO 最高也不過(guò)百 KB/s,何以在如此低的 IO 負(fù)載情況下,竟有數(shù)十ms的await沖高,著實(shí)令我百思不得其解。”

await 是一個(gè)從時(shí)間維度描述 IO 性能的指標(biāo),表示為單位時(shí)間內(nèi)每個(gè) IO 請(qǐng)求被處理的平均耗時(shí),單位為微秒或者毫秒,亦可理解為 IO 的響應(yīng)時(shí)間。這個(gè)指標(biāo)是內(nèi)核 IO 子系統(tǒng) block 層透出來(lái)后經(jīng)過(guò)系統(tǒng)工具 iostat 加工之后的結(jié)果,因此,它既包含了一個(gè) IO 在 IO 軟件棧中處理的時(shí)間,也包含了磁盤(pán)的處理時(shí)間。因此 await 沖高現(xiàn)象是 IO 抖動(dòng)問(wèn)題中比較典型的特征。

“狄閣老莫愁,針對(duì)此類 IO 抖動(dòng)問(wèn)題,鄙人正巧最近研制出一診斷利器——iosdiag,已經(jīng)集成到 sysAK 的工具集,或許可為閣老排憂解難”,青囊笑道。

眾人目光炯炯,恍若流光般向青囊匯聚而去,狄仁杰笑道,“青囊之神技,果真層出不窮,且與我等說(shuō)來(lái),何為 iosdiag?”

三、 iosdiag 功能介紹

青囊道:

iosdiag,是 sysAK 工具平臺(tái)中的 IO 存儲(chǔ)診斷工具,已具備 IO 時(shí)延探測(cè)功能、IO HANG 診斷功能兩大功能,前者用于分析當(dāng)前 IO 存儲(chǔ)鏈路中的時(shí)延抖動(dòng)問(wèn)題并確定抖動(dòng)邊界,后者可檢測(cè)當(dāng)前系統(tǒng)中 IO HANG 事件并確定問(wèn)題邊界。

IO 時(shí)延,指 IO 在其生命周期內(nèi)所經(jīng)歷的 IO 各路徑上的時(shí)間損耗,通常情況下,可以分為 OS 耗時(shí)和磁盤(pán)耗時(shí),而 OS 內(nèi)比較受關(guān)注的就是 IO 棧了,IO 棧里面又包含復(fù)雜的 block、驅(qū)動(dòng)等部分;正所謂每每碰到 IO 抖動(dòng)問(wèn)題,必有人抓耳撓腮、暗無(wú)天日吶。

iosdiag 中的 iolatency工具,實(shí)現(xiàn)了 IO 時(shí)延探測(cè)功能,最喜隱匿于內(nèi)核 IO 棧之中,竟能眼觀六路,耳聽(tīng)八方,以迅雷不及掩耳之勢(shì),將各 IO 在生命周期之內(nèi),不同關(guān)鍵路徑上的時(shí)間戳信息盡收于乾坤寶袋之中;而后又基于此,計(jì)算 IO 路徑上的所有時(shí)延數(shù)據(jù),來(lái)確認(rèn) IO 耗時(shí)最大的路徑(磁盤(pán)耗時(shí)或者軟件內(nèi)耗時(shí)),可謂神通廣大,法力無(wú)邊。

且 iosdiag latency 已經(jīng)成功定位到多起線上 IO 抖動(dòng)問(wèn)題,目前具備如下特色:

  • 支持捕獲 IO 延遲超過(guò)指定耗時(shí)的 IO
  • 支持獲取 IO 各路徑延遲信息,準(zhǔn)確定界磁盤(pán)、OS 耗時(shí)(包含 block、驅(qū)動(dòng)、磁盤(pán)、IO 結(jié)束耗時(shí))問(wèn)題
  • 信息格式化輸出,更直觀,具備完整單個(gè) IO 信息、所有 IO 統(tǒng)計(jì)信息、進(jìn)程級(jí)IO 耗時(shí)分析,能夠直接了當(dāng)?shù)闹滥睦锍隽藛?wèn)題

“甚好!知我者,真乃青囊也,此迷局當(dāng)以 iosdiag latency 破之”,邊聽(tīng)青囊介紹,狄仁杰一臉愁容漸漸消散,滿面春風(fēng)取而代之,如今已是柳暗花明,既有 iosdiag latency 利器在手,何不上去診斷一把。

四、iosdiag 抖動(dòng)問(wèn)題破解

狄仁杰早已迫不及待,讓青囊運(yùn)行了 sysak iosdiag latency,開(kāi)始了激動(dòng)人心的 IO 抖動(dòng)診斷之旅。

  1. [root@VM20200727-16 /root] 
  2. #sysak iosdiag latency -b 10 -t 10 

以上命令表示,sysak iosdiag latency 將在系統(tǒng)中運(yùn)行 10 秒,并收集系統(tǒng)中該時(shí)間段內(nèi)延遲超過(guò) 10ms 的 IO,隨后退出診斷,屆時(shí),IO 在各路徑上的延遲將無(wú)所遁形。時(shí)間 1 秒 1 秒過(guò)去,眾人滿懷期待,當(dāng)看到 iosdiag 診斷結(jié)束之后,狄仁杰隨即打開(kāi)了診斷日志文件,果然大有玄機(jī),而后眾人發(fā)現(xiàn),總共收集到 9 個(gè)IO,其中 flush/fua io 有 6 個(gè),而經(jīng)過(guò)統(tǒng)計(jì)主要 IO 耗時(shí)竟然集中在 OS 的 block 中(最大耗時(shí) 51.4ms)

  1. ... 
  2.         "diskname":"vda"
  3.         "total_ios": 9, 
  4.         "flush/fua":6 
  5.         "delays":[ 
  6.             ... 
  7.             { 
  8.                 "component":"os(block)"
  9.                 "percent":"58.988%"
  10.                 "max":51442, 
  11.                 "min":14, 
  12.                 "avg":20686 
  13.             }, 
  14.             { 
  15.                 "component":"os(driver)"
  16.                 "percent":"0.034%"
  17.                 "max":22, 
  18.                 "min":4, 
  19.                 "avg":12 
  20.             }, 
  21.             { 
  22.                 "component":"disk"
  23.                 "percent":"40.966%"
  24.                 "max":51291, 
  25.                 "min":250, 
  26.                 "avg":14366 
  27.             }, 
  28.             { 
  29.                 "component":"os(complete)"
  30.                 "percent":"0.009%"
  31.                 "max":7, 
  32.                 "min":2, 
  33.                 "avg":3 
  34.             } 
  35.         ] 
  36.         ... 

“iosdiag 果真神器也!”,狄仁杰忍不住贊嘆,朝青囊豎起了大拇指。

“只是現(xiàn)下已知 os(block) 耗時(shí)嚴(yán)重,可否進(jìn)一步獲悉耗時(shí)原因?”

“當(dāng)然可以,狄閣老且看,診斷結(jié)果中不僅包含延遲分布統(tǒng)計(jì)信息,同時(shí)還包含延遲最大的 IO,我們可以將此 IO 展開(kāi)來(lái)看,或可發(fā)現(xiàn)其中玄機(jī)”,青囊笑答曰。

  1. "abnormal_seq":{ 
  2.         "summary":{ 
  3.             "check_time":"Thu Oct 14 11:21:36 2021"
  4.             "event":"slow io"
  5.             "component":"os(block)"
  6.             "delay":"51442 us"
  7.             "total_delay":"51738 us"
  8.             "cpu":0, 
  9.             "comm":"jbd2/vda1-8 -> kworker/4:1H"
  10.             "pid":"358 -> 352"
  11.             "diskname":"vda"
  12.             "op":"FWFS"
  13.             "sector":59159840, 
  14.             "data_len":4096 
  15.         }, 
  16.         "detail":{...} 
  17.     } 

“此 IO 為 jbd2 線程發(fā)起的 flush/fua 請(qǐng)求(op: FWFS),總耗時(shí) 51.7ms,而 block 層耗時(shí)竟有 51.4ms,實(shí)在是不正常。正如我們對(duì) block 層 flush 實(shí)現(xiàn)機(jī)制的理解,flush/fua 請(qǐng)求在真正寫(xiě)入數(shù)據(jù)前后,要執(zhí)行多次 flush 請(qǐng)求,不僅要求串行執(zhí)行,而且還需要 workqueue 的介入,繁瑣至極。由此可見(jiàn),有兩種可能性導(dǎo)致此 IO 耗時(shí)長(zhǎng):workqueue 調(diào)度慢或者磁盤(pán)本身就慢。”

聽(tīng)完青囊的分析,狄仁杰面露喜色,認(rèn)為已經(jīng)離真相不遠(yuǎn),追問(wèn),“不知是否還有信息可以查看進(jìn)一步原因?”

“狄閣老此前是否留意到除了 os(block)路徑耗時(shí)嚴(yán)重之外,還有 disk 路徑也占據(jù)了 40% 的的耗時(shí)?由此,我料問(wèn)題必定由磁盤(pán)引起,我們可再找一個(gè)捕獲到的寫(xiě) IO 請(qǐng)求展開(kāi)來(lái)看”,青囊似乎早已了然于胸,淡然從診斷日志文件中隨意取出一個(gè)寫(xiě) IO 信息。

  1.     "summary":{ 
  2.         "check_time":"Thu Oct 14 11:21:36 2021"
  3.         "event":"slow io"
  4.         "component":"disk"
  5.         "delay":"32465 us"
  6.         "total_delay":"32520 us"
  7.         "cpu":0, 
  8.         "comm":"jbd2/vda1-8 -> kworker/0:1H"
  9.         "pid":"358 -> 357"
  10.         "diskname":"vda"
  11.         "op":"WS"
  12.         "sector":59159848, 
  13.         "data_len":98304 
  14.     }, 
  15.     "detail":{ 
  16.         "delays":[ 
  17.             {...}, 
  18.             { 
  19.                 "component":"block"
  20.                 "delay":43 
  21.             }, 
  22.             { 
  23.                 "component":"driver"
  24.                 "delay":8 
  25.             }, 
  26.             { 
  27.                 "component":"disk"
  28.                 "delay":32465 
  29.             }, 
  30.             { 
  31.                 "component":"complete"
  32.                 "delay":4 
  33.             } 
  34.         ], 
  35.         "points":[...] 
  36.     } 

至此眾人發(fā)現(xiàn),正常的寫(xiě) IO,在磁盤(pán)側(cè)的延遲竟然達(dá)到 32.4ms,同時(shí)此 IO 也是通過(guò) workqueue 下發(fā),但 block 側(cè)的消耗也僅 43us,由此可見(jiàn)沒(méi)有 workqueue 調(diào)度慢問(wèn)題,是磁盤(pán)有問(wèn)題。

自打?qū)⒋疟P(pán)升級(jí)之后,線上穩(wěn)定運(yùn)行數(shù)月,未見(jiàn)await沖高問(wèn)題,而沉寂了許久的大運(yùn)河也重現(xiàn)往日喧囂,官家鹽船南來(lái)北往,淮北百姓終于又能吃上官鹽了。

五、后記

一個(gè)月后,破案捷報(bào)傳到洛陽(yáng),武則天讀完奏折驚嘆不已,“邗溝覆船已發(fā)多次,各家工具齊上,尚不能破,獨(dú)狄懷英竟以青囊之 iosdiag 神器,不日便告功成,真乃神乎其技矣。只是這青囊,為何許人也?”

這時(shí)忽有內(nèi)史答曰,“青囊,英文名 sysAK,是龍蜥社區(qū)(OpenAnolis)的一個(gè)開(kāi)源項(xiàng)目,里面有諸多工具神技”

武則天驚呼,“sysAK,真乃神技也!”

而此時(shí)遠(yuǎn)隔千里之外的大運(yùn)河邊,楊柳依依,狄仁杰正依依不舍送別青囊,“這些日子多虧有你解決各類疑難雜癥,你那諸多神技,也令我大開(kāi)眼界,我實(shí)在不舍你離去”。

 

“這些時(shí)日承蒙閣老厚愛(ài),奈何要?jiǎng)?wù)在身,不便久留。日后若閣老再有需要,哪怕遠(yuǎn)在天邊,青囊必定肝腦涂地,為閣老解憂。”

 

責(zé)任編輯:武曉燕 來(lái)源: 云巔論劍
相關(guān)推薦

2020-02-11 13:22:20

this函數(shù)JavaScript

2019-11-06 16:33:29

Ignite微軟技術(shù)

2019-06-21 09:55:10

刷抖美腿App

2020-08-06 10:09:08

抖音木馬安全隱私

2015-11-06 11:02:24

微信羅素生活

2022-01-22 07:44:12

抖音PC 版電腦刷抖音

2018-06-22 14:03:37

mysql刪庫(kù)

2021-08-16 08:02:34

技術(shù)文檔代碼

2009-06-10 09:37:39

2020-07-22 08:58:56

C++特性函數(shù)

2021-04-29 05:58:20

微信搖一搖抖音

2015-03-18 11:38:38

.com

2021-04-07 13:31:36

人臉識(shí)別人工智能AI

2021-01-04 10:04:11

人臉識(shí)別人工智能數(shù)據(jù)

2021-06-28 05:19:32

抖音電腦

2022-06-06 12:19:08

抖音功耗優(yōu)化Android 應(yīng)用

2015-03-25 09:42:21

2009-06-02 08:14:42

2022-02-22 08:29:59

Vue前端防抖

2023-12-18 07:37:17

JavaScript防抖節(jié)流
點(diǎn)贊
收藏

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