From patchwork Tue Jun 25 18:05:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13711788 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 9A999C30658 for ; Tue, 25 Jun 2024 18:05:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CECE76B009B; Tue, 25 Jun 2024 14:05:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C75BF6B009C; Tue, 25 Jun 2024 14:05:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AA0C06B009D; Tue, 25 Jun 2024 14:05:49 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 8E0FF6B009B for ; Tue, 25 Jun 2024 14:05:49 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 11FBA1A04AD for ; Tue, 25 Jun 2024 18:05:49 +0000 (UTC) X-FDA: 82270189218.28.C3C0583 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf08.hostedemail.com (Postfix) with ESMTP id 5C729160028 for ; Tue, 25 Jun 2024 18:05:47 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Sc+31Mqf; spf=pass (imf08.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1719338740; 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:dkim-signature; bh=ZDBxekQlPQwRWv8NbSLt34g4USSPft0WGC4baLFlqZo=; b=OrI1A5FF5Lyp9f7xd1rq7nb6abVxb4uL1qHSwDWo6Kp4sHKm4Hnm6MvlyDfQLHd9GQr29n feLOIew49ZqxQ8TZDydkDO9/MxMFrNBjIamzhz9QJgbXdAPBAuKY9DGW3k6UzKDm8IsYug D1ahCFX9EwhC2ePth8TsDtFZWPaymsE= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Sc+31Mqf; spf=pass (imf08.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1719338740; a=rsa-sha256; cv=none; b=yqBXeb3aEcbCMzQKTM/AaCoX80KBYQW+sIyMgipIjmPpwgGHP0wMHrpRRpatPGI2goVOux 6xv7C7JmZayDMLZgJHco/SHncdlMZltq86tTXr1k+fALWr1mhDVorAWVmdq0nPZvJpJV2X Bhdx/3GCnyi9mzTK/TD3TpMhhk3ipaU= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 8BC0B616B5; Tue, 25 Jun 2024 18:05:46 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DAE19C4AF0A; Tue, 25 Jun 2024 18:05:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1719338746; bh=ywuSH6qCkdeHkBE80ZCaTZoKmSWBRtvzgEieCdzLvOc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Sc+31Mqfm7OWQ/QmyXmPnb6jz1ppHcjAVkVMJ103bsVJhmTZeMfZSEzV0KfD463mE Jfa3Ujynn3hCCArqzfJyoQk0aNGRgAf7QpPtNGn/1JbrBpQXkp/TBfc/VKg5eqi9Bp 4pZn6ivEFleWQ08gkTga3GNnGE8dJIqueR/Xu8PYWmAVmda2ZMZPe23GZE8RBO9AvX 4GRqw/WU6iEV0kYPjq8Z8oMCo2/COA1yLCqidJZjFsKOt63LyFdZvxEGWCyUElhuFm MUzVwaBzNnFJYumVJC+UaZbqqfLgkonFu9qi5myPcSoQ7P2pjo+A3komKxNcWG3waB ixjwGIK9+g4sg== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/8] selftests/damon: implement a program for even-numbered memory regions access Date: Tue, 25 Jun 2024 11:05:33 -0700 Message-Id: <20240625180538.73134-4-sj@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240625180538.73134-1-sj@kernel.org> References: <20240625180538.73134-1-sj@kernel.org> MIME-Version: 1.0 X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: 5C729160028 X-Stat-Signature: cb75i8k3szmqkuygcpx468zjttd4gwmq X-HE-Tag: 1719338747-674149 X-HE-Meta: U2FsdGVkX1+UKnb3TC4GHnTS4Qv1440tMSDTBgKaYUsFV/EciwWIVEn7cdX0F6DlJr8NBxS6UYLEIe8cYjNX3iFD2aQY0scuX5jmKuG0o52UnpDJwqz4l0LLx0ub8Dma9b7BVUFdc5rYsuAXlZRY+Yyf0dsJxNM0mFuTF5kLvEc5S641TLYzb64ww1Gj30VJ7rmM+1OlRmnE1chPWjT2Cm/bUc8W7qArEB+lecniRTiFYtXNcUv8eS6qyeeTEsTkj1YsXyB4H/KQOG7/epc8UL9Imu6Rq80y9eA516yRCqhdEAXBP1k8HVlhMcoL6X+JKRYBgYy3SAQPuWwSeYKQIE1ZwWiBweCCLlgmaS+AMeamaMVlkftO2pjqYzRyoYUwRxmJS+hYObo5lfsW6Y1P+Qzsh+qcbiLmHJVg6U32EOpHjp2KzFtlD+03i0Ckg9gOJR3NUJBwca+s4LigQiVvrwcvLBSiXDCgwVy9jVcbyntZTSsd2UjUQU/UUM5JbfYh/Skc6qY7zA3Lr2yRkv9Iu3sBAV/tFmIVkRrgSlayEPnB0WIJA/3czANC1sZRSh205eGKW9cSlUuz1SGDuP05ORxXV/WRqGiY4VQ/7a6nhpy4iTkk+uSYOCL3gCDzjz0F9npf1KY7Cwp22Trs3rtEHpmqQzPiua17ZFPbsmcNuPx/mGhIH2j9ON2Rx9tn+Apsl5KrXUbP2E3bnfX+lFhIA5jD7gIq7AhcDCOlB7fNwQiCHmCeXjk9h2vY7Nih/fkLzvkxoFzLko+q+2baIToisFlejQ0CeGpfRXgs80/QnV2Y6BtT4nN2jY8APeLg7ZBgD+CT1aJMhWXxyU7u1Ix9P7uYs62IJ4NcyFNkqHGYz0rmLVZh49suInByVq+sh4mIUkyq73YOdnlVU9iLr51VRGSb/UrctjwGzDIfSyEnFqdP+auWPEjCGf74oc2C4HjK5ovI2TqR/jxI2dWSR6U 9iIM4nkg uQraJE32Mz5aQzx7ACkyM+WHrXhJjO2T0A8m/G+f27sK5Z0UM5fSTULDfG5a2KibJ3SzNht6tUX9OMnCehtxLfIzACr5TqgqapGF8vP8BgypAWFbFdOWcdE9E++N38Nl4JMpEvW2sunzaPU0LaCdJFQOajngCQC1Ij53eipD91xNPHnVJWIu0JdztQNcrCPmgCYtyhB8vmxqfLLOj+99Nmy5lPtX3BlGAfuJNsdkcLsGMaz4= 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: List-Subscribe: List-Unsubscribe: To test schemes_tried_regions feature, we need to have a program having specific number of regions that having different access pattern. Existing artificial access pattern generator, 'access_memory', cannot be used for the purpose, since it accesses only one region at a given time. Extending it could be an option, but since the purpose and the implementation are pretty simple, implementing another one from the scratch is better. Implement such another artificial memory access program that alloctes user-defined number/size regions and accesses even-numbered regions. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/Makefile | 2 +- .../selftests/damon/access_memory_even.c | 42 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 tools/testing/selftests/damon/access_memory_even.c diff --git a/tools/testing/selftests/damon/Makefile b/tools/testing/selftests/damon/Makefile index 29a22f50e762..7b972b5cf487 100644 --- a/tools/testing/selftests/damon/Makefile +++ b/tools/testing/selftests/damon/Makefile @@ -4,7 +4,7 @@ TEST_GEN_FILES += huge_count_read_write TEST_GEN_FILES += debugfs_target_ids_read_before_terminate_race TEST_GEN_FILES += debugfs_target_ids_pid_leak -TEST_GEN_FILES += access_memory +TEST_GEN_FILES += access_memory access_memory_even TEST_FILES = _chk_dependency.sh _debugfs_common.sh diff --git a/tools/testing/selftests/damon/access_memory_even.c b/tools/testing/selftests/damon/access_memory_even.c new file mode 100644 index 000000000000..3be121487432 --- /dev/null +++ b/tools/testing/selftests/damon/access_memory_even.c @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Artificial memory access program for testing DAMON. + * + * Receives number of regions and size of each region from user. Allocate the + * regions and repeatedly access even numbered (starting from zero) regions. + */ + +#include +#include +#include +#include + +int main(int argc, char *argv[]) +{ + char **regions; + clock_t start_clock; + int nr_regions; + int sz_region; + int access_time_ms; + int i; + + if (argc != 3) { + printf("Usage: %s \n", argv[0]); + return -1; + } + + nr_regions = atoi(argv[1]); + sz_region = atoi(argv[2]); + + regions = malloc(sizeof(*regions) * nr_regions); + for (i = 0; i < nr_regions; i++) + regions[i] = malloc(sz_region); + + while (1) { + for (i = 0; i < nr_regions; i++) { + if (i % 2 == 0) + memset(regions[i], i, sz_region); + } + } + return 0; +}