From patchwork Mon Jul 24 13:46:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Usama Arif X-Patchwork-Id: 13324803 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7ADE8C001DE for ; Mon, 24 Jul 2023 13:46:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 352A28E0001; Mon, 24 Jul 2023 09:46:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 28D24900002; Mon, 24 Jul 2023 09:46:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 06AF78E0002; Mon, 24 Jul 2023 09:46:53 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id BC5A4900004 for ; Mon, 24 Jul 2023 09:46:53 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 22F07B2149 for ; Mon, 24 Jul 2023 13:46:53 +0000 (UTC) X-FDA: 81046631106.20.87C7DC1 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) by imf03.hostedemail.com (Postfix) with ESMTP id 0E14520010 for ; Mon, 24 Jul 2023 13:46:49 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=dkYXlVu6; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf03.hostedemail.com: domain of usama.arif@bytedance.com designates 209.85.128.42 as permitted sender) smtp.mailfrom=usama.arif@bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690206411; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=m7WubRds7jbJgkABDaAVUdckubvdEH0her0SUPsLcCQ=; b=TG6d/36MEfxdeBF4xTaYTcp7mdhxxd2CfiQl/veh60otTKBhOi2knA/ef3T3+EZMjoTCpX v3mwE3Qsqz0mA1buqPW6/x64qMGYTLuCsOGxoSBmgcGjn05vvRQP7lcvVNE3H1uWK62ddD DzbLtmBM6zdbSWCjzSguoVcZF93mit0= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=dkYXlVu6; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf03.hostedemail.com: domain of usama.arif@bytedance.com designates 209.85.128.42 as permitted sender) smtp.mailfrom=usama.arif@bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690206411; a=rsa-sha256; cv=none; b=mYs9XrIh4F1M5YxaVwk62Sei7h18oF4roURjCOOMLABiHcb97xzrseMjvK4QrXa07eOHB/ G0zFujbMNnGUESFszQUMah08iD51DRtlsB0zx0Mm+ZGQab3+dRsN4PgFKC93vULrpVG034 FonxSpIl5nOlK7CihUH46aru0mUvdLs= Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-3fbea147034so33490775e9.0 for ; Mon, 24 Jul 2023 06:46:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1690206407; x=1690811207; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=m7WubRds7jbJgkABDaAVUdckubvdEH0her0SUPsLcCQ=; b=dkYXlVu6q4UXC1OOZTn+s9EHl4DQIRFghcEm3PtTNXR7R7GxhNE5qRwO2R6JV+9aHU Rg+4kpM9w7Nc0l3IHmIWyyw9lVON9WE2tDfO9rM9vZOzXsJvEF9uJ8+EKW/JLqtMa3s/ moYx0FJ63BA2p52KAv5X67j04zVoOQ+RHrPbulnRNUIa/ettBTa8ixpqwliJqpCJHxLU 4BeRa5neK3F4JMafNap4hsVRhP6bQRPBhngyWwsbUQXTdf8ox0YY5NtemI2bKbXFvW1v AGKZxuchTpfjKxZA02S5JPPhCVjfaEPrQrl+SURDMpYKPPd1Pt8za0jSq7Vvh6ggeO5D WL0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690206407; x=1690811207; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=m7WubRds7jbJgkABDaAVUdckubvdEH0her0SUPsLcCQ=; b=JF6imGlWkf3wJf3owcaEqx7kAlRQlQOsLnYtKwNmLJAP1fXKVLIiX7wEhqBnt4ZU+i /F68rgG78r2zAY6nhy+0Z7DLVHoYgr/R/wT4PseqpiDXC0Lwf8ohnPUzmvN+wlUUzG+3 FFU5596qyEMydwZkjfSzhosBy+au6lmnszzW8iNYvuN8EqklTtmKUafloL0ulJT22QmK AUICK/QDligk3ghUPNy1hhmWqnnUQR4SfYa7LrbABFi62JhXty1U3OAHGu4vfO02/Gue /4WLH5ubTK++X06AnYESh8WuDl9FDEgqmnOIyDYFJDBY/CGAGv3rpYq27u4YGyRzM76X tPDA== X-Gm-Message-State: ABy/qLa1/O8OkjBKhbZywexCjhQ6EicU5/qzUn4dC5Sy6Pb9pmYIl56d s1RbkDrizMNs2jJ0iVAIWP4GA6pjf1LQsNOnOaw= X-Google-Smtp-Source: APBJJlE5M4jqNLdKVr+3iEYsqXcArR84aVgz3V+mrWWyTgSXnQO7ZHsYYjyxSBvWiT7bVaWRb3Lyxw== X-Received: by 2002:a05:600c:11c9:b0:3fc:4e0:be97 with SMTP id b9-20020a05600c11c900b003fc04e0be97mr5772449wmi.6.1690206407724; Mon, 24 Jul 2023 06:46:47 -0700 (PDT) Received: from localhost.localdomain ([2a02:6b6a:b465:0:d7c4:7f46:8fed:f874]) by smtp.gmail.com with ESMTPSA id e19-20020a05600c219300b003fbe791a0e8sm10209354wme.0.2023.07.24.06.46.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Jul 2023 06:46:47 -0700 (PDT) From: Usama Arif To: linux-mm@kvack.org, muchun.song@linux.dev, mike.kravetz@oracle.com, rppt@kernel.org Cc: linux-kernel@vger.kernel.org, fam.zheng@bytedance.com, liangma@liangbit.com, simon.evans@bytedance.com, punit.agrawal@bytedance.com, Usama Arif Subject: [RFC 0/4] mm/memblock: Skip prep and initialization of struct pages freed later by HVO Date: Mon, 24 Jul 2023 14:46:40 +0100 Message-Id: <20230724134644.1299963-1-usama.arif@bytedance.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Rspamd-Queue-Id: 0E14520010 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: urghh7utrec97it6mswsdcfwuk148wdd X-HE-Tag: 1690206409-389611 X-HE-Meta: U2FsdGVkX1+7hDaNfvRoUfbq1rURglfMi/FNP4R6y92V058DDicyzHDj3lDNTsUw5/WrcQrJY5NEEjRmG1xZrZCD65+fh+HyDbrUubx8zHkywcGGucL0eVDITYIBEAeINp96MwwMm9RHzMCTH9b1zoXJF9AvltUW09KIZ5MiWvO+oOBidnezqZ+ZlaOFi77SgAQIlPcquFEr1mTMbiaVPVEgzyMukoZAYJaOLik+RBLnlTx3+uKAJodY98OzuSSZgNGbQZMF9w8vNdcqFGjKCihD0S/rK0/f7Emw9EPXJ+LRqvgXlY1K0frQTT4QSmr/0xsYP4b8GMTjcaRovDnpQmBFyvif3avrMm8VohnlIhkz/gSau77gGGWE4iPRA1F7A3JogI3xL7BZY0JxZtBRta3BpbOfbB7MyXHVir29YuuJ6L5b0s/iZgOyU7RDU/3718518+wXmPacK0wLi79koQLDcENSmQiVzZrtYB0JoEm+nsOPRInLvie7JH5eUp8nS4D9oV2F1WLxR5u8Zx9h/HTcxZtp3cGzoZaAXj8ziPaaZgQ/qjbx/WrAcELpgn5I3uG4jroZP6lmSdPI04n1/edf0AmOcbTSGgV1oayatenGQ6lpFl3ohvqgxOdMRFrQeHrMQv+yBsTEnUZScSlK1+m408kEttdftTPrJtKjJwqR6dmzGi37DEr3rOSAIlCcju2yrQC1KP0DSPTqh19mY9ty/L1ULiumKxMTysjMABft1Ogl3JAlwMygtiuCKaDQvO84ncyMbbs6oBxYrQlNsKl3OT07mr+0xUCrgCEVFf3DhpPA0AmINr7Tyx1lMhld76oOu2HBszjBsVkkTxCba64fZFROqon565Go/pT4tGjy+0RvIhNYrcWxMKcRiRtp8Goxq7AhF3f+oav506S+V4C0ITQogoZCtawXSE2DGKrHJtUaaz0M4AUMYYR9QMV+B3DK8AfPbpjtV90P4Aa t2T52nnc 1y27PMufiaCDZ1XfzyyDXhdeqffOQBMnrXccOFrrBDNNuiRA0YuQ22+2vZ4gmKGNZoWwZBhqzT3qYwQItiOaEhBBI5erw93ec5bBfRqZijpBDVS8RKmD2tQYPUxBXKRQWc6m1SGYEoub7h9hr5jVPfG4+Fskd1pIQ7u4Z1D64CV3h2uhPV8dYTGrSyeR8OT8NpSi3qYS1PQe0jRJlO0jHU+ZF9dAIaBmUg2IPupcVlx3XmQTU6Iq34+uXsofCJRtHZZ19ZR7scq+t992MfMOxopp6PTxg+2e+ys2Tc06Mw3naJGc1s7nrphgZB45G1n5fb3VfulxL14VDtqxdyxID88e91pgXRaUSp/Q/zmhmMMMH0hU= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: If the region is for gigantic hugepages and if HVO is enabled, then those struct pages which will be freed later by HVO don't need to be prepared and initialized. This can save significant time when a large number of hugepages are allocated at boot time. For a 1G hugepage, this series avoid initialization and preparation of 262144 - 64 = 262080 struct pages per hugepage. When tested on a 512G system (which can allocate max 500 1G hugepages), the kexec-boot time with HVO and DEFERRED_STRUCT_PAGE_INIT enabled without this patchseries to running init is 3.9 seconds. With this patch it is 1.2 seconds. This represents an approximately 70% reduction in boot time and will significantly reduce server downtime when using a large number of gigantic pages. Thanks, Usama Usama Arif (4): mm/hugetlb: Skip prep of tail pages when HVO is enabled mm/memblock: Add hugepage_size member to struct memblock_region mm/hugetlb_vmemmap: Use nid of the head page to reallocate it mm/memblock: Skip initialization of struct pages freed later by HVO arch/arm64/mm/kasan_init.c | 2 +- arch/powerpc/platforms/pasemi/iommu.c | 2 +- arch/powerpc/platforms/pseries/setup.c | 4 +- arch/powerpc/sysdev/dart_iommu.c | 2 +- include/linux/memblock.h | 8 +- mm/cma.c | 4 +- mm/hugetlb.c | 36 +++++--- mm/hugetlb_vmemmap.c | 6 +- mm/hugetlb_vmemmap.h | 4 + mm/memblock.c | 87 +++++++++++++------- mm/mm_init.c | 2 +- mm/sparse-vmemmap.c | 2 +- tools/testing/memblock/tests/alloc_nid_api.c | 2 +- 13 files changed, 106 insertions(+), 55 deletions(-)