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

Jac*_*lly 9 c++ linux memory

我正在编写一个小型Linux应用程序,它记录计算机的功耗以及CPU利用率和磁盘利用率.我想添加记录当前正在使用的内存带宽的功能,这样我就能看出它与功耗的关联程度.

我知道我可以获得有关当前分配的内存量的信息,/proc/meminfo但当然,这并不能告诉我目前使用了多少带宽.有谁知道我如何测量当前使用的内存带宽?

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

Pau*_*l R 5

它高度依赖于CPU,但您需要能够访问CPU的性能寄存器.您可以通过oprofile执行此操作.请注意,并非所有CPU都具有可用于计算内存带宽使用情况的性能寄存器(或寄存器组合).

  • 不 - 请参阅http://anton.ozlabs.org/blog/2009/09/04/using-performance-counters-for-linux/ (2认同)
  • 要添加更多资源,可以通过 intel vtune (https://software.intel.com/en-us/intel-vtune-amplifier-xe/) 和 linux perf (https:/ /perf.wiki.kernel.org/index.php/Main_Page) (2认同)