Linux怎么查看指令集执行吞吐记录
作者:WeekendFlower
时间:2026-08-11
浏览:0
Linux本身并不会直接给出“指令集执行吞吐”这样的系统级指标。通常要借助perf stat,结合instructions、cycles这类PMU事件来计算IPC,或者统计特定指令(比如A VX、NEON)的执行次数;再把结果除以耗时,才能换算出实际的吞吐率。指令集执行吞吐不是 Linux 内核或标
Linux本身并不会直接给出“指令集执行吞吐”这样的系统级指标。通常要借助perf stat,结合instructions、cycles这类PMU事件来计算IPC,或者统计特定指令(比如A VX、NEON)的执行次数;再把结果除以耗时,才能换算出实际的吞吐率。

指令集执行吞吐不是 Linux 内核或标准工具暴露的可观测指标——它不存在于 iostat、perf 或 vmstat 的输出字段中,也没有系统级日志持续记录“每秒执行了多少条 x86-64 指令”或“ARM64 的 NEON 吞吐量”。
你真正想查的,大概率是以下三者之一,但被误称为“指令集执行吞吐”:
你其实想看 CPU 指令级执行效率?用 perf 抓 cycles/instructions
Linux 不记录“指令吞吐率”,但 perf 可以在采样时估算 IPC(Instructions Per Cycle)和实际指令数:
perf stat -e instructions,cycles,branches,branch-misses -a sleep 1:给出全局指令执行总数、周期数、分支行为- IPC =
instructions / cycles—— 值越接近理论峰值(如 Skylake 约 4.0),说明流水线利用越好 - 注意:
instructions是硬件 PMU 计数器上报的退休指令数,不是“解码/发射”数;不同微架构对同一指令的计数逻辑可能略有差异 - 不要用
perf record+perf report查吞吐:它定位热点函数,不提供速率类指标
你其实在找特定指令(如 A VX/SSE/NEON)的使用强度?perf 要加硬件事件
通用 instructions 无法区分标量还是向量化指令。需显式指定 PMU 事件:
- x86_64(Intel/AMD):
perf stat -e cpu/event=0x151,umask=0x01,name=a vx_inst_retired/ -a sleep 1(需内核支持,且事件编码因 CPU 型号而异) - ARM64:
perf stat -e armv8_pmuv3_0/cycles/,armv8_pmuv3_0/instructions/,armv8_pmuv3_0/neon_instructions/ -a sleep 1(依赖 kernel 5.10+ 和 PMU 驱动) - 没有统一命名的
a vx_throughput或neon_mops字段——必须自己算:比如neon_instructions / time - 很多老 CPU 或虚拟机不暴露这些事件,
perf list | grep -i neon先确认是否可用
你误把编译器/运行时报告当成了系统指标?
比如 GCC 的 -fopt-info-vec、LLVM 的 -Rpass=loop-vectorize,以及 Ja va HotSpot 的 -XX:+PrintVectorization,本质上都只是用来在编译阶段或 JIT 过程中打印向量化决策日志,并不属于运行时吞吐量记录。
- 这些日志默认不落盘,除非你重定向 stderr 或配置 JVM 日志路径
- 它们反映“是否向量化”,不反映“向量化后实际吞吐多少”——后者仍得靠
perf stat实测 - Python NumPy、Rust ndarray 等库内部调用 BLAS/LAPACK,其底层指令使用情况完全不可见,除非在库源码里插桩
作者最新文章
赤友清理大师
2026-09-16 17:43
南邮光擎智算团队:GaN基Micro-LED光计算芯片从理论到流片的突破
2026-09-08 18:35
多张照片怎么合成PDF文件?三种图片转PDF工具怎么选?
2026-09-03 17:04
Excel转PDF防乱版指南:在线与本地双方案及排版检查
2026-09-03 10:04
多个PDF怎么合并成一个?合并后顺序怎么检查?
2026-09-02 19:54
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多

































