Linux RAM throughput statistic for a given PID

2

1

How do I find out how fast is a certain process accessing the DRAM?

There are lots of ways to monitor the CPU usage, memory footprint etc etc, but is there a utility I can use to monitor the memory bandwidth used by a certain piece of program? No, I do not have access to the program's source code, it is a binary blob. And no, nothings goes into swap space.

Essentially I want to profile a program's RAM throughput across a number of different hardware architectures. I am aware that, all of the caching mechanisms may complicate things, but once cached on the CPU (both instruction and data) I am not bothered. What I want to know is the data transfer rate between the CPU and the RAM used by a particular process.

Any suggestions what might be a good way to go about this would be much appreciated! Thanks!

user2539817

Posted 2014-10-16T12:59:43.810

Reputation: 116

Answers

0

The perf tool comes to mind – try perf mem record <command> followed by perf mem report.

user1686

Posted 2014-10-16T12:59:43.810

Reputation: 283 655

The mem option only exists in the benchmark function, i.e. "# perf bench mem" benchmark the system performance, not application profile.

The nearest I've come to is:

perf stat -p PID -a -e HW_COUNTERS

Hardware counters like cache-misses, LLC-load-misses, LLC-store-misses, LLC-prefetch-misses etc are at best indicative, but far from definitive statistic. – user2539817 – 2014-10-17T15:03:11.913

@user2539817: Perhaps you have an older version then? perf mem certainly exists in perf 3.17.0... – user1686 – 2014-10-17T15:36:48.523

Their documentation is sketchy to say the least, but I am stuck with 2.6.32-431.29.2.el6.x86_64.debug anyway. – user2539817 – 2014-10-18T11:00:44.957