日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

小編說:

今天為大家介紹一款實用工具——阿里開源內核診斷工具diagnose-tools。diagnose-tools是由阿里巴巴開發的linux內核診斷工具,用于linux性能分析,特別是大規模集群系統中的抖動問題分析。

diagnose-tools工具是阿里工程師謝寶友在過去一年多時間開發的,代碼行數超過 5萬行。同時,他也是《深入理解并行編程》、《自研操作系統:DIM-SUM設計與實現》的作者。

 

1. 引言

 

作為一名Linux工程師,難免會遇到系統宕機、夯機、性能抖動等問題。在夯機時,常見的做法是編寫一個簡單的腳本去遍歷系統中所在線程的堆棧。例如:

#!/bin/sh
#****************************************************************#
# ScriptName: load.sh
# Author: baoyou.xie@aliyun.com
# Create Date: 2020-08-13 19:32
# Modify Author: @alibaba-inc.com
# Modify Date: 2020-08-13 19:32
# Function:
#***************************************************************#

for pid in `ls /proc/`; do
    for tid in `ls /proc/$pid/task`; do
        echo pid: $pid, tid: $tid
        cat /proc/$pid/task/$tid/stack
    done
done

 

只要找到進程的調用鏈,有經驗的工程師會很快知道引起系統卡頓的原因。換句話說,類似問題比較容易解決。

確實,在單機中,解決這些問題的方法很多,看起來也很簡單。但是,這樣的腳本可能存在如下問題:

1. 在生產環境中,一臺100個CPU的服務器,往往有數萬甚至數十萬個線程,運行這樣的腳本要花費一分鐘時間。

2. 如果在上千臺機器中部署這樣的腳本,必然會引起生產故障。

3. 這樣的腳本只能找到線程在內核中的堆棧。如果應用程序運行在用戶態,就沒有辦法知道這些應用程序到底在做什么,為何引起系統卡頓。

 

2. 難題

 

互聯網一線工程師最頭疼的難題是“集群內RT偶發抖動”,以及系統卡頓

其中,RT抖動問題最大的難點在于:

  • 上千臺機器中出現異常的機器隨機。
  • 異常發生的時間隨機。
  • 故障持續時間也只有幾秒鐘。

常規的單機診斷手段有以下不足:

  • 占用超過1%的CPU。
  • 部署復雜,可能需要安裝Python/systemtap等工具。
  • 消耗內存和存儲資源。

可以說,集群范圍內的RT偶發抖動是一個業界難題,被全世界的運維工程師所討厭。

在日常業務穩定性分析的過程中,作者用內核模塊實現了一些小工具,并將這些小工具集成到diagnose-tools中。為了將工具方便應用到線上生產環境,作者特意使用Linux內核模塊實現了diagnose-tools工具。

這些小工具解決了不少線上的穩定性問題。特別是在2019年“雙11”壓測中,發揮了重要作用,為2019年最穩的“雙11”貢獻了力量。

 

3. 用途

 ◆ load-monitor

在系統卡頓的時候,往往伴隨著系統Load指標升高。這可以通過top/uptime等命令看到當前系統的Load指標。一旦發現系統Load升高,就可以使用load-monitor子功能找到當前系統中處于D狀態和R狀態的進程。這些狀態的進程與系統Load指標息息相關。diagnose-tools工具不但能找到這些進程的名稱,還能打印出進程的內核態堆棧/用戶態堆棧/進程組/CGROUP組等信息。最重要的是,工具還可以為此生成火焰圖,這樣就可以一目了然地找到問題原因。

當然了,你可以運行如下命令來看看工具的效果:

sh /usr/diagnose-tools/test.sh load-monitor

 ◆ sys-delay

在服務器Linux中,隨著系統負載的增加,會暴露出Linux內核中不少有隱患的代碼。例如:過長的循環、鎖競爭、不合理的流程。這些代碼會導致系統調用變慢,從而引起卡頓。sys-delay功能是找到這些異常代碼的好工具。

sys-delay功能的實現原理,是在應用程序進入系統調用的地方,掛接一個trace-point鉤子,記錄下進入時間,在退出系統調用的時候結束監控。并且啟動一個定時器,監控執行時間過長的調用鏈。

這個功能找到不少異常流程,相關的工程師制作了熱補丁,提升了阿里混部系統的平滑度。

 ◆ run-trace

run-trace功能是解決應用程序RT抖動的利器。為至少10個業務方解決了2019年“雙11”壓測過程中的問題。可以略微夸張一點地講,這個功能為2019年最穩的“雙11”發揮了不小的作用,這也間接促進了2019 年“雙11”成功獲得國家科技進步獎。

run-trace功能的原理是在計算RT開始和結束的地方,掛接鉤子,系統記錄下在此期間應用程序的所有行為。可以針對應用程序進行微秒級的采樣,得到應用程序的用戶態調用鏈,找到應用程序異常期間的所有異常事件。

 ◆ perf

與開源社區大名鼎鼎的perf工具相比,diangose-tools工具的perf功能不算強大,但是很有特色。特別是在運行數十個容器的宿主機中,使用此工具可以針對部分CPU進行采樣,并且完整輸出進程用戶態/內核態調用鏈,這些特色是開源perf工具所沒有的。此功能也協助分析了不少線上生產環境中的問題。

 ◆ 其他功能

除了這些功能外,diagnose-tools工具還有20多個小功能。包括網絡、I/O相關的診斷工具。限于篇幅,作者并不能在此詳細列出所有功能的介紹。有興趣的讀者可以:

1.參考源碼目錄 /documents/usage.docx里的詳細介紹。

2.參考源碼目錄SOURCE/script/test.sh,試著使用每個功能并觀察其結果。

3.添加linux-kernel微信號與作者聯系。

 

4. 效果

 

通過工具,我們最終在線上生產環境中,發現了不少內存回收、系統堆疊、不合理的監控工具引起的問題。

同時根據工具的診斷結果,產生了19個內核優化補丁,同時也調整線上生產系統的Linux配置參數。

最終實現的效果是:將混部機房的Load高告警數量降低了67%,節省了數千臺物理機。同時也將阿里云存儲抖動告警降低了50倍。

 

5. 特點

 

要達到這樣的效果,主要在于工具輕量化的特點。這是本工具優于腳本/ebpf/systemtap的地方。它的性能開銷小到何種地步呢?舉個例子,在10G網絡吞吐量的情況下,對每個報文進行監控,僅僅占用3%的CPU。

正是由于輕量化的特點,才可以將工具常態化運行在集群中,抓住異常信息。最終實現秒級系統資源監控,突破了一個業界技術難題。

 

6. 適用范圍

 

除了輕量化的特點外,diagnose-tools工具的適用面也比較廣,不僅可以用于阿里生產環境的操作系統,也可以用于標準linux 2.6 / 3.x / 4.x / 5.x版本。當然了,還可以用于常見的Linux發行版,例如ubuntu/centos/debian,甚至也有公有云客戶將它用于定制linux中。

diagnose-tools還可以獲取用戶態應用程序的調用鏈,而不管這些應用程序是用JAVA / C / C++ 還是Go語言開發。甚至,作者希望業界同人對工具進行改造,以支持python等其他開發語言編寫的應用程序。

在實踐中,也可以基于diagnose-tools進行二次開發,與業務調度程序配合,完成更復雜的功能。實際上,已經有業務方在這樣使用diagnose-tools工具了。

 

7. 現狀

 

diagnose-tools工具已經被一些公有云客戶、友商、開源愛好者使用,并且幫助解決了不少Linux性能問題,特別是抖動問題。

目前,diagnose-tools工具已經開放源碼。更詳細的信息,請大家參考:

https://github.com/alibaba/diagnose-tools

有一些熱情的開源愛好者已經為diagnose-tools提供了patch,這些patch已經被合入到工具中,并且被作者用于線上生產系統的問題診斷中。

歡迎更多的開源愛好者參與到diagnose-tools工具的開發中來!

 

本文作者新書《自研操作系統:DIM-SUM設計與實現》已上市!

分享到:
標簽:內核 診斷
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定