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

如何屏蔽perf的Events enabled/disabled日志,仅显示zstd进度条?

如何屏蔽perf的Events enabled/disabled日志,仅显示zstd进度条?

我明白你的困扰——perf反复输出的Events enabled/disabled消息完全盖过了zstd的进度条,而且两者都往stderr写,确实头疼。这里有个可靠的解决思路,核心是把perf自身的stderr和zstd的stderr分开处理,让perf的冗余消息被丢弃,同时保留zstd的进度条输出。

你只需要调整脚本中启动perf的那一行,利用文件描述符的重定向技巧就能解决问题,修改后的代码如下:

# 先保存当前终端的stderr到文件描述符3,留作zstd输出用
exec 3>&2

# 启动perf:将perf自身的stderr重定向到/dev/null丢弃,同时让zstd的stderr指向原来的终端
perf stat -D -1 -o perf_out --control fd:${ctl_fd},${ctl_fd_ack} -- sh -c './zstd -kf ../DataSets/enwik9 2>&3' 2>/dev/null

# 用完后关闭临时文件描述符
exec 3>&-

原理说明:

  • exec 3>&2:把当前终端的标准错误输出(文件描述符2)复制到文件描述符3,相当于“备份”了原来的终端输出通道。
  • 2>/dev/null:让perf自己输出的所有stderr内容(包括那些Events enabled/disabled状态消息)直接被丢弃,不会显示在终端上。
  • sh -c './zstd ... 2>&3':通过shell启动zstd进程,把zstd的stderr重定向到我们备份的fd3,这样zstd的进度条就能正常输出到原来的终端,不受perf消息干扰。

如果之后需要排查perf的控制状态,也可以把2>/dev/null改成2>perf_control.log,这样这些状态消息会被保存到日志文件里,既不干扰终端显示,也能留底备查。

修改后运行脚本,你应该只会看到zstd的进度条正常更新,perf的那些冗余状态消息完全消失,同时perf的性能统计结果依然会正确写入perf_out文件,完全不影响你的性能分析需求。

备注:内容来源于stack exchange,提问作者Sai Aravind

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 11:14:39