From patchwork Mon Jul 24 08:25:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ryan Roberts X-Patchwork-Id: 13323549 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 E706CC001B0 for ; Mon, 24 Jul 2023 08:25:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 620BF6B0080; Mon, 24 Jul 2023 04:25:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5D1B76B0081; Mon, 24 Jul 2023 04:25:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 470E66B0082; Mon, 24 Jul 2023 04:25:49 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 3909F6B0080 for ; Mon, 24 Jul 2023 04:25:49 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 0EBFD1609CA for ; Mon, 24 Jul 2023 08:25:49 +0000 (UTC) X-FDA: 81045822018.07.62E4473 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf12.hostedemail.com (Postfix) with ESMTP id 562D040020 for ; Mon, 24 Jul 2023 08:25:47 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf12.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690187147; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=c+gqtMtT71E+QHqOq+JqAAJ/D08SVzIjdaWzP+X/2vY=; b=HjEfie/DpB6do6GX0l+B7Xr4+5iFYx5mH7UkQJGpzw6nd7FOBOd/Tqsb95G86GTaP8kXKM AFGSY+ZtfRYhrjUwdYqFc6ikGQd5GzE7vK7xhAljTJcFCHVipcm0aZO14gFvjjUcKCz03W 27xSIfjlsZR9epk23R4XBhlndTxbgBs= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf12.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690187147; a=rsa-sha256; cv=none; b=3nf/587KdCvf7Pi0TRDplUw+OqIbxAS/19ZmY//aPPaH8MQPe/P7uq32TxGR/rI+hLYDxN 2HqbcC7hQCKOwVUptJe0KGmHA3xPsgYKy68ny91uBY8foHbQrLfhV+DRKWPskMAS+N5eVe Rbkl7WWs9Xky253W/xKKdKKLg4Adig4= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 97F62DE0; Mon, 24 Jul 2023 01:26:29 -0700 (PDT) Received: from e125769.cambridge.arm.com (e125769.cambridge.arm.com [10.1.196.26]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B8B9E3F67D; Mon, 24 Jul 2023 01:25:44 -0700 (PDT) From: Ryan Roberts To: "Andrew Morton" , "Shuah Khan" , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , "David Hildenbrand" , "Mark Brown" , "John Hubbard" , "Florent Revest" , "Peter Xu" Cc: Ryan Roberts , linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org Subject: [PATCH v3 7/8] selftests/mm: Optionally pass duration to transhuge-stress Date: Mon, 24 Jul 2023 09:25:21 +0100 Message-Id: <20230724082522.1202616-8-ryan.roberts@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230724082522.1202616-1-ryan.roberts@arm.com> References: <20230724082522.1202616-1-ryan.roberts@arm.com> MIME-Version: 1.0 X-Rspam-User: X-Stat-Signature: tchmnuwzcyc4yoe9jbtdo71w5ygiwha8 X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 562D040020 X-HE-Tag: 1690187147-140434 X-HE-Meta: U2FsdGVkX18yK9MWl+IyQ9OKhpeZRqjtkDWS+l33lmyHAk6lXEZxrS/2T5aFfwNAP8LFNPFXUUplH1zlQ+6How761B8kPptn6jAbvflpgBiKdPeaVaxadSW+34h2LXkhSHN4Z8hfvHsWx13vUhlY3nMQx+WFnQP8PmOHT6nE1A2iBdcFDjkVVyENsEfQKts3xzYgQ/5mKYQSPzZsKlkUP6vSVy3862xi8v0e/RWB8GULGThFRC2+eUnn7DvXC+DhpC19cC5Dsd3qxUhJ6E+FDlvy3JoPW3N6RZKk4h+8o+9kVqQFBzIx22ZmLxQ0+PyvjQzFWO2PuV2+kX3RxqVfDW6UMon78NREDqkGiV3Apr2f7PtmfATkhqXSUW0RD/3JQDoZh0dY57TL8xaZC4dZFa1EUaz6EhcogS/Et+8+MP1mrSwdULGH2OCnDnY/iN5W4dPXcPXbs+sAjzLQrmeplspt8rDAsJZy6LjAbe2vZ/RjLE5IqNj6PT7FfbCzTwEgS22iJcEeU/BpCPCyQhhE2kGUi1n+4kw4PUl112JRCLEOpWllWvFZzQ3vY6p/Oho8cNOjo1P094zSqqYhvZUztW/a6IT00pdbnTDEUy+HFIdRtOdn3G/FLtsgsCw51MFnK59dZ9gr4R1Az5ad1bqMPwbW22Jjc7COZ06JkINWHyqSJud4VvR6CGtJ89D7V/mNw0OZ/bfGQj/lfWGPCGf8I9E4bA/BJcEfMQmKQsd9ml2DiJBtaMl6Z8Q3smzYkzhlMFTtosZcuFaXAmleAE9DO0iOhdEFCd2ZDe3igXYQZmNZ+czbrgNOVGMis4OF8TGzLJeeIgwV3XXs05UwCzqx966Lfe9L8oswNY5rlCeCDAhv/Oa+Ix/Afa6eJ0ynpDi1BLAwdoAWhVS00V6YrgN0GNcyHwxfHZ3eSx1571EHgqhw4Ad5mFdLzAjTDp14xHGwKn/mYKoUmQZuwNyDeU2 1I7M73tX xvsIFSx5yGu7bRUzo+m85FzK/+aQJpt6siR2UCiTpCq6QkIwpahH5nsLjWS7eK4hQPvwCBJNVh3CapsoYFgmGR3+0Rzz6ftHrAP/fwCRsN+yEO+wmRAOcWNld9ICuhHH1QFmf7gnN8ccKgjaCexuInBBHxhqHO8W9zjZA9V96435YBGRFpTLbDb4vaA== 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: Until now, transhuge-stress runs until its explicitly killed, so when invoked by run_kselftest.sh, it would run until the test timeout, then it would be killed and the test would be marked as failed. Add a new, optional command line parameter that allows the user to specify the duration in seconds that the program should run. The program exits after this duration with a success (0) exit code. If the argument is omitted the old behacvior remains. On it's own, this doesn't quite solve our problem because run_kselftest.sh does not allow passing parameters to the program under test. But we will shortly move this to run_vmtests.sh, which does allow parameter passing. Acked-by: David Hildenbrand Signed-off-by: Ryan Roberts --- tools/testing/selftests/mm/transhuge-stress.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/mm/transhuge-stress.c b/tools/testing/selftests/mm/transhuge-stress.c index ba9d37ad3a89..c61fb9350b8c 100644 --- a/tools/testing/selftests/mm/transhuge-stress.c +++ b/tools/testing/selftests/mm/transhuge-stress.c @@ -25,13 +25,14 @@ int main(int argc, char **argv) { size_t ram, len; void *ptr, *p; - struct timespec a, b; + struct timespec start, a, b; int i = 0; char *name = NULL; double s; uint8_t *map; size_t map_len; int pagemap_fd; + int duration = 0; ram = sysconf(_SC_PHYS_PAGES); if (ram > SIZE_MAX / psize() / 4) @@ -42,9 +43,11 @@ int main(int argc, char **argv) while (++i < argc) { if (!strcmp(argv[i], "-h")) - errx(1, "usage: %s [size in MiB]", argv[0]); + errx(1, "usage: %s [-f ] [-d ] [size in MiB]", argv[0]); else if (!strcmp(argv[i], "-f")) name = argv[++i]; + else if (!strcmp(argv[i], "-d")) + duration = atoi(argv[++i]); else len = atoll(argv[i]) << 20; } @@ -78,6 +81,8 @@ int main(int argc, char **argv) if (!map) errx(2, "map malloc"); + clock_gettime(CLOCK_MONOTONIC, &start); + while (1) { int nr_succeed = 0, nr_failed = 0, nr_pages = 0; @@ -118,5 +123,8 @@ int main(int argc, char **argv) "%4d succeed, %4d failed, %4d different pages", s, s * 1000 / (len >> HPAGE_SHIFT), len / s / (1 << 20), nr_succeed, nr_failed, nr_pages); + + if (duration > 0 && b.tv_sec - start.tv_sec >= duration) + return 0; } }