2023年10月28日 星期六

火焰圖 get /usr/share/d3-flame-graph/d3-flamegraph-base.html

不知道你是不是和我一樣, 看性能之巔 (第二版), page 268 時, 想要把 perf 資訊以火焰圖的方式呈現, 結果怎麼找都找不到 /usr/share/d3-flame-graph/d3-flamegraph-base.html。

需要使用 d3-flame-graph, 這是 nodejs 的東西, 在和 npm 奮戰多時之後, 我放棄了, 還是生不出來, 我只想要 /usr/share/d3-flame-graph/d3-flamegraph-base.html, 不能讓我下載這個檔案就好了嗎? 不想搞 npm 的東西。

後來在 [PATCH v3] perf script flamegraph: Avoid d3-flame-graph package dependency找到, 明明只要下載這個檔案就搞定的事, 偏偏被折騰那漫久, 文章也提到, 在 debian 要生出這個東西是很痛苦的, 那麼巧, 我就是用 debian, 在有了 /usr/share/d3-flame-graph/d3-flamegraph-base.html, 終於可以輸出火焰圖了。

直接抓, 輕鬆愉快
wget https://cdn.jsdelivr.net/npm/d3-flame-graph@4.1.3/dist/templates/d3-flamegraph-base.html

root@deb64:~# perf record -F 99 -a -g -- sleep 5
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.892 MB perf.data (1982 samples) ]
root@deb64:~# perf script report flamegraph
dumping data to flamegraph.html


會輸出 fig 1. flamegraph.html
fig 1. flamegraph.html


Currently flame graph generation requires a d3-flame-graph template to
be installed. Unfortunately this is hard to come by for things like
Debian [1]. If the template isn't installed then ask if it should be
downloaded from jsdelivr CDN. The downloaded HTML file is validated
against an md5sum. If the download fails, generate a minimal flame
graph with the javascript coming from links to jsdelivr CDN.


有些工具是用 python, perl, nodejs, 他們都有自己的執行環境, 運氣不好, 會在這上面花很多時間。大部份人也不可能都熟悉這些環境, 能熟其中一個就已經很不錯了。

perf stat -e instructions,cycles,L1-dcache-load-misses,LLC-load-misses,dTLB-load-misses   ls /
apt-get install bpfcc-tools


profile-bpfcc

cpudist-bpfcc

沒有留言:

張貼留言

使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。

我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。