cpus_allowed_policy fixups
- Make 'split' roundrobin the CPUs, if we have more threads
than CPUs in the set.
- Properly use a CPU index, don't assume a sequential set of
CPUs.
Signed-off-by: Jens Axboe <axboe@fb.com>
diff --git a/options.c b/options.c
index c1a8f32..4ff4c9b 100644
--- a/options.c
+++ b/options.c
@@ -394,16 +394,23 @@
}
#ifdef FIO_HAVE_CPU_AFFINITY
-int fio_cpus_split(os_cpu_mask_t *mask, unsigned int cpu)
+int fio_cpus_split(os_cpu_mask_t *mask, unsigned int cpu_index)
{
+ unsigned int i, index, cpus_in_mask;
const long max_cpu = cpus_online();
- unsigned int i;
+ cpus_in_mask = fio_cpu_count(mask);
+ cpu_index = cpu_index % cpus_in_mask;
+
+ index = 0;
for (i = 0; i < max_cpu; i++) {
- if (cpu != i) {
- fio_cpu_clear(mask, i);
+ if (!fio_cpu_isset(mask, i))
continue;
- }
+
+ if (cpu_index != index)
+ fio_cpu_clear(mask, i);
+
+ index++;
}
return fio_cpu_count(mask);