Hi Stephen, Please don't top post on Linux kernel mailing list. On Fri, Feb 07, 2025 at 04:03:31PM +0000, Stephen Eta Zhou wrote: > Hi Mike, > > Given the concerns raised, I would greatly appreciate your guidance on > whether you think it's worthwhile for me to continue with this approach. > Should I proceed with further refinements and testing, or would you > recommend a different direction for optimization? Your input will be > invaluable in ensuring this patch meets both performance and stability > goals. I doubt any optimization for memblock_add_range() will really improve boot time and even produce a measurable speed up. With all the fragility and potential of breakage, I don't think it's worthwhile to attempt optimizations there. > Best regards, > Stephen > ________________________________________ > 发件人: Mike Rapoport <rppt@xxxxxxxxxx> > 发送时间: 2025年2月7日 22:58 > 收件人: Stephen Eta Zhou <stephen.eta.zhou@xxxxxxxxxxx> > 抄送: akpm@xxxxxxxxxxxxxxxxxxxx <akpm@xxxxxxxxxxxxxxxxxxxx>; linux-mm@xxxxxxxxx <linux-mm@xxxxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx <linux-kernel@xxxxxxxxxxxxxxx> > 主题: Re: [PATCH] mm: optimize memblock_add_range() for improved performance > > Hi Stephen, > > On Wed, Feb 05, 2025 at 05:55:50AM +0000, Stephen Eta Zhou wrote: > > Hi Mike Rapoport、Andrew Morton > > > I have recently been researching the mm subsystem of the Linux kernel, > > and I came across the memblock_add_range function, which piqued my > > interest. I found the implementation approach quite interesting, so I > > analyzed it and identified some areas for optimization. Starting with > > this part of the code: > > > > if (type->cnt * 2 + 1 <= type->max) > > insert = true; > > The idea here is good, but it has a certain flaw. The condition is rather > > restrictive, and it cannot be executed initially. Moreover, it is only > > valid when the remaining space is (2/1) + 1. If there is enough memory, > > but it does not satisfy (2/1) + 1, the insertion operation still needs to > > be performed twice. > > The code in memblock_add_range() is very fragile, and many attempts to > remove the second pass that looked correct at the first glance failed for > some corner case. > > Unfortunately, it's impossible to capture all possible memory > configurations and reservations in the memblock test suite, so even it it > passes, there is a chance the kernel will fail to boot on an actual HW. > > > - Before the patch: > > - Average: 1.22% > > - Max: 1.63%, Min: 0.93% > > > > - After the patch: > > - Average: 0.69% > > - Max: 0.94%, Min: 0.50% > > > > These numbers do not represent what's actually interesting: the boot time > speedup. > > -- > Sincerely yours, > Mike. -- Sincerely yours, Mike.