Messages in this thread | | | From | David Carrillo-Cisneros <> | Date | Mon, 6 Feb 2017 14:16:05 -0800 | Subject | Re: [PATCH 00/12] Cqm2: Intel Cache quality monitoring fixes |
| |
On Mon, Feb 6, 2017 at 1:22 PM, Luck, Tony <tony.luck@intel.com> wrote: >> 12) Whatever fs or syscall is provided instead of perf syscalls, it >> should provide total_time_enabled in the way perf does, otherwise is >> hard to interpret MBM values. > > It seems that it is hard to define what we even mean by memory bandwidth. > > If you are measuring just one task and you find that the total number of bytes > read is 1GB at some point, and one second later the total bytes is 2GB, then > it is clear that the average bandwidth for this process is 1GB/s. If you know > that the task was only running for 50% of the cycles during that 1s interval, > you could say that it is doing 2GB/s ... which is I believe what you were > thinking when you wrote #12 above.
Yes, that's one of the cases.
> But whether that is right depends a > bit on *why* it only ran 50% of the time. If it was time-sliced out by the > scheduler ... then it may have been trying to be a 2GB/s app. But if it > was waiting for packets from the network, then it really is using 1 GB/s.
IMO, "right" means that measured bandwidth and running time are correct. The *why* is a bigger question.
> > All bets are off if you are measuring a service that consists of several > tasks running concurrently. All you can really talk about is the aggregate > average bandwidth (total bytes / wall-clock time). It makes no sense to > try and factor in how much cpu time each of the individual tasks got.
cgroup mode gives a per-CPU breakdown of event and running time, the tool aggregates it into running time vs event count. Both per-cpu breakdown and the aggregate are useful.
Piggy-backing on perf's cgroup mode would give us all the above for free.
> > -Tony
| |