Messages in this thread |  | | From | Yury Norov <> | | Subject | [PATCH v4 0/9] lib/group_cpus: rework grp_spread_init_one() and make it O(1) | | Date | Thu, 28 Dec 2023 12:09:27 -0800 |
| |
Hi Andrew, Ming,
Now that we've got a couple more weeks, let's try to merge this series in the upcoming merge window? In addition to addressing the v3 comments, in v4 I added a few more patches that simplify the code for more by using cleanup machinery.
Thanks, Yury --
grp_spread_init_one() implementation is sub-optimal because it traverses bitmaps from the beginning, instead of picking from the previous iteration.
Fix it and use find_bit API where appropriate. While here, optimize cpumasks allocation and drop unneeded cpumask_empty() call.
--- v1: https://lore.kernel.org/all/ZW5MI3rKQueLM0Bz@yury-ThinkPad/T/ v2: https://lore.kernel.org/lkml/ZXKNVRu3AfvjaFhK@fedora/T/ v3: https://lore.kernel.org/all/ZYnD4Bp8R9oIz19s@yury-ThinkPad/T/ v4: - drop patch v3 #7 and add a comment in patch #4; - patch #2: fix cpus_per_grp decrement order; - patch #3: add NAK fro Ming Lei; - add patches #7-9 that simplify the code for more.
Yury Norov (9): cpumask: introduce for_each_cpu_and_from() lib/group_cpus: optimize inner loop in grp_spread_init_one() lib/group_cpus: relax atomicity requirement in grp_spread_init_one() lib/group_cpus: optimize outer loop in grp_spread_init_one() lib/group_cpus: don't zero cpumasks in group_cpus_evenly() on allocation lib/group_cpus: drop unneeded cpumask_empty() call in __group_cpus_evenly() cpumask: define cleanup function for cpumasks lib/group_cpus: rework group_cpus_evenly() lib/group_cpus: simplify group_cpus_evenly() for more
include/linux/cpumask.h | 14 ++++++ include/linux/find.h | 3 ++ lib/group_cpus.c | 104 +++++++++++++++++----------------------- 3 files changed, 62 insertions(+), 59 deletions(-)
-- 2.40.1
|  |