From mboxrd@z Thu Jan 1 00:00:00 1970 From: Richard Palethorpe Date: Mon, 08 Mar 2021 15:30:14 +0000 Subject: [LTP] [PATCH 6/6] fzsync: Check processor affinity In-Reply-To: References: <20210305155123.18199-1-rpalethorpe@suse.com> <20210305155123.18199-7-rpalethorpe@suse.com> Message-ID: <87blbthddl.fsf@suse.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: ltp@lists.linux.it Hello, Cyril Hrubis writes: > Hi! >> It is useful for testing Fuzzy Sync itself to set the CPU affinity to >> a single core. The current processes affinity does not effect > ^ > affect? Yup. >> tst_ncpus(), but we can get the affinity separately. >> >> Note that checking this still does not guarantee we will use yield >> when restricted to only one core. We would have to periodically probe >> which CPUs threads are running on until we detect more than one CPU. >> >> Signed-off-by: Richard Palethorpe >> --- >> include/tst_fuzzy_sync.h | 20 ++++++++++++++++++-- >> 1 file changed, 18 insertions(+), 2 deletions(-) >> >> diff --git a/include/tst_fuzzy_sync.h b/include/tst_fuzzy_sync.h >> index 36a604e13..ea356ab44 100644 >> --- a/include/tst_fuzzy_sync.h >> +++ b/include/tst_fuzzy_sync.h >> @@ -59,9 +59,11 @@ >> * @sa tst_fzsync_pair >> */ >> >> +#define _GNU_SOURCE >> + >> #include >> #include >> -#include >> +#include "lapi/cpuset.h" >> #include >> #include >> #include >> @@ -213,12 +215,26 @@ struct tst_fzsync_pair { >> */ >> static void tst_fzsync_pair_init(struct tst_fzsync_pair *pair) >> { >> + long ncpus = tst_ncpus(); >> +#ifdef CPU_COUNT >> + size_t cpusz = CPU_ALLOC_SIZE(ncpus); >> + cpu_set_t *cpus = CPU_ALLOC(ncpus); >> + >> + if (sched_getaffinity(0, cpusz, cpus)) { >> + tst_res(TWARN | TERRNO, "sched_getaffinity(0, %zu, %zx)", >> + cpusz, (size_t)cpus); >> + } else { >> + ncpus = CPU_COUNT(cpus); >> + } >> + free(cpus); >> +#endif > > Can we instead put this into the lib/tst_cpu.c and call it > tst_allowed_cpus() or something like this? Yeah sure, I guess this will allow me to handle the GNU feature test macro better as well. > >> CHK(avg_alpha, 0, 1, 0.25); >> CHK(min_samples, 20, INT_MAX, 1024); >> CHK(max_dev_ratio, 0, 1, 0.1); >> CHK(exec_time_p, 0, 1, 0.5); >> CHK(exec_loops, 20, INT_MAX, 3000000); >> - CHK(yield_in_wait, 0, 1, (tst_ncpus() <= 1)); >> + CHK(yield_in_wait, 0, 1, (ncpus <= 1)); >> } >> #undef CHK >> >> -- >> 2.30.1 >> >> >> -- >> Mailing list info: https://lists.linux.it/listinfo/ltp -- Thank you, Richard.