searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

perf工具使用笔记(二)

2024-05-20 08:54:41
12
0

perf top


1. 采样CPU cycles事件(系统默认事件),实时列出当前系统上所有CPU的函数热点分布:
perf top
该命令等价于:
perf top -a

2. 实时列出进程号为PID的进程的函数热点分布:
perf top -p PID

3. 以49Hz的采样率,实时列出当前系统上所有CPU的函数热点分布,以及该热点所属的进程名等信息:
perf top -F 49 -ns comm,dso

4. 采样系统调用事件, 实时列出发起系统调用的进程名及占比情况等信息:
perf top -e raw_syscalls:sys_enter -ns comm

 


perf script


perf script命令读取记录的perf.data数据,并输出每个采样点的具体信息

1. 输出每个采样点的具体信息,并在开头输出perf.data数据的头信息,比如数据size、cpu信息、内存信息等
perf script --header


2. 按指定的字段,列出所有perf.data中记录的事件
perf script -F time,event,trace
若内核版本小于4.1,则命令为:
perf script -f time,event,trace
如果perf.data是通过 record -a 记录的,推荐用下面命令来列出事件信息:
perf script --header -F comm,pid,tid,cpu,time,event,ip,sym,dso 
需要注意的是,在较老版本的内核中,上面命令里有些字段不支持。这种情况下可尝试改用如下命令:
perf script -f comm,pid,tid,cpu,time,event,ip,sym,dso

 

3. 以16进制dump出perf.data记录的裸信息:
perf script -D

 

 

perf probe

perf probe 用于添加动态探测点,配合 perf record 可以对添加的探测点进行事件记录

 

1. 在tcp_sendmsg函数上添加kprobe类型的探测点,探测点添加后,后续才可以用 perf record -e probe:tcp_sendmsg 进行记录
perf probe --add tcp_sendmsg
上述命令等效于
perf probe -a tcp_sendmsg


2. 删除之前已添加的tcp_sendmsg上的kprobe探测点
perf probe -d tcp_sendmsg
上述命令等效于
perf probe --del tcp_sendmsg


3. 在tcp_sendmsg函数上添加kretprobe类型的探测点
perf probe 'tcp_sendmsg%return'


4. 在tcp_sendmsg函数上添加kretprobe类型的探测点,并记录返回值
perf probe 'tcp_sendmsg%return $retval'


5. 删除之前已添加的tcp_sendmsg上的kretprobe探测点
perf probe -d 'tcp_sendmsg__return'


6. 记录已添加的tcp_sendmsg上的kprobe探测点的发生事件,过滤条件为 bytes > 100
perf record -e probe:tcp_sendmsg --filter 'bytes > 100'


7. 记录已添加的tcp_sendmsg上的kretprobe探测点的发生事件,如果探测点有指定记录返回值,则返回值将在 arg1=XXX 这一列展示
perf record -e 'probe:tcp_sendmsg__return'


8. 在tcp_sendmsg函数上添加kretprobe类型的探测点,并记录size和socket状态。size和sk是tcp_sendmsg函数的参数,使用此功能需要有debuginfo信息
perf probe 'tcp_sendmsg size sk->__sk_common.skc_state'


9. 对上面添加的记录size和socket状态的tcp_sendmsg上的探测点进行记录,并增加过滤条件
perf record -e probe:tcp_sendmsg --filter 'size > 0 && skc_state != 1' -a


10. 在do_sys_open函数上添加kprobe类型的探测点,并以字符串类型记录filename参数
perf probe 'do_sys_open filename:string'


11. 列出当前系统上已添加的探测点
perf probe -l

0条评论
0 / 1000
吴****楷
4文章数
1粉丝数
吴****楷
4 文章 | 1 粉丝
原创

perf工具使用笔记(二)

2024-05-20 08:54:41
12
0

perf top


1. 采样CPU cycles事件(系统默认事件),实时列出当前系统上所有CPU的函数热点分布:
perf top
该命令等价于:
perf top -a

2. 实时列出进程号为PID的进程的函数热点分布:
perf top -p PID

3. 以49Hz的采样率,实时列出当前系统上所有CPU的函数热点分布,以及该热点所属的进程名等信息:
perf top -F 49 -ns comm,dso

4. 采样系统调用事件, 实时列出发起系统调用的进程名及占比情况等信息:
perf top -e raw_syscalls:sys_enter -ns comm

 


perf script


perf script命令读取记录的perf.data数据,并输出每个采样点的具体信息

1. 输出每个采样点的具体信息,并在开头输出perf.data数据的头信息,比如数据size、cpu信息、内存信息等
perf script --header


2. 按指定的字段,列出所有perf.data中记录的事件
perf script -F time,event,trace
若内核版本小于4.1,则命令为:
perf script -f time,event,trace
如果perf.data是通过 record -a 记录的,推荐用下面命令来列出事件信息:
perf script --header -F comm,pid,tid,cpu,time,event,ip,sym,dso 
需要注意的是,在较老版本的内核中,上面命令里有些字段不支持。这种情况下可尝试改用如下命令:
perf script -f comm,pid,tid,cpu,time,event,ip,sym,dso

 

3. 以16进制dump出perf.data记录的裸信息:
perf script -D

 

 

perf probe

perf probe 用于添加动态探测点,配合 perf record 可以对添加的探测点进行事件记录

 

1. 在tcp_sendmsg函数上添加kprobe类型的探测点,探测点添加后,后续才可以用 perf record -e probe:tcp_sendmsg 进行记录
perf probe --add tcp_sendmsg
上述命令等效于
perf probe -a tcp_sendmsg


2. 删除之前已添加的tcp_sendmsg上的kprobe探测点
perf probe -d tcp_sendmsg
上述命令等效于
perf probe --del tcp_sendmsg


3. 在tcp_sendmsg函数上添加kretprobe类型的探测点
perf probe 'tcp_sendmsg%return'


4. 在tcp_sendmsg函数上添加kretprobe类型的探测点,并记录返回值
perf probe 'tcp_sendmsg%return $retval'


5. 删除之前已添加的tcp_sendmsg上的kretprobe探测点
perf probe -d 'tcp_sendmsg__return'


6. 记录已添加的tcp_sendmsg上的kprobe探测点的发生事件,过滤条件为 bytes > 100
perf record -e probe:tcp_sendmsg --filter 'bytes > 100'


7. 记录已添加的tcp_sendmsg上的kretprobe探测点的发生事件,如果探测点有指定记录返回值,则返回值将在 arg1=XXX 这一列展示
perf record -e 'probe:tcp_sendmsg__return'


8. 在tcp_sendmsg函数上添加kretprobe类型的探测点,并记录size和socket状态。size和sk是tcp_sendmsg函数的参数,使用此功能需要有debuginfo信息
perf probe 'tcp_sendmsg size sk->__sk_common.skc_state'


9. 对上面添加的记录size和socket状态的tcp_sendmsg上的探测点进行记录,并增加过滤条件
perf record -e probe:tcp_sendmsg --filter 'size > 0 && skc_state != 1' -a


10. 在do_sys_open函数上添加kprobe类型的探测点,并以字符串类型记录filename参数
perf probe 'do_sys_open filename:string'


11. 列出当前系统上已添加的探测点
perf probe -l

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
1