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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id C20BCD6DDC0 for ; Fri, 15 Nov 2024 03:03:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E06156B007B; Thu, 14 Nov 2024 22:03:56 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id DB5CB6B0082; Thu, 14 Nov 2024 22:03:56 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C56AC6B0083; Thu, 14 Nov 2024 22:03:56 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id A0E666B007B for ; Thu, 14 Nov 2024 22:03:56 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 44102A12AA for ; Fri, 15 Nov 2024 03:03:56 +0000 (UTC) X-FDA: 82786832982.27.8FE4C2B Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) by imf21.hostedemail.com (Postfix) with ESMTP id A2BF31C0010 for ; Fri, 15 Nov 2024 03:02:28 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=IKiJ2Osg; spf=pass (imf21.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.214.178 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1731639689; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=LzrduDD5I5CT/EJOZvTHIxqcU26TJ739IMHWspLK/xs=; b=3EX2s5foHZgTYRmrrNTYYa1HpIZEMmUQO0tkU+oMCrbRfhcI7DzUOuAaqJsMFzXZlxDOrA QV12LxhXCrOFBCPRtYUrBYk9XMeU2azqFaaYgjb8mko5Nws8ARYhMfxnGH58sA0SD3Wwkm E1GuH7i4r+/JV1TSp6xRMY/stRU6Muw= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1731639689; a=rsa-sha256; cv=none; b=J+W2GDmLFUaBhWmE/VrJKXzYcmAQXpcAhoKoNPCk5Cs9TAVpTWePaUZvkj2TdxZHlrVWnO CM5CT/nY2Y7PDkS2ZW2hpz6pj06iUWCd0V2EhSXBeLpie1stF7Shqb18U+cFQ8Qzhm1WZA rqxhDxoREgZLoMtUOm+RO5q1r7AGXM8= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=IKiJ2Osg; spf=pass (imf21.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.214.178 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-2113da91b53so10028275ad.3 for ; Thu, 14 Nov 2024 19:03:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1731639832; x=1732244632; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=LzrduDD5I5CT/EJOZvTHIxqcU26TJ739IMHWspLK/xs=; b=IKiJ2Osg4O8i+tMc7IwQYMFOqPqZwEY2BsNmxRo0wMQ6w+sMBFKZETV3p/mhN1UrOA Z7jRWV7NygM6tBqARpdLGNdzmpefjQCYoOb6yFejO2yqrvUlmbfu7h2KGW2m4iggUgCO 0FWXvdRsHZeDbwyK/6eJog23IX4txxVvS492364dV20EKgpz1bb4IZrzVlwH+LPscnAR H11NO/e4iRYvz/dv2HnMfI+EEal/wU3KsV1oi4dDO4lxCCsJnK2UcFYzz1kFasfu+Y+w yZ1DQGvVrXzonxDaxbTnloyb++iSayrkg/2I+5TimaHf/1FpOqnUqC7Fmq9oV6ocS6ov 9YEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731639832; x=1732244632; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=LzrduDD5I5CT/EJOZvTHIxqcU26TJ739IMHWspLK/xs=; b=ujl8/lombbJ0QSj3h3jp4FFAC31wuTqNWCpf0UeCoWHy6xQJFcnNDcDVNGL+NymK43 QO0LGPDYUrxvzKyolzrkmWTEaeaAFBQE/DHJXf2T3KUI2HE5t2n3yHfuj267vhauogSy ELM/A3e0DtNFWOzoZVijEAHkWZ8kicxf1gcFP+ls9KHHndmohjFrF2WyajrmlXx1m1JA LFtrQv3NVtryqFRQ8kajC4B7AFxbFdW3xkNFxLi3SD9cbnWl1kpdzke2KTM5a1Oov93e yrKjMLhXtyamcu7DM7GN3SKFtTwEYW6/DcedkXEDhh19mp7WjN0kHTuTTH+UgtnM7xPc K7AA== X-Forwarded-Encrypted: i=1; AJvYcCXWIFK1VaniNKLObdInDqvKrJxtdKysOLi5EF/0S2IUnrXZ2uUwuoJUMTRJFVdkjDTAxoZQKNJmwg==@kvack.org X-Gm-Message-State: AOJu0YyKtCizc2xD0Qceuyxlzg5IH3Lo7Q8E7luHNHRXJvKpSi/vbQ4x O8/oF0CY2sGz/W70CLY4AFLONpOln0AZHNGKzYEb8KphErrbT2ekgThV1bgKN1s= X-Google-Smtp-Source: AGHT+IFFScrGOGqyoY+ZCRvuSeEvmWSNpvWddykk8QrnIHF12Y6qC8VAElXEUPPl1dP1ZKRq1zPtQg== X-Received: by 2002:a17:902:c407:b0:20c:9e9b:9614 with SMTP id d9443c01a7336-211d0d725c2mr14630525ad.15.1731639832089; Thu, 14 Nov 2024 19:03:52 -0800 (PST) Received: from [10.84.149.95] ([203.208.167.151]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-211d0ec8608sm3407505ad.96.2024.11.14.19.03.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 14 Nov 2024 19:03:51 -0800 (PST) Message-ID: <253e5fd0-7e98-43fd-b0d7-8a5b739ae4aa@bytedance.com> Date: Fri, 15 Nov 2024 11:03:42 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 4/9] mm: introduce skip_none_ptes() Content-Language: en-US To: David Hildenbrand Cc: jannh@google.com, hughd@google.com, willy@infradead.org, muchun.song@linux.dev, vbabka@kernel.org, akpm@linux-foundation.org, peterx@redhat.com, mgorman@suse.de, catalin.marinas@arm.com, will@kernel.org, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, x86@kernel.org, lorenzo.stoakes@oracle.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, zokeefe@google.com, rientjes@google.com References: <574bc9b646c87d878a5048edb63698a1f8483e10.1731566457.git.zhengqi.arch@bytedance.com> <617a063e-bd84-4da5-acf4-6ff516512055@bytedance.com> From: Qi Zheng In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: A2BF31C0010 X-Stat-Signature: 5huopqrxcir8u996c7w5roxipurrokup X-HE-Tag: 1731639748-542091 X-HE-Meta: U2FsdGVkX18Pl88W+Te22TE3dNALptq1EZZgrB7KUNQcLi9g85oR2cxUWXIYNjkB5fK7lETP52zJOQFxcuUcNUrVifyupLrK1Uc2hZy7oDiXMGk/J+3bfg5+IAckeib96TGGOqahSa41N76LZ8Md860g+nm7xNrPFoqzML5MrW9UxAzNmnzlyopR+XK2HxfTm9cd50bdRexdQ3kimX+4tzNjfVlSPdqPaSfNCgPpJE1yGfPekFcowNnfGO/1++f61gyoXNDDPoOY/dMdZdxDQArj/akDXYFos0qqGvMWA35bEJLoYAfQ0Zq939HImzS+rb7bpZ+Ayr91vm/6lPjWOjF5pDoeKMt2Ds6406uVaAm/SI1oWnzxJ7EvkQo5bAngKfkd0W0l6w0OZlf9B2+0RsgtlJM0OAWWOKSf7xo5hKIXpo0RX1g/oxnlWI39IFVjPzOkYKkXKU6kIpmWDiLgmsw8Qrgo/Onc5cbVqbAWuQ2YzQOg4QDPAJ6l7dGFZ4v2DjSEXBEDZyASU3wcFtsxmGw0mtiWQtoBxRGf0EwfDoOp4rZsKEUW0hbYJ1V8FGkxhobw/7cia3maaf7nKV6jIgyFdnevGY10l/NtC2T14VfpSy97/1gmcvuudiLHiZURkHphSOihdSIXgzXT/9qAilfq6/f654A9q3B8QkWFSWUy9gVNtE0Gw7iN6lcxteS3ywnfAmXH8PKo4PmfPGZizhmuf7amdO/GFMjM7Ecx7q2RX5mIiiH3HvBY8xCsWGPg/x1NXQC8KhHB4Ydh8mo9LwhHEAmKDH2i3Mk9W5BPDWXXeybSGmWj0N060SewdRiymSO2cN35JygZhToz0G4V/WClraQGbpNN5W6j0qS3xA+ZmPpM6U93RC9hqXufQWIuc5OWrNvTpqwKW5fKSNxA03s9xrZ21v+NbqgrV8qoVaBnu6WdNpsEbbjGWp4wfSwQsNJ/PwbC5zUkDimRsDc 06kGreSG JOla8XnFQzqxE6ddKJsQZTL+aSyDBQrBPiNR5Aff6JUZBntCsVxuflfAS0KWMNCjZskpf53G/tJ6bZnnSyDunm5oFEEwVxdRFT/sMZVrizCdxMawX5dXlv6VLLWTBeDkAyyEfVZqSrAU95+waf5ceFVPSIUExf45SHO2pHl+uX1sDYI8FTkCbGYyGxtwiA/auaymqChkfQl5jFrqi5IEThAd4haicpgldq63ZTCK8hDllgw4/5FNfJURea7Vvxngu+rEeP9Z9ONEFOxUkXYVpQEUc9UObYT7dDZVQroEiC17WfIMEqPM5se4Uhr+HkoW1G/Cc0xRCvUqeqrkqzCDxuSUBeMmAe9yDkUsfkPsRADQNcxwLiGEvo63OacxFPvwybRTaBKao7eXj8JiWA49MiSJofa6RSQWltLUd 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: List-Subscribe: List-Unsubscribe: On 2024/11/15 05:19, David Hildenbrand wrote: > On 14.11.24 13:51, Qi Zheng wrote: >> >> >> On 2024/11/14 20:32, David Hildenbrand wrote: >>> On 14.11.24 10:20, Qi Zheng wrote: >>>> >>>> >>>> On 2024/11/14 16:04, David Hildenbrand wrote: >>>>> >>>>>>     static unsigned long zap_pte_range(struct mmu_gather *tlb, >>>>>>                     struct vm_area_struct *vma, pmd_t *pmd, >>>>>>                     unsigned long addr, unsigned long end, >>>>>> @@ -1682,13 +1704,17 @@ static unsigned long zap_pte_range(struct >>>>>> mmu_gather *tlb, >>>>>>             pte_t ptent = ptep_get(pte); >>>>>>             int max_nr; >>>>>> -        nr = 1; >>>>>> -        if (pte_none(ptent)) >>>>>> -            continue; >>>>>> - >>>>>>             if (need_resched()) >>>>>>                 break; >>>>>> +        nr = skip_none_ptes(pte, addr, end); >>>>>> +        if (nr) { >>>>>> +            addr += PAGE_SIZE * nr; >>>>>> +            if (addr == end) >>>>>> +                break; >>>>>> +            pte += nr; >>>>>> +        } >>>>>> + >>>>>>             max_nr = (end - addr) / PAGE_SIZE; >>>>> >>>>> I dislike calculating max_nr twice, once here and once in >>>>> skip_non_ptes. >>>>> >>>>> Further, you're missing to update ptent here. >>>> >>>> Oh, my bad. However, with [PATCH v3 5/9], there will be no problem, but >>>> there are still two ptep_get() and max_nr calculation. >>>> >>>> If you inline it you can >>>>> avoid another ptep_get(). >>>> >>>> Do you mean to inline the skip_none_ptes() into do_zap_pte_range()? >>> >>> Effectively moving this patch after #5, and have it be something like: >>> >>> diff --git a/mm/memory.c b/mm/memory.c >>> index 1949f5e0fece5..4f5d1e4c6688e 100644 >>> --- a/mm/memory.c >>> +++ b/mm/memory.c >>> @@ -1667,8 +1667,21 @@ static inline int do_zap_pte_range(struct >>> mmu_gather *tlb, >>>           pte_t ptent = ptep_get(pte); >>>           int max_nr = (end - addr) / PAGE_SIZE; >>> >>> -       if (pte_none(ptent)) >>> -               return 1; >>> +       /* Skip all consecutive pte_none(). */ >>> +       if (pte_none(ptent)) { >>> +               int nr; >>> + >>> +               for (nr = 1; nr < max_nr; nr++) { >>> +                       ptent = ptep_get(pte + nr); >>> +                       if (!pte_none(ptent)) >>> +                               break; >>> +               } >>> +               max_nr -= nr; >>> +               if (!max_nr) >>> +                       return nr; >>> +               pte += nr; >>> +               addr += nr * PAGE_SIZE; >>> +       } >>> >>>           if (pte_present(ptent)) >>>                   return zap_present_ptes(tlb, vma, pte, ptent, max_nr, >>> >>> >>> In the context of this patch this makes most sense. >>> >>> Regarding "count_pte_none" comment, I assume you talk about patch #7. >> >> Yes. >> >>> >>> Can't you simply return the number of pte_none that you skipped here >>> using another >>> input variable, if really required? >> >> Suppose we add an input variable nr_skip to do_zap_pte_range(), you mean >> to return the above nr to zap_pte_range() through: > > Maybe "cur_none_nr" or something similar. OK. > >> >> *nr_skip = nr; >> >> and then: >> >> zap_pte_range >> --> nr = do_zap_pte_range(tlb, vma, pte, addr, end, details, &skip_nr, >>                          rss, &force_flush, &force_break); >>       if (can_reclaim_pt) { >>           none_nr += count_pte_none(pte, nr); >>           none_nr += nr_skip; >>       } >> >> Right? > > Yes. I did not look closely at the patch that adds the counting of Got it. > pte_none though (to digest why it is required :) ). Because 'none_nr == PTRS_PER_PTE' is used in patch #7 to detect empty PTE page. Looking forward to your more review feedback on this series. Thanks! >