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 16D34C4828F for ; Sat, 3 Feb 2024 01:36:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6397A6B0072; Fri, 2 Feb 2024 20:36:32 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5E9896B0074; Fri, 2 Feb 2024 20:36:32 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4B0E16B0078; Fri, 2 Feb 2024 20:36:32 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 374F26B0072 for ; Fri, 2 Feb 2024 20:36:32 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id D0599808FD for ; Sat, 3 Feb 2024 01:36:31 +0000 (UTC) X-FDA: 81748777782.23.BF3F45B Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) by imf08.hostedemail.com (Postfix) with ESMTP id 07ADD16000C for ; Sat, 3 Feb 2024 01:36:29 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=HLZR0CN4; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf08.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.53 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1706924190; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=+ZtJdSb7EI9zmC17ta56Eu+wHYjQhwSEAchKE32W20c=; b=5uRw1QZsU9ZkltE8imvuX3RH6r2qcY419idJxVmX0CHUkVbdhRRH2s0NBtByqKJheo5D7J lJHeZFT3aZTzMpQRLsXGXdOl4H3uUKuxo0YO1imTUoi87WPh5J7uVmWk3Q2NdT9ZBboyY5 pNl4fi74uXA9Q/OENiuZflQ5jY+bETE= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=HLZR0CN4; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf08.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.53 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1706924190; a=rsa-sha256; cv=none; b=vfTZN4PH34aOs50ln//fU5II9wUNlLxgOx2Wl0Hy8fTt2UGhn6+JyJ41TcIJWjcpSzKMGi CekAWWbkwnfZGGfhwq/p3AAtbg3H8XUlyhUe7z9VxNNfC3iTKoDEk36TFts2e9x2OHoSpL kP5gag5RU0K75f5sqgM/w6z71Knu7qU= Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-a35b32bd055so342228966b.2 for ; Fri, 02 Feb 2024 17:36:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1706924188; x=1707528988; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=+ZtJdSb7EI9zmC17ta56Eu+wHYjQhwSEAchKE32W20c=; b=HLZR0CN4LWfPpAjTsgWjKd20zjf38Jf2+F5mwMfoH988fa2hQl1KevtMNWM3ZGLNDT gzx4A1OJnUQuTm3gMYUWc9pUi2HWi9rLr+h3HBRLnm0u7f6a0FtmZlM2qGOBzgV5R8f5 j9n7LMGCiUxB3b0hAZjbplkM7Wwz5Ju/obxXkj4i2PBsWPrWO64PyAN48zn/u1KUKsfh 2QRXtUZRHlOj1K4sV04e2QFQMLtVsWwy3g0DPtsnLEHb+U6AWMNihHZ88VNvCNEtMsB9 F4bq+qdgQ8j/On2XaDBG8J71R6h+UkBthf/2bMZ/yIfh5yOHgjVaPHeLkfb+HZ+Ji7x7 Rtcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706924188; x=1707528988; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=+ZtJdSb7EI9zmC17ta56Eu+wHYjQhwSEAchKE32W20c=; b=KdmvOGm6ACn3Tf4TNwJwN5r/CDm/nNw/RsjLhvZfiqkfp5ccZyHHJ/naoKbE18WWGN UvkRVQHQm4JfDZ1hdO/AwWeeINolXYjtC73N3Wkg5X94hmE66A+Mhehcyl2UsZfd++Pq GeoDgXXiOaTVrTaTGEyeSZaFYkAYyeaxunbmxP8pm84HG5EZ5Xst1OiTDS+CqDiwDvES QjXXwEdouYavFttDsuQfusUOqOMFquje+a1U6QzVCIgpTkJJW+HulqNZZtQy11kEQiOF REof/msFZMxDho/rnLtl1HNtYUOgGvfR9jpl1A6ykXlRXVGStk6iXHfqiVLXeq4hB3LX 883w== X-Gm-Message-State: AOJu0YzQIpunwCxsveTv0kyw5q5B9T4lZLllrHk9T4FjJlBU6kURplf/ 1HdP56P0DmGKh2X07EtO/bIblmIFTb5e4Ur9b8CvZipn4bEx283n7vWuSdvIK+iKeeKd8PiL6P4 P4RyATUsNhr/Gs9bHlxV1AsNbkqyIgLjq7JWC X-Google-Smtp-Source: AGHT+IESunm6BBZ+RT4xmmTLaeoG0U7tcSgV83ArDerCBOVGM3/ZzMDno9Ecy/mHegvx1S4l6wD5GMMFI3eEWh5MYUU= X-Received: by 2002:a17:906:36cd:b0:a36:55d5:2364 with SMTP id b13-20020a17090636cd00b00a3655d52364mr2781404ejc.21.1706924188353; Fri, 02 Feb 2024 17:36:28 -0800 (PST) MIME-Version: 1.0 References: <20240201032718.1968208-1-nphamcs@gmail.com> <20240201032718.1968208-4-nphamcs@gmail.com> In-Reply-To: From: Yosry Ahmed Date: Fri, 2 Feb 2024 17:35:49 -0800 Message-ID: Subject: Re: [PATCH v2 3/3] selftests: add zswapin and no zswap tests To: Nhat Pham Cc: akpm@linux-foundation.org, riel@surriel.com, shuah@kernel.org, hannes@cmpxchg.org, tj@kernel.org, lizefan.x@bytedance.com, roman.gushchin@linux.dev, linux-mm@kvack.org, kernel-team@meta.com, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, linux-kselftest@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 07ADD16000C X-Stat-Signature: ckutkmpw8iqmz7khshhn4ng78z3gznom X-HE-Tag: 1706924189-163922 X-HE-Meta: U2FsdGVkX1+ILOTpHqfI7f8GvXsIgHObpAfeJ8GkSyjA73q/XWARD0ZVSyYbAXbGOom29w2gwgJDQBq6Dd0pjOtR2j8hgH0q7zu4nOXNgPBBlVdh8InkHpQk6y4d1sk/mKRSPC1FvxydlHh+SYeZUvRCbL4JBHs2s0xbC4IyHEubgW0HJoUyGnZl968IOmJ+ccnFhAU9UgdHXbOPQeuq1tMDBGSz6I0tpfPO3SwbQPFiJQUpLN/QL82gNLMRUl8EfalHpcdNAQsN4VWKF7Jj+EkubIyh743/IJHBNpHEyFj0k8LpEX7TBYd0ZpqK3EO6I2+DnXZEqyVccbNZTzZB2TW+XvQWnm//+rr1iDjp7pK0fJhXfnE7ONBWlUtt0pLN45Y/gnkWl/6R7W5v9NywZeJuhEG/gTCreB4o48gNyMN8gl0TRh+8BxtdpdjlNGMa6ilqFxNSvZ9tapgPN7/n+nEqsxOTy7kvkU5HVjJfTpS0n3kETtINhMvaV2HQjvYvWMML808R9USUeog30pHs+AfyIYSIxgid0c+dY63gMROswtb5gFRv32uqAwpmqhTO2CTiNzZHJt+ElNE+AFZviW5PNF5+XiIpkMcsHSOFsJhv6YQipmlipMPbr9kyrAXPmtSO5MXlKyv9h1HO7Uty7onV71TGd7dg2hhUeE+kFx+3fPc0yAAt6MjYi0wwp/+eZeJw6NXsnZ91Fxc7519vJrSrjFExu0eh/za7FwsjslH2JBPCSZB8KuCr+x7n+Ojl8xnXG/T3TwrGTySuBuiaYKYClybeaB52/xeCjL+bv7f3P4l7KUwk9lXfmdozyeIHRxN6EUSlDDujPTydCSZKi3B9E+9BSIO0RQ0BbTpv3FvXefF+nxxXbMe839PwPIGuIoq0kUoCn1+ufb2CP2J55Op0oCuceFf2r1nvrx0kmsG779zua4VF2r0vtL6lQWVTvEmXSHe9CfEfFy0yUv1 kdsMq9eA qGy7KtbwQqUSq5KYTr2F4FEmkNTXKvtKb0+Q5Zg5Q9z1l7NOcQwpfnYEvjBVnUF+bWBpkGcmHnyICtdYKtf6RCpgGD7iw7yxex+iqycxg/N3ghXLFkS54vORlgsaaVC217I2gWjaA+ghdqAsQ4cDTWhF0kSwx46+0AlfvjS4lydNfvph7eZf9LJA+iyjDi8HhZhHtb1Gx6ZPBp8oSDIa1Yb+yDxJ4Vf08X8vnjZEqtyajIuHOVypJ7wctDA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.181180, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: > > > +{ > > > + size_t size = (size_t)arg; > > > + char *mem = (char *)malloc(size); > > > + int ret = 0; > > > + > > > + if (!mem) > > > + return -1; > > > + for (int i = 0; i < size; i += 4095) > > > + mem[i] = 'a'; > > > > cgroup_util.h defines PAGE_SIZE, see alloc_anon() for example. > > > > On that note, alloc_anon() is awfully close to allocate_bytes() below, > > perhaps we should consolidate them. The only difference I see is that > > alloc_anon() does not check for the allocation failure, but a lot of > > functions in cgroup_helpers.c don't, so it seems intentional for > > simplification. > > Hmm I didn't know about this function. I think it was Domenico who > added allocate_bytes() for the initial zswap tests, and I've just been > piggybacking on it ever since: > https://github.com/torvalds/linux/commit/d9cfaf405b8ffe2c716b1ce4c82e0a19d50951da > > I can send a separate patch to clean this up later :) Doesn't seem that bad. SGTM. [..] > > > > > + if (cg_write(test_group, "memory.zswap.max", "0")) > > > + goto out; > > > + > > > + /* Allocate and read more than memory.max to trigger swapin */ > > > + if (cg_run(test_group, allocate_bytes_and_read, (void *)MB(32))) > > > + goto out; > > > + > > > + /* Verify that no zswap happened */ > > > > If we want to be really meticulous, we can verify that we did swap out, > > but not to zswap. IOW, we can check memory.swap.current or something. > > Hmm would memory.swap.current go back to 0 once the memory-in-swap is > freed? It doesn't seem like we have any counters at the cgroup level > for swapout/swapin events. Maybe such counters were not useful enough > to justify the extra overhead of maintaining them? :) > > Anyway, I think checking zswpout should probably be enough here. > That's the spirit of the test anyway - make absolutely sure that no > zswap-out happened. The test is making sure that even though we used real swap, we did not use zswap. In other words, we may see a false positive if something goes wrong and we don't swap anything at all. I know I am probably being paranoid here :) How about we check memory.swap.peak? [..] > > > + test_group = cg_name(root, "zswapin_test"); > > > + if (!test_group) > > > + goto out; > > > + if (cg_create(test_group)) > > > + goto out; > > > + if (cg_write(test_group, "memory.max", "8M")) > > > + goto out; > > > + if (cg_write(test_group, "memory.zswap.max", "max")) > > > + goto out; > > > + > > > + /* Allocate and read more than memory.max to trigger (z)swap in */ > > > + if (cg_run(test_group, allocate_bytes_and_read, (void *)MB(32))) > > > + goto out; > > > > We should probably check for a positive zswapin here, no? > > Oh right. I'll just do a quick check here: > > zswpin = cg_read_key_long(test_group, "memory.stat", "zswpin "); > if (zswpin < 0) { > ksft_print_msg("Failed to get zswpin\n"); > goto out; > } > > if (zswpin == 0) { > ksft_print_msg("zswpin should not be 0\n"); > goto out; > } SGTM. Thanks!