最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Linux如何查看具体的系统内存带宽利用率
时间:2026-07-19 07:03:48 编辑:袖梨 来源:一聚教程网
Linux无标准内存带宽利用率指标,/proc/meminfo、free、vmstat仅反映内存用量与页面活动,无法测量DRAM实际读写速率;需用perf(依赖CPU型号查uncore事件)或Intel PCM的pcm-memory.x获取实时GB/s级带宽。
Linux 没有“内存带宽利用率”这个现成指标,/proc/meminfo、free、vmstat 都不提供它——它们只告诉你用了多少内存、换了多少页,而不是内存控制器上每秒实际传输了多少字节。
perf stat 能测 DDR 实际读写速率,但事件名得按 CPU 型号找
Intel 平台最通用的方式是用 perf 直接读取内存控制器(uncore)性能计数器。关键不是硬记命令,而是先确认当前 CPU 支持哪些事件:
-
perf list | grep -i memory查看可用事件,重点关注类似uncore_imc_00/event=0x04,umask=0x0f/(DDR 读)和uncore_imc_00/event=0x05,umask=0x0f/(DDR 写)的条目 - 不同微架构事件编码不同:Skylake 和 Ice Lake 的 event code 不一样,硬套会报
event is not supported - 单次采样示例:
sudo perf stat -e uncore_imc_00/event=0x04,umask=0x0f/,uncore_imc_00/event=0x05,umask=0x0f/ -I 1000 -a sleep 5,输出里两列数字分别是采样周期内读/写字节数,除以时间再 ÷1024² 得 MB/s - 默认只监控 socket 0;多路服务器要加
-a并手动解析每个uncore_imc_*设备(比如uncore_imc_01)
pcm-memory.x 输出可读带宽摘要,但只支持 Intel 且版本敏感
Intel PCM 工具链里的 pcm-memory.x 是最接近“开箱即用”的方案,但它不是系统自带,也不兼容 AMD:
- 必须从 GitHub opcm/pcm 下载源码编译,
apt install intel-cmt-cat不包含完整 PCM - 运行
sudo ./pcm-memory.x 1后,直接看MEM READ和MEM WRITE列,单位是 GB/s;顶部还会显示理论峰值(如Max Memory Bandwidth: 51.2 GB/s) - Sapphire Rapids 等新平台需用 PCM v5.13+,旧版会把带宽读成 0 或报错
Failed to detect memory controller - 它默认聚合所有内存通道,但不区分 NUMA 节点——跨节点访问的实际延迟和隐性竞争,
pcm-memory.x完全不体现
free/vmstat 的“内存使用率”和带宽毫无关系
很多人误以为 free -h 里 available 接近 0 就说明带宽被打满了,这是典型混淆:
-
free的used是内核统计的“已分配页”,不含硬件层面的突发访存压力 - 一个只占 2GB 物理内存的程序,如果做密集随机访问(如 hash join + 大 buffer pool),照样能打满 DDR 带宽,但
free显示一切正常 -
vmstat的si/so是 swap I/O,bi/bo是块设备 I/O,两者都和内存控制器吞吐无关 - 真正相关的是硬件事件:DRAM read/write cycles、memory controller queue depth——这些只能靠
perf或 PCM 抓
内存带宽不是单一数值:多通道下各 channel 独立计数,NUMA 架构中跨节点访问会引入额外延迟和隐性带宽争抢,而绝大多数工具默认只报告 socket 0 或聚合值,容易掩盖真实瓶颈点。
相关文章
- 漫蛙页面免费入口地址2026最新-漫蛙网页版登录页面免费入口分享 07-22
- 3DMAX9-最新入口 07-22
- yandex入口引擎最新可用地址-yandex入口引擎安全稳定登录教程 07-22
- 快看漫画app下载入口最新版-快看漫画app官方正版下载安装 07-22
- 漫蛙网页版免费进入地址分享-manwa漫画免费入口页面地址最新 07-22
- 在线免费看漫画入口-漫画网页版在线免费阅读直达 07-22