DAMON and DAMOS
DAMON is a framework for general data access monitoring of kernel
subsystems. It provides best-effort high quality monitoring results while
incurring only minimal and upper-bounded overhead, due to its practical
overhead-accuracy tradeoff mechanism. On a production machine utilizing 70 GB
memory, it can repeatedly scan accesses to the whole memory for every 5ms,
while consuming only 1% single CPU time.
On top of it, a data access pattern-oriented memory management engine called
DAMON-based Operation Schemes (DAMOS) is implemented. It allows clients to
implement their access pattern oriented memory management logic with very
simple scheme descriptions. We implemented fine-grained access-aware THP and
proactive reclamation using this engine in three lines of scheme and achieved
As of this writing (2021-05-28), the code is not in the mainline but available
at its development tree, and regularly posted to LKML as patchsets[4,5,6].
Nevertheless, the code has already merged in the public Amazon Linux kernel
trees[7,8], and all Amazon Linux users can use DAMON/DAMOS off the box. We are
also supporting the two latest upstream LTS stable kernels[9,10].
In this talk, I will briefly introduce DAMON/DAMOS and present how you can
write a fine-grained data access pattern oriented lightweight kernel module on
top of DAMON/DAMOS. With the talk, I will write an example module and evaluate
its performance on live. A data access-aware proactive reclamation kernel
module for production use will also introduced as a use case. After that, I
will discuss my future plans for improving DAMON and improving other kernel
subsystems using DAMON/DAMOS.
 https://damonitor.github.io (https://damonitor.github.io/)
 https://https://github.com/sjp38/linux/tree/damon/master (https://https//github.com/sjp38/linux/tree/damon/master)
|I agree to abide by the anti-harassment policy||I agree|