On Wed, 26 Feb 2025 10:41:25 +0800 <zhongjinji@xxxxxxxxx> wrote: > From: zhongjinji <zhongjinji@xxxxxxxxx> > > In the past, nr_reserved_highatomic was considered to be part of > unusable_free when there was no ALLOC_RESERVES flag. To prevent > unusable_free from being too large, it is reasonable to set a > fixed maximum highatomic value. Can you explain further? Why is it "reasonable"? Please fully describe the userspace-visible problem which this patch fixes. > Even if the maximum number of highatomic pageblocks is set to be larger, > unusable_free may not increase, since Yu Zhao provided the modification > about nr_free_highatomic in > https://lore.kernel.org/all/20241028182653.3420139-1-yuzhao@xxxxxxxxxx/T/#u > > More highatomic pageblocks are beneficial for the successful allocation > of high-order page, which is helpful in some devices. Therefore, use > highatomic_reserve_ratio to adjust the maximum number of highatomic > pageblocks. Can you provide testcases and measurements which help us to understand and to quantify the benefits of this change? > @@ -6199,6 +6201,13 @@ static const struct ctl_table page_alloc_sysctl_table[] = { > .mode = 0644, > .proc_handler = percpu_pagelist_high_fraction_sysctl_handler, > .extra1 = SYSCTL_ZERO, > + }, > + .procname = "highatomic_reserve_ratio", > + .data = &highatomic_reserve_ratio, > + .maxlen = sizeof(highatomic_reserve_ratio), > + .mode = 0644, > + .proc_handler = proc_dointvec_minmax, > + .extra1 = SYSCTL_ZERO, > }, Is there any way at all in which we can address the issue you're seeing without adding yet another tunable? Also, a new highatomic_reserve_ratio should be documented in Documentation/admin-guide/sysctl/vm.rst, please.