bcc-tools的安裝和使用

BPF Compiler Collection(BCC)是什么

BCC 是一個工具包,用于創(chuàng)建高效的內(nèi)核跟蹤和操作程序,并包含多個有用的工具和示例。它利用擴展的 BPF(伯克利包過濾器),正式名稱是 eBPF,這是在 Linux 3.15 中首次添加的新特性。大部分 BCC 使用的功能需要 Linux 4.1 及以上版本。github的地址是:https://github.com/iovisor/bcc

可用工具:

  • tools/argdist: 顯示函數(shù)參數(shù)值的直方圖或頻率計數(shù)。
  • tools/bashreadline: 打印系統(tǒng)范圍內(nèi)輸入的 bash 命令。
  • tools/biolatency: 匯總塊設(shè)備 I/O 延遲的直方圖。
  • tools/biotop: 磁盤頂級:按進程匯總塊設(shè)備 I/O。
  • tools/biosnoop: 跟蹤塊設(shè)備 I/O 的 PID 和延遲。
  • tools/bitesize: 顯示每個進程的 I/O 大小直方圖。
  • tools/bpflist: 顯示具有活動 BPF 程序和映射的進程。
  • tools/btrfsdist: 匯總 btrfs 操作延遲分布的直方圖。
  • tools/btrfsslower: 跟蹤慢速 btrfs 操作。
  • tools/capable: 跟蹤安全能力檢查。
  • tools/cachestat: 跟蹤頁面緩存命中/未命中率。
  • tools/cachetop: 按進程跟蹤頁面緩存命中/未命中率。
  • tools/cpudist: 匯總每個任務(wù)的在 CPU 時間和離 CPU 時間的直方圖。
  • tools/cpuunclaimed: 采樣 CPU 運行隊列并計算未被認領(lǐng)的空閑 CPU。
  • tools/criticalstat: 跟蹤并報告內(nèi)核中的長原子關(guān)鍵區(qū)段。
  • tools/dbslower: 跟蹤比閾值慢的 MySQL/PostgreSQL 查詢。
  • tools/dbstat: 匯總 MySQL/PostgreSQL 查詢延遲的直方圖。
  • tools/dcsnoop: 跟蹤目錄項緩存(dcache)查找。
  • tools/dcstat: 目錄項緩存(dcache)統(tǒng)計。
  • tools/deadlock: 檢測正在運行的進程中的潛在死鎖。
  • tools/drsnoop: 跟蹤直接回收事件的 PID 和延遲。
  • tools/execsnoop: 跟蹤通過 exec() 系統(tǒng)調(diào)用創(chuàng)建的新進程。
  • tools/exitsnoop: 跟蹤進程終止(退出和致命信號)。
  • tools/ext4dist: 匯總 ext4 操作延遲分布的直方圖。
  • tools/ext4slower: 跟蹤慢速 ext4 操作。
  • tools/filelife: 跟蹤短生命周期文件的生命周期。
  • tools/fileslower: 跟蹤慢速同步文件讀寫。
  • tools/filetop: 按文件名和進程進行文件讀寫。文件頂級。
  • tools/funccount: 統(tǒng)計內(nèi)核函數(shù)調(diào)用次數(shù)。
  • tools/funclatency: 計時函數(shù)并顯示其延遲分布。
  • tools/funcslower: 跟蹤慢速內(nèi)核或用戶函數(shù)調(diào)用。
  • tools/gethostlatency: 顯示 getaddrinfo/gethostbyname[2] 調(diào)用的延遲。
  • tools/hardirqs: 測量硬中斷事件時間。
  • tools/inject: 使用調(diào)用鏈和謂詞進行有針對性的錯誤注入。
  • tools/killsnoop: 跟蹤由 kill() 系統(tǒng)調(diào)用發(fā)出的信號。
  • tools/klockstat: 跟蹤內(nèi)核互斥鎖事件并顯示鎖統(tǒng)計信息。
  • tools/llcstat: 按進程匯總 CPU 緩存引用和丟失。
  • tools/mdflush: 跟蹤 md 刷新事件。
  • tools/memleak: 顯示未釋放的內(nèi)存分配以查找內(nèi)存泄漏。
  • tools/mountsnoop: 系統(tǒng)范圍內(nèi)跟蹤掛載和卸載系統(tǒng)調(diào)用。
  • tools/mysqld_qslower: 跟蹤比閾值慢的 MySQL 服務(wù)器查詢。
  • tools/nfsslower: 跟蹤慢速 NFS 操作。
  • tools/nfsdist: 匯總 NFS 操作延遲分布的直方圖。
  • tools/offcputime: 按內(nèi)核棧跟蹤匯總 CPU 之外的時間。
  • tools/offwaketime: 按內(nèi)核 CPU 之外的棧和喚醒者棧匯總阻塞時間。
  • tools/oomkill: 跟蹤內(nèi)存不足(OOM)終止進程。
  • tools/opensnoop: 跟蹤 open() 系統(tǒng)調(diào)用。
  • tools/pidpersec: 統(tǒng)計新進程(通過 fork)。
  • tools/profile: 通過定時間隔抽樣棧跟蹤來分析 CPU 使用情況。
  • tools/reset-trace: 重置跟蹤狀態(tài)。僅限維護工具。
  • tools/runqlat: 運行隊列(調(diào)度器)延遲的直方圖。
  • tools/runqlen: 運行隊列長度的直方圖。
  • tools/runqslower: 跟蹤長時間的進程調(diào)度延遲。
  • tools/shmsnoop: 跟蹤 System V 共享內(nèi)存系統(tǒng)調(diào)用。
  • tools/sofdsnoop: 跟蹤通過 UNIX 套接字傳遞的文件描述符。
  • tools/slabratetop: 內(nèi)核 SLAB/SLUB 內(nèi)存緩存分配率頂級。
  • tools/softirqs: 測量軟中斷事件時間。
  • tools/solisten: 跟蹤 TCP 套接字監(jiān)聽。
  • tools/sslsniff: 嗅探 OpenSSL 寫入和讀取的數(shù)據(jù)。
  • tools/stackcount: 計算內(nèi)核函數(shù)調(diào)用次數(shù)及其棧跟蹤。
  • tools/syncsnoop: 跟蹤 sync() 系統(tǒng)調(diào)用。
  • tools/syscount: 匯總系統(tǒng)調(diào)用計數(shù)和延遲。
  • tools/tcpaccept: 跟蹤 TCP 被動連接(accept())。
  • tools/tcpconnect: 跟蹤 TCP 活動連接(connect())。
  • tools/tcpconnlat: 跟蹤 TCP 活動連接延遲(connect())。
  • tools/tcpdrop: 跟蹤內(nèi)核 TCP 數(shù)據(jù)包丟棄的詳細信息。
  • tools/tcplife: 跟蹤 TCP 會話并匯總生命周期。
  • tools/tcpretrans: 跟蹤 TCP 重傳和 TLP。
  • tools/tcpstates: 跟蹤 TCP 會話狀態(tài)變化及持續(xù)時間。
  • tools/tcpsubnet: 按子網(wǎng)匯總和匯集 TCP 發(fā)送。
  • tools/tcptop: 按主機匯總 TCP 發(fā)送/接收吞吐量。TCP 頂級。
  • tools/tcptracer: 跟蹤 TCP 已建立的連接(connect()、accept()、close())。
  • tools/tplist: 顯示內(nèi)核跟蹤點或 USDT 探針及其格式。
  • tools/trace: 跟蹤任意函數(shù),并添加過濾器。
  • tools/ttysnoop: 監(jiān)控 tty 或 pts 設(shè)備的實時輸出。

bcc-tools安裝:

本地的服務(wù)器的操作系統(tǒng)是ubuntu 18.04,通過命令 lsb_release -a 查看版本信息,根據(jù)不同的版本下載不同的bcc-tools安裝包,版本對應(yīng)信息參考地址kernel版本對應(yīng)關(guān)系;

安裝

echo "deb [trusted=yes] https://repo.iovisor.org/apt/xenial xenial-nightly main" | sudo tee /etc/apt/sources.list.d/iovisor.list
sudo apt-get update
sudo apt-get install -y bcc-tools libbcc-examples python-bcc

驗證

在服務(wù)器的/usr/share/bcc/tools目錄下執(zhí)行相關(guān)的命令就可以了;
image.png

示例:可以通過 ./biolatency -mD 找到延遲大的磁盤,下圖所示,sda磁盤的大部分都是在127ms以下,64->127 表示延遲從64到127ms的分布情況,默認是微秒usecs!


延遲分布直方圖

biosnoop 查看每一個io的耗時情況;


biosnoop查看耗時信息

參考資料:
https://www.cnblogs.com/charlieroro/p/13265252.html#biosnoop

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容