From patchwork Tue Oct 25 17:36:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13019603 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 273DAFA373E for ; Tue, 25 Oct 2022 17:37:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8643F8E0003; Tue, 25 Oct 2022 13:36:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 813B48E0001; Tue, 25 Oct 2022 13:36:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6DB9B8E0002; Tue, 25 Oct 2022 13:36:59 -0400 (EDT) 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 5B51C8E0001 for ; Tue, 25 Oct 2022 13:36:59 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 24C96140806 for ; Tue, 25 Oct 2022 17:36:59 +0000 (UTC) X-FDA: 80060177358.20.079496B Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by imf28.hostedemail.com (Postfix) with ESMTP id 88FE3C0038 for ; Tue, 25 Oct 2022 17:36:58 +0000 (UTC) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 133F8B81E55; Tue, 25 Oct 2022 17:36:57 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 59972C433D7; Tue, 25 Oct 2022 17:36:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1666719415; bh=TdXFXcgq2EM24y0mmvXtXkdjHMEmMaCZawqMFxCOKU8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bKpdkSIrpvAqCeR5vix1iWp5kJrdJW19Utrml/Ra41U7LQX2zLCZqhdbJQieGIepi HFNsWZm4WYDd3CYCDDOoe0suLK4DFct0N9bLT4XHzDy8tJnastMR7kQxduDavDmJ0Z iX7W9T4FUObqrP/8Ah67Uo0elgleXvQzhWQjv1y7rKwhSgK3cTmAsUck/bWI4M1L2G mrOSA8PWFFXUkJaPZ+y2a1WyTpJ1cAW5hXFoQ0/AMtHdNYuNax116Muy19KAgRftt5 0dCmyY8FBeMHh95i2iQdvHFC5TAo94VHGcO7aFZOJk9F29zCuEti4Xke78jyL30PxH oNQeEqFD0KNZw== From: SeongJae Park To: Andrew Morton Cc: damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, SeongJae Park Subject: [PATCH 1/4] mm/damon/reclaim: enable and disable synchronously Date: Tue, 25 Oct 2022 17:36:47 +0000 Message-Id: <20221025173650.90624-2-sj@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221025173650.90624-1-sj@kernel.org> References: <20221025173650.90624-1-sj@kernel.org> MIME-Version: 1.0 ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1666719418; a=rsa-sha256; cv=none; b=T31ZXr1PzszxTQAuAVp9inqdmroBICQOdyE5s8T8/pjhYZTcKEcAwRfIrLnTTJwCmZqFO0 DuhDjV3Ht/hQ9/gZFhiHaLpGOx5HlXvA3zuBK0fsTcvfmNJ/PsAvB6Zueg3S9ZrS7tVJwm +64IyVh+TLKNFNdsUU5G0/6AUTMD8Sc= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=bKpdkSIr; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf28.hostedemail.com: domain of sj@kernel.org designates 145.40.68.75 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1666719418; 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=0ChRdX5rstA7UElwcv4YrRM23R4l3kY/dKBFCEVe6Lw=; b=akxvjAkYLkHKiBezVMnkxI+QNsBJhvF9bPvBFI5UCojdtbNE5YzUWWRMzvXYPXJZ7JwPqb 3JrPembFE1b6nXzAlU1WhYpcLR1jYoURyn8S2BXv54ZrpxY8cXY08lfyGbqV6CMavcaQxe Tzi/a3wl6T8wI8y6l9VFx8f2Jf6B5Rc= X-Stat-Signature: k9rf5ekwgfgdix3d1fwmmzjwx4uujdyr X-Rspam-User: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 88FE3C0038 Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=bKpdkSIr; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf28.hostedemail.com: domain of sj@kernel.org designates 145.40.68.75 as permitted sender) smtp.mailfrom=sj@kernel.org X-HE-Tag: 1666719418-458108 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: Writing a value to DAMON_RECLAIM's 'enabled' parameter turns on or off DAMON in an ansychronous way. This means the parameter cannot be used to read the current status of DAMON_RECLAIM. 'kdamond_pid' parameter should be used instead for the purpose. The documentation is easy to be read as it works in a synchronous way, so it is a little bit confusing. It also makes the user space tooling dirty. There's no real reason to have the asynchronous behavior, though. Simply make the parameter works synchronously, rather than updating the document. Signed-off-by: SeongJae Park --- mm/damon/reclaim.c | 53 ++++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 30 deletions(-) diff --git a/mm/damon/reclaim.c b/mm/damon/reclaim.c index e14eb30c01f4..e57604bec06d 100644 --- a/mm/damon/reclaim.c +++ b/mm/damon/reclaim.c @@ -9,7 +9,6 @@ #include #include -#include #include "modules-common.h" @@ -181,38 +180,31 @@ static int damon_reclaim_turn(bool on) return 0; } -static struct delayed_work damon_reclaim_timer; -static void damon_reclaim_timer_fn(struct work_struct *work) -{ - static bool last_enabled; - bool now_enabled; - - now_enabled = enabled; - if (last_enabled != now_enabled) { - if (!damon_reclaim_turn(now_enabled)) - last_enabled = now_enabled; - else - enabled = last_enabled; - } -} -static DECLARE_DELAYED_WORK(damon_reclaim_timer, damon_reclaim_timer_fn); - -static bool damon_reclaim_initialized; - static int damon_reclaim_enabled_store(const char *val, const struct kernel_param *kp) { - int rc = param_set_bool(val, kp); + bool is_enabled = enabled; + bool enable; + int err; - if (rc < 0) - return rc; + err = strtobool(val, &enable); + if (err) + return err; - /* system_wq might not initialized yet */ - if (!damon_reclaim_initialized) - return rc; + if (is_enabled == enable) + return 0; - schedule_delayed_work(&damon_reclaim_timer, 0); - return 0; + /* Called before init function. The function will handle this. */ + if (!ctx) + goto set_param_out; + + err = damon_reclaim_turn(enable); + if (err) + return err; + +set_param_out: + enabled = enable; + return err; } static const struct kernel_param_ops enabled_param_ops = { @@ -262,10 +254,11 @@ static int __init damon_reclaim_init(void) ctx->callback.after_wmarks_check = damon_reclaim_after_wmarks_check; ctx->callback.after_aggregation = damon_reclaim_after_aggregation; - schedule_delayed_work(&damon_reclaim_timer, 0); + /* 'enabled' has set before this function, probably via command line */ + if (enabled) + err = damon_reclaim_turn(true); - damon_reclaim_initialized = true; - return 0; + return err; } module_init(damon_reclaim_init); From patchwork Tue Oct 25 17:36:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13019606 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 40948FA3740 for ; Tue, 25 Oct 2022 17:37:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 35AED8E0002; Tue, 25 Oct 2022 13:37:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2E44B8E0006; Tue, 25 Oct 2022 13:37:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 09A728E0002; Tue, 25 Oct 2022 13:36:59 -0400 (EDT) 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 DB1B08E0006 for ; Tue, 25 Oct 2022 13:36:59 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 9B25F14041B for ; Tue, 25 Oct 2022 17:36:59 +0000 (UTC) X-FDA: 80060177358.14.47D716D Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf29.hostedemail.com (Postfix) with ESMTP id 29261120048 for ; Tue, 25 Oct 2022 17:36:57 +0000 (UTC) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 2B84561A91; Tue, 25 Oct 2022 17:36:57 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 046A2C43141; Tue, 25 Oct 2022 17:36:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1666719416; bh=4NBEQVWjkZzG2RZ0IZhDEcaAZKCJsWQ5ei6FDrh1eE4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=D13bipI5+ZFOlmA3P+OZjs7yvhTB1CxtPiSEjR/7eMpoGmFaJlnmC1ahl0M6VzJ2b jzRwMLGRPLeeuI1mE/u6kGnFuKsmODPXEkwnOJ2p3h7moHkT+/Is837OF5KYofdczS N7NQXo1Sipv9kc4PzBgnOGGPh1ce/xZFIxI83TXJj3DSyT8+z0pkWXOHGdDXNpA7J6 jyYdXgaYBRg6mtgKKzq22VwxIA76VBnvpnAJEO/j2ps/61WVED1Su5fagGUzlO/mZd PvCuTm5s7xP/RTRQPcjCc3+h/+7qY1/4fvqSrOpkUUHcyfFSN3HTT8MO/qpgHGY6tP SQ+BW/725/C5Q== From: SeongJae Park To: Andrew Morton Cc: Shuah Khan , linux-kernel@vger.kernel.org, damon@lists.linux.dev, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, SeongJae Park Subject: [PATCH 2/4] selftests/damon: add tests for DAMON_RECLAIM's enabled parameter Date: Tue, 25 Oct 2022 17:36:48 +0000 Message-Id: <20221025173650.90624-3-sj@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221025173650.90624-1-sj@kernel.org> References: <20221025173650.90624-1-sj@kernel.org> MIME-Version: 1.0 ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1666719418; 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=moRksDtfjES9Xxm+Vwb591fHii3lcZv05YN65M1agTQ=; b=KwudST08Qs1+GXhmvMKxbL13w4dTB8KjDMY8iFssyjW8NV2Zf3Kai3PmjzojSswgGfOxcg FEW03xZ7M3+4Du6rR/LfvqzN9h1R2fpYj9BWUX1D8Gd2vXeFdXD6bKskR5bnXSsLhBxjrJ LJA+MpU/PQweGVdjpO4S0gmJbLyFLLE= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=D13bipI5; spf=pass (imf29.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=1666719418; a=rsa-sha256; cv=none; b=mBpRVd/V/tX0ulw9M7je+2yO2Upq3EcKcdjvaqhT5ITlGm2sNCu5oJ5ksGJWl3r6wBVdbj 4amFZtOOloOkGQ+aspdcijU2W6aemu5kHYmhrwxYS3RhgzxAtRLEVT0m9g2CAGNLEhRrLS /uC/+3ZLpXW+JYL6B9xHvIqo3pG1FfM= Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=D13bipI5; spf=pass (imf29.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 X-Stat-Signature: 1d6rm7ndnhyhj8ihimwwh5kg5xmmou8g X-Rspamd-Queue-Id: 29261120048 X-Rspamd-Server: rspam07 X-Rspam-User: X-HE-Tag: 1666719417-460535 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: Adds simple test cases for DAMON_RECLAIM's 'enabled' parameter. Those tests are focusing on the synchronous behavior of DAMON_RECLAIM enabling and disabling. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/Makefile | 1 + tools/testing/selftests/damon/reclaim.sh | 42 ++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100755 tools/testing/selftests/damon/reclaim.sh diff --git a/tools/testing/selftests/damon/Makefile b/tools/testing/selftests/damon/Makefile index a1fa2eff8192..dbbf18cb3e6b 100644 --- a/tools/testing/selftests/damon/Makefile +++ b/tools/testing/selftests/damon/Makefile @@ -8,5 +8,6 @@ TEST_PROGS = debugfs_attrs.sh debugfs_schemes.sh debugfs_target_ids.sh TEST_PROGS += debugfs_empty_targets.sh debugfs_huge_count_read_write.sh TEST_PROGS += debugfs_duplicate_context_creation.sh TEST_PROGS += sysfs.sh +TEST_PROGS += reclaim.sh include ../lib.mk diff --git a/tools/testing/selftests/damon/reclaim.sh b/tools/testing/selftests/damon/reclaim.sh new file mode 100755 index 000000000000..78dbc2334cbe --- /dev/null +++ b/tools/testing/selftests/damon/reclaim.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +# Kselftest framework requirement - SKIP code is 4. +ksft_skip=4 + +if [ $EUID -ne 0 ] +then + echo "Run as root" + exit $ksft_skip +fi + +damon_reclaim_enabled="/sys/module/damon_reclaim/parameters/enabled" +if [ ! -f "$damon_reclaim_enabled" ] +then + echo "No 'enabled' file. Maybe DAMON_RECLAIM not built" + exit $ksft_skip +fi + +nr_kdamonds=$(pgrep kdamond | wc -l) +if [ "$nr_kdamonds" -ne 0 ] +then + echo "Another kdamond is running" + exit $ksft_skip +fi + +echo Y > "$damon_reclaim_enabled" + +nr_kdamonds=$(pgrep kdamond | wc -l) +if [ "$nr_kdamonds" -ne 1 ] +then + echo "kdamond is not turned on" + exit 1 +fi + +echo N > "$damon_reclaim_enabled" +nr_kdamonds=$(pgrep kdamond | wc -l) +if [ "$nr_kdamonds" -ne 0 ] +then + echo "kdamond is not turned off" + exit 1 +fi From patchwork Tue Oct 25 17:36:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13019604 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 ED9D4FA3742 for ; Tue, 25 Oct 2022 17:37:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EDFB88E0001; Tue, 25 Oct 2022 13:36:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E8F1E8E0007; Tue, 25 Oct 2022 13:36:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C0BA18E0002; Tue, 25 Oct 2022 13:36: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 A530A8E0005 for ; Tue, 25 Oct 2022 13:36:59 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 881D21602D8 for ; Tue, 25 Oct 2022 17:36:59 +0000 (UTC) X-FDA: 80060177358.13.E9F72AC Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by imf15.hostedemail.com (Postfix) with ESMTP id E8E06A003E for ; Tue, 25 Oct 2022 17:36:58 +0000 (UTC) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 87E67B81E58; Tue, 25 Oct 2022 17:36:57 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C3774C433C1; Tue, 25 Oct 2022 17:36:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1666719417; bh=+caf26+jd72lruUI8kvmUSn/EY6APaB7dnve/Z0xjuA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VrvuZF1rz0yy76gaafEWaleR/CkM5YsNrvrCOFv6/E/w/seFIqYB3UP9+6l4nkUTG ZvaeD6LBqntTUHJSQYSR8rE458QNlCE4yoc5sowKYsyMG68vZ5Hfx+1Tk5RzBwZDjn En713epPu9yRhZ/GWV1RvdxH7xh1lnwvRF+yUwj18v7h3FaEoskB39vXx82qym80d0 0FlNhjJ58O79R1P46X9E5ZPNQmfjaMLSyaeVFQogOnq+so/lHveaSACm4ezDf/7u29 hIZBH9Ax7ptOX8LFis2l27TqE0j+wh3OOxDcxTBbVrZGJx14i+gIJ3el2R+euIju8M seP77KD02p9tQ== From: SeongJae Park To: Andrew Morton Cc: damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, SeongJae Park Subject: [PATCH 3/4] mm/damon/lru_sort: enable and disable synchronously Date: Tue, 25 Oct 2022 17:36:49 +0000 Message-Id: <20221025173650.90624-4-sj@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221025173650.90624-1-sj@kernel.org> References: <20221025173650.90624-1-sj@kernel.org> MIME-Version: 1.0 ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1666719419; a=rsa-sha256; cv=none; b=4mKElhtqv6PjTXd3EEANsmL32eF92ffhJOGcIZNRQS9HgyDPzcrVZGsWrj9Hd2hc5jz4Zj sQK/z7DIJspZk8U/3FEXG24nSR9KtgxznmZQ/IiKhrUDlUqqJHTSr4Mf98v4/qeAA4H/yB n+i0jtuBKee68XWD2xVo8yvTgyKdhL0= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=VrvuZF1r; spf=pass (imf15.hostedemail.com: domain of sj@kernel.org designates 145.40.68.75 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=1666719419; 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=oW+7IOTOdA637IP5PZ3N5aUu6DIPxOg3LiG1qxAeuyc=; b=qiMR+I3rquAAn1lm4j8vt+MfwcK52THCIeClaDrw7yxJ3KM7NIjBML/pJIMfHn+u4miZOu qqgBbgSEbaV4sIhCG5LFL7nXxhIc/QZDtrsLKmg7kN0uw236WiuZXqw3crYY1jMNVld2JN QrqhwoLcTnFzgeKU9Sv45F2rIbSuQgY= X-Stat-Signature: j7k5ucg3kn1o54gugasz5476fftsq7h7 X-Rspamd-Queue-Id: E8E06A003E Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=VrvuZF1r; spf=pass (imf15.hostedemail.com: domain of sj@kernel.org designates 145.40.68.75 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=none) header.from=kernel.org X-Rspam-User: X-Rspamd-Server: rspam05 X-HE-Tag: 1666719418-665609 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: Writing a value to DAMON_RECLAIM's 'enabled' parameter turns on or off DAMON in an ansychronous way. This means the parameter cannot be used to read the current status of DAMON_RECLAIM. 'kdamond_pid' parameter should be used instead for the purpose. The documentation is easy to be read as it works in a synchronous way, so it is a little bit confusing. It also makes the user space tooling dirty. There's no real reason to have the asynchronous behavior, though. Simply make the parameter works synchronously, rather than updating the document. Signed-off-by: SeongJae Park --- mm/damon/lru_sort.c | 51 +++++++++++++++++++-------------------------- 1 file changed, 22 insertions(+), 29 deletions(-) diff --git a/mm/damon/lru_sort.c b/mm/damon/lru_sort.c index 5c60163e556c..2a532e3983df 100644 --- a/mm/damon/lru_sort.c +++ b/mm/damon/lru_sort.c @@ -9,7 +9,6 @@ #include #include -#include #include "modules-common.h" @@ -235,38 +234,31 @@ static int damon_lru_sort_turn(bool on) return 0; } -static struct delayed_work damon_lru_sort_timer; -static void damon_lru_sort_timer_fn(struct work_struct *work) -{ - static bool last_enabled; - bool now_enabled; - - now_enabled = enabled; - if (last_enabled != now_enabled) { - if (!damon_lru_sort_turn(now_enabled)) - last_enabled = now_enabled; - else - enabled = last_enabled; - } -} -static DECLARE_DELAYED_WORK(damon_lru_sort_timer, damon_lru_sort_timer_fn); - -static bool damon_lru_sort_initialized; - static int damon_lru_sort_enabled_store(const char *val, const struct kernel_param *kp) { - int rc = param_set_bool(val, kp); + bool is_enabled = enabled; + bool enable; + int err; + + err = strtobool(val, &enable); + if (err) + return err; - if (rc < 0) - return rc; + if (is_enabled == enable) + return 0; - if (!damon_lru_sort_initialized) - return rc; + /* Called before init function. The function will handle this. */ + if (!ctx) + goto set_param_out; - schedule_delayed_work(&damon_lru_sort_timer, 0); + err = damon_lru_sort_turn(enable); + if (err) + return err; - return 0; +set_param_out: + enabled = enable; + return err; } static const struct kernel_param_ops enabled_param_ops = { @@ -320,10 +312,11 @@ static int __init damon_lru_sort_init(void) ctx->callback.after_wmarks_check = damon_lru_sort_after_wmarks_check; ctx->callback.after_aggregation = damon_lru_sort_after_aggregation; - schedule_delayed_work(&damon_lru_sort_timer, 0); + /* 'enabled' has set before this function, probably via command line */ + if (enabled) + err = damon_lru_sort_turn(true); - damon_lru_sort_initialized = true; - return 0; + return err; } module_init(damon_lru_sort_init); From patchwork Tue Oct 25 17:36:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13019607 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 96F44FA3742 for ; Tue, 25 Oct 2022 17:37:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9EB7A8E0007; Tue, 25 Oct 2022 13:37:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 94D608E0006; Tue, 25 Oct 2022 13:37:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7788B8E0007; Tue, 25 Oct 2022 13:37:00 -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 5F2C78E0006 for ; Tue, 25 Oct 2022 13:37:00 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 2385916041C for ; Tue, 25 Oct 2022 17:37:00 +0000 (UTC) X-FDA: 80060177400.11.17754AE Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by imf18.hostedemail.com (Postfix) with ESMTP id 99BEE1C003C for ; Tue, 25 Oct 2022 17:36:59 +0000 (UTC) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 47382B81E54; Tue, 25 Oct 2022 17:36:58 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6D997C433D6; Tue, 25 Oct 2022 17:36:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1666719418; bh=zeB8cawVzfOV+gbJUOEQJ5p17R71STbXoreipmlZFTk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OkdC3Pae44Lo+tzDZU5ZqUGPIRcR8H7h0UL4JIPf3l/+1SJBAIwYIN5kpodxDhGCb K4isG0kLPGg82hLpEYWbjZTmiYeMI0X7N9G1AEs8ADtPwpvnYhxUW2YJaPP/R1w7fK wWaYIjpO1rxbPbYrSjPMKYsE3RdYeQCvRai7TzKwAQyHzn99okFHcdGOHs2eDE1ubT lFpWPXQsz+UUPb8FGDteoPbcjbnidXr8B+aDAgoL9NnPJAWHzJiqNl96M2WWDxQNyi /3K09Ik3vPGIfj+mqhw3T5J5bm0PU5jzMpx7Juh+ygmAJTK+xAHl0/a5NR3Ums0Ag6 6tsQRbsBPUA4Q== From: SeongJae Park To: Andrew Morton Cc: Shuah Khan , linux-kernel@vger.kernel.org, damon@lists.linux.dev, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, SeongJae Park Subject: [PATCH 4/4] selftests/damon: add tests for DAMON_LRU_SORT's enabled parameter Date: Tue, 25 Oct 2022 17:36:50 +0000 Message-Id: <20221025173650.90624-5-sj@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221025173650.90624-1-sj@kernel.org> References: <20221025173650.90624-1-sj@kernel.org> MIME-Version: 1.0 ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1666719419; a=rsa-sha256; cv=none; b=ZTv5w2R6Hp4YpE1ty+656ahMlsu0VxP9GuQFaamwXOcI6884imc/Ueqvug2au5+LzWbGZa AaPxgDQg7K6gKn5L35CgXtDTtYZwN3itPh7xbmcMvBu8uN2vCbUHph/WIHqsJ6jVTFtl8T mvCyIDKiDFYEh+dud8RqRyprqIjpspk= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=OkdC3Pae; spf=pass (imf18.hostedemail.com: domain of sj@kernel.org designates 145.40.68.75 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=1666719419; 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=2wKGoxKdaq1OYo2G77Vhp+AG9/JOTHIXaym/ZbHlTDc=; b=tlWtQffqtjKFEYuaxoOq1UQZdKptDBJdB4CgUDfkqZMUnazMBmhp3+xl2a/2ti3nFFTCEg j13CJ3SNufBEoO05BXt5X0YyOgTcCJ5nNN52p5f3piJGTnm/qDCbf1ZPVq5H0kGfG8wZxo RHGACg3lkXf6AOO2Ro0HVaOfCNJc43s= X-Stat-Signature: ajnnp9xkexkqeibwkifet3yj3szropr5 X-Rspamd-Queue-Id: 99BEE1C003C Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=OkdC3Pae; spf=pass (imf18.hostedemail.com: domain of sj@kernel.org designates 145.40.68.75 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=none) header.from=kernel.org X-Rspam-User: X-Rspamd-Server: rspam05 X-HE-Tag: 1666719419-966563 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: Adds simple test cases for DAMON_LRU_SORT's 'enabled' parameter. Those tests are focusing on the synchronous behavior of DAMON_RECLAIM enabling and disabling. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/Makefile | 2 +- tools/testing/selftests/damon/lru_sort.sh | 41 +++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100755 tools/testing/selftests/damon/lru_sort.sh diff --git a/tools/testing/selftests/damon/Makefile b/tools/testing/selftests/damon/Makefile index dbbf18cb3e6b..af490acc5348 100644 --- a/tools/testing/selftests/damon/Makefile +++ b/tools/testing/selftests/damon/Makefile @@ -8,6 +8,6 @@ TEST_PROGS = debugfs_attrs.sh debugfs_schemes.sh debugfs_target_ids.sh TEST_PROGS += debugfs_empty_targets.sh debugfs_huge_count_read_write.sh TEST_PROGS += debugfs_duplicate_context_creation.sh TEST_PROGS += sysfs.sh -TEST_PROGS += reclaim.sh +TEST_PROGS += reclaim.sh lru_sort.sh include ../lib.mk diff --git a/tools/testing/selftests/damon/lru_sort.sh b/tools/testing/selftests/damon/lru_sort.sh new file mode 100755 index 000000000000..61b80197c896 --- /dev/null +++ b/tools/testing/selftests/damon/lru_sort.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +# Kselftest framework requirement - SKIP code is 4. +ksft_skip=4 + +if [ $EUID -ne 0 ] +then + echo "Run as root" + exit $ksft_skip +fi + +damon_lru_sort_enabled="/sys/module/damon_lru_sort/parameters/enabled" +if [ ! -f "$damon_lru_sort_enabled" ] +then + echo "No 'enabled' file. Maybe DAMON_LRU_SORT not built" + exit $ksft_skip +fi + +nr_kdamonds=$(pgrep kdamond | wc -l) +if [ "$nr_kdamonds" -ne 0 ] +then + echo "Another kdamond is running" + exit $ksft_skip +fi + +echo Y > "$damon_lru_sort_enabled" +nr_kdamonds=$(pgrep kdamond | wc -l) +if [ "$nr_kdamonds" -ne 1 ] +then + echo "kdamond is not turned on" + exit 1 +fi + +echo N > "$damon_lru_sort_enabled" +nr_kdamonds=$(pgrep kdamond | wc -l) +if [ "$nr_kdamonds" -ne 0 ] +then + echo "kdamond is not turned off" + exit 1 +fi