使用strace
strace 工具可調查系統調用的情況有好幾種可以使用的方法其中一種是計算系統調用的時間並打印出來
$ strace cfp $(pidof mysqld)
Process attached with threads interrupt to quit
^CProcess detached
% time seconds usecs/call calls errors syscall
select
futex
read
unlink
write
pread
_llseek
[some lines omitted for brevity]
total
這種用法和oprofile 有點像但是oprofile 還可以剖析程序的內部符號而不僅僅是系統調用另外strace 攔截系統調用使用的是不同於oprofile 的技術這會有一些不可預期性開銷也更大些strace 度量時使用的是實際時間而oprofile 使用的是花費的CPU 周期舉個例子當I/O 等待出現問題的時候strace 能將它們顯示出來因為它從諸如read或者pread 這樣的系統調用開始計時直到調用結束但oprofile 不會這樣因為I/O系統調用並不會真正地消耗CPU 周期而只是等待I/O 完成而已
我們會在需要的時候使用oprofile因為strace 對像mysqld 這樣有大量線程的場景會產生一些副作用當strace 附加上去後mysqld 的運行會變得很慢因此不適合在產品環境中使用但在某些場景中strace 還是相當有用的Percona Toolkit 中有一個叫做ptioprofile 的工具就是使用strace 來生成I/O 活動的剖析報告的這個工具很有幫助可以證明或者駁斥某些難以測量的情況下的一些觀點此時其他方法很難達到目的(如果運行的是MySQL 使用Performance Schema 也可以達到目的)
返回目錄高性能MySQL
編輯推薦
ASPNET MVC 框架揭秘
Oracle索引技術
ASP NET開發培訓視頻教程
數據倉庫與數據挖掘培訓視頻教程
From:http://tw.wingwit.com/Article/program/MySQL/201311/29692.html