Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp2341868pxb; Sun, 15 Nov 2020 00:53:12 -0800 (PST) X-Google-Smtp-Source: ABdhPJzjFuqgtIfyShCbdgk6Iek0/3QibwluzQUxxnWboKoRYwTlQ5loLinW+KOokmdG4fv0Tyor X-Received: by 2002:a05:6402:1153:: with SMTP id g19mr10546540edw.312.1605430392627; Sun, 15 Nov 2020 00:53:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605430392; cv=none; d=google.com; s=arc-20160816; b=eE1rCHhUBiyCeqRUlCpS0jg9lLMn2hGhIhZ6CGQS3Pt0tlBloOQLDxL9tG/oJ7VLI+ /L3MyZHc/cnFGVCF3Y1S9mhRHiKgaG0Us76grPR82+vLVDm/M/JwzlT+VDO3L/jsrja+ dMhDpvMXQo045LLkEa5hVYX26CedEJTKuq0nSYwTVfQtu7zl84ti7dGgU/E2ZeU4mhfA jB8V2vToW1Mqpy8YOfCWq75XXaAeIlSF24eyTOzzP8R5ErVuk8sCZptgWj8WUDVRJQyu UChkMIMd1Hu/l791BueLaWf3SE5pheCckbS0koPqFbigAYvi85C71B2m4hcY9OSJ1/nB xFVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=P99C0J4MlmVFekqMQSsqTeR3F+1D01zfOMOW2XU+Fcs=; b=UVZRKlkWZrSnvROqQPQpvapIcsQLs4MN0JV9qpTgNeqiPL3kS3ZNoWrca0SKCJtQyG gL8yeus+l8xhJrMU9KDiM0poFMa9hQ/UFsswQpo2WtfwW64jcPZPcduH/LZcEBvZI0L9 yXDREnf/zeQIkS3oR81ejcRH+BRPkAjbSl7HhxiA4UsPeugcMXekT5V0Imnf5yeNjIrb mNWsc7T83IeZfw0aiGbl51eDBOjlmcikpgQ06BpDGuDujFBvucs9sLmDuee8h7Y0POFw Ec90GcNGWO80buQFT1Yt/G/CdoPhHWvCYDh99iUCH1Hojn+uNUolEdxQZdzUtyLNup+t 6diQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=OzCqWMqj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id zm18si9295564ejb.309.2020.11.15.00.52.36; Sun, 15 Nov 2020 00:53:12 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=OzCqWMqj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726749AbgKOI0o (ORCPT + 99 others); Sun, 15 Nov 2020 03:26:44 -0500 Received: from mail.kernel.org ([198.145.29.99]:51566 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726230AbgKOI0j (ORCPT ); Sun, 15 Nov 2020 03:26:39 -0500 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 Content-Transfer-Encoding: 8bit In-Reply-To: <7A16CA44-782D-4ABA-8D93-76BDD0A90F94@redhat.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Nov 12, 2020 at 09:15:18PM +0100, David Hildenbrand wrote: > > > Am 12.11.2020 um 20:08 schrieb Mike Rapoport : > > > > On 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 > >>>>> > >>>>> It will be used by the upcoming secret memory implementation. > >>>>> > >>>>> Signed-off-by: Mike Rapoport > >>>>> --- > >>>>> mm/internal.h | 3 +++ > >>>>> mm/mmap.c | 5 ++--- > >>>>> 2 files changed, 5 insertions(+), 3 deletions(-) > >>>>> > >>>>> 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(struct 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 long flags, > >>>>> + unsigned long len); > >>>>> + > >>>>> /* > >>>>> * Clear the page's PageMlocked(). This can be useful in a situation 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_min(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; > >>>>> > >>>> > >>>> So, an interesting question is if you actually want to charge secretmem > >>>> pages against mlock now, or if you want a dedicated secretmem cgroup > >>>> controller instead? > >>> > >>> Well, with the current implementation there are three limits an > >>> administrator can use to control secretmem limits: mlock, memcg and > >>> kernel parameter. > >>> > >>> The kernel parameter puts a global upper limit for secretmem usage, > >>> memcg accounts all secretmem allocations, including the unused memory in > >>> large pages caching and mlock allows per task limit for secretmem > >>> mappings, well, like mlock does. > >>> > >>> I didn't consider a dedicated cgroup, as it seems we already have enough > >>> existing knobs and a new one would be unnecessary. > >> > >> 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 actually > >> doing mlock() that I am not aware of (most probably :) )? > > > > Secretmem does not explicitly calls to mlock() but it does what mlock() > > does and a bit more. Citing mlock(2): > > > > mlock(), mlock2(), and mlockall() lock part or all of the calling > > process's virtual address space into RAM, preventing that memory from > > being paged to the swap area. > > > > So, based on that secretmem pages are not swappable, I think that > > RLIMIT_MEMLOCK is appropriate here. > > > > 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‘t > account for gigantic pages - which might be allocated from CMA and are > not swappable. 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 later. As I > >> said, it just feels wrong. > >> > >> -- > >> Thanks, > >> > >> David / dhildenb > >> > > > > -- > > Sincerely yours, > > Mike. > > > -- Sincerely yours, Mike.