Mike Kravetz <mike.kravetz@xxxxxxxxxx> writes: > Describe demote and demote_size interfaces. > > Signed-off-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx> > --- > Documentation/admin-guide/mm/hugetlbpage.rst | 29 ++++++++++++++++++-- > 1 file changed, 27 insertions(+), 2 deletions(-) > > diff --git a/Documentation/admin-guide/mm/hugetlbpage.rst b/Documentation/admin-guide/mm/hugetlbpage.rst > index 8abaeb144e44..902059a0257b 100644 > --- a/Documentation/admin-guide/mm/hugetlbpage.rst > +++ b/Documentation/admin-guide/mm/hugetlbpage.rst > @@ -234,8 +234,12 @@ will exist, of the form:: > > hugepages-${size}kB > > -Inside each of these directories, the same set of files will exist:: > +Inside each of these directories, the set of files contained in ``/proc`` > +will exist. In addition, two additional interfaces for demoting huge > +pages will exist:: > > + demote > + demote_size > nr_hugepages > nr_hugepages_mempolicy > nr_overcommit_hugepages > @@ -243,7 +247,28 @@ Inside each of these directories, the same set of files will exist:: > resv_hugepages > surplus_hugepages > > -which function as described above for the default huge page-sized case. > +The demote interfaces provide the ability to split a huge page into > +smaller huge pages. For example, the x86 architecture supports both > +1GB and 2MB huge pages sizes. A 1GB huge page can be split into 512 > +2MB huge pages. The demote interfaces are: > + > +demote_size > + is the size of demoted pages. When a page is demoted a corresponding > + number of huge pages of demote_size will be created. For huge pages > + of the smallest supported size (2MB on x86), demote_size will be the > + system page size (PAGE_SIZE). If demote_size is the system page size > + then demoting a page will simply free the huge page. demote_size is > + a read only interface. That is an alternate interface for nr_hugepages. Will it be better to return EINVAL on write to 'demote' file below /sys/kernel/mm/hugepages/hugepages-2048kB ? Or may be not expose demote possibility within 2M hugepage directory at all? > + > +demote > + is used to demote a number of huge pages. A user with root privileges > + can write to this file. It may not be possible to demote the > + requested number of huge pages. To determine how many pages were > + actually demoted, compare the value of nr_hugepages before and after > + writing to the demote interface. demote is a write only interface. > + > +The interfaces which are the same as in ``/proc`` function as described > +above for the default huge page-sized case. > > .. _mem_policy_and_hp_alloc: > > -- > 2.31.1