Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp4808909imu; Tue, 29 Jan 2019 07:52:50 -0800 (PST) X-Google-Smtp-Source: ALg8bN5JDB1kW2KDlKnJToGI5XwmbkgVMyg8+ajyOsH7dI7mZBTGgfUJ9c+3TsWZScyX0XheO24+ X-Received: by 2002:a63:c451:: with SMTP id m17mr23987858pgg.27.1548777170255; Tue, 29 Jan 2019 07:52:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548777170; cv=none; d=google.com; s=arc-20160816; b=gkTFZHXLfl/cO35hJ+AIxkicoxAsfDzx2YbllNcTIfbzaZKyadaBqJ/ZArnh/sC1u/ dLsKjNAclGumwOvxwHpta/65SU9wEsbLaAUqf6gTsFt3lMJLQMQxzMdShU3fqcIKP0QI ao5r5GmGyYZaAmeM5lkoTxInJSFDaI+D3fABi66wW9cV7MLhbwu/ZDIH9bwQb51SR2KM Ly3SkjXnF3k9oEFtrL1xKQ8mnNoTBLqrxtW8+NOppLankaJtPX7SblTtU6aGMImks8nN HEF4WSaNKWE2FL6cDCrdPvia8I0KPG/HkOq/Jt7tJCTzSyGD8H5nPvarl6Jruz72ZBWY 6x1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=tWWxSABfpXRajMhk7SnL8Dhl7wtX5UIR/JlHdPavfy8=; b=ywYBOFNQdbpCNEDKYDh1UBDC6cgpK6zlIS+b/zDDnD6FuupxcM4IA1WD+21M0P2mo6 Q7ksOnx6ufno+A9U4eTz/6t9UXvnrY/3uU2tmH1qmZ9eZeTtFbcpeoEE0gklW/u0YhLL SWq72KheUKVwSNjSmpUcH99DLMExQ49z+6WuKscKfhFThS7KC19jElWN0K1IMVArskGO FLjbmgbZbBmRmeK7Zu1fWNAiWwTHf6CJIb/75RSIwH+ElKSs6kVCMx3iF3AAPRI86wxc thY1RaHvoZtvr8qEINFbgi71ZfDgIwGCGUAE9FqX3/SrA6cEKe+Xcur7zAdZ8M8OYS8a 7Mzw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s11si36389809pgi.324.2019.01.29.07.52.34; Tue, 29 Jan 2019 07:52:50 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726996AbfA2PwY (ORCPT + 99 others); Tue, 29 Jan 2019 10:52:24 -0500 Received: from mx2.suse.de ([195.135.220.15]:57152 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725795AbfA2PwY (ORCPT ); Tue, 29 Jan 2019 10:52:24 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id D88CDB11F; Tue, 29 Jan 2019 15:52:22 +0000 (UTC) Subject: Re: [PATCH] mm: proc: smaps_rollup: Fix pss_locked calculation To: Andrew Morton , Sandeep Patil Cc: adobriyan@gmail.com, avagin@openvz.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, kernel-team@android.com, dancol@google.com References: <20190121011049.160505-1-sspatil@android.com> <20190128161509.5085cacf939463f1c22e0550@linux-foundation.org> From: Vlastimil Babka Message-ID: Date: Tue, 29 Jan 2019 16:52:21 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: <20190128161509.5085cacf939463f1c22e0550@linux-foundation.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 1/29/19 1:15 AM, Andrew Morton wrote: > On Sun, 20 Jan 2019 17:10:49 -0800 Sandeep Patil wrote: > >> The 'pss_locked' field of smaps_rollup was being calculated incorrectly >> as it accumulated the current pss everytime a locked VMA was found. >> >> Fix that by making sure we record the current pss value before each VMA >> is walked. So, we can only add the delta if the VMA was found to be >> VM_LOCKED. >> >> ... >> >> --- a/fs/proc/task_mmu.c >> +++ b/fs/proc/task_mmu.c >> @@ -709,6 +709,7 @@ static void smap_gather_stats(struct vm_area_struct *vma, >> #endif >> .mm = vma->vm_mm, >> }; >> + unsigned long pss; >> >> smaps_walk.private = mss; >> >> @@ -737,11 +738,12 @@ static void smap_gather_stats(struct vm_area_struct *vma, >> } >> } >> #endif >> - >> + /* record current pss so we can calculate the delta after page walk */ >> + pss = mss->pss; >> /* mmap_sem is held in m_start */ >> walk_page_vma(vma, &smaps_walk); >> if (vma->vm_flags & VM_LOCKED) >> - mss->pss_locked += mss->pss; >> + mss->pss_locked += mss->pss - pss; >> } > > This seems to be a rather obscure way of accumulating > mem_size_stats.pss_locked. Wouldn't it make more sense to do this in > smaps_account(), wherever we increment mem_size_stats.pss? > > It would be a tiny bit less efficient but I think that the code cleanup > justifies such a cost? Yeah, Sandeep could you add 'bool locked' param to smaps_account() and check it there? We probably don't need the whole vma param yet. Thanks.