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=-24.8 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1,USER_IN_DEF_DKIM_WL 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 F2352C433E0 for ; Thu, 25 Feb 2021 23:14:08 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 47CC264EDB for ; Thu, 25 Feb 2021 23:14:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 47CC264EDB Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id BFB336B0005; Thu, 25 Feb 2021 18:14:07 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BAB916B0006; Thu, 25 Feb 2021 18:14:07 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AC1306B006C; Thu, 25 Feb 2021 18:14:07 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0123.hostedemail.com [216.40.44.123]) by kanga.kvack.org (Postfix) with ESMTP id 95A756B0005 for ; Thu, 25 Feb 2021 18:14:07 -0500 (EST) Received: from smtpin30.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 642AEDB41 for ; Thu, 25 Feb 2021 23:14:07 +0000 (UTC) X-FDA: 77858345334.30.F933A49 Received: from mail-ot1-f45.google.com (mail-ot1-f45.google.com [209.85.210.45]) by imf01.hostedemail.com (Postfix) with ESMTP id 5F7892000395 for ; Thu, 25 Feb 2021 23:14:06 +0000 (UTC) Received: by mail-ot1-f45.google.com with SMTP id r19so7427954otk.2 for ; Thu, 25 Feb 2021 15:14:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:from:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=8+F1D1lXhzkAPi6K9Z/dpHmXeEnlD5O2kNPvAi2nZ4Q=; b=taz4RTC0+G8PvM1uwoOpuyhIsFuQGdRvf50tuJsYOFiiNSaCi7rH+jPsSMS08o7ric bsoj0G8BsyU2k/m14j5nHD0JpfC+lHG4l916bancc93Q0d2eOK2selxVKx14Jc3u6jYF t02UXofC8ofRkPG2NlqBOELORdM0pE9BwaH+HalgvvO1H4MMOwHXz7NmFozZXpETZTd8 fLczgVmcWQ0838PjYA+eAjYKNUknp8SOvgFRH8jkCbXj2qpethyUyuEnVb3cQwS3nO7o v7kH1INCxd26bDL+jkucY1HQaqOYon3GasY2S3h+PTTMnC+TMeN+5UhdHt3kL6b97xlr O/Ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=8+F1D1lXhzkAPi6K9Z/dpHmXeEnlD5O2kNPvAi2nZ4Q=; b=uiGYwYYkuNCQX3jMCdqNFzqGeNp7MnC2goX7MJETAeuXJxhsziQJVI4aJbMFNQ9Y9e gx8n/KoPbdpj67twU92/ifkP3wrBCT/DdZiSTE8b7Gqsc6mYHxc1Q6Z6tSN5+VdRbhSb zsrXfcKYZ+DxWXXVVqOvQJOobaTDccNNochepQpqdgRZjQuz+AgPYbUalxoWsnYtGHf5 OCTYNjtfZOOAn1ISshLthhRDae6KDtssTb6a955307/TDA8zIh1z0T0B3dBP3w57u6H9 j0EXhKUKp/68edxDyT4fePoirZSsGNNpZoP3531YNa3ZkV21j36Y68rzm1FLZhtzYklg xGGg== X-Gm-Message-State: AOAM531VLfkxUB72sPsFSS9YoPG6zkr0utBVt3ObP+liqxhupsAy1J7l hhQ9pkfcQYF7P8+LM2N781vzXA== X-Google-Smtp-Source: ABdhPJz3q+mRKljzmwDKqp3s6gfNtnenOOZq7Rv89IrPJVnkql3IQAP216I6onQbw9nGWCB3wbx3+w== X-Received: by 2002:a05:6830:1416:: with SMTP id v22mr45280otp.239.1614294846254; Thu, 25 Feb 2021 15:14:06 -0800 (PST) Received: from eggly.attlocal.net (172-10-233-147.lightspeed.sntcca.sbcglobal.net. [172.10.233.147]) by smtp.gmail.com with ESMTPSA id h11sm1418826ooj.36.2021.02.25.15.14.05 (version=TLS1 cipher=ECDHE-ECDSA-AES128-SHA bits=128/128); Thu, 25 Feb 2021 15:14:05 -0800 (PST) Date: Thu, 25 Feb 2021 15:14:03 -0800 (PST) From: Hugh Dickins X-X-Sender: hugh@eggly.anvils To: Andrew Morton cc: Roman Gushchin , Johannes Weiner , Michal Hocko , Vlastimil Babka , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/4] mm: /proc/sys/vm/stat_refresh skip checking known negative stats In-Reply-To: Message-ID: References: User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 5F7892000395 X-Stat-Signature: szh7ett614zqxzzok9tpfr3jpiabxmrx Received-SPF: none (google.com>: No applicable sender policy available) receiver=imf01; identity=mailfrom; envelope-from=""; helo=mail-ot1-f45.google.com; client-ip=209.85.210.45 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1614294846-457214 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: vmstat_refresh() can occasionally catch nr_zone_write_pending and nr_writeback when they are transiently negative. The reason is partly that the interrupt which decrements them in test_clear_page_writeback() can come in before __test_set_page_writeback() got to increment them; but transient negatives are still seen even when that is prevented, and we have not yet resolved why (Roman believes that it is an unavoidable consequence of the refresh scheduled on each cpu). But those stats are not buggy, they have never been seen to drift away from 0 permanently: so just avoid the annoyance of showing a warning on them. Similarly avoid showing a warning on nr_free_cma: CMA users have seen that one reported negative from /proc/sys/vm/stat_refresh too, but it does drift away permanently: I believe that's because its incrementation and decrementation are decided by page migratetype, but the migratetype of a pageblock is not guaranteed to be constant. Use switch statements so we can most easily add or remove cases later. Link: https://lore.kernel.org/linux-mm/20200714173747.3315771-1-guro@fb.com/ Reported-by: Roman Gushchin Signed-off-by: Hugh Dickins --- mm/vmstat.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) --- vmstat2/mm/vmstat.c 2021-02-25 11:56:18.000000000 -0800 +++ vmstat3/mm/vmstat.c 2021-02-25 12:42:15.000000000 -0800 @@ -1840,6 +1840,14 @@ int vmstat_refresh(struct ctl_table *tab if (err) return err; for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++) { + /* + * Skip checking stats known to go negative occasionally. + */ + switch (i) { + case NR_ZONE_WRITE_PENDING: + case NR_FREE_CMA_PAGES: + continue; + } val = atomic_long_read(&vm_zone_stat[i]); if (val < 0) { pr_warn("%s: %s %ld\n", @@ -1856,6 +1864,13 @@ int vmstat_refresh(struct ctl_table *tab } #endif for (i = 0; i < NR_VM_NODE_STAT_ITEMS; i++) { + /* + * Skip checking stats known to go negative occasionally. + */ + switch (i) { + case NR_WRITEBACK: + continue; + } val = atomic_long_read(&vm_node_stat[i]); if (val < 0) { pr_warn("%s: %s %ld\n",