Re: [PATCH 2/3] memblock: Make finding index faster when modify regions.

From: Peng Zhang
Date: Mon Jan 16 2023 - 03:40:59 EST




在 2023/1/16 15:37, Mike Rapoport 写道:
On Mon, Jan 16, 2023 at 11:17:40AM +0800, Peng Zhang wrote:


在 2023/1/15 22:02, Mike Rapoport 写道:
Hi,

On Fri, Jan 13, 2023 at 04:26:58PM +0800, Peng Zhang wrote:
We can use binary search to find the index to modify regions in
memblock_add_range() and memblock_isolate_range(). Because the
arrangement of regions is ordered. It may be faster when there are
many regions. So implemented a binary search and a new macro to walk
regions.

Did you see a measurable speedup with this optimization?
I'm not in favor of micro-optimizations that complicate code.

Thank you for your reply. I haven't measured this patch yet, theoretically
this small optimization might be difficult to observe.
If you think this patch complicates the code, you can ignore this patch.

These three patches are independent and they can be applied independently.
The logic of the third patch is very simple. It will not complicate the
code. It is tested by the default configuration of qemu. The total number of
iterations of memblock_merge_regions() in the third patch is reduced from
more than one thousand to more than one hundred, this is only in the case of
a small number of regions. Can you consider the third patch?

Can you please send the numbers and show how did you obtained them?

Sincerely yours,
Peng.

I obtained the numbers like this:

void memblock_merge_regions(struct memblock_type *type) {
static int iteration_count = 0;
static int max_nr_regions = 0;

max_nr_regions = max(max_nr_regions, (int)type->cnt);
...
while () {
iteration_count++;
...
}
pr_info("iteration_count: %d max_nr_regions %d", iteration_count, max_nr_regions);
}

Boot the kernel by qemu.
The folowing numbers is the last output.

master branch:
iteration_count: 1762 max_nr_regions 41

patched:
iteration_count: 182 max_nr_regions 41

If max_nr_regions is larger, the difference will be more.

Thanks.

Sincerely yours,
Peng