[RFC PATCH v2 00/12] Make MAX_ORDER adjustable as a kernel boot time parameter.
From: Zi Yan
Date: Thu Aug 11 2022 - 19:17:11 EST
From: Zi Yan <ziy@xxxxxxxxxx>
Hi all,
This patchset adds support for kernel boot time adjustable MAX_ORDER, so that
user can change the largest size of pages buddy allocator allocates.
It is on top of mm-everything-2022-08-11-02-10.
Motivation
===
This enables kernel to allocate 1GB pages and is necessary for my ongoing work
on adding support for 1GB PUD THP[1]. This is also the conclusion I came up with
after some discussion with David Hildenbrand on what methods should be used for
allocating gigantic pages[2], since other approaches like using CMA allocator or
alloc_contig_pages() are regarded as suboptimal.
In addition, make MAX_ORDER a kernel boot time parameter can enable user to
adjust buddy allocator without recompiling the kernel for their own needs, so
that one can still have a small MAX_ORDER if he/she does not need to allocate
gigantic pages like 1GB PUD THPs.
Background
===
At the moment, kernel imposes MAX_ORDER - 1 + PAGE_SHFIT < SECTION_SIZE_BITS
restriction. This prevents buddy allocator merging pages across memory sections,
as PFNs might not be contiguous and code like page++ would fail. But this would
not be an issue when SPARSEMEM_VMEMMAP is set, since all struct page are
virtually contiguous. So boot time adjustable MAX_ORDER depends on
SPARSEMEM_VMEMMAP.
Description
===
I tested the patchset on both x86_64 and ARM64 at 4KB base pages. The systems
boot and run. It definitely needs more tests and reviews.
In terms of the concerns on performance degradation if MAX_ORDER is increased,
I run vm-scalability from lkp comparing current system, my patchset with
MAX_ORDER=11 and my patchset with MAX_ORDER=20 on a x86_64 VM and saw
almost no performance difference, please attached vm-scalability reports.
Patch 1 renames FORCE_MAX_ZONEORDER to ARCH_FORCE_MAX_ORDER for a more
precise description.
Patch 2 changes MAX_ORDER to represent the max order of pages allocated
by buddy allocator. right now MAX_ORDER - 1 represents that and it is
confusing. Suggested by Vlastimil Babka.
Patch 3 replaces MAX_ORDER with MAX_PHYS_CONTIG_ORDER when it is used to
indicate the maximum number of physically contiguous pages.
Patch 4 fixes deferred struct page initialization when MAX_ORDER is
bigger than a memory section size.
Patch 5-8 convert the use of MAX_ORDER to pageblock_order. Since
pageblock_order is a constant when MAX_ORDER can be changed at boot time
and close to current MAX_ORDER value. I separate changes to different patches
for easy review and can merge them into a single one if that works better.
Patch 9 adds a new Kconfig option SET_MAX_ORDER to allow specifying MAX_ORDER
when ARCH_FORCE_MAX_ORDER is not used by the arch, like x86_64.
Patch 10 converts statically allocated arrays with MAX_ORDER length to dynamic
ones if possible and prepares for making MAX_ORDER a boot time parameter.
Patch 11 adds a new MIN_MAX_ORDER constant to replace soon-to-be-dynamic
MAX_ORDER for places where converting static array to dynamic one is causing
hassle and not necessary, i.e., ARM64 hypervisor page allocation and SLAB.
Patch 12 changes MAX_ORDER to be a kernel boot time parameter and it is
opt-in as an mm/Kconfig option.
Any suggestion and/or comment is welcome. Thanks.
[1] https://lore.kernel.org/linux-mm/20200928175428.4110504-1-zi.yan@xxxxxxxx/
[2] https://lore.kernel.org/linux-mm/e132fdd9-65af-1cad-8a6e-71844ebfe6a2@xxxxxxxxxx/
Performance comparison
====
Only the changed stats is shown below. If you do not see some stats,
they are the same across three.
=========================================================================================
compiler/kconfig/rootfs/runtime/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/qemu-vm/small-allocs/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
1266004 -0.3% 1262674 +1.1% 1279441 vm-scalability.median
=========================================================================================
compiler/kconfig/rootfs/runtime/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/qemu-vm/small-allocs-mt/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
76016 +0.2% 76178 +1.2% 76936 vm-scalability.median
1216312 +0.2% 1218252 +1.2% 1231465 vm-scalability.throughput
3.653e+08 +0.2% 3.659e+08 +1.3% 3.701e+08 vm-scalability.workload
=========================================================================================
compiler/kconfig/rootfs/runtime/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/qemu-vm/mmap-xread-seq-mt/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
1574020 ± 2% +0.1% 1576169 -2.3% 1537232 ± 2% vm-scalability.median
25184277 ± 2% +0.1% 25218477 -2.3% 24595646 ± 2% vm-scalability.throughput
7.567e+09 ± 2% +0.1% 7.575e+09 -2.3% 7.395e+09 ± 2% vm-scalability.workload
=========================================================================================
compiler/kconfig/rootfs/runtime/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/qemu-vm/mmap-pread-rand/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
2.28 ± 11% -21.0% 1.80 ± 11% -18.2% 1.87 ± 11% vm-scalability.free_time
8.58 ± 9% +3.4 11.95 ± 7% +1.1 9.69 ± 13% vm-scalability.stddev%
1541489 -0.2% 1539102 +1.3% 1561678 vm-scalability.throughput
=========================================================================================
compiler/kconfig/rootfs/runtime/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/qemu-vm/mmap-pread-rand-mt/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
94376 +0.4% 94716 +1.8% 96103 vm-scalability.median
12.96 ± 3% +11.9 24.88 ± 80% +0.3 13.30 ± 5% vm-scalability.stddev%
1509455 +0.8% 1522093 +1.8% 1536886 vm-scalability.throughput
=========================================================================================
compiler/kconfig/rootfs/runtime/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/qemu-vm/lru-file-readtwice/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
433656 -5.3% 410460 ± 2% -4.8% 412737 vm-scalability.median
13879867 -5.5% 13118050 ± 2% -4.8% 13212361 vm-scalability.throughput
4.164e+09 -5.5% 3.935e+09 ± 2% -4.8% 3.964e+09 vm-scalability.workload
=========================================================================================
compiler/kconfig/rootfs/runtime/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/qemu-vm/lru-file-mmap-read/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
488915 ± 3% -2.3% 477658 ± 6% -11.7% 431771 ± 6% vm-scalability.median
120.69 ± 35% -39.0 81.65 ± 84% -89.1 31.56 ±154% vm-scalability.stddev%
8106774 ± 4% -3.3% 7835670 ± 7% -13.9% 6981078 ± 8% vm-scalability.throughput
2.435e+09 ± 4% -3.4% 2.353e+09 ± 7% -13.8% 2.099e+09 ± 8% vm-scalability.workload
=========================================================================================
compiler/kconfig/rootfs/runtime/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/qemu-vm/anon-rx-rand-mt/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
196783 -0.8% 195189 ± 2% -2.8% 191323 vm-scalability.median
53.88 ± 3% -4.9 48.96 ± 2% -43.9 9.95 ± 35% vm-scalability.stddev%
=========================================================================================
compiler/kconfig/rootfs/runtime/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/qemu-vm/anon-r-seq-mt/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
50.03 ± 29% -15.9 34.08 ± 12% -2.4 47.66 ± 32% vm-scalability.stddev%
=========================================================================================
compiler/kconfig/rootfs/runtime/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/qemu-vm/anon-r-rand/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
3.82 -0.8% 3.79 -0.6% 3.79 ± 3% vm-scalability.free_time
172116 +0.3% 172685 -2.1% 168557 vm-scalability.median
75.53 ± 12% -15.6 59.88 ± 13% -60.9 14.64 ± 17% vm-scalability.stddev%
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/8T/qemu-vm/anon-wx-seq-mt/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
798340 +0.8% 804861 -3.0% 774082 vm-scalability.median
1.55 ± 28% -0.1 1.47 ± 32% +0.6 2.19 ± 14% vm-scalability.median_stddev%
1.55 ± 28% -0.1 1.47 ± 32% +0.6 2.19 ± 14% vm-scalability.stddev%
12773455 +0.8% 12877783 -3.0% 12385319 vm-scalability.throughput
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/8T/qemu-vm/anon-w-seq/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
0.13 +4.1% 0.14 ± 3% +37.0% 0.18 vm-scalability.free_time
923091 -0.6% 917275 ± 2% +3.7% 957298 vm-scalability.median
4.57 ± 2% -1.7 2.89 ± 15% -3.9 0.68 ± 7% vm-scalability.median_stddev%
14811265 -0.5% 14731710 +1.8% 15079698 vm-scalability.throughput
3.173e+09 -0.5% 3.156e+09 ± 2% -1.2% 3.134e+09 vm-scalability.workload
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/8T/qemu-vm/anon-w-seq-mt/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
0.07 +1.1% 0.07 +3.6% 0.07 vm-scalability.free_time
667055 -1.6% 656481 -1.4% 657861 vm-scalability.median
2.22 ± 4% -0.1 2.12 ± 6% +0.4 2.60 ± 14% vm-scalability.median_stddev%
10817276 -1.3% 10673638 -2.3% 10568517 vm-scalability.throughput
2.022e+09 -1.0% 2.002e+09 -1.5% 1.991e+09 vm-scalability.workload
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/8T/qemu-vm/anon-cow-seq/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
475554 -0.5% 473278 +2.6% 487908 vm-scalability.median
4.20 ± 2% -1.5 2.73 ± 6% -3.3 0.89 ± 6% vm-scalability.median_stddev%
3.58 ± 3% -1.0 2.58 ± 5% -1.7 1.88 ± 9% vm-scalability.stddev%
7533010 +0.4% 7559545 +1.7% 7663820 vm-scalability.throughput
1.764e+09 +1.8% 1.795e+09 +1.2% 1.785e+09 vm-scalability.workload
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/8T/qemu-vm/anon-cow-seq-mt/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
1.13 ± 14% -0.3 0.85 ± 15% -0.5 0.66 ± 32% vm-scalability.median_stddev%
1.13 ± 14% -0.3 0.85 ± 15% -0.5 0.66 ± 32% vm-scalability.stddev%
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/512G/qemu-vm/anon-wx-rand-mt/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
72308 -1.4% 71294 ± 3% -7.9% 66569 vm-scalability.median
0.96 ± 11% -0.0 0.94 ± 14% -0.5 0.44 ± 5% vm-scalability.stddev%
2.743e+08 -0.0% 2.743e+08 +12.7% 3.09e+08 vm-scalability.workload
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/512G/qemu-vm/anon-w-rand/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
0.09 +0.8% 0.09 ± 3% +5.9% 0.10 ± 3% vm-scalability.free_time
67458 ± 2% -6.0% 63414 ± 2% -11.3% 59805 vm-scalability.median
4.66 ± 36% +4.7 9.38 ± 34% -2.2 2.50 ± 23% vm-scalability.median_stddev%
971866 -1.3% 959227 -2.3% 949434 vm-scalability.throughput
2.469e+08 -0.0% 2.469e+08 +11.1% 2.743e+08 vm-scalability.workload
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/512G/qemu-vm/anon-w-rand-mt/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
0.12 ± 2% +2.8% 0.13 +10.5% 0.14 ± 3% vm-scalability.free_time
65926 ± 3% -1.8% 64711 ± 4% -9.3% 59770 vm-scalability.median
4.51 ± 38% +1.3 5.83 ± 48% -3.1 1.44 ± 31% vm-scalability.median_stddev%
1.24 ± 24% -0.3 0.93 ± 25% -0.8 0.48 ± 17% vm-scalability.stddev%
2.395e+08 +1.5% 2.432e+08 +11.5% 2.67e+08 vm-scalability.workload
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/512G/qemu-vm/anon-cow-rand/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
63519 ± 3% -2.3% 62074 ± 2% -12.2% 55775 vm-scalability.median
914972 -1.2% 904135 -2.4% 893097 vm-scalability.throughput
2.323e+08 -0.0% 2.323e+08 +11.1% 2.582e+08 vm-scalability.workload
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/512G/qemu-vm/anon-cow-rand-mt/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
64719 ± 2% -1.7% 63626 ± 2% -7.4% 59953 vm-scalability.median
3.32 ± 77% +1.3 4.64 ± 64% -2.3 1.02 ± 60% vm-scalability.median_stddev%
0.83 ± 27% -0.1 0.74 ± 53% -0.7 0.18 ± 43% vm-scalability.stddev%
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/2T/qemu-vm/shm-xread-seq/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
346505 +2.5% 355073 +1.8% 352797 vm-scalability.median
1.29 ± 26% +0.4 1.73 ± 11% +0.2 1.47 ± 22% vm-scalability.median_stddev%
1.29 ± 26% +0.4 1.73 ± 11% +0.2 1.47 ± 22% vm-scalability.stddev%
5544053 +2.5% 5681145 +1.8% 5644734 vm-scalability.throughput
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/2T/qemu-vm/shm-pread-seq/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
3.06 +10.8% 3.40 +11.5% 3.42 vm-scalability.free_time
344737 +3.5% 356824 +2.0% 351766 vm-scalability.median
5515773 +3.5% 5709150 +2.0% 5628245 vm-scalability.throughput
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/2T/qemu-vm/shm-pread-seq-mt/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
363265 +2.4% 371881 +2.0% 370384 vm-scalability.median
5807625 +2.4% 5948137 +2.0% 5922313 vm-scalability.throughput
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/256G/qemu-vm/msync/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
124686 ± 4% +2.9% 128345 +9.0% 135953 vm-scalability.median
19.68 ± 9% -1.2 18.47 ± 6% -5.0 14.67 ± 3% vm-scalability.median_stddev%
18.87 ± 9% -1.5 17.38 ± 9% -6.1 12.76 ± 4% vm-scalability.stddev%
2047903 ± 2% +2.1% 2090681 +4.4% 2138545 vm-scalability.throughput
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/256G/qemu-vm/lru-shm-rand/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
0.03 -0.4% 0.03 -2.0% 0.02 vm-scalability.free_time
7.02 ± 18% +0.7 7.68 ± 12% -5.4 1.65 ± 13% vm-scalability.median_stddev%
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/1T/qemu-vm/lru-shm/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
2.36 ± 4% -0.5 1.90 ± 13% -1.6 0.80 ± 20% vm-scalability.median_stddev%
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/16G/qemu-vm/shm-xread-rand/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
168.32 ± 6% -0.1 168.24 ± 17% -114.4 53.94 ± 59% vm-scalability.stddev%
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/16G/qemu-vm/shm-pread-rand/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
172.46 ± 8% -14.2 158.30 ± 20% -106.4 66.04 ± 74% vm-scalability.stddev%
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase/unit_size:
gcc-11/defconfig/debian/300s/16G/qemu-vm/shm-pread-rand-mt/vm-scalability/1G
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
0.06 ± 4% +5.0% 0.07 ± 5% +38.6% 0.09 ± 6% vm-scalability.free_time
=========================================================================================
compiler/kconfig/rootfs/runtime/size/tbox_group/test/testcase:
gcc-11/defconfig/debian/300s/128G/qemu-vm/truncate-seq/vm-scalability
commit:
5.19.0-rc4-mm-everything+
5.19.0-rc4-boot-time-max-order-10+
5.19.0-rc4-boot-time-max-order-20+
5.19.0-rc4-mm-ev 5.19.0-rc4-boot-time-max-or 5.19.0-rc4-boot-time-max-or
---------------- --------------------------- ---------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
9.00 ± 15% +1.6 10.59 ± 11% -2.6 6.35 ± 8% vm-scalability.median_fault_stddev%
9.00 ± 15% +1.6 10.59 ± 11% -2.6 6.35 ± 8% vm-scalability.stddev_fault%
Zi Yan (12):
arch: mm: rename FORCE_MAX_ZONEORDER to ARCH_FORCE_MAX_ORDER
mm: rectify MAX_ORDER semantics to be the largest page order from
buddy allocator
mm: replace MAX_ORDER when it is used to indicate max physical
contiguity.
mm: adapt deferred struct page init to new MAX_ORDER.
mm: prevent pageblock size being larger than section size.
fs: proc: use pageblock_nr_pages for reschedule period in read_kcore()
virtio: virtio_balloon: use pageblock_order instead of MAX_ORDER
mm/page_reporting: set page_reporting_order to -1 to prevent it
running
mm: Make MAX_ORDER of buddy allocator configurable via Kconfig
SET_MAX_ORDER.
mm: convert MAX_ORDER sized static arrays to dynamic ones.
mm: introduce MIN_MAX_ORDER to replace MAX_ORDER as compile time
constant.
mm: make MAX_ORDER a kernel boot time parameter.
.../admin-guide/kdump/vmcoreinfo.rst | 4 +-
.../admin-guide/kernel-parameters.txt | 9 +-
arch/Kconfig | 4 +
arch/arc/Kconfig | 6 +-
arch/arm/Kconfig | 14 +-
arch/arm/configs/imx_v6_v7_defconfig | 2 +-
arch/arm/configs/milbeaut_m10v_defconfig | 2 +-
arch/arm/configs/oxnas_v6_defconfig | 2 +-
arch/arm/configs/sama7_defconfig | 2 +-
arch/arm64/Kconfig | 18 ++-
arch/arm64/include/asm/sparsemem.h | 2 +-
arch/arm64/kvm/hyp/include/nvhe/gfp.h | 2 +-
arch/arm64/kvm/hyp/nvhe/page_alloc.c | 2 +-
arch/csky/Kconfig | 4 +-
arch/ia64/Kconfig | 10 +-
arch/ia64/include/asm/sparsemem.h | 6 +-
arch/ia64/mm/hugetlbpage.c | 2 +-
arch/m68k/Kconfig.cpu | 10 +-
arch/mips/Kconfig | 24 ++--
arch/nios2/Kconfig | 12 +-
arch/powerpc/Kconfig | 32 ++---
arch/powerpc/configs/85xx/ge_imp3a_defconfig | 2 +-
arch/powerpc/configs/fsl-emb-nonhw.config | 2 +-
arch/powerpc/mm/book3s64/iommu_api.c | 2 +-
arch/powerpc/mm/hugetlbpage.c | 2 +-
arch/powerpc/platforms/powernv/pci-ioda.c | 2 +-
arch/sh/configs/ecovec24_defconfig | 2 +-
arch/sh/mm/Kconfig | 22 ++-
arch/sparc/Kconfig | 10 +-
arch/sparc/kernel/pci_sun4v.c | 2 +-
arch/sparc/kernel/traps_64.c | 2 +-
arch/sparc/mm/tsb.c | 4 +-
arch/um/kernel/um_arch.c | 4 +-
arch/xtensa/Kconfig | 10 +-
drivers/base/regmap/regmap-debugfs.c | 8 +-
drivers/crypto/hisilicon/sgl.c | 6 +-
.../gpu/drm/i915/gem/selftests/huge_pages.c | 2 +-
drivers/gpu/drm/ttm/ttm_device.c | 7 +-
drivers/gpu/drm/ttm/ttm_pool.c | 72 ++++++++--
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 2 +-
drivers/irqchip/irq-gic-v3-its.c | 4 +-
drivers/md/dm-bufio.c | 2 +-
drivers/misc/genwqe/card_utils.c | 2 +-
drivers/net/ethernet/ibm/ibmvnic.h | 2 +-
drivers/video/fbdev/hyperv_fb.c | 6 +-
drivers/virtio/virtio_balloon.c | 2 +-
drivers/virtio/virtio_mem.c | 8 +-
fs/proc/kcore.c | 2 +-
fs/ramfs/file-nommu.c | 2 +-
include/drm/ttm/ttm_pool.h | 4 +-
include/linux/hugetlb.h | 2 +-
include/linux/mmzone.h | 36 ++++-
include/linux/pageblock-flags.h | 21 ++-
include/linux/slab.h | 8 +-
kernel/crash_core.c | 2 +-
kernel/dma/pool.c | 8 +-
mm/Kconfig | 33 ++++-
mm/compaction.c | 8 +-
mm/debug_vm_pgtable.c | 4 +-
mm/huge_memory.c | 2 +-
mm/hugetlb.c | 4 +-
mm/internal.h | 10 +-
mm/memblock.c | 8 +-
mm/memory.c | 4 +-
mm/memory_hotplug.c | 6 +-
mm/page_alloc.c | 128 +++++++++++++-----
mm/page_isolation.c | 14 +-
mm/page_owner.c | 6 +-
mm/page_reporting.c | 8 +-
mm/shuffle.h | 2 +-
mm/slab.c | 2 +-
mm/slub.c | 6 +-
mm/vmscan.c | 1 -
mm/vmstat.c | 14 +-
net/smc/smc_ib.c | 2 +-
scripts/checkpatch.pl | 8 ++
security/integrity/ima/ima_crypto.c | 2 +-
tools/testing/memblock/linux/mmzone.h | 6 +-
78 files changed, 451 insertions(+), 270 deletions(-)
--
2.35.1