+ Kirill
On 2024/10/16 22:06, Matthew Wilcox wrote:
On Thu, Oct 10, 2024 at 05:58:10PM +0800, Baolin Wang wrote:
Considering that tmpfs already has the 'huge=' option to control the THP
allocation, it is necessary to maintain compatibility with the 'huge='
option, as well as considering the 'deny' and 'force' option controlled
by '/sys/kernel/mm/transparent_hugepage/shmem_enabled'.
No, it's not. No other filesystem honours these settings. tmpfs would
not have had these settings if it were written today. It should simply
ignore them, the way that NFS ignores the "intr" mount option now that
we have a better solution to the original problem.
To reiterate my position:
- When using tmpfs as a filesystem, it should behave like other
filesystems.
- When using tmpfs to implement MAP_ANONYMOUS | MAP_SHARED, it should
behave like anonymous memory.
I do agree with your point to some extent, but the ‘huge=’ option has
existed for nearly 8 years, and the huge orders based on write size may
not achieve the performance of PMD-sized THP in some scenarios, such as
when the write length is consistently 4K. So, I am still concerned that
ignoring the 'huge' option could lead to compatibility issues.
Another possible choice is to make the huge pages allocation based on
write size as the *default* behavior for tmpfs, while marking the
'huge=' option as deprecated and gradually removing it if there are no
user complaints about performance issues.
Let's also see what Hugh and Kirill think.
Hugh, Kirill, do you have any inputs?