1what:		/sys/kernel/mm/damon/
2Date:		Mar 2022
3Contact:	SeongJae Park <sj@kernel.org>
4Description:	Interface for Data Access MONitoring (DAMON).  Contains files
5		for controlling DAMON.  For more details on DAMON itself,
6		please refer to Documentation/admin-guide/mm/damon/index.rst.
7
8What:		/sys/kernel/mm/damon/admin/
9Date:		Mar 2022
10Contact:	SeongJae Park <sj@kernel.org>
11Description:	Interface for privileged users of DAMON.  Contains files for
12		controlling DAMON that aimed to be used by privileged users.
13
14What:		/sys/kernel/mm/damon/admin/kdamonds/nr_kdamonds
15Date:		Mar 2022
16Contact:	SeongJae Park <sj@kernel.org>
17Description:	Writing a number 'N' to this file creates the number of
18		directories for controlling each DAMON worker thread (kdamond)
19		named '0' to 'N-1' under the kdamonds/ directory.
20
21What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/state
22Date:		Mar 2022
23Contact:	SeongJae Park <sj@kernel.org>
24Description:	Writing 'on' or 'off' to this file makes the kdamond starts or
25		stops, respectively.  Reading the file returns the keywords
26		based on the current status.  Writing 'commit' to this file
27		makes the kdamond reads the user inputs in the sysfs files
28		except 'state' again.  Writing 'commit_schemes_quota_goals' to
29		this file makes the kdamond reads the quota goal files again.
30		Writing 'update_schemes_stats' to the file updates contents of
31		schemes stats files of the kdamond.  Writing
32		'update_schemes_tried_regions' to the file updates contents of
33		'tried_regions' directory of every scheme directory of this
34		kdamond.  Writing 'update_schemes_tried_bytes' to the file
35		updates only '.../tried_regions/total_bytes' files of this
36		kdamond.  Writing 'clear_schemes_tried_regions' to the file
37		removes contents of the 'tried_regions' directory.  Writing
38		'update_schemes_effective_quotas' to the file updates
39		'.../quotas/effective_bytes' files of this kdamond.
40
41What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/pid
42Date:		Mar 2022
43Contact:	SeongJae Park <sj@kernel.org>
44Description:	Reading this file returns the pid of the kdamond if it is
45		running.
46
47What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/nr_contexts
48Date:		Mar 2022
49Contact:	SeongJae Park <sj@kernel.org>
50Description:	Writing a number 'N' to this file creates the number of
51		directories for controlling each DAMON context named '0' to
52		'N-1' under the contexts/ directory.
53
54What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/avail_operations
55Date:		Apr 2022
56Contact:	SeongJae Park <sj@kernel.org>
57Description:	Reading this file returns the available monitoring operations
58		sets on the currently running kernel.
59
60What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/operations
61Date:		Mar 2022
62Contact:	SeongJae Park <sj@kernel.org>
63Description:	Writing a keyword for a monitoring operations set ('vaddr' for
64		virtual address spaces monitoring, 'fvaddr' for fixed virtual
65		address ranges monitoring, and 'paddr' for the physical address
66		space monitoring) to this file makes the context to use the
67		operations set.  Reading the file returns the keyword for the
68		operations set the context is set to use.
69
70		Note that only the operations sets that listed in
71		'avail_operations' file are valid inputs.
72
73What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/monitoring_attrs/intervals/sample_us
74Date:		Mar 2022
75Contact:	SeongJae Park <sj@kernel.org>
76Description:	Writing a value to this file sets the sampling interval of the
77		DAMON context in microseconds as the value.  Reading this file
78		returns the value.
79
80What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/monitoring_attrs/intervals/aggr_us
81Date:		Mar 2022
82Contact:	SeongJae Park <sj@kernel.org>
83Description:	Writing a value to this file sets the aggregation interval of
84		the DAMON context in microseconds as the value.  Reading this
85		file returns the value.
86
87What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/monitoring_attrs/intervals/update_us
88Date:		Mar 2022
89Contact:	SeongJae Park <sj@kernel.org>
90Description:	Writing a value to this file sets the update interval of the
91		DAMON context in microseconds as the value.  Reading this file
92		returns the value.
93
94What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/monitoring_attrs/nr_regions/min
95
96WDate:		Mar 2022
97Contact:	SeongJae Park <sj@kernel.org>
98Description:	Writing a value to this file sets the minimum number of
99		monitoring regions of the DAMON context as the value.  Reading
100		this file returns the value.
101
102What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/monitoring_attrs/nr_regions/max
103Date:		Mar 2022
104Contact:	SeongJae Park <sj@kernel.org>
105Description:	Writing a value to this file sets the maximum number of
106		monitoring regions of the DAMON context as the value.  Reading
107		this file returns the value.
108
109What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/targets/nr_targets
110Date:		Mar 2022
111Contact:	SeongJae Park <sj@kernel.org>
112Description:	Writing a number 'N' to this file creates the number of
113		directories for controlling each DAMON target of the context
114		named '0' to 'N-1' under the contexts/ directory.
115
116What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/targets/<T>/pid_target
117Date:		Mar 2022
118Contact:	SeongJae Park <sj@kernel.org>
119Description:	Writing to and reading from this file sets and gets the pid of
120		the target process if the context is for virtual address spaces
121		monitoring, respectively.
122
123What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/targets/<T>/regions/nr_regions
124Date:		Mar 2022
125Contact:	SeongJae Park <sj@kernel.org>
126Description:	Writing a number 'N' to this file creates the number of
127		directories for setting each DAMON target memory region of the
128		context named '0' to 'N-1' under the regions/ directory.  In
129		case of the virtual address space monitoring, DAMON
130		automatically sets the target memory region based on the target
131		processes' mappings.
132
133What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/targets/<T>/regions/<R>/start
134Date:		Mar 2022
135Contact:	SeongJae Park <sj@kernel.org>
136Description:	Writing to and reading from this file sets and gets the start
137		address of the monitoring region.
138
139What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/targets/<T>/regions/<R>/end
140Date:		Mar 2022
141Contact:	SeongJae Park <sj@kernel.org>
142Description:	Writing to and reading from this file sets and gets the end
143		address of the monitoring region.
144
145What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/nr_schemes
146Date:		Mar 2022
147Contact:	SeongJae Park <sj@kernel.org>
148Description:	Writing a number 'N' to this file creates the number of
149		directories for controlling each DAMON-based operation scheme
150		of the context named '0' to 'N-1' under the schemes/ directory.
151
152What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/action
153Date:		Mar 2022
154Contact:	SeongJae Park <sj@kernel.org>
155Description:	Writing to and reading from this file sets and gets the action
156		of the scheme.
157
158What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/apply_interval_us
159Date:		Sep 2023
160Contact:	SeongJae Park <sj@kernel.org>
161Description:	Writing a value to this file sets the action apply interval of
162		the scheme in microseconds.  Reading this file returns the
163		value.
164
165What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/access_pattern/sz/min
166Date:		Mar 2022
167Contact:	SeongJae Park <sj@kernel.org>
168Description:	Writing to and reading from this file sets and gets the minimum
169		size of the scheme's target regions in bytes.
170
171What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/access_pattern/sz/max
172Date:		Mar 2022
173Contact:	SeongJae Park <sj@kernel.org>
174Description:	Writing to and reading from this file sets and gets the maximum
175		size of the scheme's target regions in bytes.
176
177What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/access_pattern/nr_accesses/min
178Date:		Mar 2022
179Contact:	SeongJae Park <sj@kernel.org>
180Description:	Writing to and reading from this file sets and gets the manimum
181		'nr_accesses' of the scheme's target regions.
182
183What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/access_pattern/nr_accesses/max
184Date:		Mar 2022
185Contact:	SeongJae Park <sj@kernel.org>
186Description:	Writing to and reading from this file sets and gets the maximum
187		'nr_accesses' of the scheme's target regions.
188
189What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/access_pattern/age/min
190Date:		Mar 2022
191Contact:	SeongJae Park <sj@kernel.org>
192Description:	Writing to and reading from this file sets and gets the minimum
193		'age' of the scheme's target regions.
194
195What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/access_pattern/age/max
196Date:		Mar 2022
197Contact:	SeongJae Park <sj@kernel.org>
198Description:	Writing to and reading from this file sets and gets the maximum
199		'age' of the scheme's target regions.
200
201What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/quotas/ms
202Date:		Mar 2022
203Contact:	SeongJae Park <sj@kernel.org>
204Description:	Writing to and reading from this file sets and gets the time
205		quota of the scheme in milliseconds.
206
207What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/quotas/bytes
208Date:		Mar 2022
209Contact:	SeongJae Park <sj@kernel.org>
210Description:	Writing to and reading from this file sets and gets the size
211		quota of the scheme in bytes.
212
213What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/quotas/effective_bytes
214Date:		Feb 2024
215Contact:	SeongJae Park <sj@kernel.org>
216Description:	Reading from this file gets the effective size quota of the
217		scheme in bytes, which adjusted for the time quota and goals.
218
219What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/quotas/reset_interval_ms
220Date:		Mar 2022
221Contact:	SeongJae Park <sj@kernel.org>
222Description:	Writing to and reading from this file sets and gets the quotas
223		charge reset interval of the scheme in milliseconds.
224
225What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/quotas/goals/nr_goals
226Date:		Nov 2023
227Contact:	SeongJae Park <sj@kernel.org>
228Description:	Writing a number 'N' to this file creates the number of
229		directories for setting automatic tuning of the scheme's
230		aggressiveness named '0' to 'N-1' under the goals/ directory.
231
232What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/quotas/goals/<G>/target_metric
233Date:		Feb 2024
234Contact:	SeongJae Park <sj@kernel.org>
235Description:	Writing to and reading from this file sets and gets the quota
236		auto-tuning goal metric.
237
238What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/quotas/goals/<G>/target_value
239Date:		Nov 2023
240Contact:	SeongJae Park <sj@kernel.org>
241Description:	Writing to and reading from this file sets and gets the target
242		value of the goal metric.
243
244What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/quotas/goals/<G>/current_value
245Date:		Nov 2023
246Contact:	SeongJae Park <sj@kernel.org>
247Description:	Writing to and reading from this file sets and gets the current
248		value of the goal metric.
249
250What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/quotas/weights/sz_permil
251Date:		Mar 2022
252Contact:	SeongJae Park <sj@kernel.org>
253Description:	Writing to and reading from this file sets and gets the
254		under-quota limit regions prioritization weight for 'size' in
255		permil.
256
257What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/quotas/weights/nr_accesses_permil
258Date:		Mar 2022
259Contact:	SeongJae Park <sj@kernel.org>
260Description:	Writing to and reading from this file sets and gets the
261		under-quota limit regions prioritization weight for
262		'nr_accesses' in permil.
263
264What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/quotas/weights/age_permil
265Date:		Mar 2022
266Contact:	SeongJae Park <sj@kernel.org>
267Description:	Writing to and reading from this file sets and gets the
268		under-quota limit regions prioritization weight for 'age' in
269		permil.
270
271What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/watermarks/metric
272Date:		Mar 2022
273Contact:	SeongJae Park <sj@kernel.org>
274Description:	Writing to and reading from this file sets and gets the metric
275		of the watermarks for the scheme.  The writable/readable
276		keywords for this file are 'none' for disabling the watermarks
277		feature, or 'free_mem_rate' for the system's global free memory
278		rate in permil.
279
280What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/watermarks/interval_us
281Date:		Mar 2022
282Contact:	SeongJae Park <sj@kernel.org>
283Description:	Writing to and reading from this file sets and gets the metric
284		check interval of the watermarks for the scheme in
285		microseconds.
286
287What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/watermarks/high
288Date:		Mar 2022
289Contact:	SeongJae Park <sj@kernel.org>
290Description:	Writing to and reading from this file sets and gets the high
291		watermark of the scheme in permil.
292
293What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/watermarks/mid
294Date:		Mar 2022
295Contact:	SeongJae Park <sj@kernel.org>
296Description:	Writing to and reading from this file sets and gets the mid
297		watermark of the scheme in permil.
298
299What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/watermarks/low
300Date:		Mar 2022
301Contact:	SeongJae Park <sj@kernel.org>
302Description:	Writing to and reading from this file sets and gets the low
303		watermark of the scheme in permil.
304
305What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/filters/nr_filters
306Date:		Dec 2022
307Contact:	SeongJae Park <sj@kernel.org>
308Description:	Writing a number 'N' to this file creates the number of
309		directories for setting filters of the scheme named '0' to
310		'N-1' under the filters/ directory.
311
312What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/filters/<F>/type
313Date:		Dec 2022
314Contact:	SeongJae Park <sj@kernel.org>
315Description:	Writing to and reading from this file sets and gets the type of
316		the memory of the interest.  'anon' for anonymous pages,
317		'memcg' for specific memory cgroup, 'addr' for address range
318		(an open-ended interval), or 'target' for DAMON monitoring
319		target can be written and read.
320
321What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/filters/<F>/memcg_path
322Date:		Dec 2022
323Contact:	SeongJae Park <sj@kernel.org>
324Description:	If 'memcg' is written to the 'type' file, writing to and
325		reading from this file sets and gets the path to the memory
326		cgroup of the interest.
327
328What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/filters/<F>/addr_start
329Date:		Jul 2023
330Contact:	SeongJae Park <sj@kernel.org>
331Description:	If 'addr' is written to the 'type' file, writing to or reading
332		from this file sets or gets the start address of the address
333		range for the filter.
334
335What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/filters/<F>/addr_end
336Date:		Jul 2023
337Contact:	SeongJae Park <sj@kernel.org>
338Description:	If 'addr' is written to the 'type' file, writing to or reading
339		from this file sets or gets the end address of the address
340		range for the filter.
341
342What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/filters/<F>/target_idx
343Date:		Dec 2022
344Contact:	SeongJae Park <sj@kernel.org>
345Description:	If 'target' is written to the 'type' file, writing to or
346		reading from this file sets or gets the index of the DAMON
347		monitoring target of the interest.
348
349What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/filters/<F>/matching
350Date:		Dec 2022
351Contact:	SeongJae Park <sj@kernel.org>
352Description:	Writing 'Y' or 'N' to this file sets whether to filter out
353		pages that do or do not match to the 'type' and 'memcg_path',
354		respectively.  Filter out means the action of the scheme will
355		not be applied to.
356
357What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/stats/nr_tried
358Date:		Mar 2022
359Contact:	SeongJae Park <sj@kernel.org>
360Description:	Reading this file returns the number of regions that the action
361		of the scheme has tried to be applied.
362
363What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/stats/sz_tried
364Date:		Mar 2022
365Contact:	SeongJae Park <sj@kernel.org>
366Description:	Reading this file returns the total size of regions that the
367		action of the scheme has tried to be applied in bytes.
368
369What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/stats/nr_applied
370Date:		Mar 2022
371Contact:	SeongJae Park <sj@kernel.org>
372Description:	Reading this file returns the number of regions that the action
373		of the scheme has successfully applied.
374
375What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/stats/sz_applied
376Date:		Mar 2022
377Contact:	SeongJae Park <sj@kernel.org>
378Description:	Reading this file returns the total size of regions that the
379		action of the scheme has successfully applied in bytes.
380
381What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/stats/qt_exceeds
382Date:		Mar 2022
383Contact:	SeongJae Park <sj@kernel.org>
384Description:	Reading this file returns the number of the exceed events of
385		the scheme's quotas.
386
387What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/tried_regions/total_bytes
388Date:		Jul 2023
389Contact:	SeongJae Park <sj@kernel.org>
390Description:	Reading this file returns the total amount of memory that
391		corresponding DAMON-based Operation Scheme's action has tried
392		to be applied.
393
394What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/tried_regions/<R>/start
395Date:		Oct 2022
396Contact:	SeongJae Park <sj@kernel.org>
397Description:	Reading this file returns the start address of a memory region
398		that corresponding DAMON-based Operation Scheme's action has
399		tried to be applied.
400
401What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/tried_regions/<R>/end
402Date:		Oct 2022
403Contact:	SeongJae Park <sj@kernel.org>
404Description:	Reading this file returns the end address of a memory region
405		that corresponding DAMON-based Operation Scheme's action has
406		tried to be applied.
407
408What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/tried_regions/<R>/nr_accesses
409Date:		Oct 2022
410Contact:	SeongJae Park <sj@kernel.org>
411Description:	Reading this file returns the 'nr_accesses' of a memory region
412		that corresponding DAMON-based Operation Scheme's action has
413		tried to be applied.
414
415What:		/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/tried_regions/<R>/age
416Date:		Oct 2022
417Contact:	SeongJae Park <sj@kernel.org>
418Description:	Reading this file returns the 'age' of a memory region that
419		corresponding DAMON-based Operation Scheme's action has tried
420		to be applied.
421