golang cpu性能分析


一、分析程序的運行時間

(1)time指令(linux系統下)

time go run a.go

real:從程序開始到結束,實際上度過的時間

user:程序在用戶態度過的時間

sys:程序在內核度過的時間

一般情況下,real>=user+sys

(2) /usr/bin/time 指令(linux系統下)

/usr/bin/time -v go run a.go

該指令下 可以看到 cpu占用率、 內存使用情況、 進程切換情況 、文件系統io、socket情況

 

二.golang下cpu性能分析

(1)在程序中引入 _ "net/http/pprof" ,並開啟pprof監聽  

 import _ "net/http/pprof"

程序開始
http.ListenAndServe("0.0.0.0:10000", nil)
程序結束

 通過瀏覽器查看 CPU的信息和狀態 

http://127.0.0.1:10000/debug/pprof

注意,等程序運⾏⼀定時間,再點擊profile⽂件⽣成(⾄少是30s) 

(2)使用pprof

go tool pprof [binary] [profile] //binary二進制文件 profile 要分析的文件
top //查看當前profile文件的cpu使用率

flat 該函數⾃身代碼的執⾏時⻓

flat% 該函數⾃身代碼的執⾏時⻓占⽤CPU的耗時百分⽐

cum 代表的是該函數⾃身代碼+所有調⽤的函數的執⾏時⻓

cum% 代表的是該函數⾃身代碼+所有調⽤的函數的執⾏時⻓,占⽤CPU的總耗時百分⽐

sum% 每⼀⾏的flat%與上⾯所有⾏的flat%總和

(3)go tool pprof  profile文件 

       啟動要調試的程序,在另一個終端執行 go tool pprof http://localhost:10000/debug/pprof/profile?seconds=60

(4)可視化結構圖

先在終端運行 go tool pprof [binary] [profile] ,然后輸入web,瀏覽器會彈出一個可視化的圖片。


注意事項:確保可重復、穩定的環境| 不要再共享硬件上做性能分析 | 注意省點模式和過熱保護 | 不要使⽤虛擬機和雲主機

建議:關閉電源、過熱管理| 不要升級,確保環境的⼀致性 | 建議購買專業的硬件環境來性能測試


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM