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

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

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

小編說:

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

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

 

1. 引言

 

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

#!/bin/sh
#****************************************************************#
# ScriptName: load.sh
# Author: [email protected]
# 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

 

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

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

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

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

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

 

2. 難題

 

互聯(lián)網(wǎng)一線工程師最頭疼的難題是“集群內(nèi)RT偶發(fā)抖動”,以及系統(tǒng)卡頓

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

  • 上千臺機器中出現(xiàn)異常的機器隨機。
  • 異常發(fā)生的時間隨機。
  • 故障持續(xù)時間也只有幾秒鐘。

常規(guī)的單機診斷手段有以下不足:

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

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

在日常業(yè)務穩(wěn)定性分析的過程中,作者用內(nèi)核模塊實現(xiàn)了一些小工具,并將這些小工具集成到diagnose-tools中。為了將工具方便應用到線上生產(chǎn)環(huán)境,作者特意使用Linux內(nèi)核模塊實現(xiàn)了diagnose-tools工具。

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

 

3. 用途

 ◆ load-monitor

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

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

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

 ◆ sys-delay

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

sys-delay功能的實現(xiàn)原理,是在應用程序進入系統(tǒng)調(diào)用的地方,掛接一個trace-point鉤子,記錄下進入時間,在退出系統(tǒng)調(diào)用的時候結(jié)束監(jiān)控。并且啟動一個定時器,監(jiān)控執(zhí)行時間過長的調(diào)用鏈。

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

 ◆ run-trace

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

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

 ◆ perf

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

 ◆ 其他功能

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

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

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

3.添加linux-kernel微信號與作者聯(lián)系。

 

4. 效果

 

通過工具,我們最終在線上生產(chǎn)環(huán)境中,發(fā)現(xiàn)了不少內(nèi)存回收、系統(tǒng)堆疊、不合理的監(jiān)控工具引起的問題。

同時根據(jù)工具的診斷結(jié)果,產(chǎn)生了19個內(nèi)核優(yōu)化補丁,同時也調(diào)整線上生產(chǎn)系統(tǒng)的Linux配置參數(shù)。

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

 

5. 特點

 

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

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

 

6. 適用范圍

 

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

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

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

 

7. 現(xiàn)狀

 

diagnose-tools工具已經(jīng)被一些公有云客戶、友商、開源愛好者使用,并且?guī)椭鉀Q了不少Linux性能問題,特別是抖動問題。

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

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

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

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

 

本文作者新書《自研操作系統(tǒng):DIM-SUM設計與實現(xiàn)》已上市!

分享到:
標簽:內(nèi)核 診斷
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

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

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

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

運動步數(shù)有氧達人2018-06-03

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

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

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

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