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=-2.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no 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 D6F2AC433C1 for ; Fri, 19 Mar 2021 17:04:22 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 6249261574 for ; Fri, 19 Mar 2021 17:04:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6249261574 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id EC5B98D0001; Fri, 19 Mar 2021 13:04:21 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E753C6B0080; Fri, 19 Mar 2021 13:04:21 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D15828D0001; Fri, 19 Mar 2021 13:04:21 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id B8E396B007B for ; Fri, 19 Mar 2021 13:04:21 -0400 (EDT) Received: from smtpin24.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 743D61802CCC6 for ; Fri, 19 Mar 2021 17:04:21 +0000 (UTC) X-FDA: 77937247122.24.3D21B29 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) by imf09.hostedemail.com (Postfix) with ESMTP id 68BE26000135 for ; Fri, 19 Mar 2021 17:04:18 +0000 (UTC) Received: by mail-ej1-f49.google.com with SMTP id b7so10874514ejv.1 for ; Fri, 19 Mar 2021 10:04:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=LuJrMYBTJL5Xe86Jazup0t309uQeJ56yqfVkIQxTPz4=; b=mTAjXkBsfneJMHpHwXUuONK9Tmp/guHJ5pBVPSHa7Ox5ktDyxR7FifxWd7FbzZg/M9 N2U/Qb9b2NdbJU2dtaESt0l4slZy8w0SxwzytRO+7Ify4NkUL8+euwpgeIk8EWUhimLm ztOlYw9KZAWVzoj1O/xCpnC/cbSWRhKIhCeZ9dkqLnGfldgv/Ra+mSM4ySv3l0J+WG4c SUpY6ZcJlZ6d9WQgw97XH1JUAHfGqcxUPQUXz+MnxwcN0RQcRm/uzelDEgPO1ljYBmvE tzBcWRHzEuyvL0tuhkEh8unW3Uk6MkIisvA096XEZyHwD3F05Be6hgjt3YG4qzasMi+5 Kz+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=LuJrMYBTJL5Xe86Jazup0t309uQeJ56yqfVkIQxTPz4=; b=Bj+nzNzUtEwzrwV5+AA83IT4ZV/YpCMu/Oxe/vvCpSLjtqfjRqBbXdBn90jp3Dv7HE eThnNTT/rBmrMlrW1Nk0SCu6kEjQNJbdzgSubmiH9f0PjTKmGXhFIADAPnDpLX5EL7lo AlVsPsuDXS18nHTou9Ggwal9T42y++FK6L38JYiZmdPHZAR/e9SNappewtGqYDZl8Za/ FpmTy+XA+7hojmQ8VHv/SriQfJm48pQBBWUyQJlFJ1ubUaVVot/noAPD+5AQP1wUuE6d wBaQATFJwE5AGAKsqFyv7oXeF5ws1mqjdGqMvB1y4RseqV6rm4FLXrDz+57StqEzwK// BnXg== X-Gm-Message-State: AOAM532e8FYx0m0OVG2RbFgIPpDDM64hjR4kaOHPtYIMidCBTAPfpS3G 54X614zKWxpSFxXKDpJn+myioNOqJqqAqAV81RA= X-Google-Smtp-Source: ABdhPJxuCPuk6yzpXozNAi7JlMqmnwLCENtGgzW4vMAPJGOnAdDPFJHBIKE/epwvTX9o3hC2Ci9gojXS7aH8mDlphwo= X-Received: by 2002:a17:907:2bf6:: with SMTP id gv54mr5581406ejc.514.1616173451914; Fri, 19 Mar 2021 10:04:11 -0700 (PDT) MIME-Version: 1.0 References: <20210311212628.GK194839@xz-x1> <634820ea-33bf-7423-cdea-ab3e63aa9729@redhat.com> In-Reply-To: <634820ea-33bf-7423-cdea-ab3e63aa9729@redhat.com> From: Yang Shi Date: Fri, 19 Mar 2021 10:04:00 -0700 Message-ID: Subject: Re: Page zapping and page table reclaim To: David Hildenbrand Cc: Peter Xu , Linux Memory Management List , Minchan Kim , Matthew Wilcox , Rik van Riel , Michal Hocko , Andrea Arcangeli Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 68BE26000135 X-Stat-Signature: 9qurf7moxdn76amjczc8kkxmk4tweptj Received-SPF: none (gmail.com>: No applicable sender policy available) receiver=imf09; identity=mailfrom; envelope-from=""; helo=mail-ej1-f49.google.com; client-ip=209.85.218.49 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1616173458-689703 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, Mar 11, 2021 at 1:35 PM David Hildenbrand wrote: > > On 11.03.21 22:26, Peter Xu wrote: > > On Thu, Mar 11, 2021 at 07:14:02PM +0100, David Hildenbrand wrote: > >> I was wondering, is there any mechanism that reclaims basically empty page > >> tables in a running process? > > > > Would munmap() count? :) > > Haha, no -- also not mmap(FIXED) or mremap(FIXED) ;) > > As so often lately, the use case is sparse memory mappings where we > > a) may want to reuse the area later. > b) don't want to hold the mmap lock in write while optimizing > c) don't want to create a lot of individual mappings that we might not > be able to merge again. Will the below work for you? 1. acquire write mmap lock 2. unlink vmas from the list and rbtree (so the vmas won't be visible to any concurrent readers/writers) 3. downgrade write lock to read lock 4. zap page tables and free page tables 5. upgrade to write lock 6. relink vmas back to list and rbtree Actually the current implementation of munmap() does the first 5 steps. But there is no rwsem upgrade function, so you may have to release the lock then reacquire the write lock. > > > -- > Thanks, > > David / dhildenb > >