On Tue, 6 Sep 2022 09:52:23 +0800 Liu Shixin <liushixin2@xxxxxxxxxx> wrote: > On 2022/9/6 4:07, Andrew Morton wrote: > > On Mon, 5 Sep 2022 21:38:13 +0800 Liu Shixin <liushixin2@xxxxxxxxxx> wrote: > > > >> If two or more threads call get_huge_zero_page concurrently, THP_ZERO_PAGE_ALLOC > >> may increased two or more times. But actually, this should only count > >> as once since the extra zero pages has been freed. > > Well, for better of for worse, > > Documentation/admin-guide/mm/transhuge.rst says > > > > thp_zero_page_alloc > > is incremented every time a huge zero page is > > successfully allocated. It includes allocations which where > > dropped due race with other allocation. Note, it doesn't count > > every map of the huge zero page, only its allocation. > > > > If you think this interprtation should be changed then please explain > > why, and let's be sure to update the documentation accordingly. > > > > . > Thanks for your explanation. I misunderstood the meaning of thp_zero_page_alloc before. > Although the rules are clearly explained in the documentation, I think that this variable > should only incremented when a huge zero page used for thp is successfully allocated and > the pages dropped due race should skip increment. It seems strange to count in all allocations. > > If there's something I still misunderstand, please point it out, thanks. It seems strange to me also. Perhaps there's a rationale buried in the git and mailing list history.