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 5DB61C27C4F for ; Wed, 26 Jun 2024 03:58:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 83AB56B0082; Tue, 25 Jun 2024 23:57:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7E9C56B0083; Tue, 25 Jun 2024 23:57:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6B1FE6B0085; Tue, 25 Jun 2024 23:57:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 4DA556B0082 for ; Tue, 25 Jun 2024 23:57:59 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id D5B0D80735 for ; Wed, 26 Jun 2024 03:57:58 +0000 (UTC) X-FDA: 82271681436.08.7633B8B Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) by imf21.hostedemail.com (Postfix) with ESMTP id 034EF1C0010 for ; Wed, 26 Jun 2024 03:57:56 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=LzgJRRgt; spf=pass (imf21.hostedemail.com: domain of jiaqiyan@google.com designates 209.85.221.46 as permitted sender) smtp.mailfrom=jiaqiyan@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1719374265; 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=msH6Ni8XjmIv87Xn+7LRokn7k7HhrU+c2RpRB9CU8Zo=; b=36cp0KmpR5UbbcV/Y08bLUR7++wKXoFftuP1rS4ZFWkLDMyaQ4JXYKXIcFiRKbcPeAUkSE MyxXZW7Nz0X3zVIlXcUSoRkHalHW++h9ionDsIOeSaQdNgwm3gkdFxdcqSu4dwQOUmXg/j rSvFs7ZKyfD4D6y3V17zWnispyei/Kg= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=LzgJRRgt; spf=pass (imf21.hostedemail.com: domain of jiaqiyan@google.com designates 209.85.221.46 as permitted sender) smtp.mailfrom=jiaqiyan@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1719374265; a=rsa-sha256; cv=none; b=OZkUN3l1febzTC9ouWnMm9IEnnY4YhRn/2wwN/H+yytonlfNtYswAkrsvqwPm99TJ1r0D5 EPPektDs59JVZ9BJwFcHzh2UAOoXO8Lan0UF+ht5FYClyL4EO0p5aEpeWW2FGn/TrHa+9i Znr/XOa+olLfFwcgtgVS3/mJWhKYnzY= Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-354b722fe81so4144626f8f.3 for ; Tue, 25 Jun 2024 20:57:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1719374275; x=1719979075; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=msH6Ni8XjmIv87Xn+7LRokn7k7HhrU+c2RpRB9CU8Zo=; b=LzgJRRgtoY22sn2YbXBUgZnWdPCBuM5MlD7geu7G00gzqCD+sMXf/o374yHJv5nBT3 dFVzesdMfWc5jgKYBrkPCASoY+N1DGcfWU7C7mJ3QB1uzHcWQ0bYDDBsk5ZRkYFPRSz8 JaQJRsMZDt1waYgdj6gK6hiIz6VB1pLub771q4LsoyMryLlpvvEtk0sdImak27C3uoL/ 7O6nIdVvh9++HZ/CPVxYU9W8CCeuZdrnDl94Nbz0AbZTdRpgjeBnnCjKg1U5KWEopVox lg0fj4/2pW+gojakIXUY1yAcgkHWVVmTnzv0csjna342QGWSwLgNRftLDQ0/7qcaXrsC 7HXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719374275; x=1719979075; h=content-transfer-encoding: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=msH6Ni8XjmIv87Xn+7LRokn7k7HhrU+c2RpRB9CU8Zo=; b=VPCQeENls86X7PTy1EecGt73QMR+JlEovmfxI1PntbDJDnH1/w4/bKD82KaDY0NFfM ifwwQLJl6gq2zOzDMAq4L9UBlsnM46aFx0jGIVwEjXOlHw1k0gjbGOF97Ifn6SkSjraF jGbj5tsTKw3yGlC166Q2tglG40wIsDovnSXnCtDNKRq4dffuyhPp5AKGxZg5zIGOPGSV 8TCYPJ/sZX8Ff6hx2nG19FesjepD2IGB0wQLedAgDm2f9OgNtoPuz0aUKrxEPgK6BbOB /QJBzO/64IApxg3MZ0bJ+NAkHnASWxHtwgUsgEwBzgmX8OWgtL43sSzYD6TIfWU66BIu Q4HQ== X-Forwarded-Encrypted: i=1; AJvYcCVhcBCqo4HYZXzOObB3tUWmELY6rTOQGnKXJjEjOdtu4o7thhscOm1ElDVipznzc1eke4YQWtYOcoaNTDwnGGABjZU= X-Gm-Message-State: AOJu0YxG+QSszA4GxslIkxikZz90xbgphzwhLt5gXYUkY0ZXMUZDCWF3 5ZdbrTtOCtvlFc0ZrR8yFtP08N3a+QMfCYyJvpUGWBth3jb79OQtRouJ25tAcDOOUG+9kqGi/KO 2fhpoCxnstOK+VJ/PMtNFvSzKYnVHmzpRJs98 X-Google-Smtp-Source: AGHT+IGuXXtl+E+WLOr/DRy3HX5YGqfni5q3C91JuUMbkVHAWgZ+NvdKFU4lQlqlvsl5Uu1kziQ3Kjz5SQYtHYDMhto= X-Received: by 2002:adf:f887:0:b0:361:dde2:87a0 with SMTP id ffacd0b85a97d-366e4f0cd03mr6529981f8f.65.1719374275190; Tue, 25 Jun 2024 20:57:55 -0700 (PDT) MIME-Version: 1.0 References: <20240624163348.1751454-1-jiaqiyan@google.com> <20240624163348.1751454-4-jiaqiyan@google.com> <609062d2-977c-4229-8c66-d15bb8e47eb8@huawei.com> <6afa8830-1a58-5e57-7d73-9601768bcda0@huawei.com> In-Reply-To: <6afa8830-1a58-5e57-7d73-9601768bcda0@huawei.com> From: Jiaqi Yan Date: Tue, 25 Jun 2024 20:57:43 -0700 Message-ID: Subject: Re: [PATCH v5 3/4] selftest/mm: test enable_soft_offline behaviors To: Miaohe Lin Cc: muchun.song@linux.dev, akpm@linux-foundation.org, shuah@kernel.org, corbet@lwn.net, osalvador@suse.de, rientjes@google.com, duenwen@google.com, fvdl@google.com, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-doc@vger.kernel.org, nao.horiguchi@gmail.com, jane.chu@oracle.com, ioworker0@gmail.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: qzngra7m6smzcwn8z5rcxyz4sjcs8ot9 X-Rspam-User: X-Rspamd-Queue-Id: 034EF1C0010 X-Rspamd-Server: rspam02 X-HE-Tag: 1719374276-557451 X-HE-Meta: U2FsdGVkX1/9KJ7AhC12gntx4iRhLBL/JuKjwiG6RAAEKKhiehZaFZBUqVwLoKizRovr8plt7590av/UwBQgk62Qh5ghLikIbJd2dWUDp+w9cq7Iyg9SrLJgh1RhZ51aZhUmBEvZm/cXnC7B7bQXUBoQf4O7BGamN5GH5ouSdlG/6P/OPj5x90s5RodgLQqJ7cdNCY6E0tO3PHQu9x/MoTgA4V5GV5RG3gW0FwxP7Z8C8byoWwN2EzaU4ozycLXtCiw0qD4MrDkt1QduYDbHLhHa3m2PQbGv+C4TMve0hm1OArVQeWvK/J+SGadf9MNzKXd0bxOumJ60Fswd/SqiVzzkGFYv50LpnxGZ9fNilBtWZzrtIa7n8911vYMNF0UMAek9fUt6bGyIm5y4PaorHZsa8UtrcEQ09p2UvWzoTBofM/19dzA9CtgH1XIfn5euytsPH+8IhERNaf5U0fcMJQ+2w3rL40RBiW6IpiPnOlIsfu3+NPwzK6Sai7ydoqs4VLaSn/K/Iih71skBKgLhO2i2dI42N+XlIg1/gglcXXL9fYOC5mf1R0B8x7eXNBIVgr75qmbRnWVdFVjlk/DyNcCJnXulqs+iGQbNP4qCPC1Pg8QjKlP7JDuWWTaADBdzogNpzyPQWJsP/1T0N5Mq9sNwIHS62b8p77UbnaM58/I72Ma+YqkbT8TByiwrGYI8N4bP4+tAPz4lE3HlRf4iKO72G9AKuWdAb5nWP2Du3rEjQN7LgK5UxPvh/gd2HBtPxjKW7RKIdNq5azpjdRHyvNUccYe+1/bCgtw585rY0asYXuICMb+1zOZUkpKrQlFLzXpVYn9xGpZPf8JY50ed5mcri0q3KfFFICLQlP/kOPBmtibhKSTGrqt2Qz7PuS/qcgtYyvvVGaa2yNORea5v3yGIEAU4F8+LOwvB66jzhv23QDwdc944hY/Nw+cabTWzgE+R2PZhxSgv1Iy46Jz FRXZFiQL xQeUkCbIF/82mPbr1vYePDC3UcTiY12xsuOGW+CHGrKAqLXVVhbvd9A5Bj+UKiLxwlBWxP7LiOshI5blOypJLpcA5mu/oCh0QQQ1p7tfMtalJ4xqhIgrqJcxLbyJ7KjkFqSaalrbkS6y0JamT/mxRmLxsF30Q4ZikXGXT+w9Sonez1cLfjg+cPZGVgQVq2JoGGGMbE2uWeEDen7nvv+w4YJbGsDUkPcoDnYnzSK4AJ3a2SNDEhJNQ5JBW4Mf4OKNvShry115ShOF3PQvaV8boE8hj7Vjgiujqdzdfnjcr0jwKTiiaDP1v5ewE5w== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000010, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Tue, Jun 25, 2024 at 6:54=E2=80=AFPM Miaohe Lin w= rote: > > On 2024/6/26 7:57, Jiaqi Yan wrote: > > On Tue, Jun 25, 2024 at 12:05=E2=80=AFAM Miaohe Lin wrote: > >> > >> On 2024/6/25 0:33, Jiaqi Yan wrote: > >>> Add regression and new tests when hugepage has correctable memory > >> ... > >>> diff --git a/tools/testing/selftests/mm/hugetlb-soft-offline.c b/tool= s/testing/selftests/mm/hugetlb-soft-offline.c > >>> new file mode 100644 > >>> index 000000000000..16fe52f972e2 > >>> --- /dev/null > >>> +++ b/tools/testing/selftests/mm/hugetlb-soft-offline.c > >>> @@ -0,0 +1,227 @@ > >>> +// SPDX-License-Identifier: GPL-2.0 > >>> +/* > >>> + * Test soft offline behavior for HugeTLB pages: > >>> + * - if enable_soft_offline =3D 0, hugepages should stay intact and = soft > >>> + * offlining failed with EINVAL. > >> > >> s/failed with EINVAL/failed with EOPNOTSUPP/g > > > > To be fixed in v6. > > > >> > >>> + * - if enable_soft_offline =3D 1, a hugepage should be dissolved an= d > >>> + * nr_hugepages/free_hugepages should be reduced by 1. > >>> + * > >>> + * Before running, make sure more than 2 hugepages of default_hugepa= gesz > >>> + * are allocated. For example, if /proc/meminfo/Hugepagesize is 2048= kB: > >>> + * echo 8 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages > >>> + */ > >>> + > >> ... > >>> +static void test_soft_offline_common(int enable_soft_offline) > >>> +{ > >>> + int fd; > >>> + int expect_errno =3D enable_soft_offline ? 0 : EOPNOTSUPP; > >>> + struct statfs file_stat; > >>> + unsigned long hugepagesize_kb =3D 0; > >>> + unsigned long nr_hugepages_before =3D 0; > >>> + unsigned long nr_hugepages_after =3D 0; > >>> + int ret; > >>> + > >>> + ksft_print_msg("Test soft-offline when enabled_soft_offline=3D%= d\n", > >>> + enable_soft_offline); > >>> + > >>> + fd =3D create_hugetlbfs_file(&file_stat); > >>> + if (fd < 0) { > >>> + ksft_exit_fail_msg("Failed to create hugetlbfs file\n")= ; > >>> + return; > >>> + } > >>> + > >>> + hugepagesize_kb =3D file_stat.f_bsize / 1024; > >>> + ksft_print_msg("Hugepagesize is %ldkB\n", hugepagesize_kb); > >>> + > >>> + if (set_enable_soft_offline(enable_soft_offline)) { > >>> + ksft_exit_fail_msg("Failed to set enable_soft_offline\n= "); > >> > >> Call destroy_hugetlbfs_file() in error path? > > > > As the counterpart of destroy_hugetlbfs_file, I think the test only > > needs to close(fd). Will add it in v6. > > > >> > >>> + return; > >>> + } > >>> + > >>> + if (read_nr_hugepages(hugepagesize_kb, &nr_hugepages_before) != =3D 0) { > >>> + ksft_exit_fail_msg("Failed to read nr_hugepages\n"); > >>> + return; > >>> + } > >>> + > >>> + ksft_print_msg("Before MADV_SOFT_OFFLINE nr_hugepages=3D%ld\n", > >>> + nr_hugepages_before); > >>> + > >>> + ret =3D do_soft_offline(fd, 2 * file_stat.f_bsize, expect_errno= ); > >>> + > >>> + if (read_nr_hugepages(hugepagesize_kb, &nr_hugepages_after) != =3D 0) { > >>> + ksft_exit_fail_msg("Failed to read nr_hugepages\n"); > >>> + return; > >>> + } > >>> + > >>> + ksft_print_msg("After MADV_SOFT_OFFLINE nr_hugepages=3D%ld\n", > >>> + nr_hugepages_after); > >>> + > >>> + if (enable_soft_offline) { > >>> + if (nr_hugepages_before !=3D nr_hugepages_after + 1) { > >>> + ksft_test_result_fail("MADV_SOFT_OFFLINE should= reduced 1 hugepage\n"); > >>> + return; > >>> + } > >>> + } else { > >>> + if (nr_hugepages_before !=3D nr_hugepages_after) { > >>> + ksft_test_result_fail("MADV_SOFT_OFFLINE reduce= d %lu hugepages\n", > >>> + nr_hugepages_before - nr_hugepages_afte= r); > >>> + return; > >>> + } > >>> + } > >>> + > >>> + ksft_test_result(ret =3D=3D 0, > >>> + "Test soft-offline when enabled_soft_offline= =3D%d\n", > >>> + enable_soft_offline); > >> > >> Call destroy_hugetlbfs_file() when test finished ? > > > > Test can just close(fd) once nr_hugepages_after is read. > > I'm sorry but I can't find the code to call close(fd) after nr_hugepages_= after is read. Sorry, I meant in v6 I will add close(fd) after nr_hugepages_after. > IMO create_hugetlbfs_file() would fail to create a new hugetlb file later= if close(fd) > is not called when testing previous enable_soft_offline =3D 1 testcase. B= ecause a hugetlb > file with same name is already there. But I might miss something. Yes, this is an absolutely valid concern, and should be address in v6 by adding close(fd) after nr_hugepages_after. > > Thanks. > . >