如何衡量目前在Linux上使用的内存带宽?

我正在编写一个小型Linux应用程序,logging计算机的功耗以及CPU利用率和磁盘利用率。 我想添加logging当前正在使用的内存带宽的能力,所以我可以看到与功耗相关性如何。

我知道我可以从/proc/meminfo获得当前分配的内存量的信息,但当然,这并不能告诉我目前有多less带宽正在使用。 有谁知道我怎么可以测量目前使用的内存带宽?

编辑我想这主要在x86和x86-64平台上工作

这是高度依赖于CPU,但您需要能够访问CPU的性能寄存器。 您可以通过oprofile来完成此操作。 请注意,不是所有的CPU都有一个性能寄存器(或寄存器组合),可用于计算内存带宽的使用情况。