Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp603254ybh; Tue, 10 Mar 2020 05:00:17 -0700 (PDT) X-Google-Smtp-Source: ADFU+vsj9gcTtyPKsv5g7kKTsLqGL7Y44qDDl4e1QEuKZjMv8vzvjcIqzlTkJnN936LNCDIqzT1M X-Received: by 2002:a9d:518e:: with SMTP id y14mr2762616otg.273.1583841617432; Tue, 10 Mar 2020 05:00:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583841617; cv=none; d=google.com; s=arc-20160816; b=IeUGboa7+zC80GfMcG48OaPt1tSZB/qMiL9qANyS+YK9EGPBcm2SK3YIhPudS/+D6F GOg3cVLqSKoiQd2h1TrEXWjZkye+pOzqOwkoojKvaXADP1F1i4c0MjvJvx9yr4Bn/wYd gnnUTqfR+Cd2tTuDj4MaqxBBhCULdjzL6x8mkEoqsOAMpsR1CNJkpFiK92bDjFmPG7t1 vkIwr3E1dYfZzzWbM0pQAUYajsmn4joiK4SEhJznpqq1ey4pk4vpCQI6lscBtrk6+WwJ zwR8sIKvmB6uWMgGRRQUDGlWfSMZUL5u22S0le5U/cPh6PMc1hRLQUclFeQT67D2WCNb 2nWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:in-reply-to:message-id:date :subject:cc:to:from:ironport-sdr:dkim-signature; bh=GLQMl8kB6L2gbGSvOLAcWQ3LR6fwEMuXM72yqr8G2dc=; b=GifHWqj1YV8ODBm71420kav+aZZjmkroYUBoWdkY3cCPHrR6reHcy0ILyeTCdZW3s4 zqTgpxQiD0Wp6/ZDtueQIsTnpIaR1zWBQvbp8aJdn96+2hfSXEjA7jyJEAFALtHNVazo Wh8azspNpbaGMtF5vxsEhWdQwRwrG/+Q/Zxd8cUuHedJi7ybVlP4rDPm0vMZWhc6XzXV 25VkDnVXg69zahA2Sefl2cXshLih8+jtuAdk/0GbsMCnTZym5t94VCZVgpXFfI/wSrKr VW9aq4OWhzbniwVRkpuAO0QXm6u0OIqZiHDDqGvRUZ3mh+84Rzys6HO8I1Ma0LWVctam 65fQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amazon.com header.s=amazon201209 header.b=qwG8D0Bq; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d62si2413694oib.137.2020.03.10.05.00.05; Tue, 10 Mar 2020 05:00:17 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@amazon.com header.s=amazon201209 header.b=qwG8D0Bq; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726595AbgCJL6i (ORCPT + 99 others); Tue, 10 Mar 2020 07:58:38 -0400 Received: from smtp-fw-33001.amazon.com ([207.171.190.10]:1435 "EHLO smtp-fw-33001.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726378AbgCJL6h (ORCPT ); Tue, 10 Mar 2020 07:58:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1583841516; x=1615377516; h=from:to:cc:subject:date:message-id:in-reply-to: mime-version; bh=GLQMl8kB6L2gbGSvOLAcWQ3LR6fwEMuXM72yqr8G2dc=; b=qwG8D0BqgdAs7/7Tv0t5LucUgs6bWmssAQcKjx2RlDWz3sCe5XeyZXow Qd1DzDj5K3DmJ8fgN6ryCvOeAOajzAxrWy0p01NQxtFwHE3NGklPib9Q2 ecFfHcSkxHUlhr+NkPcah3hPn5nFmc0RMISRlFdMc/MvHBEfkYVs9e7h7 U=; 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) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 [...]