From patchwork Sat Sep 16 02:09:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13388070 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 98560CD37B2 for ; Sat, 16 Sep 2023 02:10:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 46ED26B040A; Fri, 15 Sep 2023 22:10:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 41EAD6B040B; Fri, 15 Sep 2023 22:10:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2E56B6B040C; Fri, 15 Sep 2023 22:10:00 -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 0E1B66B040B for ; Fri, 15 Sep 2023 22:10:00 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id DA1471A0223 for ; Sat, 16 Sep 2023 02:09:59 +0000 (UTC) X-FDA: 81240830118.20.9FC4113 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by imf19.hostedemail.com (Postfix) with ESMTP id 18B7A1A0008 for ; Sat, 16 Sep 2023 02:09:57 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=o21TOvmn; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf19.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=1694830198; 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:references:dkim-signature; bh=X3VzXegqCUG6vmrNXnBgHbBe0zIRdirxUSMOszCtWqM=; b=4Zyll5sKIj3HDi/m9V60xdxK5rID2KJ48S84IpqSsFqv1LnlHPMN0agmtaq8lC+e2VKtlj hE9LRuZCyndj4XV1LVBldhnsph2c4GpD9udQZoO9oVrHLg1gagdFyrb4fT/FcppCI63vV1 p+8JnOPWzHLaP3oOB85VTu003pTOntw= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=o21TOvmn; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf19.hostedemail.com: domain of sj@kernel.org designates 145.40.68.75 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694830198; a=rsa-sha256; cv=none; b=Cb4TT3x/h1sOaZ7A7DkgftjNSPAleu1rq1nr5X8c8AZwQ5BRjypJkkeOSTrNpUnPTVaYHZ c20HOprngC6aPsUb88EJ5HiEKiYNzkKeM7dXU/RBOE/a/r+n9SDEdp0DQzFpbglbQJrh+l 9kNXYtHRCNRHLK1tZh3U/hARhyx/o7I= Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id C9B9BB82AE7; Sat, 16 Sep 2023 02:09:54 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id AF77EC433C7; Sat, 16 Sep 2023 02:09:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1694830193; bh=T68zS6krvg2xS5agV4Sw7lJICBfEHCuQmhqbi4p759U=; h=From:To:Cc:Subject:Date:From; b=o21TOvmnXJWR0ZzRfYrNfPxWcxyX7XTsYcOhCNZ7kpkZsb9OoFYsoMtMTSNJQCbbf vT3cnFGCf38LP9gif6XwOTN1aWukbcQLpqIG7/s62R/T2w1pF//R0b1A+YHPYRG1ev lxC/jXDe7eqZuOysU+FpuJWH0Gv8D2e0TmzlF/dwhz6skYbOQ5lzGSDMdXFrJjiDfr mrdtJLd7UOzXL+U6AkO7XrxmvOGuhq1fopSCdrtJuC49EC/cYHaJCAUKDv0bYxVnWB wqSkM1fCwK7Hiet2MiL9yKEwSdv3vnR/Yk3v6gO99dVrxtMiocrFj+JcoppKTEuif+ VsKIprlQX+HWQ== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Jonathan Corbet , Shuah Khan , Steven Rostedt , damon@lists.linux.dev, linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 0/9] mm/damon: implement DAMOS apply intervals Date: Sat, 16 Sep 2023 02:09:36 +0000 Message-Id: <20230916020945.47296-1-sj@kernel.org> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Rspamd-Queue-Id: 18B7A1A0008 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: zs8gjbbzbyebxeeyhqp6kkfexsgsfrgp X-HE-Tag: 1694830197-762359 X-HE-Meta: U2FsdGVkX181EBhFvxiICm9AtCt9ErqxXPBhP5zLwaROGvS/0vz+iI41JLGd4Dxp/jySa6A8bqvQeCtOtCjCEFOcGFsJZP/3lw2sJiq/nWR8TB6gFdtTZpFOXNITlvRwEyQ7UjO3cQjqnqXzpe0Cn3s1XkIf2vVooms7bWLVaUJNixAc19vYoBA7+z3Z6vdeA5fhp3Y5dBCPg/qMTWiOwkj9JixaxjFjjAXbxD86OHj9KHTVIPTXqc6Tdrf4uFj+PgGiIMxUIqN0WPpUAkXdddkR6l6F7iGJJeXyIGTZjMoffgFjq6++eXM0fJW7M2GhvsbeNPiitzJliwuw+BDWo+oRF5gEa+70n8Eb0y36+PnRSwpPCxd6oarxF+WKWyIaqzwTm3xNRjDtnkVW48kYFa2MAro8AskxVE3+kgagHglXi2YnloaVk74xMYscT420bgnehGI5nXhdzRe8zj7QTmfllee5BGm4KNA+/pTIV6qrSGIeGrxzrNu8pfaDUctLgRg1HIie0dZvFAwiInklCkxSrjgJ5YZzGWvQLNvqLWvIHtyu4lvp6uMn2pjBhWIt4lr8Pnmelt7WX3VyoBZMzgRVimC7FM7JHVPgNafdpVa/Y7P8Up5MMB5pDp9kHPuGkQ2KmEvjllP/qBtNgz1AUjdGb/f/HVcjuPyV+gK1DYqB6woAXHyjcZE4buHHs9nWo3J0JZxs15fau2GlKuYwZJoAcYglVAR5N/I01buWSHRJaWxzOROadEStHMGI8x1C0zVs/DrVgqdEi/RpZ7qXo3ZXprA1/Zrj4zmcP1pLCQh4NhDFbuqNS+altZZvnTfy+bTfoEuFnKHj8u9t1PurHUntAMLWmsiHSd6tAlSYk2p0kpkymfVkF+INB0TNUJHqGOiPb7wSUnLAUfFR5tOJpqrXTHGNUn4qtQnB89j0gXA2CN19KublngG2EWlFwBdFRYvlQV5S6oIF46FDwdQ 2eqfMCLn 2Q0zQrHIanYETl+4bs8bddi7V4biYF4CPpp9qPZGH6WkpPE7pg/75mWEqz6u+reH+gKuRbfL9ooajhx4i4KS4I1qPxsC8zacdkPRSMZM7xZSySSpV5aOpj1Hs49sD+sOmFf9o+AxXTecm5tOLXGG/UfN1Oi4TPPwcVwER64kcvy+99gXq7/gMdqnZM44/mn6qM+fC23ufqMypGx9Gz0AgVL0CRskqFZxuKoapTKGXKF6Cb9TXebR44+Gdu9ZJ/NGtPZibZgNYmaC27x+5OP3UDKTo/IdbpCrXsQ3WJMaerPYWde+dY4qwSmtLP/l/kAwkqMAi00dsTI1NjigShxrFZ8Fq4Q== 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: Changes from RFC (https://lore.kernel.org/damon/20230910034048.59191-1-sj@kernel.org/) - Add kselftest for damos_apply_interval_us sysfs file - Rebase on latest mm-unstable DAMON-based operation schemes are applied for every aggregation interval. That is mainly because schemes are using nr_accesses, which be complete to be used for every aggregation interval. This makes some DAMOS use cases be tricky. Quota setting under long aggregation interval is one such example. Suppose the aggregation interval is ten seconds, and there is a scheme having CPU quota 100ms per 1s. The scheme will actually uses 100ms per ten seconds, since it cannobe be applied before next aggregation interval. The feature is working as intended, but the results might not that intuitive for some users. This could be fixed by updating the quota to 1s per 10s. But, in the case, the CPU usage of DAMOS could look like spikes, and actually make a bad effect to other CPU-sensitive workloads. Also, with such huge aggregation interval, users may want schemes to be applied more frequently. DAMON provides nr_accesses_bp, which is updated for each sampling interval in a way that reasonable to be used. By using that instead of nr_accesses, DAMOS can have its own time interval and mitigate abovely mentioned issues. This patchset makes DAMOS schemes to use nr_accesses_bp instead of nr_accesses, and have their own timing intervals. Also update DAMOS tried regions sysfs files and DAMOS before_apply tracepoint to use the new data as their source. Note that the interval is zero by default, and it is interpreted to use the aggregation interval instead. This avoids making user-visible behavioral changes. Patches Seuqeunce ----------------- The first patch (patch 1/9) makes DAMOS uses nr_accesses_bp instead of nr_accesses, and following two patches (patches 2/9 and 3/9) updates DAMON sysfs interface for DAMOS tried regions and the DAMOS before_apply tracespoint to use nr_accesses_bp instead of nr_accesses, respectively. The following two patches (patches 4/9 and 5/9) implements the scheme-specific apply interval for DAMON kernel API users and update the design document for the new feature. Finally, the following four patches (patches 6/9, 7/9, 8/9 and 9/9) add support of the feature in DAMON sysfs interface, add a simple selftest test case, and document the new file on the usage and the ABI documents, repsectively. SeongJae Park (9): mm/damon/core: make DAMOS uses nr_accesses_bp instead of nr_accesses mm/damon/sysfs-schemes: use nr_accesses_bp as the source of tried_regions//nr_accesses mm/damon/core: use nr_accesses_bp as a source of damos_before_apply tracepoint mm/damon/core: implement scheme-specific apply interval Docs/mm/damon/design: document DAMOS apply intervals mm/damon/sysfs-schemes: support DAMOS apply interval selftests/damon/sysfs: test DAMOS apply intervals Docs/admin-guide/mm/damon/usage: update for DAMOS apply intervals Docs/ABI/damon: update for DAMOS apply intervals .../ABI/testing/sysfs-kernel-mm-damon | 7 ++ Documentation/admin-guide/mm/damon/usage.rst | 9 ++- Documentation/mm/damon/design.rst | 3 +- include/linux/damon.h | 17 +++- include/trace/events/damon.h | 2 +- mm/damon/core.c | 77 ++++++++++++++++--- mm/damon/dbgfs.c | 3 +- mm/damon/lru_sort.c | 2 + mm/damon/reclaim.c | 2 + mm/damon/sysfs-schemes.c | 40 ++++++++-- tools/testing/selftests/damon/sysfs.sh | 1 + 11 files changed, 141 insertions(+), 22 deletions(-) base-commit: abf99d088da21843246382c7a95f21e886193c31