Tiptop是一个Linux
系统性能工具,它通过读取CPU
硬件计数器的信息(比如cahche miss
,executed instructions per cycle
等等),使我们对程序的执行效率有了更清晰的认识:
Tiptop
通过perf_event_open
(http://man7.org/linux/man-pages/man2/perfeventopen.2.html)系统调用(2.6.31
版本称为perf_counter_open
)来完成读取硬件计数器信息:
int perf_event_open(struct perf_event_attr *attr,
pid_t pid, int cpu, int group_fd,
unsigned long flags);
attr
用来指定需要关注哪些硬件计数器;pid
和cpu
指定关注运行在哪些CPU
的进程(线程);group_fd
用来设定event group
,创建group leader
时,group_fd
设为-1
;flags
可以置为0
。
perf_event_open
执行成功后会返回一个有效的文件描述符,后续可通过ioctl
和read
系统调用对这个文件描述符进行操作,达到想要的目的。