perf 30 core 机器。
perf record 600 MB, 9s cpu, 4000hz
perf script 1.8GB,1min cpu。
足以证明没有完全的折叠。
perf record 100hz, 1s cpu, 16 MB 文件。
最终 pprof 产物仅有几十 KB.
使用 perf record -e syscalls:sys_enter_write, 1min 有 2200 次系统 write 调用。
gpt 写的工具:
#!/bin/bash
# 启动全系统的 perf 记录并持续一段时间
# 使用 perf record -a -g 记录系统的所有性能数据
perf record -a -g -F 100 -o perf.data &
perf_pid=$!
# 等待一段时间来让 perf 收集数据,例如 60 秒
sleep 60
# 读取 perf 进程的 I/O 统计信息(在进程结束之前)
echo "I/O statistics for perf process (PID $perf_pid):"
cat /proc/$perf_pid/io
# 结束 perf 记录进程
kill $perf_pid
wait $perf_pid
echo "Perf recording has finished."
结果:
I/O statistics for perf process (PID 30518):
rchar: 5831579
wchar: 18125880
syscr: 6445
syscw: 5018
read_bytes: 0
write_bytes: 18132992
cancelled_write_bytes: 0
[ perf record: Woken up 58 times to write data ]
[ perf record: Captured and wrote 17.320 MB perf.data (190432 samples) ]
./a.sh: line 17: 30518 Terminated perf record -a -g -F 100 -o perf.data
Perf recording has finished.