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 X-Spam-Level: X-Spam-Status: No, score=-9.9 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B667DC10F27 for ; Tue, 10 Mar 2020 11:58:37 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 685622464B for ; Tue, 10 Mar 2020 11:58:37 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amazon.com header.i=@amazon.com header.b="DZDj4qT4" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 685622464B Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=amazon.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 23DD96B000D; Tue, 10 Mar 2020 07:58:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1ED986B000E; Tue, 10 Mar 2020 07:58:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0B69B6B0010; Tue, 10 Mar 2020 07:58:37 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0027.hostedemail.com [216.40.44.27]) by kanga.kvack.org (Postfix) with ESMTP id E92446B000D for ; Tue, 10 Mar 2020 07:58:36 -0400 (EDT) Received: from smtpin13.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id F1C0B180AD81F for ; Tue, 10 Mar 2020 11:58:36 +0000 (UTC) X-FDA: 76579305432.13.spot62_4b234566d573c X-HE-Tag: spot62_4b234566d573c X-Filterd-Recvd-Size: 9522 Received: from smtp-fw-33001.amazon.com (smtp-fw-33001.amazon.com [207.171.190.10]) by imf18.hostedemail.com (Postfix) with ESMTP for ; Tue, 10 Mar 2020 11:58:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1583841517; x=1615377517; h=from:to:cc:subject:date:message-id:in-reply-to: mime-version; bh=GLQMl8kB6L2gbGSvOLAcWQ3LR6fwEMuXM72yqr8G2dc=; b=DZDj4qT4PUQQ+Xzl4jZhqyYuhD4Mt0jpL1o12qIKI5rLrKrLl4jCG2/E SeMlTKZu3pl+bRx32trUjLCMNfELj/ib95wFJyziQUQh3p8tqBacb8DUW CzS7lo234+kx2msquK09PqxFIUR8l3mHemQng10bQ2x3aLiV3Fya8RdHI g=; IronPort-SDR: 8SwpRMdNCwA8m2jRw0p2SzfsnO3apG+FVYSSBLuSMBzsa1Eu+sVvMf6ukALAhAg4ur07YmBKHr 39/AxGiFLT+g== X-IronPort-AV: E=Sophos;i="5.70,536,1574121600"; d="scan'208";a="31704177" Received: from sea32-co-svc-lb4-vlan3.sea.corp.amazon.com (HELO email-inbound-relay-1d-9ec21598.us-east-1.amazon.com) ([10.47.23.38]) by smtp-border-fw-out-33001.sea14.amazon.com with ESMTP; 10 Mar 2020 11:58:32 +0000 Received: from EX13MTAUEA002.ant.amazon.com (iad55-ws-svc-p15-lb9-vlan3.iad.amazon.com [10.40.159.166]) by email-inbound-relay-1d-9ec21598.us-east-1.amazon.com (Postfix) with ESMTPS id 36389A19B8; Tue, 10 Mar 2020 11:58:21 +0000 (UTC) Received: from EX13D31EUA001.ant.amazon.com (10.43.165.15) by EX13MTAUEA002.ant.amazon.com (10.43.61.77) with Microsoft SMTP Server (TLS) id 15.0.1236.3; Tue, 10 Mar 2020 11:58:21 +0000 Received: from u886c93fd17d25d.ant.amazon.com (10.43.160.16) by EX13D31EUA001.ant.amazon.com (10.43.165.15) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 10 Mar 2020 11:58:09 +0000 From: SeongJae Park To: Jonathan Cameron CC: SeongJae Park , , "SeongJae Park" , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: Re: Re: [PATCH v6 11/14] Documentation/admin-guide/mm: Add a document for DAMON Date: Tue, 10 Mar 2020 12:57:55 +0100 Message-ID: <20200310115755.25270-1-sjpark@amazon.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200310090348.000077d5@Huawei.com> (raw) MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.43.160.16] X-ClientProxiedBy: EX13D12UWC004.ant.amazon.com (10.43.162.182) To EX13D31EUA001.ant.amazon.com (10.43.165.15) 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: On Tue, 10 Mar 2020 09:03:48 +0000 Jonathan Cameron wrote: > On Mon, 24 Feb 2020 13:30:44 +0100 > SeongJae Park wrote: > > > From: SeongJae Park > > > > This commit adds a simple document for DAMON under > > `Documentation/admin-guide/mm`. > > > > Nice document to get people started. > > Certainly worked for me doing some initial playing around. Great to hear that :) > > In general this is an interesting piece of work. I can see there are numerous > possible avenues to explore in making the monitoring more flexible, or potentially > better at tracking usage whilst not breaking your fundamental 'bounded overhead' > requirement. Will be fun perhaps to explore some of those. > > I'll do some more exploring and perhaps try some real world workloads. > > Thanks, > > Jonathan > > > > Signed-off-by: SeongJae Park > > --- > > .../admin-guide/mm/data_access_monitor.rst | 414 ++++++++++++++++++ > > Documentation/admin-guide/mm/index.rst | 1 + > > 2 files changed, 415 insertions(+) > > create mode 100644 Documentation/admin-guide/mm/data_access_monitor.rst > > > > diff --git a/Documentation/admin-guide/mm/data_access_monitor.rst b/Documentation/admin-guide/mm/data_access_monitor.rst > > new file mode 100644 > > index 000000000000..4d836c3866e2 > > --- /dev/null > > +++ b/Documentation/admin-guide/mm/data_access_monitor.rst > > @@ -0,0 +1,414 @@ > > +.. SPDX-License-Identifier: GPL-2.0 > > + > > +========================== > > +DAMON: Data Access MONitor > > +========================== > > + > > +Introduction > > +============ > > + > > +Memory management decisions can normally be more efficient if finer data access > > +information is available. However, because finer information usually comes > > +with higher overhead, most systems including Linux made a tradeoff: Forgive > > +some wise decisions and use coarse information and/or light-weight heuristics. > > I'm not sure what "Forgive some wise decisions" means... I wanted to mean that the mechanism makes no optimal decisions. Will wordsmith again. > > > + > > +A number of experimental data access pattern awared memory management > > +optimizations say the sacrifices are > > +huge (2.55x slowdown). > > Good to have a reference. :) > > > However, none of those has successfully adopted to > > adopted into the Thanks for correcting. > [...] > > +Applying Dynamic Memory Mappings > > +-------------------------------- > > + > > +Only a number of small parts in the super-huge virtual address space of the > > +processes is mapped to physical memory and accessed. Thus, tracking the > > +unmapped address regions is just wasteful. However, tracking every memory > > +mapping change might incur an overhead. For the reason, DAMON applies the > > +dynamic memory mapping changes to the tracking regions only for each of an > > +user-specified time interval (``regions update interval``). > > One key part of the approach is the 3 region bit. Perhaps talk about that here > somewhere? I was afraid if it is too implementation detail, as this document is for admin users. Will add it in next spin, though. > > > + > > + > > +``debugfs`` Interface > > +===================== > > + > > +DAMON exports four files, ``attrs``, ``pids``, ``record``, and ``monitor_on`` > > +under its debugfs directory, ``/damon/``. > > + > > +Attributes > > +---------- > > + > > +Users can read and write the ``sampling interval``, ``aggregation interval``, > > +``regions update interval``, and min/max number of monitoring target regions by > > +reading from and writing to the ``attrs`` file. For example, below commands > > +set those values to 5 ms, 100 ms, 1,000 ms, 10, 1000 and check it again:: > > + > > + # cd /damon > > + # echo 5000 100000 1000000 10 1000 > attrs > > I'm personally a great fan of human readable interfaces. Could we just > split this into one file per interval? That way the file naming would > make it self describing. I was worried if it makes too many files. Do you think it's ok? > > > + # cat attrs > > + 5000 100000 1000000 10 1000 > > + > > +Target PIDs > > +----------- > > + > > +Users can read and write the pids of current monitoring target processes by > > +reading from and writing to the ``pids`` file. For example, below commands set > > +processes having pids 42 and 4242 as the processes to be monitored and check it > > +again:: > > + > > + # cd /damon > > + # echo 42 4242 > pids > > + # cat pids > > + 42 4242 > > + > > +Note that setting the pids doesn't starts the monitoring. > > + > > +Record > > +------ > > + > > +DAMON support direct monitoring result record feature. The recorded results > > +are first written to a buffer and flushed to a file in batch. Users can set > > +the size of the buffer and the path to the result file by reading from and > > +writing to the ``record`` file. For example, below commands set the buffer to > > +be 4 KiB and the result to be saved in ``/damon.data``. > > + > > + # cd /damon > > + # echo "4096 /damon.data" > pids > > write it to record, not pids. Ah, good eye! > > > + # cat record > > + 4096 /damon.data > > + > > +Turning On/Off > > +-------------- > > + > > +You can check current status, start and stop the monitoring by reading from and > > +writing to the ``monitor_on`` file. Writing ``on`` to the file starts DAMON to > > +monitor the target processes with the attributes. Writing ``off`` to the file > > +stops DAMON. DAMON also stops if every target processes is be terminated. > > +Below example commands turn on, off, and check status of DAMON:: > > + > > + # cd /damon > > + # echo on > monitor_on > > + # echo off > monitor_on > > + # cat monitor_on > > + off > > + > > +Please note that you cannot write to the ``attrs`` and ``pids`` files while the > > +monitoring is turned on. If you write to the files while DAMON is running, > > +``-EINVAL`` will be returned. > > Perhaps -EBUSY would be more informative? Implies values might be fine, but > the issue is 'not now'. Agreed, will change so! Thanks, SeongJae Park [...]