blob: c0d72de05db16ec6504c96db8f2a1250e07edfe9 [file]
TODOs
=====
WIP
---
- DAMOS stat/control improvement
- Show how many snapshots the scheme has processed
- Let DAMOS deactivated based on the number of processed snapshots
- Provide a tracepoint for DAMOS stat
- merged into mm tree
- DAMON_LRU_SORT modernization
- merged into mm tree
- hide kdamond and kdamond_lock from API callers
- merged into mm tree
- modernize wss_estimation kselftest
- merged into mm tree
- document modules usage on usage doc
- merged into mm tree
- per-filtered-address-ragne prioritization
- do the temperature-prioritization for address filter-passed regions,
separately
- respect min_nr_regions from beginning
- https://lore.kernel.org/20260128011225.71964-1-sj@kernel.org
- mark DAMOS filters/ dir deprecated on doc
- add CONFIG_DAMON_HARDENED for integrity checking
- Documentation cleanup: Make link from design to API
Planning / Considering
----------------------
- fix walk_system_ram() type violation
- https://lore.kernel.org/20260129161029.48991-1-sj@kernel.org
- page type sampling
- for production level lightweight page-level monitoring
- let users register page types of interest
- when doing access check, check the type of the page and increase the
counter for user-registered type.
- users know how many of each region is of the type, proportionally.
- damos filtering gran?
- Support tlb flushing
- https://lore.kernel.org/all/a2fb10bd-b44a-350e-f693-82ecfa6f54a8@huawei.com/
- deprecate sysfs filters/ in favor of {core,ops}_filters/
- warn on use of filters/, by 2027
- rename filters/ to filters_DEPRECATED/, by 2028
- remove filters/ code and documentation, by 2029
- automatic paddr regions detection
(handle hot(un)plugged memory regions)
- similar to vaddr, detect and cover all online memory as much as possible,
with a few holes.
- make DAMON_STAT cover multiple hot-[un]pluggable NUMA nodes
- implement and use kind of three big regions detection mechanism
- distinction of uncheckable memory
- not just say it is not accessed, but disclose the fact that it was unable
to check the access to, and apply merge-split with the fact.
- add kunit test for all parameters commit functions
- add damos_stat for auto-tuned zero size applying
- DAMOS_KILL: DAMON-based OOM killing
- If DAMON_RECLAIM doesn't increase free memory, killing processes of hot
pages.
- implement pause/resume of kdamonds
- Or, let user feed nr_accesses and age of regions
- User can snapshot the last monitoring results and continue monitoring
from the status.
- support (multiple) kdamosd
- per-noe memory bandwidth utilization DAMOS quota goal metric
- clarify possible monitoring results loss on usage doc.
- implement addr_unit commit kunit test
- implement addr_unit to/from core address conversion kunit test
- handle charged_ns overflow on 32bit machines
- cleanup damon_set_attrs() documentation
- add kunit test for damon_call() and damos_walk()
- DAMON-based khugepaged
- Make khugepaged listen DAMON's voice when collapsing
- Support multi contexts per kdamond
- Add sharable kdamond
- Run with auto-tuned intervals
- Let API callers report access information, read monitoring results and
add/remove DAMOS schemes
- Major callers would be DAMON modules
- damon_get_handle(), damon_report_access(), damos_add_folios()
- Let ABI users read monitoring results and DAMOS stat
- /sys/kernel/mm/damon/???/
- DAMON_NUMA_MIGRATE
- Aim for not only traditional NUMA but also tiering
- Just extend mtier to every node, but CPU-aware.
- sysfs command for updating params (for restoring old params)
- write a selftest for sz_filter_passed
- contigurized-vddr
- trat end of a discrete region as start of next region
- connect regions before and after huge unmapped area
- connect regions of different virtual addresses
- Write API documentation
- no just kerenl doc, but more structured document is needed
- Let users decide regions split factor
- https://lore.kernel.org/20241026215311.148363-1-sj@kernel.org
- Let users periodically split regions without per-region subregions limit
- https://lore.kernel.org/20241026215311.148363-1-sj@kernel.org
- Sampling based page level properties based monitoring
- For DAMOS_STAT, do sampling for sz_filter_passed calculation
- Let user sets the number of samples per region for this
- Support reserved uninstall of DAMOS
- Allow running DAMOS scheme for only specific apply intervals
- Extend for memory bandwidth monitoring
- Extend for AMD IBS-based monitoring
- Extend for cache-set space monitoring
- Extend for cache-line space monitoring
- Require sub-page level monitoring (IBS?)
- Access/Contiguity-aware Memory Auto-scaling
- https://lore.kernel.org/damon/20240512193657.79298-1-sj@kernel.org
- Support cleaning sysfs input files up to committed values
- holistic heterogenous memory management
- address CPU-numa, CXL-numa, and device(e.g., GPU)-numa nodes
- DAMON_LRU_SORT auto-tuning
- Let auto-tuning using active/inactive memory ratio
- Selftests: Test DAMON online tuning
- Selftests: Test DAMOS online tuning
- Selftests: Test DAMOS filter
- Make 'age' counted by sample_interval rather than aggregation interval
- CPU time quota for DAMON monitirng
- monitoring part CPU usage statistics
- Setting resolution of damos tried_regions
- Should be able to control the directories population overhead when the
number of regions is big
- More DAMON modules
- DAMON-based THP hinting module
- rename nr_accesses/moving_accesses_bp
- mark nr_accesses as private
- use a dedicated struct for access rate
- let kdamond name be user-defined
- let DAMON modules share one kdamond
- unify DAMON modules
- support multiple contexts per kdamond
- DAMON-based VMA split/merge
- Help big VMA contention issue?
- We can further expose the monitoring results via vma name
- Reading results becomes very easy
- Contig memory access util monitoring
- WSS/RSS based processes sorting
- LRU-based monitoring ops
- Fixed granularity idleness monitoring
- Must be useful for further DAMON overhead/accuracy evaluation
- Improve regions-based monitoring quality
- Support cgroups
- Add __counted_by() annotation when ready
(https://lore.kernel.org/r/CAKwvOdkvGTGiWzqEFq=kzqvxSYP5vUj3g9Z-=MZSQROzzSa_dg@mail.gmail.com)
- Ideas from LSFMM
- Add operations driven access check
- Let it calls DAMON functions for noticed access and then let DAMON records
the access
- Take care of fairness on ACMA (e.g., NUMA)
- Consider hugetlb handling optimization
- DAMON_RECLAIM will meaninglessly try reclaiming hugetlb pages, consume
CPUs. Find a way to optimize.
- DAMON in process context
- Do the monitoring for each process in task_work context, like NUMA
balancing installs prot_none.
Frozen
------
Recently Done
-------------
- per-memcg per-node memory usage based quota tuning
- merged into 6.19-rc1
- document addr_unit on DAMON_RECALIM and LRU_SORT
- merged into 6.19-rc1
- let DAMON sysfs remove specific target directories
- https://github.com/damonitor/damo/issues/36
- merged into 6.19-rc1
- add kunit test for more parameters commit functions
- merged into 6.19-rc1
- cleanup vaddr using pmd_trans_huge_lock() pattern
- Hugh's suggestion (20250920104220.1399-1-sj@kernel.org)
- merged into 6.19-rc1
- cleanup unnecessary folio_get/put() in vaddr
- David's suggestion (20250729174640.55762-1-sj@kernel.org)
- merged into 6.19-rc1
- refactor vaddr's migration code use pmd walk function only
- David's suggestion (20250729174640.55762-1-sj@kernel.org)
- merged into 6.19-rc1
Non-DAMON issues
----------------