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 21A80C4167B for ; Fri, 8 Dec 2023 00:43:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A84806B0088; Thu, 7 Dec 2023 19:43:37 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A35496B0089; Thu, 7 Dec 2023 19:43:37 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 924106B008A; Thu, 7 Dec 2023 19:43:37 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 8299F6B0088 for ; Thu, 7 Dec 2023 19:43:37 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 5D3B01C0979 for ; Fri, 8 Dec 2023 00:43:37 +0000 (UTC) X-FDA: 81541802874.06.6D84CC7 Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf08.hostedemail.com (Postfix) with ESMTP id D6492160014 for ; Fri, 8 Dec 2023 00:43:34 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=oARRA2vC; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf08.hostedemail.com: domain of chrisl@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=chrisl@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1701996215; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=FWYFuM4aF1DscIfJp1qCXBW0v49EJ4SCp/Ip43Zbk+I=; b=xcsfyzDe9j778wxmnWxT5aR0PakQ4DLO0B+e87QUcPiVC/B6VEQkVP4+14sGV9t5KDdGJn 7i3Sw+pN5M/HbX+Pw61e9jfCAVzHHIXxX/0xMCweCY5fEqYNO/cGs6YrejO8WOc3hBEBU/ 60s8weEHf6BRc0v+85MbLqz6IeezuPw= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=oARRA2vC; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf08.hostedemail.com: domain of chrisl@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=chrisl@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701996215; a=rsa-sha256; cv=none; b=N7gFyLqnr6WxJbp4UcN0ErqeFe50xmMpSTpexoSAgkuFdFQeNv+6pd33Ltnfsuv/2GhdEH wvpISZUghF+A1ayVyUd0EZ6w2U2dtStksPtKv5U4Uxt98ExOWsq/33jgTt4UjtXdfSy/KQ B3vWjFEeFlv6sI3njR9WFs9mso4/lRc= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 747D5CE25DE for ; Fri, 8 Dec 2023 00:43:31 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B1484C433CA for ; Fri, 8 Dec 2023 00:43:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1701996210; bh=HYlD+5N1fSdWbXan4+yka11Es1jGO6Ei+XatWP7GuHM=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=oARRA2vCGIszR1H8XkHNX1QA0rlV1IEbVB6F79fTLj/4HheOIsWWoVhOZbG7il1A+ rrcLQNpoT3g+/xPbDLGRatT50pm6Ncq8frjHY/o9L2CqViHrvmBjCZer0EdPeA/2iy xdIVULFff9kTTbPFUa2AofVidv4gxFjGcqZWcOX408h+Lzl7d45VNrvBJbMjmFGKXJ yeQaTkma3gKGDdiVcYX2IZNphOc3kRy37waOcvG14FuNTEikSm1Vakh0EbFW3wkKc5 DA0uTVuhCrwRHc4KOkaX589U6CO4Rtp38sNhVdVmGlGBjOvD4PWp2nbWfDCrbecpUr RYpxFlw4rTOQg== Received: by mail-pj1-f54.google.com with SMTP id 98e67ed59e1d1-2888c80994bso1282050a91.0 for ; Thu, 07 Dec 2023 16:43:30 -0800 (PST) X-Gm-Message-State: AOJu0YzMJRJXeYUy3ifccxzU40ozQnrsGJKtDvzuNqbra85H8GFM8TjD UbbKh1TW1midlxvjfI//AGEmj31QXxhpWe3bUQRqCA== X-Google-Smtp-Source: AGHT+IHWWrHsd+E2VgvhwmM/YHfzOb+CQtltYVqJZbBnV6iUx7E1V5q7nkyH26EHjK21y5ATzw4HyaLZe2pKlGNEZ10= X-Received: by 2002:a17:90a:7c46:b0:286:6cc1:278 with SMTP id e6-20020a17090a7c4600b002866cc10278mr3164336pjl.67.1701996210098; Thu, 07 Dec 2023 16:43:30 -0800 (PST) MIME-Version: 1.0 References: <20231130194023.4102148-1-nphamcs@gmail.com> <20231130194023.4102148-6-nphamcs@gmail.com> In-Reply-To: <20231130194023.4102148-6-nphamcs@gmail.com> From: Chris Li Date: Thu, 7 Dec 2023 16:43:18 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v8 5/6] selftests: cgroup: update per-memcg zswap writeback selftest To: Nhat Pham Cc: akpm@linux-foundation.org, hannes@cmpxchg.org, cerasuolodomenico@gmail.com, yosryahmed@google.com, sjenning@redhat.com, ddstreet@ieee.org, vitaly.wool@konsulko.com, mhocko@kernel.org, roman.gushchin@linux.dev, shakeelb@google.com, muchun.song@linux.dev, linux-mm@kvack.org, kernel-team@meta.com, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, shuah@kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Stat-Signature: 9fjo4t6ai7jr5gdhauyscrwktru1fzdd X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: D6492160014 X-HE-Tag: 1701996214-125212 X-HE-Meta: U2FsdGVkX18T5VIvFdzibRSnPFuo5NGt5K0th7EbcaXfub43XPWnb0cx4//iHLk1ruZ9821ASdPsEloPWeeBM27rwQpOxpw5dAu5QXj2y7ckuIqBIJ7yqFjaNX1dBPp88UdMm1A6tzH6h4v0IhCRLLUBpHEUrshGsJ6HQh9CM6KE0xyvW0vopx0if//zhgXeBOyQrdnXd6vs49sCylllWcTP0ogRwX5dENemf5fU1cm3v8cA784rIAzpfRXNW/TMgsduXexVs5yF3L0Mto1gYKPQtqnTyIgXqjqv4n0eKeva0PzhJxR02/yIldtO6gOSZdThXc83e5iMwkNG5IvjYSyvxQBGBkY77zMOUzCXED63VRitMfnsElTY+PzS8Z41bs0Ekqd/PRgzSv1O+GiYIjf8k0NR0JTyrJJyEkUmoWk+uWNgBEBUQZzszcbe+2qp6bk7f6y7e4ZjTJx4jUhJ3H6pydIgLie0RkDRtJkQT2AO3izpisDQGCJI9uqODo2FFK2NQYeSYhoqdirTRq1ruUX/PI/QMn60AhhgSMxuYk58zvJmDGWBHVLgmWw6hJzOIw1KEM2aE3T1EHrkddqsUHGhw6/9scbaDRoyIjnEXUj84CpXkxdGlWsNK/akt2Xqzyv22Ao/1FUgYm/q3nKicIlovSjFCqa4ts4dQblmhIVOiBja7/FR0JpA9oVBM8OSS1InAn8gpFQZgFKBPfukmZJB55avA7rLks9nXM2z9+GPNWeLh2F8/6bNXwdOaXXYVN1yKH/MceA29yUsjAKRk/kFWleA7i3nmPqw2wJZ4mfDK3TEC7fcGMFYZwdcMQ0z4h7UAI0OG2ZlOPCrdwIn5Pbb713nDIgZEcFpgibx1xQ+U6qUOaE+30SDFs/j7wdJi0TKjhU7RLbkj0jH6Um8QNugaDWZTl/x0HhAAF+lcn6Z3UuBXTtWa8w1aA/eHl5d5xiy5CLGwraABS2+8UD QGIQv3gh OPJtojsKgUW+hBoiVGYG4aHSfkujo2HtQMy+oIGOhxyFndga3NZpQunL26Yu4AQ0YfPKogqgCZy4Rb23ftVC5TL4EC72ifHItRQoOs9cjqfsxSXGyQg31fHda+vu2mJ4rkWmr+MK1fxDc7bItR9xGoWGbN53aLB5tfvOBL+AIT9U+DBLUK/T5fTcc9g7wfA7sofcKthLbOKtTfzIVwJHuGfTQ3FPqbuNFHL/YLxJeMUEC69ppIP3/UszKtOppT0QwNfPMI2GxV2MxbgTj0hwXa09KGPtz3U5iGwhVWZJopnLZKGE= X-Bogosity: Ham, tests=bogofilter, spamicity=0.014927, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Hi Nhat, Thanks for the self test. Acked-by: Chris Li (Google) Chris On Thu, Nov 30, 2023 at 11:40=E2=80=AFAM Nhat Pham wrot= e: > > From: Domenico Cerasuolo > > The memcg-zswap self test is updated to adjust to the behavior change > implemented by commit 87730b165089 ("zswap: make shrinking memcg-aware"), > where zswap performs writeback for specific memcg. > > Signed-off-by: Domenico Cerasuolo > Signed-off-by: Nhat Pham > --- > tools/testing/selftests/cgroup/test_zswap.c | 74 ++++++++++++++------- > 1 file changed, 50 insertions(+), 24 deletions(-) > > diff --git a/tools/testing/selftests/cgroup/test_zswap.c b/tools/testing/= selftests/cgroup/test_zswap.c > index c99d2adaca3f..47fdaa146443 100644 > --- a/tools/testing/selftests/cgroup/test_zswap.c > +++ b/tools/testing/selftests/cgroup/test_zswap.c > @@ -50,9 +50,9 @@ static int get_zswap_stored_pages(size_t *value) > return read_int("/sys/kernel/debug/zswap/stored_pages", value); > } > > -static int get_zswap_written_back_pages(size_t *value) > +static int get_cg_wb_count(const char *cg) > { > - return read_int("/sys/kernel/debug/zswap/written_back_pages", val= ue); > + return cg_read_key_long(cg, "memory.stat", "zswp_wb"); > } > > static long get_zswpout(const char *cgroup) > @@ -73,6 +73,24 @@ static int allocate_bytes(const char *cgroup, void *ar= g) > return 0; > } > > +static char *setup_test_group_1M(const char *root, const char *name) > +{ > + char *group_name =3D cg_name(root, name); > + > + if (!group_name) > + return NULL; > + if (cg_create(group_name)) > + goto fail; > + if (cg_write(group_name, "memory.max", "1M")) { > + cg_destroy(group_name); > + goto fail; > + } > + return group_name; > +fail: > + free(group_name); > + return NULL; > +} > + > /* > * Sanity test to check that pages are written into zswap. > */ > @@ -117,43 +135,51 @@ static int test_zswap_usage(const char *root) > > /* > * When trying to store a memcg page in zswap, if the memcg hits its mem= ory > - * limit in zswap, writeback should not be triggered. > - * > - * This was fixed with commit 0bdf0efa180a("zswap: do not shrink if cgro= up may > - * not zswap"). Needs to be revised when a per memcg writeback mechanism= is > - * implemented. > + * limit in zswap, writeback should affect only the zswapped pages of th= at > + * memcg. > */ > static int test_no_invasive_cgroup_shrink(const char *root) > { > - size_t written_back_before, written_back_after; > int ret =3D KSFT_FAIL; > - char *test_group; > + size_t control_allocation_size =3D MB(10); > + char *control_allocation, *wb_group =3D NULL, *control_group =3D = NULL; > > /* Set up */ > - test_group =3D cg_name(root, "no_shrink_test"); > - if (!test_group) > - goto out; > - if (cg_create(test_group)) > + wb_group =3D setup_test_group_1M(root, "per_memcg_wb_test1"); > + if (!wb_group) > + return KSFT_FAIL; > + if (cg_write(wb_group, "memory.zswap.max", "10K")) > goto out; > - if (cg_write(test_group, "memory.max", "1M")) > + control_group =3D setup_test_group_1M(root, "per_memcg_wb_test2")= ; > + if (!control_group) > goto out; > - if (cg_write(test_group, "memory.zswap.max", "10K")) > + > + /* Push some test_group2 memory into zswap */ > + if (cg_enter_current(control_group)) > goto out; > - if (get_zswap_written_back_pages(&written_back_before)) > + control_allocation =3D malloc(control_allocation_size); > + for (int i =3D 0; i < control_allocation_size; i +=3D 4095) > + control_allocation[i] =3D 'a'; > + if (cg_read_key_long(control_group, "memory.stat", "zswapped") < = 1) > goto out; > > - /* Allocate 10x memory.max to push memory into zswap */ > - if (cg_run(test_group, allocate_bytes, (void *)MB(10))) > + /* Allocate 10x memory.max to push wb_group memory into zswap and= trigger wb */ > + if (cg_run(wb_group, allocate_bytes, (void *)MB(10))) > goto out; > > - /* Verify that no writeback happened because of the memcg allocat= ion */ > - if (get_zswap_written_back_pages(&written_back_after)) > - goto out; > - if (written_back_after =3D=3D written_back_before) > + /* Verify that only zswapped memory from gwb_group has been writt= en back */ > + if (get_cg_wb_count(wb_group) > 0 && get_cg_wb_count(control_grou= p) =3D=3D 0) > ret =3D KSFT_PASS; > out: > - cg_destroy(test_group); > - free(test_group); > + cg_enter_current(root); > + if (control_group) { > + cg_destroy(control_group); > + free(control_group); > + } > + cg_destroy(wb_group); > + free(wb_group); > + if (control_allocation) > + free(control_allocation); > return ret; > } > > -- > 2.34.1 >