Steward
分享是一種喜悅、更是一種幸福
系統 - Debian - Performance - 如何使用Perf找出程式耗時的副程式
測試程式
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void test1(void)
{
for (int x = 0; x < 5000; x++);
}
void test2(void)
{
usleep(1);
}
void test3(void)
{
usleep(100);
}
int main(int argc, char** argv)
{
while (1) {
test1();
test2();
test3();
}
}
編譯
$ gcc -o test main.c
執行
$ ./test & $ sudo echo 0 > /proc/sys/kernel/kptr_restrict $ sudo echo 9999 > /proc/sys/kernel/perf_event_max_sample_rate $ sudo perf record -p `pidof test` -F 9999 -- sleep 10
P.S. 9999是顆粒度,太大的值會抓到很多相同的Function,太小的值則可能會抓不到關鍵的Function
查看結果
$ sudo perf script > detail $ sudo perf report
完成