From nobody Sat Jun 20 14:14:07 2026 Received: from m16.mail.163.com (m16.mail.163.com [220.197.31.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0109C3D8135; Tue, 14 Apr 2026 11:07:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=220.197.31.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776164828; cv=none; b=VUwVW66vUe5jZ1hOeilSgIqDXMTw8Gq1OVNKM8GKlMKclCIP96CIaAAJE9udZ6SqegTW0OAa1CdgJ7XwDSltJBJZp/DhoGTfm1JhB9LfNEeg6p32ygyVUzJhTFkhzOs2hIPoN5zcTXxV+skHRiZbrtlTuopTmSfi+aqtT2Ng4bI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776164828; c=relaxed/simple; bh=odbw2zHxq1iG4fbOnoXpUiNRcYVeB/XVY1YKKBUEn7s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dmCPyrh0yeB3GN6a1IFEt/HsqEcvbio2LWYbOqusgUPYA/21JjrQ83aWA7oE8Nlp7uBMsAjjfGBDWeeyjKqAP+a53QooRg5qT9cA2vSTx2gNRpzREksI1ZYRYPqPHvtXyn6uuZJy/aDpH2/qOpulyHb+R0UnssYE4qxlwqkmjas= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com; spf=pass smtp.mailfrom=163.com; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b=bx0+lO4e; arc=none smtp.client-ip=220.197.31.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=163.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b="bx0+lO4e" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=Su xd8W/enAVPZbmnsORtZjfIS+87GmyYpLzs7e2B95M=; b=bx0+lO4eyFbzp6awnD yhrErhvDNKDeg4ebQx5borCoIug08hdFF43r5RQCTk1rBo7Tsf1hTI++S5wdrVlu ReAoRSxR++C0WFI7msr8FC11BNR6E4IAJp0zjXDx+6xQ51MuByRUPQae1xt8Ilbl ErpqFYqbabtZ05BVHrSgoY/b0= Received: from ubuntu24-z.. (unknown []) by gzga-smtp-mtada-g0-0 (Coremail) with SMTP id _____wBnrLh2H95pqLbvEg--.46126S3; Tue, 14 Apr 2026 19:05:30 +0800 (CST) From: ranxiaokai627@163.com To: hannes@cmpxchg.org, mhocko@kernel.org, roman.gushchin@linux.dev, shakeel.butt@linux.dev, muchun.song@linux.dev, tj@kernel.org, mkoutny@suse.com, shuah@kernel.org, kuba@kernel.org, hughd@google.com, akpm@linux-foundation.org Cc: cgroups@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, ran.xiaokai@zte.com.cn, ranxiaokai627@163.com Subject: [PATCH 1/2] kselftests: cgroup: update kmem test tolerance for multi-memcg stock Date: Tue, 14 Apr 2026 11:05:23 +0000 Message-ID: <20260414110524.2414-2-ranxiaokai627@163.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260414110524.2414-1-ranxiaokai627@163.com> References: <20260414110524.2414-1-ranxiaokai627@163.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: _____wBnrLh2H95pqLbvEg--.46126S3 X-Coremail-Antispam: 1Uf129KBjvJXoW7tFWxWry7Xw1UGw15urWxWFg_yoW8uF43pa s3AFyjywnagFsxAa1Yv3s2gFWfua97XF4UAw1Sqw1fCw13tw1IqF1akFW3Jr95AFZayr4f Z3Z3t3yrW3WjvaUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0ziwiSJUUUUU= X-CM-SenderInfo: xudq5x5drntxqwsxqiywtou0bp/xtbCxRr3RGneH3p3ugAA3z Content-Type: text/plain; charset="utf-8" From: Ran Xiaokai Commit f735eebe55f8 ("memcg: multi-memcg percpu charge cache") changed the percpu charge cache to support multiple memory cgroups (NR_MEMCG_STOCK) instead of a single memcg per CPU. Prior to the multi-memcg stock change, the tolerance was calculated as: PAGE_SIZE * MEMCG_CHARGE_BATCH * num_cpus With NR_MEMCG_STOCK slots per CPU, the worst-case discrepancy is now: PAGE_SIZE * MEMCG_CHARGE_BATCH * NR_MEMCG_STOCK * num_cpus Update the test tolerance to include the NR_MEMCG_STOCK factor to prevent false positive test failures. Fixes: f735eebe55f8 ("memcg: multi-memcg percpu charge cache") Signed-off-by: Ran Xiaokai --- tools/testing/selftests/cgroup/test_kmem.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/cgroup/test_kmem.c b/tools/testing/sel= ftests/cgroup/test_kmem.c index eeabd34bf083..15b8bb424cb5 100644 --- a/tools/testing/selftests/cgroup/test_kmem.c +++ b/tools/testing/selftests/cgroup/test_kmem.c @@ -19,12 +19,19 @@ =20 =20 /* - * Memory cgroup charging is performed using percpu batches 64 pages - * big (look at MEMCG_CHARGE_BATCH), whereas memory.stat is exact. So - * the maximum discrepancy between charge and vmstat entries is number - * of cpus multiplied by 64 pages. + * Memory cgroup charging is performed using per-CPU batches to reduce + * accounting overhead. Each cache slot can hold up to MEMCG_CHARGE_BATCH + * pages for a specific memcg. The per-CPU charge cache supports multiple + * memcgs simultaneously (NR_MEMCG_STOCK slots). + * + * While memory.stat reports exact usage, per-CPU charges are pending + * until flushed. Therefore, the maximum discrepancy between charge and + * vmstat entries is: + * + * PAGE_SIZE * MEMCG_CHARGE_BATCH * NR_MEMCG_STOCK * num_cpus */ -#define MAX_VMSTAT_ERROR (4096 * 64 * get_nprocs()) +#define NR_MEMCG_STOCK 7 +#define MAX_VMSTAT_ERROR (4096 * 64 * NR_MEMCG_STOCK * get_nprocs()) =20 #define KMEM_DEAD_WAIT_RETRIES 80 =20 --=20 2.25.1 From nobody Sat Jun 20 14:14:07 2026 Received: from m16.mail.163.com (m16.mail.163.com [117.135.210.3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DAAF33D75CF; Tue, 14 Apr 2026 11:07:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=117.135.210.3 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776164840; cv=none; b=Sr1JDa8rNo8/aiQ5qbN/PnEGnM4i3g3K9lEg9sO1i7lT9+tZVNlKkXI+hCuwzp4Ht4wOcLMjBwYDQuBqjCtI4M190dLxaVwAIco5cBtQOivNUXGHcnUu2uJznimlz5YiyWSnIaWVTMc+Lp03S76WpKlK0fR4W2e+KwEIF22aFtc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776164840; c=relaxed/simple; bh=Y8eeT+7o2AEJ8S44YbJfEHq4tO6opDMaCRGbOasJ/nU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XbH5/+MO0FkZTjvjtwV4WtFVJWcyAEwM34Mp4+zsrbdVSQz7LhcBzqwfUkA0TiPZ4vws095MwWHSmyZIvtc0QUAq0Ju8QN1fTaUvG3OMy/GhGUHfRMWuHKcv+FhSIZ8k7IqOmoQX4CDwG5C1bOMyEgovJ1etDsq/xM6hlv6tQao= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com; spf=pass smtp.mailfrom=163.com; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b=VW8Jbnkt; arc=none smtp.client-ip=117.135.210.3 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=163.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b="VW8Jbnkt" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=Sg 2tnVpaCRON/cP+7gSdWa+iWUUmwfSiFQT93SEuIFU=; b=VW8JbnktrCN31hXN/m ZRxuZMCswnlDTlAW8P2XreK8Dw/m569blPObWwb51TYYrfmmSxRl1yIQuM2bPZ3a qqDK4QWbFCDvGELskajRHbhSeKOh9AYb6rzAfbJawxfA1WU83m7WFJlqVPhID6It 8OB3JNh436NC2mM/ZpMDjAbUo= Received: from ubuntu24-z.. (unknown []) by gzga-smtp-mtada-g0-0 (Coremail) with SMTP id _____wBnrLh2H95pqLbvEg--.46126S4; Tue, 14 Apr 2026 19:05:32 +0800 (CST) From: ranxiaokai627@163.com To: hannes@cmpxchg.org, mhocko@kernel.org, roman.gushchin@linux.dev, shakeel.butt@linux.dev, muchun.song@linux.dev, tj@kernel.org, mkoutny@suse.com, shuah@kernel.org, kuba@kernel.org, hughd@google.com, akpm@linux-foundation.org Cc: cgroups@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, ran.xiaokai@zte.com.cn, ranxiaokai627@163.com Subject: [PATCH 2/2] kselftests: cgroup: account for slab memory in test_percpu_basic Date: Tue, 14 Apr 2026 11:05:24 +0000 Message-ID: <20260414110524.2414-3-ranxiaokai627@163.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260414110524.2414-1-ranxiaokai627@163.com> References: <20260414110524.2414-1-ranxiaokai627@163.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: _____wBnrLh2H95pqLbvEg--.46126S4 X-Coremail-Antispam: 1Uf129KBjvJXoW7Aw4fGr17GF45WrWfCF18Grg_yoW8WF1xpF ykG34qya10gFnxCa10kr4kXrWrW3s5Za18Gw1DAw1xAwsxtr9rtr1SyFWUJr97CFZ2vr1Y v34ag3sxu3WUA3JanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0zR8OzxUUUUU= X-CM-SenderInfo: xudq5x5drntxqwsxqiywtou0bp/xtbCxhz4RWneH3yBlgAA3k Content-Type: text/plain; charset="utf-8" From: Ran Xiaokai The test verifies memory.current approximates memory.stat.percpu within a tolerance. However, memory.current includes slab overhead. On systems with few CPUs(<=3D 4), slab consumption exceeds percpu usage. While percpu usage grows linearly and dominates as CPU count increases, the significant slab portion on such few CPU systems causes the difference to exceed MAX_VMSTAT_ERROR, leading to false test failures. Fix this by including slab memory in the calculation. Signed-off-by: Ran Xiaokai --- tools/testing/selftests/cgroup/test_kmem.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/cgroup/test_kmem.c b/tools/testing/sel= ftests/cgroup/test_kmem.c index 15b8bb424cb5..263aedb0727a 100644 --- a/tools/testing/selftests/cgroup/test_kmem.c +++ b/tools/testing/selftests/cgroup/test_kmem.c @@ -360,7 +360,7 @@ static int test_percpu_basic(const char *root) { int ret =3D KSFT_FAIL; char *parent, *child; - long current, percpu; + long current, percpu, slab; int i; =20 parent =3D cg_name(root, "percpu_basic_test"); @@ -386,8 +386,9 @@ static int test_percpu_basic(const char *root) =20 current =3D cg_read_long(parent, "memory.current"); percpu =3D cg_read_key_long(parent, "memory.stat", "percpu "); + slab =3D cg_read_key_long(parent, "memory.stat", "slab "); =20 - if (current > 0 && percpu > 0 && labs(current - percpu) < + if (current > 0 && percpu > 0 && labs(current - percpu - slab) < MAX_VMSTAT_ERROR) ret =3D KSFT_PASS; else --=20 2.25.1