FlameScope 更高级全面的火焰图
FlameScope 更高級全面的火焰圖
文章目錄
- FlameScope 更高級全面的火焰圖
- 安裝步驟
- 安裝問題fix
- 使用方式
網(wǎng)飛(Netflix)開發(fā)的火焰圖工具能夠更好得呈現(xiàn)出一段時間內(nèi)的服務(wù)器on/off cpu 的熱力圖。
安裝步驟
$ git clone https://github.com/Netflix/flamescope
$ cd flamescope
$ pip install -r requirements.txt
$ python3 run.py
如果安裝成功,運行到最后一步會輸出如下,flamescope會啟動一個httpserver:
$ python3.9 run.py * Serving Flask app "app" (lazy loading)* Environment: productionWARNING: Do not use the development server in a production environment.Use a production WSGI server instead.* Debug mode: on* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)* Restarting with stat* Debugger is active!* Debugger PIN: 888-173-631
如果某一步失敗,一般是第三步和第四步 會出現(xiàn)python相關(guān)的錯誤,可以參考如下錯誤的解決辦法。
安裝問題fix
-
ImportError: cannot import name ‘Feature’ from ‘setuptools’
因為python3中的setuptools 版本默認(rèn)升級到了46及以上,但是Feature 接口已經(jīng)在46及以上的setuptools版本中移除了,所以使用會有問題
如果想要python3運行時使用Feature這個模塊,需要安裝小于46版本的setuptools
pip install --upgrade pip setuptools==45.2.0
即可解決 -
ImportError: failed to find libmagic.
libmagic 版本過高,python3運行時找不到對應(yīng)的動態(tài)庫降低這個版本的庫即可:
pip uninstall python-magic pip install python-magic-bin==0.4.14 -
TypeError: required field “type_ignores” missing from Module
在
/usr/local/lib/python3.9/site-packages/werkzeug/routing.py代碼中要求一些函數(shù)運行必須攜帶參數(shù)# 將改行代碼更換成如下即可,為函數(shù)ast.Module增加一個空參數(shù) # module = ast.fix_missing_locations(ast.Module([func_ast],[])) module = ast.fix_missing_locations(ast.Module([func_ast])) code = compile(module, "<werkzeug routing>", "exec")globs, locs = {}, {} exec(code, globs, locs)return locs[func_ast.name]接下來即可啟動flame graph 的httpserver了
python3 run.py
使用方式
flamescope的介紹以及使用 官方也給了兩個視頻,而基本火焰圖的查看這里不再多說,從底向上是函數(shù)層級的調(diào)用占用CPU的比例。
FlameScope Introduction
FlameScope Examples
安裝完成,并運行python3 run.py成功之后,會成功啟動一個flamescope的httpserver。
如果沒有配置flamescope/app/config.py文件中的ip和端口號,則可以通過http://127.0.0.1:5000訪問examples中的熱力圖。
點開一個perf數(shù)據(jù)
可以看到如上熱力圖,其中橫軸是時間,總共采樣了60s,每一個縱軸代表一秒內(nèi)的1000ms cpu占用情況,可以看到單縱軸小方格內(nèi)顏色越深的小方格,表示這段時間內(nèi)的cpu消耗較多。
通過這個圖能夠非常清晰得看到一段時間內(nèi)CPU的消耗情況,具體哪一部分消耗較多,可以選擇對應(yīng)區(qū)域的小方格看到這段區(qū)域的火焰圖數(shù)據(jù),非常直觀。
如果想要看自己抓的熱力圖,可以通過perf命令采樣自己應(yīng)用進程的oncpu數(shù)據(jù),flamescope會在當(dāng)前文件自動識別到perf的結(jié)果數(shù)據(jù):
$ sudo perf record -F 49 -p <pid> -g -- sleep 120
$ sudo perf script --header > stacks.oncpu
如果安裝了bcc工具集,通過offcpu命令抓取offcpu的火焰圖,同樣能夠看到offcpu的數(shù)據(jù):
offcputime -df -p <pid> 60 > stacks.offcpu
總結(jié)
以上是生活随笔為你收集整理的FlameScope 更高级全面的火焰图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阴阳师秘卷书童在哪里?
- 下一篇: 是你吗歌词是哪首歌啊?