系統管理員能夠經過利用BCC(BPF Compiler Collection)庫的工具來分析操做系統性能和獲取操做系統信息。
BCC工具全稱BPF Compiler Collection (BCC),是一個很強大的庫,強大的內核分析工具eBPF就是基於BCC開發的,利用這個庫能夠從底層獲取操做系統性能信息,網絡性能信息等許多與內核交互的信息。html
在RHEL中開箱即用的bcc-tools
工具封裝了BCC,使得用戶很容易使用它來分析系統性能linux
$ yum install bcc-tools
安裝後的bcc工具包在/usr/share/bcc/tools目錄下,能夠經過doc文檔瞭解所有的工具。shell
1.首先在終端1運行execsnop程序vim
$ /usr/share/bcc/tools/execsnoop
2.而後在新終端2中執行操做,如bash
$ ls /usr/share/bcc/tools/doc/
3.此時能夠在終端1中能夠看到終端2操做的信息網絡
PCOMM PID PPID RET ARGS ls 8382 8287 0 /usr/bin/ls --color=auto /usr/share/bcc/tools/doc/ sed 8385 8383 0 /usr/bin/sed s/^ \*\[0-9\]\\+ \*// ...
execsnoop程序會獲取每一個使用系統資源的新進程,包含進程名稱,PID,PPID,返回值,參數等ide
1.在終端1中運行opensnoop程序工具
$ /usr/share/bcc/tools/opensnoop -n name
好比這個命令會跟蹤uname命令打開的文件
2.在終端2中執行uname
3.在終端1中會顯示uname執行過程當中打開的文件列表oop
PID COMM FD ERR PATH 8596 uname 3 0 /etc/ld.so.cache 8596 uname 3 0 /lib64/libc.so.6 8596 uname 3 0 /usr/lib/locale/locale-archive ...
1.在終端1中運行biotop程序性能
$ /usr/share/bcc/tools/biotop 30
上面的命令會監控30秒內磁盤IO最頻繁的進程
2.在終端2中執行dd讀寫一下磁盤
$ dd if=/dev/vda of=/dev/zero
3.在終端1中能夠看到IO最頻繁的進程時dd
PID COMM D MAJ MIN DISK I/O Kbytes AVGms 9568 dd R 252 0 vda 16294 14440636.0 3.69 48 kswapd0 W 252 0 vda 1763 120696.0 1.65 7571 gnome-shell R 252 0 vda 834 83612.0 0.33 1891 gnome-shell R 252 0 vda 1379 19792.0 0.15 7515 Xorg R 252 0 vda 280 9940.0 0.28
1.在終端1中運行xfsslower程序
$ /usr/share/bcc/tools/xfsslower 1
上面的命令會分析系統讀寫性能,會記錄讀寫用時超過1ms的操做
2.在終端2中進行寫文件操做
$ vim test
3.在終端1中顯示vim操做
TIME COMM PID T BYTES OFF\_KB LAT(ms) FILENAME 13:07:14 b'bash' 4754 R 256 0 7.11 b'vim' 13:07:14 b'vim' 4754 R 832 0 4.03 b'libgpm.so.2.1.0' 13:07:14 b'vim' 4754 R 32 20 1.04 b'libgpm.so.2.1.0'
在/usr/share/bcc/tools/doc/目錄中有對每一個工具的介紹和使用文檔
在咱們分析系統遇到困難時,利用bcc工具更深刻的瞭解系統的運行過程有時頗有幫助。