On Thu, Oct 12, 2023 at 05:53:22PM +0800, Yajun Deng wrote:
On 2023/10/12 17:23, David Hildenbrand wrote:Although ~20% improvement looks impressive, this is only optimization of a
On 10.10.23 04:31, Yajun Deng wrote:This link is v1,
On 2023/10/8 16:57, Yajun Deng wrote:Ideally we could make initialization only depend on the context, and not
How about the following if statement? But it needs to add more patchThat looks wrong. if the page count would by pure luck be 0Is 'if (page_count(page) || PageReserved(page))' be safer? Or do I
already for hotplugged memory, you wouldn't clear the reserved
flag.
These changes make me a bit nervous.
need to do something else?
like v1 ([PATCH 2/4] mm: Introduce MEMINIT_LATE context).
It'll be safer, but more complex. Please comment...
if (context != MEMINIT_EARLY || (page_count(page) ||
PageReserved(page)) {
check for count or the reserved flag.
https://lore.kernel.org/all/20230922070923.355656-1-yajun.deng@xxxxxxxxx/
If we could make initialization only depend on the context, I'll modify it
based on v1.
fraction of the boot time, and realistically, how much 56 msec saves from
the total boot time when you boot a machine with 190G of RAM?
I still think the improvement does not justify the churn, added complexity
and special casing of different code paths of initialization of struct pages.
@Mike, By the way, this code will cost more time:
if (context == MEMINIT_HOTPLUG)
flags = INIT_PAGE_COUNT | INIT_PAGE_RESERVED;
__init_single_page(page, pfn, zone, nid, flags);
[ 0.014999] On node 0, zone DMA32: 31679 pages in unavailable ranges
[ 0.311560] ACPI: PM-Timer IO Port: 0x508
This code will cost less time:
__init_single_page(page, pfn, zone, nid, 0);
if (context == MEMINIT_HOTPLUG) {
init_page_count(page);
__SetPageReserved(page);
[ 0.014299] On node 0, zone DMA32: 31679 pages in unavailable ranges
[ 0.250223] ACPI: PM-Timer IO Port: 0x508