You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

perf监控短生命周期线程时sys_perf_event_open()返回3的解决方法

解决perf stat监控多线程进程时的"No such process"偶发报错

问题背景

执行perf stat -p 4124093 -- sleep 5监控目标进程(PID 4124093)性能时,偶发报错:

The sys_perf_event_open() syscall returned with 3 (No such process) for event (cpu-clock).
/bin/dmesg | grep -i perf may provide additional information.

仅在进程繁忙时触发,原因是进程内存在短生命周期线程——perf还未完成事件打开操作,这些线程就已终止,触发内核层面的竞争报错。

可行解决方案

1. 自动重试脚本

因为报错是非必现的,用简单的shell循环实现自动重试,直到采集成功:

while true; do
  perf stat -p 4124093 -- sleep 5 && break
done

优势:快速临时解决,无需修改环境或内核,适合应急排查。

2. 直接监控长生命周期线程

如果能明确进程内的长生命周期线程PID,改用-t <TID>参数监控单个线程,避开短线程的干扰:

perf stat -t <目标线程TID> -- sleep 5

局限:仅适用于能提前确定目标线程的场景,对动态生成短线程的服务不友好。

3. 延迟采集

部分新版本perf支持--delay参数,延迟指定时长后再开始采集,让短生命周期线程先运行结束:

perf stat -p 4124093 --delay 1000 -- sleep 5

其中--delay 1000表示延迟1秒开始采集,可根据短线程的实际生命周期调整毫秒数。

4. 升级内核至修复版本

该问题已在Linux内核的特定提交中修复,该提交已合并到5.10及以上的稳定内核分支。升级到包含此修复的内核版本,可从根本上解决这个竞争问题。

内容的提问来源于stack exchange,提问作者Crown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 08:23:37