On Wed, Dec 11, 2024 at 03:04:02PM +0100, Sebastian Andrzej Siewior wrote: > On 2024-12-11 14:48:11 [+0100], To Arnd Bergmann wrote: > > I guess if you have boxes with 4GiB+ and can proof that the performance > > improves without HIGHPTE (since you don't have to map the page table). > > The question is then how much of low mem has to be used instead and when > > does it start to hurt. > > Some numbers have been been documented in commit > 14315592009c1 ("x86, mm: Allow highmem user page tables to be disabled at boot time") > > and I would like cite: > | We could probably handwave up an argument for a threshold at 16G of total > | RAM. > > which means HIGHPTE would make sense with >= 16GiB of memory. However, there is more to consider. 32-bit Arm works out at the same for this: Assuming 768M of lowmem we have 196608 potential lowmem PTE pages. Each page can map 2M of RAM in a PAE-enabled configuration, meaning a maximum of 384G of RAM could potentially be mapped using lowmem PTEs. because, presumably, x86 uses 8 bytes per PTE entry, whereas on Arm we still use 4 bytes, but because we keep two copies of a PTE (one for hardware, the other for the kernel) it works out that we're the same there - one PTE page can also map 2M of RAM. However, what is quite different is the L1 page tables. On x86, everything is nice and easy, and each page table is one 4k page. On 32-bit Arm, this is not the case - we need to grab a 16k page for the L1, and the more immovable allocations we have in lowmem, the harder it will be to satisfy this. Failing to grab a 16k page leads to fork() failing and an unusable system. So, we want to keep as many immovable allocations out of lowmem as possible - which is an additional constraint x86 doesn't have, and shouldn't be overlooked without ensuring that the probability of it happening remains acceptably low. -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!