Re: [PATCH v20 00/15] Introduce Data Access MONitor (DAMON)

From: SeongJae Park
Date: Mon Aug 31 2020 - 07:25:20 EST


On Thu, 20 Aug 2020 09:27:38 +0200 SeongJae Park <sjpark@xxxxxxxxxx> wrote:

> On Mon, 17 Aug 2020 12:51:22 +0200 SeongJae Park <sjpark@xxxxxxxxxx> wrote:
>
> > From: SeongJae Park <sjpark@xxxxxxxxx>
> >
> > Changes from Previous Version
> > =============================
> >
> > - Place 'CREATE_TRACE_POINTS' after '#include' statements (Steven Rostedt)
> > - Support large record file (Alkaid)
> > - Place 'put_pid()' of virtual monitoring targets in 'cleanup' callback
> > - Avoid conflict between concurrent DAMON users
> > - Update evaluation result document
> >
> > Introduction
> > ============
> >
> > DAMON is a data access monitoring framework subsystem for the Linux kernel.
> > The core mechanisms of DAMON called 'region based sampling' and 'adaptive
> > regions adjustment' (refer to 'mechanisms.rst' in the 11th patch of this
> > patchset for the detail) make it
> >
> > - accurate (The monitored information is useful for DRAM level memory
> > management. It might not appropriate for Cache-level accuracy, though.),
> > - light-weight (The monitoring overhead is low enough to be applied online
> > while making no impact on the performance of the target workloads.), and
> > - scalable (the upper-bound of the instrumentation overhead is controllable
> > regardless of the size of target workloads.).
> >
> > Using this framework, therefore, the kernel's core memory management mechanisms
> > such as reclamation and THP can be optimized for better memory management. The
> > experimental memory management optimization works that incurring high
> > instrumentation overhead will be able to have another try. In user space,
> > meanwhile, users who have some special workloads will be able to write
> > personalized tools or applications for deeper understanding and specialized
> > optimizations of their systems.
>
> DAMON will be presented in the next week LPC[1]. To be prepared for a screen
> sharing error (if I get no such error, I will do a live-demo), I recorded a
> simple demo video. I would like to share it here to help your easier
> understanding of DAMON.
>
> https://youtu.be/l63eqbVBZRY
>
> [1] https://linuxplumbersconf.org/event/7/contributions/659/

During the session, I introduced the list of future works and asked the
audiences to vote for the priority of the tasks:
https://youtu.be/jOBkKMA0uF0?t=13253

To summarize here, the tasks are (highest priority first):

1. Make current DAMON patchset series merged in the mainline (6 votes)
2. User space interface improvement (4 votes)
- Multiple monitoring contexts
- Charging of the monitoring threads' CPU usage
3. Support more address spaces (2 votes)
- Cgroups, cached pages, specific file-backed pages, swap slots, ...
3. DAMON-based MM optimizations (2 votes)
- Page reclaim, THP, compaction, NUMA balancing, ...
4. Optimize for special use-cases (1 vote)
- Page granularity monitoring, accessed-or-not monitoring, ...

So, I'd like to focus on polishing current patchset so that it could be merged
in. For that, I'd like to ask your more reviews.

While waiting for the reviews, I will start implementing other future features
that received many votes. The support of multiple monitoring contexts for the
user space would be the first one. Once the implementation is finished, I will
post it as separated RFC patchset (the user space interface will be compatible
with current one).

Any comment is welcome.


Thanks,
SeongJae Park