On Fri, 7 Jun 2024, Reinette Chatre wrote:
On 6/7/24 5:53 AM, Ilpo Järvinen wrote:
For MBM/MBA tests, measure_vals() calls get_mem_bw_imc() that performs the measurement over a duration of sleep(1) call. The memory bandwidth numbers from IMC are derived over this duration. The resctrl FS derived memory bandwidth, however, is calculated inside measure_vals() and only takes delta between the previous value and the current one which besides the actual test, also samples inter-test noise.
Rework the logic in measure_vals() and get_mem_bw_imc() such that the resctrl FS memory bandwidth section covers much shorter duration closely matching that of the IMC perf counters to improve measurement accuracy.
For the second read after rewind() to return a fresh value, also newline has to be consumed by the fscanf().
Suggested-by: Reinette Chatre reinette.chatre@intel.com Signed-off-by: Ilpo Järvinen ilpo.jarvinen@linux.intel.com Tested-by: Babu Moger babu.moger@amd.com
v6:
- Adjust closing/rollback of the IMC perf
- Move the comment in measure_vals() to function level
- Capitalize MBM
- binded to -> bound to
This change does not match the patch.
v5:
- Open mem bw file once and use rewind()
- Read \n from the mem bw file to allow rewind to return a new value.
v4:
- Open resctrl mem bw file (twice) beforehand to avoid opening it during the test
v3:
- Don't drop Return: entry from perf_open_imc_mem_bw() func comment
tools/testing/selftests/resctrl/resctrl_val.c | 141 +++++++++++------- 1 file changed, 91 insertions(+), 50 deletions(-)
diff --git a/tools/testing/selftests/resctrl/resctrl_val.c b/tools/testing/selftests/resctrl/resctrl_val.c index f55f5989de72..1575c5c09ac7 100644 --- a/tools/testing/selftests/resctrl/resctrl_val.c +++ b/tools/testing/selftests/resctrl/resctrl_val.c @@ -306,18 +306,13 @@ static void perf_close_imc_mem_bw(void) } /*
- get_mem_bw_imc: Memory band width as reported by iMC counters
- @cpu_no: CPU number that the benchmark PID is binded to
- @bw_report: Bandwidth report type (reads, writes)
- Memory B/W utilized by a process on a socket can be calculated using
- iMC counters. Perf events are used to read these counters.
- perf_open_imc_mem_bw - Open perf fds for IMCs
- @cpu_no: CPU number that the benchmark PID is bounded to
"is bounded to" -> "is bound to"?
Just the one nitpick from me. The patch looks good to me. Thank you very much.
| Reviewed-by: Reinette Chatre reinette.chatre@intel.com
I'll correct this in v7. I guess it's because I now make these corrections "twice", once for the per patch changelog bullet and then the actual change which unfortunately means my brains switch to repeated actions mode => autotype without thinking.
Earlier when I made the version changelogs only into 00/xx, I actually read through the diff of diffs against the previous version in order to find out what to write into the changelog. I ended up catching many error like this in that stage. Now it's just mostly copying the pre-existing entries from per patch changelogs (and less attention is obviously paid on looking the diff of diffs because I no longer need to derive information out of them).