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

動(dòng)態(tài)追蹤技術(shù):Linux喜迎DTrace

系統(tǒng) Linux
DTrace 是動(dòng)態(tài)追蹤技術(shù)的鼻祖,源自 Solaris 操作系統(tǒng),提供了高級(jí)性能分析和調(diào)試功能,它的源代碼采用 CDDL 許可證,不兼容 Linux 內(nèi)核使用的 GPLv2 許可證,無(wú)法直接移植。

 通過(guò)前面幾篇文章的介紹,我們已經(jīng)可以通過(guò)一系列命令,從不同維度獲得操作系統(tǒng)當(dāng)前的性能運(yùn)行情況。 另外,借助類似Ganglia這樣的開(kāi)源產(chǎn)品,持續(xù)不斷地實(shí)施性能數(shù)據(jù)采集和存儲(chǔ),我們基于時(shí)間序列的歷史性能圖形,就可以大致判讀出計(jì)算集群的資源消耗情況和變化趨勢(shì)。 但是,僅僅這些還是不夠的,在很多情況下,我們希望能夠知道:“慢,是為什么慢;快,又是為什么快”。 如果要回答這個(gè)問(wèn)題,就必須引入另外一件神兵利器:動(dòng)態(tài)追蹤技術(shù)(Dynamic Tracing)。

鑒于這套兵器過(guò)于復(fù)雜(牛逼),屬于專家級(jí)技能, advanced performance analysis and troubleshooting tool。據(jù)稱掌握該技能需要耗費(fèi)大約100小時(shí)以上,所以如果不是對(duì)于系統(tǒng)性能問(wèn)題有***追求,以及變態(tài)般地技術(shù)狂熱,建議繞過(guò)本文。

為了便于展開(kāi),今天先起個(gè)頭,重點(diǎn)梳理下動(dòng)態(tài)追蹤技術(shù)的發(fā)展簡(jiǎn)史和目前的生態(tài)環(huán)境。更加具體詳細(xì)的內(nèi)容,會(huì)在后續(xù)的文章中陸續(xù)發(fā)表。

上月底,正當(dāng)全國(guó)人民翹首以盼光棍節(jié)的時(shí)候,開(kāi)源社區(qū)傳來(lái)一則重要新聞: Linux 4.9-rc1發(fā)布,正式合并了一項(xiàng)重要特性:BPF追蹤(Timed sampling)。

系統(tǒng)性能領(lǐng)域的國(guó)際導(dǎo)師Brendan Gregg,感動(dòng)得都快哭了,當(dāng)即在Twitter上表示這是一個(gè)重要的里程碑! 他隨后又寫了一篇長(zhǎng)文《DTrace for Linux 2016》,以示慶祝。

As a long time DTrace user and expert, this is an exciting milestone! --Brendan Gregg

Linux 合并了BPF而已嘛,跟DTrace這個(gè)勞什子有什么關(guān)系呢?

DTrace 是動(dòng)態(tài)追蹤技術(shù)的鼻祖,源自 Solaris 操作系統(tǒng),提供了高級(jí)性能分析和調(diào)試功能,它的源代碼采用 CDDL 許可證,不兼容 Linux 內(nèi)核使用的 GPLv2 許可證,無(wú)法直接移植。 當(dāng)然,江湖上還有另外一種說(shuō)法,Linux之所以一直沒(méi)有原生支持DTrace,是因?yàn)長(zhǎng)inus 覺(jué)得這玩意沒(méi)什么必要。 Anyway,隨著 BPF跟蹤的***主要功能合并到 Linux 4.9-rc1,Linux 現(xiàn)在有了類似 DTrace 的高級(jí)分析和調(diào)試功能。

Linux 這次合并的BPF(The Berkeley Packet Filter ),和Ganglia一樣,來(lái)自于加州大學(xué)伯克利分校(這所大學(xué)很有意思,以后還要反復(fù)提到)。 BPF,顧名思義,最早只是一個(gè)純粹的封***濾器,大家比較熟知的netfilter,就是基于BPF實(shí)現(xiàn)的動(dòng)態(tài)編譯器。 后來(lái)在很多牛人的參與下,進(jìn)行了擴(kuò)展,得到了一個(gè)所謂的 eBPF,可以作為某種更加通用的內(nèi)核虛擬機(jī)。 通過(guò)這種機(jī)制,我們其實(shí)可以在 Linux 中構(gòu)建類似 DTrace 那種常駐內(nèi)核的動(dòng)態(tài)追蹤虛擬機(jī)。

Linux 沒(méi)有 DTrace(名字),但現(xiàn)在有了 DTrace(功能)

嚴(yán)格來(lái)說(shuō),DTrace這個(gè)詞本身,已經(jīng)并不是狹義上基于Solaris的那套工具了,而是代表的是后現(xiàn)代操作系統(tǒng)的一整套工具家族和方法論。

History

當(dāng)時(shí) Solaris 操作系統(tǒng)的幾個(gè)工程師花了幾天幾夜去排查一個(gè)看似非常詭異的線上問(wèn)題。 開(kāi)始他們以為是很高級(jí)的問(wèn)題,就特別賣力,結(jié)果折騰了幾天,***發(fā)現(xiàn)其實(shí)是一個(gè)非常愚蠢的、某個(gè)不起眼的地方的配置問(wèn)題。 自從那件事情之后,這些工程師就痛定思痛,創(chuàng)造了 DTrace 這樣一個(gè)非常高級(jí)的調(diào)試工具,來(lái)幫助他們?cè)谖磥?lái)的工作當(dāng)中避免把過(guò)多精力花費(fèi)在愚蠢問(wèn)題上面。 畢竟大部分所謂的“詭異問(wèn)題”其實(shí)都是低級(jí)問(wèn)題,屬于那種“調(diào)不出來(lái)很郁悶,調(diào)出來(lái)了更郁悶”的類型。---《漫談動(dòng)態(tài)追蹤技術(shù)》

通觀DTrace的演變過(guò)程,幾乎相當(dāng)于一部現(xiàn)代操作系統(tǒng)系統(tǒng)的發(fā)展史,細(xì)查起來(lái),極其復(fù)雜。 但是有兩個(gè)人非常值得關(guān)注,一個(gè)是***的布道師,一個(gè)是國(guó)內(nèi)的代表人物, 初學(xué)者完全可以通過(guò)閱讀他們的文章、代碼,甚至微博/Twitter動(dòng)態(tài),了解動(dòng)態(tài)追蹤技術(shù)的實(shí)際應(yīng)用情況。

Brendan Gregg

前SUN性能工程師,最早的DTrace用戶,出版了包括《性能之巔》在內(nèi)的一大批書籍,囊括了性能問(wèn)題領(lǐng)域的技術(shù)、工具、方法論等方方面面。 是動(dòng)態(tài)追蹤技術(shù)當(dāng)之無(wú)愧的***布道師。他維護(hù)的個(gè)人博客發(fā)布了大量的原創(chuàng)內(nèi)容,并且持續(xù)保持著相當(dāng)?shù)幕钴S度??梢宰鳛?**手的學(xué)習(xí)資料。

Twitter: 個(gè)人網(wǎng)站:

章亦春 網(wǎng)名 agentzh。開(kāi)源項(xiàng)目OpenResty創(chuàng)始人,編寫了很多 Nginx 的第三方模塊, Perl 開(kāi)源模塊,以及最近一些年寫的很多 Lua 方面的庫(kù)。 他發(fā)表過(guò)的《漫談動(dòng)態(tài)追蹤技術(shù)》,是目前唯一由Brendan認(rèn)證的中文資料,入門***。 另外,他本人也在目前的工作、開(kāi)源項(xiàng)目運(yùn)營(yíng)中大量使用動(dòng)態(tài)追蹤技術(shù)。

Linux 追蹤器選型

動(dòng)態(tài)追蹤技術(shù)最復(fù)雜的地方在于追蹤器種類繁多,讓人一時(shí)無(wú)從下手。 根據(jù)前人的一些經(jīng)驗(yàn)總結(jié),建議按照以下路徑進(jìn)行選擇:

普通模式

適用于:開(kāi)發(fā)者, 系統(tǒng)管理員, DevOps, SRE

CPU分析

perf_events的應(yīng)用很廣泛,配合Brendan Gregg老師研究的火焰圖工具,可以分析程序在所有代碼基的資源消耗,精確定位到函數(shù)級(jí)。 例如

[[178363]]

進(jìn)程追蹤

  1. # ./execsnoop 
  2. Tracing exec()s. Ctrl-C to end
  3.    PID   PPID ARGS 
  4.  22898  22004 man ls 
  5.  22905  22898 preconv -e UTF-8 
  6.  22908  22898 pager -s 
  7.  22907  22898 nroff -mandoc -rLL=164n -rLT=164n -Tutf8 

HARD模式

適用于:性能或內(nèi)核工程師

Understanding all the Linux tracers to make a rational decision between them a huge undertaking.

  1. ftrace 內(nèi)核hacker的***。已經(jīng)包含在內(nèi)核,能夠支持 tracepoints, kprobes, and uprobes, 并提供一些能力: 事件追蹤, 可選擇過(guò)濾器和參數(shù); 事件計(jì)數(shù)和時(shí)間采樣,內(nèi)核概覽;基于函數(shù)的路徑追蹤。
  2. perf_events Linux用戶的主要追蹤器之一,它的源代碼在內(nèi)核中,通常在一個(gè) linux-tools-common包。
  3. eBPF 基于內(nèi)核的虛擬機(jī)
  4. SystemTap ***有力的追蹤器。它可以做幾乎所有的事情: 分析,打點(diǎn), kprobes, uprobes (源子 SystemTap), USDT, 內(nèi)核編程等。
  5. LTTng 事件收集器, 優(yōu)于其它追蹤器,支持多種事件類型,包括 USDT。
  6. ktap 一個(gè)很有前景的追蹤器,基于lua內(nèi)核虛擬機(jī)
  7. dtrace4linux 個(gè)人開(kāi)發(fā)者業(yè)余產(chǎn)出 (Paul Fox) ,將 Sun DTrace遷移到 Linux。
  8. OL DTrace Oracle Linux DTrace,將 DTrace 遷移到Oracle Linux的實(shí)現(xiàn)。
  9. sysdig 一種新型追蹤器, 能夠基于類似tcpdump的命令操作 syscall events, 再用lua后處理。
責(zé)任編輯:武曉燕 來(lái)源: 開(kāi)源博客
相關(guān)推薦

2021-11-15 04:00:07

Linux 內(nèi)核動(dòng)態(tài)

2021-11-14 07:29:55

Linux 內(nèi)核靜態(tài)追蹤Linux 系統(tǒng)

2011-10-09 12:59:54

DtraceLinux甲骨文

2016-12-26 08:56:09

LinuxDTraceBPF

2024-04-15 11:24:32

庫(kù)存跟蹤技術(shù)NFC藍(lán)牙

2020-08-23 18:10:16

機(jī)器狗人工智能系統(tǒng)

2013-03-19 09:18:35

Cookie

2010-01-22 11:00:31

linux指針函數(shù)

2010-09-30 09:42:06

2009-06-12 11:36:42

Netbeans插件DTrace GUI

2020-04-09 10:15:55

區(qū)塊鏈新冠疫情技術(shù)

2010-09-30 10:03:53

2013-09-25 17:02:50

追蹤技術(shù)CookiesGoogle

2013-09-24 10:48:32

Google追蹤技術(shù)Cookies

2015-02-06 15:51:11

2012-11-30 10:44:06

網(wǎng)絡(luò)回溯分析技術(shù)

2019-03-21 09:21:07

技術(shù)研發(fā)指標(biāo)

2010-09-30 10:16:48

2025-04-01 02:00:22

2025-04-02 00:33:00

點(diǎn)贊
收藏

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