> 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. 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. 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. -Tony