From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2B9D6C55ABD for ; Sun, 15 Nov 2020 08:26:42 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id AFC3322409 for ; Sun, 15 Nov 2020 08:26:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="OzCqWMqj" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AFC3322409 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id D9A086B005C; Sun, 15 Nov 2020 03:26:40 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D49A16B005D; Sun, 15 Nov 2020 03:26:40 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C11806B0068; Sun, 15 Nov 2020 03:26:40 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 8E4A86B005C for ; Sun, 15 Nov 2020 03:26:40 -0500 (EST) Received: from smtpin25.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 1AA6D3628 for ; Sun, 15 Nov 2020 08:26:40 +0000 (UTC) X-FDA: 77485971360.25.knee85_4f168de2731e Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin25.hostedemail.com (Postfix) with ESMTP id E910C1804E3A0 for ; Sun, 15 Nov 2020 08:26:39 +0000 (UTC) X-HE-Tag: knee85_4f168de2731e X-Filterd-Recvd-Size: 7005 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by imf21.hostedemail.com (Postfix) with ESMTP for ; Sun, 15 Nov 2020 08:26:39 +0000 (UTC) Received: from kernel.org (unknown [77.125.7.142]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 2B40D20825; Sun, 15 Nov 2020 08:26:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1605428798; bh=N8nX4EItu7ygJosleHRb6Se+RCkeKeuBhze7L0pxdoc=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=OzCqWMqjydzAb9tsTc50ml1otm0W+jgR45ewsq/G5RaHSABMkhoMFFhu9KCzP5EgM H4hHM4CWx5jTJGIkXhhIkkUUbJjjG0LCaHvvN1Sygkt5FEaoKMH2vyKuxCD0ZXI6ak TE0ypAnInCIfqSa2/EaG3mDDyN0He79bGRMwfBCI= Date: Sun, 15 Nov 2020 10:26:25 +0200 From: Mike Rapoport To: David Hildenbrand Cc: Andrew Morton , Alexander Viro , Andy Lutomirski , Arnd Bergmann , Borislav Petkov , Catalin Marinas , Christopher Lameter , Dan Williams , Dave Hansen , Elena Reshetova , "H. Peter Anvin" , Ingo Molnar , James Bottomley , "Kirill A. Shutemov" , Matthew Wilcox , Mark Rutland , Mike Rapoport , Michael Kerrisk , Palmer Dabbelt , Paul Walmsley , Peter Zijlstra , Rick Edgecombe , Shuah Khan , Thomas Gleixner , Tycho Andersen , Will Deacon , linux-api@vger.kernel.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-nvdimm@lists.01.org, linux-riscv@lists.infradead.org, x86@kernel.org Subject: Re: [PATCH v8 2/9] mmap: make mlock_future_check() global Message-ID: <20201115082625.GT4758@kernel.org> References: <20201112190827.GP4758@kernel.org> <7A16CA44-782D-4ABA-8D93-76BDD0A90F94@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <7A16CA44-782D-4ABA-8D93-76BDD0A90F94@redhat.com> Content-Transfer-Encoding: quoted-printable X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Thu, Nov 12, 2020 at 09:15:18PM +0100, David Hildenbrand wrote: >=20 > > Am 12.11.2020 um 20:08 schrieb Mike Rapoport : > >=20 > > =EF=BB=BFOn Thu, Nov 12, 2020 at 05:22:00PM +0100, David Hildenbrand = wrote: > >>> On 10.11.20 19:06, Mike Rapoport wrote: > >>> On Tue, Nov 10, 2020 at 06:17:26PM +0100, David Hildenbrand wrote: > >>>> On 10.11.20 16:14, Mike Rapoport wrote: > >>>>> From: Mike Rapoport > >>>>>=20 > >>>>> It will be used by the upcoming secret memory implementation. > >>>>>=20 > >>>>> Signed-off-by: Mike Rapoport > >>>>> --- > >>>>> mm/internal.h | 3 +++ > >>>>> mm/mmap.c | 5 ++--- > >>>>> 2 files changed, 5 insertions(+), 3 deletions(-) > >>>>>=20 > >>>>> diff --git a/mm/internal.h b/mm/internal.h > >>>>> index c43ccdddb0f6..ae146a260b14 100644 > >>>>> --- a/mm/internal.h > >>>>> +++ b/mm/internal.h > >>>>> @@ -348,6 +348,9 @@ static inline void munlock_vma_pages_all(stru= ct vm_area_struct *vma) > >>>>> extern void mlock_vma_page(struct page *page); > >>>>> extern unsigned int munlock_vma_page(struct page *page); > >>>>> +extern int mlock_future_check(struct mm_struct *mm, unsigned lon= g flags, > >>>>> + unsigned long len); > >>>>> + > >>>>> /* > >>>>> * Clear the page's PageMlocked(). This can be useful in a sit= uation where > >>>>> * we want to unconditionally remove a page from the pagecache = -- e.g., > >>>>> diff --git a/mm/mmap.c b/mm/mmap.c > >>>>> index 61f72b09d990..c481f088bd50 100644 > >>>>> --- a/mm/mmap.c > >>>>> +++ b/mm/mmap.c > >>>>> @@ -1348,9 +1348,8 @@ static inline unsigned long round_hint_to_m= in(unsigned long hint) > >>>>> return hint; > >>>>> } > >>>>> -static inline int mlock_future_check(struct mm_struct *mm, > >>>>> - unsigned long flags, > >>>>> - unsigned long len) > >>>>> +int mlock_future_check(struct mm_struct *mm, unsigned long flags= , > >>>>> + unsigned long len) > >>>>> { > >>>>> unsigned long locked, lock_limit; > >>>>>=20 > >>>>=20 > >>>> So, an interesting question is if you actually want to charge secr= etmem > >>>> pages against mlock now, or if you want a dedicated secretmem cgro= up > >>>> controller instead? > >>>=20 > >>> Well, with the current implementation there are three limits an > >>> administrator can use to control secretmem limits: mlock, memcg and > >>> kernel parameter. > >>>=20 > >>> The kernel parameter puts a global upper limit for secretmem usage, > >>> memcg accounts all secretmem allocations, including the unused memo= ry in > >>> large pages caching and mlock allows per task limit for secretmem > >>> mappings, well, like mlock does. > >>>=20 > >>> I didn't consider a dedicated cgroup, as it seems we already have e= nough > >>> existing knobs and a new one would be unnecessary. > >>=20 > >> To me it feels like the mlock() limit is a wrong fit for secretmem. = But > >> maybe there are other cases of using the mlock() limit without actua= lly > >> doing mlock() that I am not aware of (most probably :) )? > >=20 > > Secretmem does not explicitly calls to mlock() but it does what mlock= () > > does and a bit more. Citing mlock(2): > >=20 > > mlock(), mlock2(), and mlockall() lock part or all of the call= ing > > process's virtual address space into RAM, preventing that memory f= rom > > being paged to the swap area. > >=20 > > So, based on that secretmem pages are not swappable, I think that > > RLIMIT_MEMLOCK is appropriate here. > >=20 >=20 > The page explicitly lists mlock() system calls. Well, it's mlock() man page, isn't it? ;-) My thinking was that since secretmem does what mlock() does wrt swapability, it should at least obey the same limit, i.e. RLIMIT_MEMLOCK. > E.g., we also don=E2=80=98t > account for gigantic pages - which might be allocated from CMA and are > not swappable. =20 Do you mean gigantic pages in hugetlbfs? It seems to me that hugetlbfs accounting is a completely different story. > >> I mean, my concern is not earth shattering, this can be reworked lat= er. As I > >> said, it just feels wrong. > >>=20 > >> --=20 > >> Thanks, > >>=20 > >> David / dhildenb > >>=20 > >=20 > > --=20 > > Sincerely yours, > > Mike. > >=20 >=20 --=20 Sincerely yours, Mike.