From: Christoph Hellwig <hch@infradead.org>
To: Yang Shi <yang.shi@linux.alibaba.com>
Cc: viro@zeniv.linux.org.uk, nyc@holomorphy.com,
mike.kravetz@oracle.com, kirill.shutemov@linux.intel.com,
hughd@google.com, akpm@linux-foundation.org,
linux-fsdevel@vger.kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH] fs: introduce ST_HUGE flag and set it to tmpfs and hugetlbfs
Date: Wed, 18 Apr 2018 03:27:44 -0700 [thread overview]
Message-ID: <20180418102744.GA10397@infradead.org> (raw)
In-Reply-To: <1523999293-94152-1-git-send-email-yang.shi@linux.alibaba.com>
On Wed, Apr 18, 2018 at 05:08:13AM +0800, Yang Shi wrote:
> Since tmpfs THP was supported in 4.8, hugetlbfs is not the only
> filesystem with huge page support anymore. tmpfs can use huge page via
> THP when mounting by "huge=" mount option.
>
> When applications use huge page on hugetlbfs, it just need check the
> filesystem magic number, but it is not enough for tmpfs. So, introduce
> ST_HUGE flag to statfs if super block has SB_HUGE set which indicates
> huge page is supported on the specific filesystem.
>
> Some applications could benefit from this change, for example QEMU.
> When use mmap file as guest VM backend memory, QEMU typically mmap the
> file size plus one extra page. If the file is on hugetlbfs the extra
> page is huge page size (i.e. 2MB), but it is still 4KB on tmpfs even
> though THP is enabled. tmpfs THP requires VMA is huge page aligned, so
> if 4KB page is used THP will not be used at all. The below /proc/meminfo
> fragment shows the THP use of QEMU with 4K page:
>
> ShmemHugePages: 679936 kB
> ShmemPmdMapped: 0 kB
>
> With ST_HUGE flag, QEMU can get huge page, then /proc/meminfo looks
> like:
>
> ShmemHugePages: 77824 kB
> ShmemPmdMapped: 6144 kB
>
> With this flag, the applications can know if huge page is supported on
> the filesystem then optimize the behavior of the applications
> accordingly. Although the similar function can be implemented in
> applications by traversing the mount options, it looks more convenient
> if kernel can provide such flag.
>
> Even though ST_HUGE is set, f_bsize still returns 4KB for tmpfs since
> THP could be split, and it also my fallback to 4KB page silently if
> there is not enough huge page.
Seems like your should report it through the st_blksize field of struct
stat then, instead of introducing a not very useful binary field then.
next prev parent reply other threads:[~2018-04-18 10:27 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-17 21:08 [RFC PATCH] fs: introduce ST_HUGE flag and set it to tmpfs and hugetlbfs Yang Shi
2018-04-17 21:31 ` Andrew Morton
2018-04-17 21:51 ` Yang Shi
2018-04-17 23:22 ` Matthew Wilcox
2018-04-17 23:37 ` Yang Shi
2018-04-17 23:37 ` Yang Shi
2018-04-18 10:27 ` Christoph Hellwig [this message]
2018-04-18 18:18 ` Yang Shi
2018-04-19 8:28 ` Christoph Hellwig
2018-04-19 9:05 ` Kirill A. Shutemov
2018-04-20 0:18 ` Yang Shi
2018-04-18 20:26 ` Mike Kravetz
2018-04-18 20:53 ` Yang Shi
2018-04-19 9:01 ` Kirill A. Shutemov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180418102744.GA10397@infradead.org \
--to=hch@infradead.org \
--cc=akpm@linux-foundation.org \
--cc=hughd@google.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mike.kravetz@oracle.com \
--cc=nyc@holomorphy.com \
--cc=viro@zeniv.linux.org.uk \
--cc=yang.shi@linux.alibaba.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.