perf top -p `pidof mysqld` 分析mysql性能消耗

perf top主要用於實時分析各個函數在某個性能事件上的熱度,能夠快速的定位熱點函數,包括應用程序函數、
模塊函數與內核函數,甚至能夠定位到熱點指令。默認的性能事件爲cpu cycles。

[root@localhost neptuneTest]# perf top -p `pidof mysqld`                                                                                             
Samples: 221  of event 'cycles', Event count (approx.): 10810377, UID: mysql
 10.34%  mysqld            [.] my_strnncollsp_utf8                                                                                            
  5.70%  [kernel]          [k] _spin_lock_irqsave                                                                                             
  5.66%  libc-2.12.so      [.] __memset_sse2                                                                                                  
  5.55%  [kernel]          [k] remove_wait_queue                                                                                              
  5.16%  libc-2.12.so      [.] __GI___strcmp_ssse3                                                                                            
  4.36%  [kernel]          [k] __audit_syscall_exit                                                                                           
  3.39%  [kernel]          [k] lookup_ioctx                                                                                                   
  3.28%  [kernel]          [k] find_next_bit                                                                                                  
  3.22%  mysqld            [.] lex_one_token(YYSTYPE*, THD*)                                                                                  
  2.69%  mysqld            [.] Item::val_bool()                                                                                               
  2.60%  [kernel]          [k] __do_softirq                                                                                                   
  2.53%  mysqld            [.] Protocol::send_result_set_row(List<Item>*)                                                                     
  2.52%  [kernel]          [k] local_bh_enable_ip                                                                                             
  2.51%  mysqld            [.] my_strnncoll_binary                                                                                            
  2.51%  libc-2.12.so      [.] memcpy                                                                                                         

第一列:符號引發的性能事件的比例,默認指佔用的cpu週期比例。
第二列:符號所在的DSO(Dynamic Shared Object),可以是應用程序、內核、動態鏈接庫、模塊。
第三列:DSO的類型。[.]表示此符號屬於用戶態的ELF文件,包括可執行文件與動態鏈接庫)。[k]表述此符號屬於內核或模塊。
第四列:符號名。有些符號不能解析爲函數名,只能用地址表示。

常用交互命令:
h:顯示幫助
UP/DOWN/PGUP/PGDN/SPACE:上下和翻頁。
a:annotate current symbol,註解當前符號。能夠給出彙編語言的註解,給出各條指令的採樣率。
d:過濾掉所有不屬於此DSO的符號。非常方便查看同一類別的符號。
P:將當前信息保存到perf.hist.N中。

常用命令行參數:
-e :指明要分析的性能事件。
-p :Profile events on existing Process ID (comma sperated list). 僅分析目標進程及其創建的線程。
-k :Path to vmlinux. Required for annotation functionality. 帶符號表的內核映像所在的路徑。
-K:不顯示屬於內核或模塊的符號。
-U:不顯示屬於用戶態程序的符號。
-d :界面的刷新週期,默認爲2s,因爲perf top默認每2s從mmap的內存區域讀取一次性能數據。
-G:得到函數的調用關係圖。
perf top -G [fractal],路徑概率爲相對值,加起來爲100%,調用順序爲從下往上。
perf top -G graph,路徑概率爲絕對值,加起來爲該函數的熱度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章