代码拉取完成,页面将自动刷新
基于ebpf开发的分析指定进程运行过程中系统调用慢的情况
sysak syscall_slow [--help] [-t THRESH(ms)] [-n sys_NR] <[-c COMM]|[-p tid]> [-f LOGFILE][duration(s)]
-t 门限: 系统调用超过该门限时就记录,单位ms; 可选,默认10ms;
-n 系统调用号: 过滤该系统调用(syscall号参考/usr/include/asm/unistd_64.h);可选,默认所有系统调用
-c name/-p tid: 只检测指定任务名字/线程ID; 可选, 不选的话监控所有的系统调用
-f log文件: 将log记录到指定文件; 可选,默认记录在/var/log/sysak/syscall_slow/syscall_slow.log
durations: 设置该程序运行多长时间,单位秒; 可选,默认永远运行
下面的例子使用syscall_slow监控名字为"cat"的任务的read系统调用,当系统调用超过门限10ms久记录到a.log文件
$sudo sysak syscall_slow -n 0 -c cat -f a.log
上面结果a.log输出说明如下(时间单位:毫秒; 切换单位:次数):
总延时 实际运行 被抢占时间 睡眠时间 系统态时间 自愿切换 被动切换 系统调用 任务名/id
\ \ | | | | / / |
TIME(syscall) DELAY REAL WAIT SLEEP SYS vcsw ivcsw syscall pid(comm)
2022-05-26_11:16:01 2484 0 0 2484 0 1 0 read 34562(cat)
<0xffffffff868814a3> __sched_text_start
<0xffffffff868814a3> __sched_text_start
<0xffffffff868816e3> schedule
<0xffffffff860fb8b5> do_syslog
<0xffffffff86321fce> kmsg_read
<0xffffffff8631386c> proc_reg_read
<0xffffffff8628ca79> vfs_read
<0xffffffff8628ceaa> ksys_read
<0xffffffff86003d4b> do_syscall_64
<0xffffffff86a00088> entry_SYSCALL_64_after_hwframe
该工具记录了特定任务系统调用时间过长的现场信息
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。