本文内容取自于《Systems Performance: Enterprise and the Cloud》。
Profiling CPU
的方法是通过对CPU
状态进行周期性地采样,然后进行分析。包含5
个步骤:
1. Select the type of profile data to capture, and the rate.
2. Begin sampling at a timed interval.
3. Wait while the activity of interest occurs.
4. End sampling and collect sample data.
5. Process the data.
CPU
采样数据基于下面两个因素:
a. User level, kernel level, or both
b. Function and offset (program-counter-based), function only, partial stack trace, or full stack trace
抓取user level
和kernel level
所有的函数调用栈固然可以完整地得到CPU
的profile
,但这样会产生太多的数据。因此通常只采样user level
或kernel level
部分函数调用栈就可以了,有时可能仅需要保留函数的名字。
下面是一个使用DTrace
对CPU
采样的例子:
# dtrace -qn 'profile-997 /arg1/ {@[execname, ufunc(arg1)] = count();} tick-10s{exit(0)}'
top libc.so.7`0x801154fec 1
top libc.so.7`0x8011e5f28 1
top libc.so.7`0x8011f18a9 1