Bytehound:一個更強大的 Linux 內存分析工具

簡介

Bytehound 是 Linux 的內存分析工具。它能夠顯示內存變化曲線、佔用詳情、完整的堆棧記錄等信息,有助於解決內存泄漏等問題。詳細功能如下:

項目地址是:

https://github.com/koute/bytehound

安裝

  1. 安裝 GCC,Rust 和 Yarn,目的是爲了構建 GUI

  2. 構建

$ cargo build --release -p bytehound-preload
$ cargo build --release -p bytehound-cli
  1. 從 target/release/libbytehound.so 或 target/release/bytehound 下獲取二進制文件

用法

基本用法

export MEMORY_PROFILER_LOG=warn
$ LD_PRELOAD=./libbytehound.so ./your_application
$ ./bytehound server memory-profiling_*.dat

然後打開瀏覽器訪問 http://localhost:8080。

打開 debug 日誌

出於性能原因,默認情況下分析器在編譯時禁用了大部分調試日誌。如果要啓用 debug 日誌,需要使用 debug-logs 功能進行重新編譯構建:

cd preload
$ cargo build --release --features debug-logs

環境變量

Bytehound 分析器是通過很多的環境變量來控制它的行爲的,以下是常用的一些環境變量。

MEMORY_PROFILER_OUTPUT

默認值:memory-profiling_%e_%t_%p.dat,表示數據將寫入的文件的路徑,支持佔位符,這些佔位符將在運行時替換爲以下內容:%p -> 進程的 PID %t -> UNIX 紀元以來的秒數 %e -> 可執行文件的名稱 %n -> 自動遞增計數器(0、1、..、9、10 等)

MEMORY_PROFILER_LOG

要使用的日誌級別;可能的值:trace、debug、info、warn、error

MEMORY_PROFILER_LOGFILE

日誌將寫入的文件的路徑;如果未設置,日誌將被髮送到 stderr,並且支持類似於 MEMORY_PROFILER_OUTPUT(除了 %n)的佔位符。

MEMORY_PROFILER_CULL_TEMPORARY_ALLOCATIONS

默認值:0,當設置爲 1 時,將剔除臨時分配並從輸出中省略它們。如果只關心內存泄漏或想要在幾天內進行長期分析,可以設置爲 1。

MEMORY_PROFILER_PRECISE_TIMESTAMPS

默認值:0,決定何時爲每個事件收集時間戳,或者只爲事件塊收集時間戳。啓用後,時間戳將更加精確,但會增加 CPU 使用率。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/R8qDGvwoZcp6DnkJ274u4w