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=-11.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT 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 62D0CC2BB48 for ; Thu, 17 Dec 2020 03:45:38 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id E1EC02376F for ; Thu, 17 Dec 2020 03:45:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E1EC02376F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=bytedance.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 210826B0036; Wed, 16 Dec 2020 22:45:37 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1C1F46B005D; Wed, 16 Dec 2020 22:45:37 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0D8306B0068; Wed, 16 Dec 2020 22:45:37 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0026.hostedemail.com [216.40.44.26]) by kanga.kvack.org (Postfix) with ESMTP id EC98D6B0036 for ; Wed, 16 Dec 2020 22:45:36 -0500 (EST) Received: from smtpin06.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id AB038181AC9CC for ; Thu, 17 Dec 2020 03:45:36 +0000 (UTC) X-FDA: 77601384672.06.soda86_180e0ff27431 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin06.hostedemail.com (Postfix) with ESMTP id 7C5821005141D for ; Thu, 17 Dec 2020 03:45:36 +0000 (UTC) X-HE-Tag: soda86_180e0ff27431 X-Filterd-Recvd-Size: 7290 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) by imf19.hostedemail.com (Postfix) with ESMTP for ; Thu, 17 Dec 2020 03:45:35 +0000 (UTC) Received: by mail-pl1-f172.google.com with SMTP id y8so14381278plp.8 for ; Wed, 16 Dec 2020 19:45:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=o4lGSGZVjS2zM9d6QEvl1MhzyKEShz6mJMJJf7kQ2hE=; b=RNf3Dpg13GyOC+Rnz6oHHcpZJm6x4wLec34gX8LW2PY+tgTEHYPASoLI3SjWpyuvpr PJKZITynoHyKerkjOraWy8X6GU1t/uh7J7krDDvDGTvX8NMpdMupZuMDenJknjMQrxIO gqsUZf1p6a1RnIjVIuCggKuEkiRmD6t1nCPPWA/q5BtIcwjxJJcwwEDPKzWA3NMR8r1T sF6dtSg5yKKij6ZsXMchNYGUrP/54jW5LFsMCzMpl8AlrDas2jXmN61q10diZCpGe0oJ HZ94nYZ0FNWOK/3oGaxwNf5gL2oWaf19zJ90XfdN7aZkgrl9n9EkcRwCWNn8wrFblc7E sdEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=o4lGSGZVjS2zM9d6QEvl1MhzyKEShz6mJMJJf7kQ2hE=; b=VoGxla1wR7m0+b47qQsgkqNnesvMAPNhQN6RBicRX4kA1d5jA17qVyz/uncbMhu7lR SLmkt/44ThV/7IxuVsqnlfxRuy/qc9nzxK33ahVUHCEu7qD49YWx0LN8Ys4xGuQzQ2U2 PtnQl3UJl756LBq2nL5X7njKO0u7wt6nWDUslv82xOT/0DXOCfUqx3t2snTG+IsCpOh+ +tu9c8tattq2H5FOTLgsTSCTOt2VHNUh/bqkiT0Ff5yTaVeDT9Bs+gdqjEnTE04aSb5h TuTOmPWa9MQH6VC2SjqH94/FX2wtehptHgfasw+4bHWx43xz2aeBCQ0WllKUfXoQIXvs +eRQ== X-Gm-Message-State: AOAM530B7I6HH20/sVb05qnkYv+eFD1n+Yle3DZ/REj2QtELKXiFgS6m nLMuod/mUWalGxmwEBBxh3VmOg== X-Google-Smtp-Source: ABdhPJxLSVMDVAZYEz3Ed50Gw3WMb56PvS+zSziMjU8RzLK8WmLR9X058TqqCeEh1d6UY/e6Mof2zg== X-Received: by 2002:a17:902:76c2:b029:dc:1aa4:28f1 with SMTP id j2-20020a17090276c2b02900dc1aa428f1mr4474288plt.79.1608176734812; Wed, 16 Dec 2020 19:45:34 -0800 (PST) Received: from localhost.localdomain ([139.177.225.237]) by smtp.gmail.com with ESMTPSA id b2sm3792412pfo.164.2020.12.16.19.45.27 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 16 Dec 2020 19:45:34 -0800 (PST) From: Muchun Song To: gregkh@linuxfoundation.org, rafael@kernel.org, adobriyan@gmail.com, akpm@linux-foundation.org, hannes@cmpxchg.org, mhocko@kernel.org, vdavydov.dev@gmail.com, hughd@google.com, shakeelb@google.com, guro@fb.com, samitolvanen@google.com, feng.tang@intel.com, neilb@suse.de, iamjoonsoo.kim@lge.com, rdunlap@infradead.org Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, cgroups@vger.kernel.org, Muchun Song Subject: [PATCH v5 0/7] Convert all THP vmstat counters to pages Date: Thu, 17 Dec 2020 11:43:49 +0800 Message-Id: <20201217034356.4708-1-songmuchun@bytedance.com> X-Mailer: git-send-email 2.21.0 (Apple Git-122) MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: This patch series is aimed to convert all THP vmstat counters to pages. The unit of some vmstat counters are pages, some are bytes, some are HPAGE_PMD_NR, and some are KiB. When we want to expose these vmstat counters to the userspace, we have to know the unit of the vmstat counter= s is which one. When the unit is bytes or kB, both clearly distinguishable by the B/KB suffix. But for the THP vmstat counters, we may make mistakes= . For example, the below is some bug fix for the THP vmstat counters: - 7de2e9f195b9 ("mm: memcontrol: correct the NR_ANON_THPS counter of hi= erarchical memcg") - The first commit in this series ("fix NR_ANON_THPS accounting in char= ge moving") This patch series can make the code clear. And make all the unit of the T= HP vmstat counters in pages. Finally, the unit of the vmstat counters are pages, kB and bytes. The B/KB suffix can tell us that the unit is bytes or kB. The rest which is without suffix are pages. In this series, I changed the following vmstat counters unit from HPAGE_P= MD_NR to pages. However, there is no change to the print format of output to us= er space. - NR_ANON_THPS - NR_FILE_THPS - NR_SHMEM_THPS - NR_SHMEM_PMDMAPPED - NR_FILE_PMDMAPPED Doing this also can make the statistics more accuracy for the THP vmstat counters. This series is consistent with 8f182270dfec ("mm/swap.c: flush = lru pvecs on compound page arrival"). Because we use struct per_cpu_nodestat to cache the vmstat counters, whic= h leads to inaccurate statistics expecially THP vmstat counters. In the sys= tems with hundreads of processors it can be GBs of memory. For example, for a = 96 CPUs system, the threshold is the maximum number of 125. And the per cpu counters can cache 23.4375 GB in total. The THP page is already a form of batched addition (it will add 512 worth= of memory in one go) so skipping the batching seems like sensible. Although = every THP stats update overflows the per-cpu counter, resorting to atomic globa= l updates. But it can make the statistics more accuracy for the THP vmstat counters. From this point of view, I think that do this converting is reasonable. Thanks Hugh for mentioning this. This was inspired by Johannes and Roman. Thanks to them. Changes in v4 -> v5: - Add motivation to each patch. Thanks to Michal. - Replace some HPAGE_PMD_NR to thp_nr_pages(). Thanks to Matthew. Changes in v3 -> v4: - Rename the first commit subject to "mm: memcontrol: fix NR_ANON_THPS accounting in charge moving". - Fix /proc/vmstat printing. Thanks to Johannes points out that. Changes in v2 -> v3: - Change the series subject from "Convert all vmstat counters to pages = or bytes" to "Convert all THP vmstat counters to pages". - Remove convert of KB to B. Changes in v1 -> v2: - Change the series subject from "Convert all THP vmstat counters to pa= ges" to "Convert all vmstat counters to pages or bytes". - Convert NR_KERNEL_SCS_KB account to bytes. - Convert vmstat slab counters to bytes. - Remove {global_}node_page_state_pages. Muchun Song (7): mm: memcontrol: fix NR_ANON_THPS accounting in charge moving mm: memcontrol: convert NR_ANON_THPS account to pages mm: memcontrol: convert NR_FILE_THPS account to pages mm: memcontrol: convert NR_SHMEM_THPS account to pages mm: memcontrol: convert NR_SHMEM_PMDMAPPED account to pages mm: memcontrol: convert NR_FILE_PMDMAPPED account to pages mm: memcontrol: make the slab calculation consistent drivers/base/node.c | 27 +++++----- fs/proc/meminfo.c | 10 ++-- include/linux/mmzone.h | 14 ++++++ mm/filemap.c | 4 +- mm/huge_memory.c | 11 +++-- mm/khugepaged.c | 6 ++- mm/memcontrol.c | 132 +++++++++++++++++++++++--------------------= ------ mm/page_alloc.c | 7 ++- mm/rmap.c | 26 ++++++---- mm/shmem.c | 2 +- mm/vmstat.c | 11 ++++- 11 files changed, 139 insertions(+), 111 deletions(-) --=20 2.11.0