€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ./translations/zh_CN/admin-guide/mm/damon/usage”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/zh_TW/admin-guide/mm/damon/usage”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/it_IT/admin-guide/mm/damon/usage”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/ja_JP/admin-guide/mm/damon/usage”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/ko_KR/admin-guide/mm/damon/usage”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/pt_BR/admin-guide/mm/damon/usage”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/sp_SP/admin-guide/mm/damon/usage”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒH/var/lib/git/docbuild/linux/Documentation/admin-guide/mm/damon/usage.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒDetailed Usages”h]”hŒDetailed Usages”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒ4DAMON provides below interfaces for different users.”h]”hŒ4DAMON provides below interfaces for different users.”…”�”}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hX2*Special-purpose DAMON modules.* :ref:`This ` is for people who are building, distributing, and/or administrating the kernel with special-purpose DAMON usages. Using this, users can use DAMON's major features for the given purposes in build, boot, or runtime in simple ways.”h]”hÞ)�”}”(hX2*Special-purpose DAMON modules.* :ref:`This ` is for people who are building, distributing, and/or administrating the kernel with special-purpose DAMON usages. Using this, users can use DAMON's major features for the given purposes in build, boot, or runtime in simple ways.”h]”(hŒemphasis”“”)�”}”(hŒ *Special-purpose DAMON modules.*”h]”hŒSpecial-purpose DAMON modules.”…”�”}”(hhþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hühhøubhŒ ”…”�”}”(hhøh²hh³Nh´Nubh)�”}”(hŒ+:ref:`This `”h]”hŒinline”“”)�”}”(hjh]”hŒThis”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œadmin-guide/mm/damon/usage”Œ refdomain”j!Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œdamon_modules_special_purpose”uh1hh³hÇh´K hhøubhŒè is for people who are building, distributing, and/or administrating the kernel with special-purpose DAMON usages. Using this, users can use DAMON’s major features for the given purposes in build, boot, or runtime in simple ways.”…”�”}”(hhøh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hhôubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhhïh²hh³hÇh´Nubhó)�”}”(hX£*DAMON user space tool.* `This `_ is for privileged people such as system administrators who want a just-working human-friendly interface. Using this, users can use the DAMON’s major features in a human-friendly way. It may not be highly tuned for special cases, though. For more detail, please refer to its `usage document `_.”h]”hÞ)�”}”(hX£*DAMON user space tool.* `This `_ is for privileged people such as system administrators who want a just-working human-friendly interface. Using this, users can use the DAMON’s major features in a human-friendly way. It may not be highly tuned for special cases, though. For more detail, please refer to its `usage document `_.”h]”(hý)�”}”(hŒ*DAMON user space tool.*”h]”hŒDAMON user space tool.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hühjIubhŒ ”…”�”}”(hjIh²hh³Nh´NubhŒ reference”“”)�”}”(hŒ+`This `_”h]”hŒThis”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒThis”Œrefuri”Œ!https://github.com/damonitor/damo”uh1j_hjIubhŒtarget”“”)�”}”(hŒ$ ”h]”h}”(h]”Œthis”ah ]”h"]”Œthis”ah$]”h&]”Œrefuri”jruh1jsŒ referenced”KhjIubhX is for privileged people such as system administrators who want a just-working human-friendly interface. Using this, users can use the DAMON’s major features in a human-friendly way. It may not be highly tuned for special cases, though. For more detail, please refer to its ”…”�”}”(hjIh²hh³Nh´Nubj`)�”}”(hŒH`usage document `_”h]”hŒusage document”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œusage document”jqŒ4https://github.com/damonitor/damo/blob/next/USAGE.md”uh1j_hjIubjt)�”}”(hŒ7 ”h]”h}”(h]”Œusage-document”ah ]”h"]”Œusage document”ah$]”h&]”Œrefuri”j—uh1jsj‚KhjIubhŒ.”…”�”}”(hjIh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhhïh²hh³hÇh´Nubhó)�”}”(hXÍ*sysfs interface.* :ref:`This ` is for privileged user space programmers who want more optimized use of DAMON. Using this, users can use DAMON’s major features by reading from and writing to special sysfs files. Therefore, you can write and use your personalized DAMON sysfs wrapper programs that reads/writes the sysfs files instead of you. The `DAMON user space tool `_ is one example of such programs.”h]”hÞ)�”}”(hXÍ*sysfs interface.* :ref:`This ` is for privileged user space programmers who want more optimized use of DAMON. Using this, users can use DAMON’s major features by reading from and writing to special sysfs files. Therefore, you can write and use your personalized DAMON sysfs wrapper programs that reads/writes the sysfs files instead of you. The `DAMON user space tool `_ is one example of such programs.”h]”(hý)�”}”(hŒ*sysfs interface.*”h]”hŒsysfs interface.”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hühj¹ubhŒ ”…”�”}”(hj¹h²hh³Nh´Nubh)�”}”(hŒ:ref:`This `”h]”j)�”}”(hjÑh]”hŒThis”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjÏubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jÝŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œsysfs_interface”uh1hh³hÇh´Khj¹ubhX@ is for privileged user space programmers who want more optimized use of DAMON. Using this, users can use DAMON’s major features by reading from and writing to special sysfs files. Therefore, you can write and use your personalized DAMON sysfs wrapper programs that reads/writes the sysfs files instead of you. The ”…”�”}”(hj¹h²hh³Nh´Nubj`)�”}”(hŒ<`DAMON user space tool `_”h]”hŒDAMON user space tool”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒDAMON user space tool”jqŒ!https://github.com/damonitor/damo”uh1j_hj¹ubjt)�”}”(hŒ$ ”h]”h}”(h]”Œdamon-user-space-tool”ah ]”h"]”Œdamon user space tool”ah$]”h&]”Œrefuri”juh1jsj‚Khj¹ubhŒ! is one example of such programs.”…”�”}”(hj¹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjµubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhhïh²hh³hÇh´Nubhó)�”}”(hXv*Kernel Space Programming Interface.* :doc:`This ` is for kernel space programmers. Using this, users can utilize every feature of DAMON most flexibly and efficiently by writing kernel space DAMON application programs for you. You can even extend DAMON for various address spaces. For detail, please refer to the interface :doc:`document `. ”h]”hÞ)�”}”(hXu*Kernel Space Programming Interface.* :doc:`This ` is for kernel space programmers. Using this, users can utilize every feature of DAMON most flexibly and efficiently by writing kernel space DAMON application programs for you. You can even extend DAMON for various address spaces. For detail, please refer to the interface :doc:`document `.”h]”(hý)�”}”(hŒ%*Kernel Space Programming Interface.*”h]”hŒ#Kernel Space Programming Interface.”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hühj%ubhŒ ”…”�”}”(hj%h²hh³Nh´Nubh)�”}”(hŒ:doc:`This `”h]”j)�”}”(hj=h]”hŒThis”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-doc”eh"]”h$]”h&]”uh1jhj;ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jIŒreftype”Œdoc”Œ refexplicit”ˆŒrefwarn”ˆj3Œ /mm/damon/api”uh1hh³hÇh´Khj%ubhX is for kernel space programmers. Using this, users can utilize every feature of DAMON most flexibly and efficiently by writing kernel space DAMON application programs for you. You can even extend DAMON for various address spaces. For detail, please refer to the interface ”…”�”}”(hj%h²hh³Nh´Nubh)�”}”(hŒ:doc:`document `”h]”j)�”}”(hjah]”hŒdocument”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-doc”eh"]”h$]”h&]”uh1jhj_ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jmŒreftype”Œdoc”Œ refexplicit”ˆŒrefwarn”ˆj3Œ /mm/damon/api”uh1hh³hÇh´Khj%ubhŒ.”…”�”}”(hj%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhhïh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1híh³hÇh´K hhÊh²hubjt)�”}”(hŒ.. _sysfs_interface:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œsysfs-interface”uh1jsh´K#hhÊh²hh³hÇubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒsysfs Interface”h]”hŒsysfs Interface”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj£h²hh³hÇh´K&ubhÞ)�”}”(hŒÿDAMON sysfs interface is built when ``CONFIG_DAMON_SYSFS`` is defined. It creates multiple directories and files under its sysfs directory, ``/kernel/mm/damon/``. You can control DAMON by writing to and reading from the files under the directory.”h]”(hŒ$DAMON sysfs interface is built when ”…”�”}”(hj´h²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``CONFIG_DAMON_SYSFS``”h]”hŒCONFIG_DAMON_SYSFS”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj´ubhŒS is defined. It creates multiple directories and files under its sysfs directory, ”…”�”}”(hj´h²hh³Nh´Nubj½)�”}”(hŒ``/kernel/mm/damon/``”h]”hŒ/kernel/mm/damon/”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj´ubhŒV. You can control DAMON by writing to and reading from the files under the directory.”…”�”}”(hj´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K(hj£h²hubhÞ)�”}”(hŒaFor a short example, users can monitor the virtual address space of a given workload as below. ::”h]”hŒ^For a short example, users can monitor the virtual address space of a given workload as below.”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K-hj£h²hubhŒ literal_block”“”)�”}”(hX5# cd /sys/kernel/mm/damon/admin/ # echo 1 > kdamonds/nr_kdamonds && echo 1 > kdamonds/0/contexts/nr_contexts # echo vaddr > kdamonds/0/contexts/0/operations # echo 1 > kdamonds/0/contexts/0/targets/nr_targets # echo $(pidof ) > kdamonds/0/contexts/0/targets/0/pid_target # echo on > kdamonds/0/state”h]”hX5# cd /sys/kernel/mm/damon/admin/ # echo 1 > kdamonds/nr_kdamonds && echo 1 > kdamonds/0/contexts/nr_contexts # echo vaddr > kdamonds/0/contexts/0/operations # echo 1 > kdamonds/0/contexts/0/targets/nr_targets # echo $(pidof ) > kdamonds/0/contexts/0/targets/0/pid_target # echo on > kdamonds/0/state”…”�”}”hjøsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jöh³hÇh´K0hj£h²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒFiles Hierarchy”h]”hŒFiles Hierarchy”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´K8ubhÞ)�”}”(hŒñThe files hierarchy of DAMON sysfs interface is shown below. In the below figure, parents-children relations are represented with indentations, each directory is having ``/`` suffix, and files in each directory are separated by comma (",").”h]”(hŒªThe files hierarchy of DAMON sysfs interface is shown below. In the below figure, parents-children relations are represented with indentations, each directory is having ”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ``/``”h]”hŒ/”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒF suffix, and files in each directory are separated by comma (“,â€�).”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K:hjh²hubj÷)�”}”(hX² :ref:`/sys/kernel/mm/damon `/admin │ :ref:`kdamonds `/nr_kdamonds │ │ :ref:`0 `/state,pid,refresh_ms │ │ │ :ref:`contexts `/nr_contexts │ │ │ │ :ref:`0 `/avail_operations,operations,addr_unit, │ │ │ │ pause │ │ │ │ │ :ref:`monitoring_attrs `/ │ │ │ │ │ │ intervals/sample_us,aggr_us,update_us │ │ │ │ │ │ │ intervals_goal/access_bp,aggrs,min_sample_us,max_sample_us │ │ │ │ │ │ nr_regions/min,max │ │ │ │ │ │ :ref:`probes `/nr_probes │ │ │ │ │ │ │ 0/weight │ │ │ │ │ │ │ │ filters/nr_filters │ │ │ │ │ │ │ │ │ 0/type,matching,allow,path │ │ │ │ │ │ │ │ │ ... │ │ │ │ │ │ │ ... │ │ │ │ │ :ref:`targets `/nr_targets │ │ │ │ │ │ :ref:`0 `/pid_target,obsolete_target │ │ │ │ │ │ │ :ref:`regions `/nr_regions │ │ │ │ │ │ │ │ :ref:`0 `/start,end │ │ │ │ │ │ │ │ ... │ │ │ │ │ │ ... │ │ │ │ │ :ref:`schemes `/nr_schemes │ │ │ │ │ │ :ref:`0 `/action,target_nid,apply_interval_us │ │ │ │ │ │ │ :ref:`access_pattern `/ │ │ │ │ │ │ │ │ sz/min,max │ │ │ │ │ │ │ │ nr_accesses/min,max │ │ │ │ │ │ │ │ age/min,max │ │ │ │ │ │ │ :ref:`quotas `/ms,bytes,reset_interval_ms, │ │ │ │ │ │ │ effective_bytes,goal_tuner, │ │ │ │ │ │ │ fail_charge_num,fail_charge_denom │ │ │ │ │ │ │ │ weights/sz_permil,nr_accesses_permil,age_permil │ │ │ │ │ │ │ │ :ref:`goals `/nr_goals │ │ │ │ │ │ │ │ │ 0/target_metric,target_value,current_value,nid,path │ │ │ │ │ │ │ :ref:`watermarks `/metric,interval_us,high,mid,low │ │ │ │ │ │ │ :ref:`{core_,ops_,}filters `/nr_filters │ │ │ │ │ │ │ │ 0/type,matching,allow,memcg_path,addr_start,addr_end,damon_target_idx,min,max │ │ │ │ │ │ │ :ref:`dests `/nr_dests │ │ │ │ │ │ │ │ 0/id,weight │ │ │ │ │ │ │ :ref:`stats `/nr_tried,sz_tried,nr_applied,sz_applied,sz_ops_filter_passed,qt_exceeds,nr_snapshots,max_nr_snapshots │ │ │ │ │ │ │ :ref:`tried_regions `/total_bytes │ │ │ │ │ │ │ │ 0/start,end,nr_accesses,age,sz_filter_passed │ │ │ │ │ │ │ │ │ probes │ │ │ │ │ │ │ │ │ │ 0/hits │ │ │ │ │ │ │ │ │ │ ... │ │ │ │ │ │ │ │ ... │ │ │ │ │ │ ... │ │ │ │ ... │ │ ...”h]”(h)�”}”(hŒ(:ref:`/sys/kernel/mm/damon `”h]”j)�”}”(hj=h]”hŒ/sys/kernel/mm/damon”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj;ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jIŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ sysfs_root”uh1hh³hÇh´K?hj7ubhŒ /admin │ ”…”�”}”hj7sbh)�”}”(hŒ :ref:`kdamonds `”h]”j)�”}”(hjah]”hŒkdamonds”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj_ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jmŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œsysfs_kdamonds”uh1hh³hÇh´K?hj7ubhŒ/nr_kdamonds │ │ ”…”�”}”hj7sbh)�”}”(hŒ:ref:`0 `”h]”j)�”}”(hj…h]”hŒ0”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjƒubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j‘Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ sysfs_kdamond”uh1hh³hÇh´K?hj7ubhŒ"/state,pid,refresh_ms │ │ │ ”…”�”}”hj7sbh)�”}”(hŒ :ref:`contexts `”h]”j)�”}”(hj©h]”hŒcontexts”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj§ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jµŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œsysfs_contexts”uh1hh³hÇh´K?hj7ubhŒ/nr_contexts │ │ │ │ ”…”�”}”hj7sbh)�”}”(hŒ:ref:`0 `”h]”j)�”}”(hjÍh]”hŒ0”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjËubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jÙŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ sysfs_context”uh1hh³hÇh´K?hj7ubhŒT/avail_operations,operations,addr_unit, │ │ │ │ pause │ │ │ │ │ ”…”�”}”hj7sbh)�”}”(hŒ0:ref:`monitoring_attrs `”h]”j)�”}”(hjñh]”hŒmonitoring_attrs”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjïubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jýŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œsysfs_monitoring_attrs”uh1hh³hÇh´K?hj7ubhŒÚ/ │ │ │ │ │ │ intervals/sample_us,aggr_us,update_us │ │ │ │ │ │ │ intervals_goal/access_bp,aggrs,min_sample_us,max_sample_us │ │ │ │ │ │ nr_regions/min,max │ │ │ │ │ │ ”…”�”}”hj7sbh)�”}”(hŒ(:ref:`probes `”h]”j)�”}”(hjh]”hŒprobes”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j!Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œdamon_usage_sysfs_probes”uh1hh³hÇh´K?hj7ubhŒþ/nr_probes │ │ │ │ │ │ │ 0/weight │ │ │ │ │ │ │ │ filters/nr_filters │ │ │ │ │ │ │ │ │ 0/type,matching,allow,path │ │ │ │ │ │ │ │ │ ... │ │ │ │ │ │ │ ... │ │ │ │ │ ”…”�”}”hj7sbh)�”}”(hŒ:ref:`targets `”h]”j)�”}”(hj9h]”hŒtargets”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj7ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jEŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ sysfs_targets”uh1hh³hÇh´K?hj7ubhŒ$/nr_targets │ │ │ │ │ │ ”…”�”}”hj7sbh)�”}”(hŒ:ref:`0 `”h]”j)�”}”(hj]h]”hŒ0”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj[ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jiŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ sysfs_target”uh1hh³hÇh´K?hj7ubhŒ8/pid_target,obsolete_target │ │ │ │ │ │ │ ”…”�”}”hj7sbh)�”}”(hŒ:ref:`regions `”h]”j)�”}”(hj�h]”hŒregions”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j�Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ sysfs_regions”uh1hh³hÇh´K?hj7ubhŒ,/nr_regions │ │ │ │ │ │ │ │ ”…”�”}”hj7sbh)�”}”(hŒ:ref:`0 `”h]”j)�”}”(hj¥h]”hŒ0”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj£ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j±Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ sysfs_region”uh1hh³hÇh´K?hj7ubhŒ_/start,end │ │ │ │ │ │ │ │ ... │ │ │ │ │ │ ... │ │ │ │ │ ”…”�”}”hj7sbh)�”}”(hŒ:ref:`schemes `”h]”j)�”}”(hjÉh]”hŒschemes”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjÇubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jÕŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ sysfs_schemes”uh1hh³hÇh´K?hj7ubhŒ$/nr_schemes │ │ │ │ │ │ ”…”�”}”hj7sbh)�”}”(hŒ:ref:`0 `”h]”j)�”}”(hjíh]”hŒ0”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjëubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jùŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ sysfs_scheme”uh1hh³hÇh´K?hj7ubhŒA/action,target_nid,apply_interval_us │ │ │ │ │ │ │ ”…”�”}”hj7sbh)�”}”(hŒ,:ref:`access_pattern `”h]”j)�”}”(hjh]”hŒaccess_pattern”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œsysfs_access_pattern”uh1hh³hÇh´K?hj7ubhŒ©/ │ │ │ │ │ │ │ │ sz/min,max │ │ │ │ │ │ │ │ nr_accesses/min,max │ │ │ │ │ │ │ │ age/min,max │ │ │ │ │ │ │ ”…”�”}”hj7sbh)�”}”(hŒ:ref:`quotas `”h]”j)�”}”(hj5h]”hŒquotas”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj3ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jAŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ sysfs_quotas”uh1hh³hÇh´K?hj7ubhX /ms,bytes,reset_interval_ms, │ │ │ │ │ │ │ effective_bytes,goal_tuner, │ │ │ │ │ │ │ fail_charge_num,fail_charge_denom │ │ │ │ │ │ │ │ weights/sz_permil,nr_accesses_permil,age_permil │ │ │ │ │ │ │ │ ”…”�”}”hj7sbh)�”}”(hŒ(:ref:`goals `”h]”j)�”}”(hjYh]”hŒgoals”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjWubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jeŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œsysfs_schemes_quota_goals”uh1hh³hÇh´K?hj7ubhŒ~/nr_goals │ │ │ │ │ │ │ │ │ 0/target_metric,target_value,current_value,nid,path │ │ │ │ │ │ │ ”…”�”}”hj7sbh)�”}”(hŒ$:ref:`watermarks `”h]”j)�”}”(hj}h]”hŒ watermarks”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj{ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j‰Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œsysfs_watermarks”uh1hh³hÇh´K?hj7ubhŒ=/metric,interval_us,high,mid,low │ │ │ │ │ │ │ ”…”�”}”hj7sbh)�”}”(hŒ+:ref:`{core_,ops_,}filters `”h]”j)�”}”(hj¡h]”hŒ{core_,ops_,}filters”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjŸubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j­Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ sysfs_filters”uh1hh³hÇh´K?hj7ubhŒ–/nr_filters │ │ │ │ │ │ │ │ 0/type,matching,allow,memcg_path,addr_start,addr_end,damon_target_idx,min,max │ │ │ │ │ │ │ ”…”�”}”hj7sbh)�”}”(hŒ :ref:`dests `”h]”j)�”}”(hjÅh]”hŒdests”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjÃubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jÑŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œdamon_sysfs_dests”uh1hh³hÇh´K?hj7ubhŒR/nr_dests │ │ │ │ │ │ │ │ 0/id,weight │ │ │ │ │ │ │ ”…”�”}”hj7sbh)�”}”(hŒ":ref:`stats `”h]”j)�”}”(hjéh]”hŒstats”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjçubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jõŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œsysfs_schemes_stats”uh1hh³hÇh´K?hj7ubhŒƒ/nr_tried,sz_tried,nr_applied,sz_applied,sz_ops_filter_passed,qt_exceeds,nr_snapshots,max_nr_snapshots │ │ │ │ │ │ │ ”…”�”}”hj7sbh)�”}”(hŒ2:ref:`tried_regions `”h]”j)�”}”(hj h]”hŒ tried_regions”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œsysfs_schemes_tried_regions”uh1hh³hÇh´K?hj7ubhX?/total_bytes │ │ │ │ │ │ │ │ 0/start,end,nr_accesses,age,sz_filter_passed │ │ │ │ │ │ │ │ │ probes │ │ │ │ │ │ │ │ │ │ 0/hits │ │ │ │ │ │ │ │ │ │ ... │ │ │ │ │ │ │ │ ... │ │ │ │ │ │ ... │ │ │ │ ... │ │ ...”…”�”}”hj7sbeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jöh´KAhjh²hh³hÇubjt)�”}”(hŒ.. _sysfs_root:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œ sysfs-root”uh1jsh´Kshjh²hh³hÇubeh}”(h]”Œfiles-hierarchy”ah ]”h"]”Œfiles hierarchy”ah$]”h&]”uh1hÈhj£h²hh³hÇh´K8ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒRoot”h]”hŒRoot”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjHh²hh³hÇh´KvubhÞ)�”}”(hXThe root of the DAMON sysfs interface is ``/kernel/mm/damon/``, and it has one directory named ``admin``. The directory contains the files for privileged user space programs' control of DAMON. User space tools or daemons having the root permission could use this directory.”h]”(hŒ)The root of the DAMON sysfs interface is ”…”�”}”(hjYh²hh³Nh´Nubj½)�”}”(hŒ``/kernel/mm/damon/``”h]”hŒ/kernel/mm/damon/”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjYubhŒ!, and it has one directory named ”…”�”}”(hjYh²hh³Nh´Nubj½)�”}”(hŒ ``admin``”h]”hŒadmin”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjYubhŒ­. The directory contains the files for privileged user space programs’ control of DAMON. User space tools or daemons having the root permission could use this directory.”…”�”}”(hjYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KxhjHh²hubjt)�”}”(hŒ.. _sysfs_kdamonds:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œsysfs-kdamonds”uh1jsh´K}hjHh²hh³hÇubeh}”(h]”(Œroot”j?eh ]”h"]”(Œroot”Œ sysfs_root”eh$]”h&]”uh1hÈhj£h²hh³hÇh´KvŒexpect_referenced_by_name”}”jœj5sŒexpect_referenced_by_id”}”j?j5subhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ kdamonds/”h]”hŒ kdamonds/”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj£h²hh³hÇh´K€ubhÞ)�”}”(hX¢Under the ``admin`` directory, one directory, ``kdamonds``, which has files for controlling the kdamonds (refer to :ref:`design ` for more details) exists. In the beginning, this directory has only one file, ``nr_kdamonds``. Writing a number (``N``) to the file creates the number of child directories named ``0`` to ``N-1``. Each directory represents each kdamond.”h]”(hŒ Under the ”…”�”}”(hj´h²hh³Nh´Nubj½)�”}”(hŒ ``admin``”h]”hŒadmin”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj´ubhŒ directory, one directory, ”…”�”}”(hj´h²hh³Nh´Nubj½)�”}”(hŒ ``kdamonds``”h]”hŒkdamonds”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj´ubhŒ9, which has files for controlling the kdamonds (refer to ”…”�”}”(hj´h²hh³Nh´Nubh)�”}”(hŒ@:ref:`design `”h]”j)�”}”(hjâh]”hŒdesign”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjàubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jîŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ0damon_design_execution_model_and_data_structures”uh1hh³hÇh´K‚hj´ubhŒP for more details) exists. In the beginning, this directory has only one file, ”…”�”}”(hj´h²hh³Nh´Nubj½)�”}”(hŒ``nr_kdamonds``”h]”hŒ nr_kdamonds”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj´ubhŒ. Writing a number (”…”�”}”(hj´h²hh³Nh´Nubj½)�”}”(hŒ``N``”h]”hŒN”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj´ubhŒ<) to the file creates the number of child directories named ”…”�”}”(hj´h²hh³Nh´Nubj½)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj´ubhŒ to ”…”�”}”(hj´h²hh³Nh´Nubj½)�”}”(hŒ``N-1``”h]”hŒN-1”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj´ubhŒ*. Each directory represents each kdamond.”…”�”}”(hj´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K‚hj£h²hubjt)�”}”(hŒ.. _sysfs_kdamond:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œ sysfs-kdamond”uh1jsh´KŠhj£h²hh³hÇubeh}”(h]”(Œkdamonds”j•eh ]”h"]”(Œ kdamonds/”Œsysfs_kdamonds”eh$]”h&]”uh1hÈhj£h²hh³hÇh´K€jŸ}”jcj‹sj¡}”j•j‹subhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ kdamonds//”h]”hŒ kdamonds//”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjhh²hh³hÇh´K�ubhÞ)�”}”(hŒvIn each kdamond directory, three files (``state``, ``pid`` and ``refresh_ms``) and one directory (``contexts``) exist.”h]”(hŒ(In each kdamond directory, three files (”…”�”}”(hjyh²hh³Nh´Nubj½)�”}”(hŒ ``state``”h]”hŒstate”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjyubhŒ, ”…”�”}”(hjyh²hh³Nh´Nubj½)�”}”(hŒ``pid``”h]”hŒpid”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjyubhŒ and ”…”�”}”(hjyh²hh³Nh´Nubj½)�”}”(hŒ``refresh_ms``”h]”hŒ refresh_ms”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjyubhŒ) and one directory (”…”�”}”(hjyh²hh³Nh´Nubj½)�”}”(hŒ ``contexts``”h]”hŒcontexts”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjyubhŒ) exist.”…”�”}”(hjyh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K�hjhh²hubhÞ)�”}”(hŒfReading ``state`` returns ``on`` if the kdamond is currently running, or ``off`` if it is not running.”h]”(hŒReading ”…”�”}”(hjÏh²hh³Nh´Nubj½)�”}”(hŒ ``state``”h]”hŒstate”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÏubhŒ returns ”…”�”}”(hjÏh²hh³Nh´Nubj½)�”}”(hŒ``on``”h]”hŒon”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÏubhŒ) if the kdamond is currently running, or ”…”�”}”(hjÏh²hh³Nh´Nubj½)�”}”(hŒ``off``”h]”hŒoff”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÏubhŒ if it is not running.”…”�”}”(hjÏh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K’hjhh²hubhÞ)�”}”(hŒEUsers can write below commands for the kdamond to the ``state`` file.”h]”(hŒ6Users can write below commands for the kdamond to the ”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ ``state``”h]”hŒstate”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒ file.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K•hjhh²hubhî)�”}”(hhh]”(hó)�”}”(hŒ``on``: Start running.”h]”hÞ)�”}”(hj8h]”(j½)�”}”(hŒ``on``”h]”hŒon”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj:ubhŒ: Start running.”…”�”}”(hj:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K—hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj3h²hh³hÇh´Nubhó)�”}”(hŒ``off``: Stop running.”h]”hÞ)�”}”(hj]h]”(j½)�”}”(hŒ``off``”h]”hŒoff”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj_ubhŒ: Stop running.”…”�”}”(hj_h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K˜hj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj3h²hh³hÇh´Nubhó)�”}”(hŒ¾``commit``: Read the user inputs in the sysfs files except ``state`` file again. Monitoring :ref:`target region ` inputs are also be ignored if no target region is specified.”h]”hÞ)�”}”(hŒ¾``commit``: Read the user inputs in the sysfs files except ``state`` file again. Monitoring :ref:`target region ` inputs are also be ignored if no target region is specified.”h]”(j½)�”}”(hŒ ``commit``”h]”hŒcommit”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj„ubhŒ1: Read the user inputs in the sysfs files except ”…”�”}”(hj„h²hh³Nh´Nubj½)�”}”(hŒ ``state``”h]”hŒstate”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj„ubhŒ file again. Monitoring ”…”�”}”(hj„h²hh³Nh´Nubh)�”}”(hŒ$:ref:`target region `”h]”j)�”}”(hj®h]”hŒ target region”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj¬ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jºŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ sysfs_regions”uh1hh³hÇh´K™hj„ubhŒ= inputs are also be ignored if no target region is specified.”…”�”}”(hj„h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K™hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj3h²hh³hÇh´Nubhó)�”}”(hX3``update_tuned_intervals``: Update the contents of ``sample_us`` and ``aggr_us`` files of the kdamond with the auto-tuning applied ``sampling interval`` and ``aggregation interval`` for the files. Please refer to :ref:`intervals_goal section ` for more details.”h]”hÞ)�”}”(hX3``update_tuned_intervals``: Update the contents of ``sample_us`` and ``aggr_us`` files of the kdamond with the auto-tuning applied ``sampling interval`` and ``aggregation interval`` for the files. Please refer to :ref:`intervals_goal section ` for more details.”h]”(j½)�”}”(hŒ``update_tuned_intervals``”h]”hŒupdate_tuned_intervals”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjàubhŒ: Update the contents of ”…”�”}”(hjàh²hh³Nh´Nubj½)�”}”(hŒ ``sample_us``”h]”hŒ sample_us”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjàubhŒ and ”…”�”}”(hjàh²hh³Nh´Nubj½)�”}”(hŒ ``aggr_us``”h]”hŒaggr_us”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjàubhŒ3 files of the kdamond with the auto-tuning applied ”…”�”}”(hjàh²hh³Nh´Nubj½)�”}”(hŒ``sampling interval``”h]”hŒsampling interval”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjàubhŒ and ”…”�”}”(hjàh²hh³Nh´Nubj½)�”}”(hŒ``aggregation interval``”h]”hŒaggregation interval”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjàubhŒ! for the files. Please refer to ”…”�”}”(hjàh²hh³Nh´Nubh)�”}”(hŒK:ref:`intervals_goal section `”h]”j)�”}”(hj@ h]”hŒintervals_goal section”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj> ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jL Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ+damon_usage_sysfs_monitoring_intervals_goal”uh1hh³hÇh´KœhjàubhŒ for more details.”…”�”}”(hjàh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KœhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj3h²hh³hÇh´Nubhó)�”}”(hŒw``commit_schemes_quota_goals``: Read the DAMON-based operation schemes' :ref:`quota goals `.”h]”hÞ)�”}”(hŒw``commit_schemes_quota_goals``: Read the DAMON-based operation schemes' :ref:`quota goals `.”h]”(j½)�”}”(hŒ``commit_schemes_quota_goals``”h]”hŒcommit_schemes_quota_goals”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjr ubhŒ,: Read the DAMON-based operation schemes’ ”…”�”}”(hjr h²hh³Nh´Nubh)�”}”(hŒ.:ref:`quota goals `”h]”j)�”}”(hjŠ h]”hŒ quota goals”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjˆ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j– Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œsysfs_schemes_quota_goals”uh1hh³hÇh´K¡hjr ubhŒ.”…”�”}”(hjr h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¡hjn ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj3h²hh³hÇh´Nubhó)�”}”(hŒÉ``update_schemes_stats``: Update the contents of stats files for each DAMON-based operation scheme of the kdamond. For details of the stats, please refer to :ref:`stats section `.”h]”hÞ)�”}”(hŒÉ``update_schemes_stats``: Update the contents of stats files for each DAMON-based operation scheme of the kdamond. For details of the stats, please refer to :ref:`stats section `.”h]”(j½)�”}”(hŒ``update_schemes_stats``”h]”hŒupdate_schemes_stats”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¼ ubhŒ†: Update the contents of stats files for each DAMON-based operation scheme of the kdamond. For details of the stats, please refer to ”…”�”}”(hj¼ h²hh³Nh´Nubh)�”}”(hŒ*:ref:`stats section `”h]”j)�”}”(hjÔ h]”hŒ stats section”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjÒ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jà Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œsysfs_schemes_stats”uh1hh³hÇh´K£hj¼ ubhŒ.”…”�”}”(hj¼ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K£hj¸ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj3h²hh³hÇh´Nubhó)�”}”(hX;``update_schemes_tried_regions``: Update the DAMON-based operation scheme action tried regions directory for each DAMON-based operation scheme of the kdamond. For details of the DAMON-based operation scheme action tried regions directory, please refer to :ref:`tried_regions section `.”h]”hÞ)�”}”(hX;``update_schemes_tried_regions``: Update the DAMON-based operation scheme action tried regions directory for each DAMON-based operation scheme of the kdamond. For details of the DAMON-based operation scheme action tried regions directory, please refer to :ref:`tried_regions section `.”h]”(j½)�”}”(hŒ ``update_schemes_tried_regions``”h]”hŒupdate_schemes_tried_regions”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒà: Update the DAMON-based operation scheme action tried regions directory for each DAMON-based operation scheme of the kdamond. For details of the DAMON-based operation scheme action tried regions directory, please refer to ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ::ref:`tried_regions section `”h]”j)�”}”(hj h]”hŒtried_regions section”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j* Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œsysfs_schemes_tried_regions”uh1hh³hÇh´K¦hj ubhŒ.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¦hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj3h²hh³hÇh´Nubhó)�”}”(hŒT``update_schemes_tried_bytes``: Update only ``.../tried_regions/total_bytes`` files.”h]”hÞ)�”}”(hŒT``update_schemes_tried_bytes``: Update only ``.../tried_regions/total_bytes`` files.”h]”(j½)�”}”(hŒ``update_schemes_tried_bytes``”h]”hŒupdate_schemes_tried_bytes”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjP ubhŒ: Update only ”…”�”}”(hjP h²hh³Nh´Nubj½)�”}”(hŒ!``.../tried_regions/total_bytes``”h]”hŒ.../tried_regions/total_bytes”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjP ubhŒ files.”…”�”}”(hjP h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K«hjL ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj3h²hh³hÇh´Nubhó)�”}”(hŒœ``clear_schemes_tried_regions``: Clear the DAMON-based operating scheme action tried regions directory for each DAMON-based operation scheme of the kdamond.”h]”hÞ)�”}”(hŒœ``clear_schemes_tried_regions``: Clear the DAMON-based operating scheme action tried regions directory for each DAMON-based operation scheme of the kdamond.”h]”(j½)�”}”(hŒ``clear_schemes_tried_regions``”h]”hŒclear_schemes_tried_regions”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjˆ ubhŒ}: Clear the DAMON-based operating scheme action tried regions directory for each DAMON-based operation scheme of the kdamond.”…”�”}”(hjˆ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K­hj„ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj3h²hh³hÇh´Nubhó)�”}”(hŒÐ``update_schemes_effective_quotas``: Update the contents of ``effective_bytes`` files for each DAMON-based operation scheme of the kdamond. For more details, refer to :ref:`quotas directory `. ”h]”hÞ)�”}”(hŒÏ``update_schemes_effective_quotas``: Update the contents of ``effective_bytes`` files for each DAMON-based operation scheme of the kdamond. For more details, refer to :ref:`quotas directory `.”h]”(j½)�”}”(hŒ#``update_schemes_effective_quotas``”h]”hŒupdate_schemes_effective_quotas”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj® ubhŒ: Update the contents of ”…”�”}”(hj® h²hh³Nh´Nubj½)�”}”(hŒ``effective_bytes``”h]”hŒeffective_bytes”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj® ubhŒY files for each DAMON-based operation scheme of the kdamond. For more details, refer to ”…”�”}”(hj® h²hh³Nh´Nubh)�”}”(hŒ&:ref:`quotas directory `”h]”j)�”}”(hjØ h]”hŒquotas directory”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjÖ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jä Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ sysfs_quotas”uh1hh³hÇh´K°hj® ubhŒ.”…”�”}”(hj® h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K°hjª ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj3h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j•j–uh1híh³hÇh´K—hjhh²hubhÞ)�”}”(hŒLIf the state is ``on``, reading ``pid`` shows the pid of the kdamond thread.”h]”(hŒIf the state is ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ``on``”h]”hŒon”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ , reading ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ``pid``”h]”hŒpid”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ% shows the pid of the kdamond thread.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K´hjhh²hubhÞ)�”}”(hX’Users can ask the kernel to periodically update files showing auto-tuned parameters and DAMOS stats instead of manually writing ``update_tuned_intervals`` like keywords to ``state`` file. For this, users should write the desired update time interval in milliseconds to ``refresh_ms`` file. If the interval is zero, the periodic update is disabled. Reading the file shows currently set time interval.”h]”(hŒ€Users can ask the kernel to periodically update files showing auto-tuned parameters and DAMOS stats instead of manually writing ”…”�”}”(hj> h²hh³Nh´Nubj½)�”}”(hŒ``update_tuned_intervals``”h]”hŒupdate_tuned_intervals”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj> ubhŒ like keywords to ”…”�”}”(hj> h²hh³Nh´Nubj½)�”}”(hŒ ``state``”h]”hŒstate”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj> ubhŒY file. For this, users should write the desired update time interval in milliseconds to ”…”�”}”(hj> h²hh³Nh´Nubj½)�”}”(hŒ``refresh_ms``”h]”hŒ refresh_ms”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj> ubhŒv file. If the interval is zero, the periodic update is disabled. Reading the file shows currently set time interval.”…”�”}”(hj> h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¶hjhh²hubhÞ)�”}”(hŒm``contexts`` directory contains files for controlling the monitoring contexts that this kdamond will execute.”h]”(j½)�”}”(hŒ ``contexts``”h]”hŒcontexts”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj‚ ubhŒa directory contains files for controlling the monitoring contexts that this kdamond will execute.”…”�”}”(hj‚ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K½hjhh²hubjt)�”}”(hŒ.. _sysfs_contexts:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œsysfs-contexts”uh1jsh´KÀhjhh²hh³hÇubeh}”(h]”(Œ kdamonds-n”j\eh ]”h"]”(Œ kdamonds//”Œ sysfs_kdamond”eh$]”h&]”uh1hÈhj£h²hh³hÇh´K�jŸ}”j¯ jRsj¡}”j\jRsubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒkdamonds//contexts/”h]”hŒkdamonds//contexts/”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj´ h²hh³hÇh´KÃubhÞ)�”}”(hX¬In the beginning, this directory has only one file, ``nr_contexts``. Writing a number (``N``) to the file creates the number of child directories named as ``0`` to ``N-1``. Each directory represents each monitoring context (refer to :ref:`design ` for more details). At the moment, only one context per kdamond is supported, so only ``0`` or ``1`` can be written to the file.”h]”(hŒ4In the beginning, this directory has only one file, ”…”�”}”(hjÅ h²hh³Nh´Nubj½)�”}”(hŒ``nr_contexts``”h]”hŒ nr_contexts”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÅ ubhŒ. Writing a number (”…”�”}”(hjÅ h²hh³Nh´Nubj½)�”}”(hŒ``N``”h]”hŒN”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÅ ubhŒ?) to the file creates the number of child directories named as ”…”�”}”(hjÅ h²hh³Nh´Nubj½)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÅ ubhŒ to ”…”�”}”(hjÅ h²hh³Nh´Nubj½)�”}”(hŒ``N-1``”h]”hŒN-1”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÅ ubhŒ?. Each directory represents each monitoring context (refer to ”…”�”}”(hjÅ h²hh³Nh´Nubh)�”}”(hŒ@:ref:`design `”h]”j)�”}”(hj h]”hŒdesign”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j# Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ0damon_design_execution_model_and_data_structures”uh1hh³hÇh´KÅhjÅ ubhŒW for more details). At the moment, only one context per kdamond is supported, so only ”…”�”}”(hjÅ h²hh³Nh´Nubj½)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÅ ubhŒ or ”…”�”}”(hjÅ h²hh³Nh´Nubj½)�”}”(hŒ``1``”h]”hŒ1”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÅ ubhŒ can be written to the file.”…”�”}”(hjÅ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÅhj´ h²hubjt)�”}”(hŒ.. _sysfs_context:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œ sysfs-context”uh1jsh´KÌhj´ h²hh³hÇubeh}”(h]”(Œkdamonds-n-contexts”j¨ eh ]”h"]”(Œkdamonds//contexts/”Œsysfs_contexts”eh$]”h&]”uh1hÈhj£h²hh³hÇh´KÃjŸ}”jt jž sj¡}”j¨ jž subhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ contexts//”h]”hŒ contexts//”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjy h²hh³hÇh´KÏubhÞ)�”}”(hŒ»In each context directory, four files (``avail_operations``, ``operations``, ``addr_unit`` and ``pause``) and three directories (``monitoring_attrs``, ``targets``, and ``schemes``) exist.”h]”(hŒ'In each context directory, four files (”…”�”}”(hjŠ h²hh³Nh´Nubj½)�”}”(hŒ``avail_operations``”h]”hŒavail_operations”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjŠ ubhŒ, ”…”�”}”(hjŠ h²hh³Nh´Nubj½)�”}”(hŒ``operations``”h]”hŒ operations”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjŠ ubhŒ, ”…”�”}”(hjŠ h²hh³Nh´Nubj½)�”}”(hŒ ``addr_unit``”h]”hŒ addr_unit”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjŠ ubhŒ and ”…”�”}”(hjŠ h²hh³Nh´Nubj½)�”}”(hŒ ``pause``”h]”hŒpause”…”�”}”(hjÈ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjŠ ubhŒ) and three directories (”…”�”}”(hjŠ h²hh³Nh´Nubj½)�”}”(hŒ``monitoring_attrs``”h]”hŒmonitoring_attrs”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjŠ ubhŒ, ”…”�”}”hjŠ sbj½)�”}”(hŒ ``targets``”h]”hŒtargets”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjŠ ubhŒ, and ”…”�”}”(hjŠ h²hh³Nh´Nubj½)�”}”(hŒ ``schemes``”h]”hŒschemes”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjŠ ubhŒ) exist.”…”�”}”(hjŠ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÑhjy h²hubhÞ)�”}”(hXDAMON supports multiple types of :ref:`monitoring operations `, including those for virtual address space and the physical address space. You can get the list of available monitoring operations set on the currently running kernel by reading ``avail_operations`` file. Based on the kernel configuration, the file will list different available operation sets. Please refer to the :ref:`design ` for the list of all available operation sets and their brief explanations.”h]”(hŒ!DAMON supports multiple types of ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒG:ref:`monitoring operations `”h]”j)�”}”(hj h]”hŒmonitoring operations”…”�”}”(hj" h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j, Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ(damon_design_configurable_operations_set”uh1hh³hÇh´KÕhj ubhŒ´, including those for virtual address space and the physical address space. You can get the list of available monitoring operations set on the currently running kernel by reading ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ``avail_operations``”h]”hŒavail_operations”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒw file. Based on the kernel configuration, the file will list different available operation sets. Please refer to the ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ$:ref:`design `”h]”j)�”}”(hjV h]”hŒdesign”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjT ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jb Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œdamon_operations_set”uh1hh³hÇh´KÕhj ubhŒK for the list of all available operation sets and their brief explanations.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÕhjy h²hubhÞ)�”}”(hŒÂYou can set and get what type of monitoring operations DAMON will use for the context by writing one of the keywords listed in ``avail_operations`` file and reading from the ``operations`` file.”h]”(hŒYou can set and get what type of monitoring operations DAMON will use for the context by writing one of the keywords listed in ”…”�”}”(hj~ h²hh³Nh´Nubj½)�”}”(hŒ``avail_operations``”h]”hŒavail_operations”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj~ ubhŒ file and reading from the ”…”�”}”(hj~ h²hh³Nh´Nubj½)�”}”(hŒ``operations``”h]”hŒ operations”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj~ ubhŒ file.”…”�”}”(hj~ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÞhjy h²hubhÞ)�”}”(hŒ``addr_unit`` file is for setting and getting the :ref:`address unit ` parameter of the operations set.”h]”(j½)�”}”(hŒ ``addr_unit``”h]”hŒ addr_unit”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj° ubhŒ% file is for setting and getting the ”…”�”}”(hj° h²hh³Nh´Nubh)�”}”(hŒ,:ref:`address unit `”h]”j)�”}”(hjÈ h]”hŒ address unit”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjÆ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jÔ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œdamon_design_addr_unit”uh1hh³hÇh´Kâhj° ubhŒ! parameter of the operations set.”…”�”}”(hj° h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kâhjy h²hubhÞ)�”}”(hŒ�``pause`` file is for setting and getting the :ref:`pause request ` parameter of the context.”h]”(j½)�”}”(hŒ ``pause``”h]”hŒpause”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjð ubhŒ% file is for setting and getting the ”…”�”}”(hjð h²hh³Nh´Nubh)�”}”(hŒG:ref:`pause request `”h]”j)�”}”(hjh]”hŒ pause request”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ0damon_design_execution_model_and_data_structures”uh1hh³hÇh´Kåhjð ubhŒ parameter of the context.”…”�”}”(hjð h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kåhjy h²hubjt)�”}”(hŒ.. _sysfs_monitoring_attrs:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œsysfs-monitoring-attrs”uh1jsh´Kèhjy h²hh³hÇubeh}”(h]”(Œ contexts-n”jm eh ]”h"]”(Œ contexts//”Œ sysfs_context”eh$]”h&]”uh1hÈhj£h²hh³hÇh´KÏjŸ}”jAjc sj¡}”jm jc subhÉ)�”}”(hhh]”(hÎ)�”}”(hŒcontexts//monitoring_attrs/”h]”hŒcontexts//monitoring_attrs/”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjFh²hh³hÇh´KëubhÞ)�”}”(hŒûFiles for specifying attributes of the monitoring including required quality and efficiency of the monitoring are in ``monitoring_attrs`` directory. Specifically, three directories, ``intervals``, ``nr_regions`` and ``probes`` exist in this directory.”h]”(hŒuFiles for specifying attributes of the monitoring including required quality and efficiency of the monitoring are in ”…”�”}”(hjWh²hh³Nh´Nubj½)�”}”(hŒ``monitoring_attrs``”h]”hŒmonitoring_attrs”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjWubhŒ- directory. Specifically, three directories, ”…”�”}”(hjWh²hh³Nh´Nubj½)�”}”(hŒ ``intervals``”h]”hŒ intervals”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjWubhŒ, ”…”�”}”(hjWh²hh³Nh´Nubj½)�”}”(hŒ``nr_regions``”h]”hŒ nr_regions”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjWubhŒ and ”…”�”}”(hjWh²hh³Nh´Nubj½)�”}”(hŒ ``probes``”h]”hŒprobes”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjWubhŒ exist in this directory.”…”�”}”(hjWh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KíhjFh²hubhÞ)�”}”(hXUnder ``intervals`` directory, three files for DAMON's sampling interval (``sample_us``), aggregation interval (``aggr_us``), and update interval (``update_us``) exist. You can set and get the values in micro-seconds by writing to and reading from the files.”h]”(hŒUnder ”…”�”}”(hj­h²hh³Nh´Nubj½)�”}”(hŒ ``intervals``”h]”hŒ intervals”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj­ubhŒ9 directory, three files for DAMON’s sampling interval (”…”�”}”(hj­h²hh³Nh´Nubj½)�”}”(hŒ ``sample_us``”h]”hŒ sample_us”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj­ubhŒ), aggregation interval (”…”�”}”(hj­h²hh³Nh´Nubj½)�”}”(hŒ ``aggr_us``”h]”hŒaggr_us”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj­ubhŒ), and update interval (”…”�”}”(hj­h²hh³Nh´Nubj½)�”}”(hŒ ``update_us``”h]”hŒ update_us”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj­ubhŒc) exist. You can set and get the values in micro-seconds by writing to and reading from the files.”…”�”}”(hj­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KòhjFh²hubhÞ)�”}”(hX Under ``nr_regions`` directory, two files for the lower-bound and upper-bound of DAMON's monitoring regions (``min`` and ``max``, respectively), which controls the monitoring overhead, exist. You can set and get the values by writing to and reading from the files.”h]”(hŒUnder ”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ``nr_regions``”h]”hŒ nr_regions”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒ[ directory, two files for the lower-bound and upper-bound of DAMON’s monitoring regions (”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ``min``”h]”hŒmin”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒ and ”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ``max``”h]”hŒmax”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒ‰, respectively), which controls the monitoring overhead, exist. You can set and get the values by writing to and reading from the files.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K÷hjFh²hubhÞ)�”}”(hŒ�For more details about the intervals and monitoring regions range, please refer to the Design document (:doc:`/mm/damon/design`).”h]”(hŒhFor more details about the intervals and monitoring regions range, please refer to the Design document (”…”�”}”(hjGh²hh³Nh´Nubh)�”}”(hŒ:doc:`/mm/damon/design`”h]”j)�”}”(hjQh]”hŒ/mm/damon/design”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-doc”eh"]”h$]”h&]”uh1jhjOubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j]Œreftype”Œdoc”Œ refexplicit”‰Œrefwarn”ˆj3Œ/mm/damon/design”uh1hh³hÇh´KühjGubhŒ).”…”�”}”(hjGh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KühjFh²hubjt)�”}”(hŒ0.. _damon_usage_sysfs_monitoring_intervals_goal:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œ+damon-usage-sysfs-monitoring-intervals-goal”uh1jsh´KÿhjFh²hh³hÇubeh}”(h]”(Œcontexts-n-monitoring-attrs”j:eh ]”h"]”(Œcontexts//monitoring_attrs/”Œsysfs_monitoring_attrs”eh$]”h&]”uh1hÈhj£h²hh³hÇh´KëjŸ}”jŠj0sj¡}”j:j0subhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ7contexts//monitoring_attrs/intervals/intervals_goal/”h]”hŒ7contexts//monitoring_attrs/intervals/intervals_goal/”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj�h²hh³hÇh´MubhÞ)�”}”(hX‰Under the ``intervals`` directory, one directory for automated tuning of ``sample_us`` and ``aggr_us``, namely ``intervals_goal`` directory also exists. Under the directory, four files for the auto-tuning control, namely ``access_bp``, ``aggrs``, ``min_sample_us`` and ``max_sample_us`` exist. Please refer to the :ref:`design document of the feature ` for the internal of the tuning mechanism. Reading and writing the four files under ``intervals_goal`` directory shows and updates the tuning parameters that described in the :ref:`design doc ` with the same names. The tuning starts with the user-set ``sample_us`` and ``aggr_us``. The tuning-applied current values of the two intervals can be read from the ``sample_us`` and ``aggr_us`` files after writing ``update_tuned_intervals`` to the ``state`` file.”h]”(hŒ Under the ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ ``intervals``”h]”hŒ intervals”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ2 directory, one directory for automated tuning of ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ ``sample_us``”h]”hŒ sample_us”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ and ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ ``aggr_us``”h]”hŒaggr_us”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ , namely ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ``intervals_goal``”h]”hŒintervals_goal”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ\ directory also exists. Under the directory, four files for the auto-tuning control, namely ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ ``access_bp``”h]”hŒ access_bp”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ, ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ ``aggrs``”h]”hŒaggrs”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ, ”…”�”}”hj sbj½)�”}”(hŒ``min_sample_us``”h]”hŒ min_sample_us”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ and ”…”�”}”hj sbj½)�”}”(hŒ``max_sample_us``”h]”hŒ max_sample_us”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ exist. Please refer to the ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒT:ref:`design document of the feature `”h]”j)�”}”(hj:h]”hŒdesign document of the feature”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj8ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jFŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ,damon_design_monitoring_intervals_autotuning”uh1hh³hÇh´Mhj ubhŒU for the internal of the tuning mechanism. Reading and writing the four files under ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ``intervals_goal``”h]”hŒintervals_goal”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒI directory shows and updates the tuning parameters that described in the ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ@:ref:`design doc `”h]”j)�”}”(hjph]”hŒ design doc”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjnubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j|Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ,damon_design_monitoring_intervals_autotuning”uh1hh³hÇh´Mhj ubhŒ; with the same names. The tuning starts with the user-set ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ ``sample_us``”h]”hŒ sample_us”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ and ”…”�”}”hj sbj½)�”}”(hŒ ``aggr_us``”h]”hŒaggr_us”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒO. The tuning-applied current values of the two intervals can be read from the ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ ``sample_us``”h]”hŒ sample_us”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ and ”…”�”}”hj sbj½)�”}”(hŒ ``aggr_us``”h]”hŒaggr_us”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ files after writing ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ``update_tuned_intervals``”h]”hŒupdate_tuned_intervals”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ to the ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ ``state``”h]”hŒstate”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ file.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj�h²hubjt)�”}”(hŒ.. _damon_usage_sysfs_probes:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œdamon-usage-sysfs-probes”uh1jsh´Mhj�h²hh³hÇubeh}”(h]”(Œ4contexts-n-monitoring-attrs-intervals-intervals-goal”jƒeh ]”h"]”(Œ7contexts//monitoring_attrs/intervals/intervals_goal/”Œ+damon_usage_sysfs_monitoring_intervals_goal”eh$]”h&]”uh1hÈhj£h²hh³hÇh´MjŸ}”jjysj¡}”jƒjysubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ%contexts//monitoring_attrs/probes/”h]”hŒ%contexts//monitoring_attrs/probes/”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´MubhÞ)�”}”(hŒjA directory for registering :ref:`data attributes monitoring ` probes.”h]”(hŒA directory for registering ”…”�”}”(hj+h²hh³Nh´Nubh)�”}”(hŒF:ref:`data attributes monitoring `”h]”j)�”}”(hj5h]”hŒdata attributes monitoring”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj3ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jAŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ"damon_design_data_attrs_monitoring”uh1hh³hÇh´Mhj+ubhŒ probes.”…”�”}”(hj+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjh²hubhÞ)�”}”(hŒÚIn the beginning, this directory has only one file, ``nr_probes``. Writing a number (``N``) to the file creates the number of child directories named ``0`` to ``N-1``. Each directory represents each monitoring probe.”h]”(hŒ4In the beginning, this directory has only one file, ”…”�”}”(hj]h²hh³Nh´Nubj½)�”}”(hŒ ``nr_probes``”h]”hŒ nr_probes”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj]ubhŒ. Writing a number (”…”�”}”(hj]h²•hh³Nh´Nubj½)�”}”(hŒ``N``”h]”hŒN”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj]ubhŒ<) to the file creates the number of child directories named ”…”�”}”(hj]h²hh³Nh´Nubj½)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj]ubhŒ to ”…”�”}”(hj]h²hh³Nh´Nubj½)�”}”(hŒ``N-1``”h]”hŒN-1”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj]ubhŒ3. Each directory represents each monitoring probe.”…”�”}”(hj]h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjh²hubhÞ)�”}”(hŒ»In each probe directory, one directory, ``filters`` exists. The directory contains files for installing filters for the probe, that is used to determine the data attribute for the probe.”h]”(hŒ(In each probe directory, one directory, ”…”�”}”(hj³h²hh³Nh´Nubj½)�”}”(hŒ ``filters``”h]”hŒfilters”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj³ubhŒˆ exists. The directory contains files for installing filters for the probe, that is used to determine the data attribute for the probe.”…”�”}”(hj³h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjh²hubhÞ)�”}”(hŒÙEach probe directory also contains ``weight`` file. Reading from and writing to the file gets and sets the :ref:`attributes-only monitoring ` weight for the attribute of the probe.”h]”(hŒ#Each probe directory also contains ”…”�”}”(hjÓh²hh³Nh´Nubj½)�”}”(hŒ ``weight``”h]”hŒweight”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÓubhŒ? file. Reading from and writing to the file gets and sets the ”…”�”}”(hjÓh²hh³Nh´Nubh)�”}”(hŒF:ref:`attributes-only monitoring `”h]”j)�”}”(hjïh]”hŒattributes-only monitoring”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjíubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jûŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ"damon_design_attrs_only_monitoring”uh1hh³hÇh´M"hjÓubhŒ' weight for the attribute of the probe.”…”�”}”(hjÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M"hjh²hubhÞ)�”}”(hX˜In the beginning, ``filters`` directory has only one file, ``nr_filters``. Writing a number (``N``) to the file creates the number of child directories named ``0`` to ``N-1``. Each directory represents each filter and works in a way similar to that for :ref:`DAMOS filter `. When the filter ``type`` is ``memcg``, ``path`` file acts as ``memcg_path`` for :ref:`DAMOS filter `.”h]”(hŒIn the beginning, ”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ ``filters``”h]”hŒfilters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒ directory has only one file, ”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ``nr_filters``”h]”hŒ nr_filters”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒ. Writing a number (”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ``N``”h]”hŒN”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒ<) to the file creates the number of child directories named ”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒ to ”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ``N-1``”h]”hŒN-1”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒP. Each directory represents each filter and works in a way similar to that for ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ#:ref:`DAMOS filter `”h]”j)�”}”(hj{h]”hŒ DAMOS filter”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjyubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j‡Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ sysfs_filters”uh1hh³hÇh´M&hjubhŒ. When the filter ”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ``type``”h]”hŒtype”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒ is ”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ ``memcg``”h]”hŒmemcg”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒ, ”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ``path``”h]”hŒpath”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒ file acts as ”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ``memcg_path``”h]”hŒ memcg_path”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒ for ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ#:ref:`DAMOS filter `”h]”j)�”}”(hjçh]”hŒ DAMOS filter”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjåubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jóŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ sysfs_filters”uh1hh³hÇh´M&hjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M&hjh²hubjt)�”}”(hŒ.. _sysfs_targets:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œ sysfs-targets”uh1jsh´M-hjh²hh³hÇubeh}”(h]”(Œ"contexts-n-monitoring-attrs-probes”jeh ]”h"]”(Œ%contexts//monitoring_attrs/probes/”Œdamon_usage_sysfs_probes”eh$]”h&]”uh1hÈhj£h²hh³hÇh´MjŸ}”j jsj¡}”jjsubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒcontexts//targets/”h]”hŒcontexts//targets/”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj%h²hh³hÇh´M0ubhÞ)�”}”(hŒÜIn the beginning, this directory has only one file, ``nr_targets``. Writing a number (``N``) to the file creates the number of child directories named ``0`` to ``N-1``. Each directory represents each monitoring target.”h]”(hŒ4In the beginning, this directory has only one file, ”…”�”}”(hj6h²hh³Nh´Nubj½)�”}”(hŒ``nr_targets``”h]”hŒ nr_targets”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj6ubhŒ. Writing a number (”…”�”}”(hj6h²hh³Nh´Nubj½)�”}”(hŒ``N``”h]”hŒN”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj6ubhŒ<) to the file creates the number of child directories named ”…”�”}”(hj6h²hh³Nh´Nubj½)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj6ubhŒ to ”…”�”}”(hj6h²hh³Nh´Nubj½)�”}”(hŒ``N-1``”h]”hŒN-1”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj6ubhŒ4. Each directory represents each monitoring target.”…”�”}”(hj6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M2hj%h²hubjt)�”}”(hŒ.. _sysfs_target:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œ sysfs-target”uh1jsh´M6hj%h²hh³hÇubeh}”(h]”(Œcontexts-n-targets”jeh ]”h"]”(Œcontexts//targets/”Œ sysfs_targets”eh$]”h&]”uh1hÈhj£h²hh³hÇh´M0jŸ}”j�jsj¡}”jjsubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ targets//”h]”hŒ targets//”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¢h²hh³hÇh´M9ubhÞ)�”}”(hŒsIn each target directory, two files (``pid_target`` and ``obsolete_target``) and one directory (``regions``) exist.”h]”(hŒ%In each target directory, two files (”…”�”}”(hj³h²hh³Nh´Nubj½)�”}”(hŒ``pid_target``”h]”hŒ pid_target”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj³ubhŒ and ”…”�”}”(hj³h²hh³Nh´Nubj½)�”}”(hŒ``obsolete_target``”h]”hŒobsolete_target”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj³ubhŒ) and one directory (”…”�”}”(hj³h²hh³Nh´Nubj½)�”}”(hŒ ``regions``”h]”hŒregions”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj³ubhŒ) exist.”…”�”}”(hj³h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M;hj¢h²hubhÞ)�”}”(hŒ¿If you wrote ``vaddr`` to the ``contexts//operations``, each target should be a process. You can specify the process to DAMON by writing the pid of the process to the ``pid_target`` file.”h]”(hŒ If you wrote ”…”�”}”(hj÷h²hh³Nh´Nubj½)�”}”(hŒ ``vaddr``”h]”hŒvaddr”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj÷ubhŒ to the ”…”�”}”(hj÷h²hh³Nh´Nubj½)�”}”(hŒ``contexts//operations``”h]”hŒcontexts//operations”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj÷ubhŒr, each target should be a process. You can specify the process to DAMON by writing the pid of the process to the ”…”�”}”(hj÷h²hh³Nh´Nubj½)�”}”(hŒ``pid_target``”h]”hŒ pid_target”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj÷ubhŒ file.”…”�”}”(hj÷h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M>hj¢h²hubhÞ)�”}”(hX„Users can selectively remove targets in the middle of the targets array by writing non-zero value to ``obsolete_target`` file and committing it (writing ``commit`` to ``state`` file). DAMON will remove the matching targets from its internal targets array. Users are responsible to construct target directories again, so that those correctly represent the changed internal targets array.”h]”(hŒeUsers can selectively remove targets in the middle of the targets array by writing non-zero value to ”…”�”}”(hj;h²hh³Nh´Nubj½)�”}”(hŒ``obsolete_target``”h]”hŒobsolete_target”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj;ubhŒ! file and committing it (writing ”…”�”}”(hj;h²hh³Nh´Nubj½)�”}”(hŒ ``commit``”h]”hŒcommit”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj;ubhŒ to ”…”�”}”(hj;h²hh³Nh´Nubj½)�”}”(hŒ ``state``”h]”hŒstate”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj;ubhŒÔ file). DAMON will remove the matching targets from its internal targets array. Users are responsible to construct target directories again, so that those correctly represent the changed internal targets array.”…”�”}”(hj;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MBhj¢h²hubjt)�”}”(hŒ.. _sysfs_regions:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œ sysfs-regions”uh1jsh´MIhj¢h²hh³hÇubeh}”(h]”(Œ targets-n”j–eh ]”h"]”(Œ targets//”Œ sysfs_target”eh$]”h&]”uh1hÈhj£h²hh³hÇh´M9jŸ}”j�jŒsj¡}”j–jŒsubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒtargets//regions”h]”hŒtargets//regions”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj•h²hh³hÇh´MLubhÞ)�”}”(hXvIn case of ``fvaddr`` or ``paddr`` monitoring operations sets, users are required to set the monitoring target address ranges. In case of ``vaddr`` operations set, it is not mandatory, but users can optionally set the initial monitoring region to specific address ranges. Please refer to the :ref:`design ` for more details.”h]”(hŒ In case of ”…”�”}”(hj¦h²hh³Nh´Nubj½)�”}”(hŒ ``fvaddr``”h]”hŒfvaddr”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¦ubhŒ or ”…”�”}”(hj¦h²hh³Nh´Nubj½)�”}”(hŒ ``paddr``”h]”hŒpaddr”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¦ubhŒi monitoring operations sets, users are required to set the monitoring target address ranges. In case of ”…”�”}”(hj¦h²hh³Nh´Nubj½)�”}”(hŒ ``vaddr``”h]”hŒvaddr”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¦ubhŒ’ operations set, it is not mandatory, but users can optionally set the initial monitoring region to specific address ranges. Please refer to the ”…”�”}”(hj¦h²hh³Nh´Nubh)�”}”(hŒ>:ref:`design `”h]”j)�”}”(hjæh]”hŒdesign”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjäubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jòŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ.damon_design_vaddr_target_regions_construction”uh1hh³hÇh´MNhj¦ubhŒ for more details.”…”�”}”(hj¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MNhj•h²hubhÞ)�”}”(hŒ˜For such cases, users can explicitly set the initial monitoring target regions as they want, by writing proper values to the files under this directory.”h]”hŒ˜For such cases, users can explicitly set the initial monitoring target regions as they want, by writing proper values to the files under this directory.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MThj•h²hubhÞ)�”}”(hŒëIn the beginning, this directory has only one file, ``nr_regions``. Writing a number (``N``) to the file creates the number of child directories named ``0`` to ``N-1``. Each directory represents each initial monitoring target region.”h]”(hŒ4In the beginning, this directory has only one file, ”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ``nr_regions``”h]”hŒ nr_regions”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒ. Writing a number (”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ``N``”h]”hŒN”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒ<) to the file creates the number of child directories named ”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒ to ”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ``N-1``”h]”hŒN-1”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒC. Each directory represents each initial monitoring target region.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MWhj•h²hubhÞ)�”}”(hX If ``nr_regions`` is zero when committing new DAMON parameters online (writing ``commit`` to ``state`` file of :ref:`kdamond `), the commit logic ignores the target regions. In other words, the current monitoring results for the target are preserved.”h]”(hŒIf ”…”�”}”(hjrh²hh³Nh´Nubj½)�”}”(hŒ``nr_regions``”h]”hŒ nr_regions”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjrubhŒ> is zero when committing new DAMON parameters online (writing ”…”�”}”(hjrh²hh³Nh´Nubj½)�”}”(hŒ ``commit``”h]”hŒcommit”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjrubhŒ to ”…”�”}”(hjrh²hh³Nh´Nubj½)�”}”(hŒ ``state``”h]”hŒstate”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjrubhŒ file of ”…”�”}”(hjrh²hh³Nh´Nubh)�”}”(hŒ:ref:`kdamond `”h]”j)�”}”(hj²h]”hŒkdamond”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj°ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j¾Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ sysfs_kdamond”uh1hh³hÇh´M[hjrubhŒ}), the commit logic ignores the target regions. In other words, the current monitoring results for the target are preserved.”…”�”}”(hjrh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M[hj•h²hubjt)�”}”(hŒ.. _sysfs_region:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œ sysfs-region”uh1jsh´M`hj•h²hh³hÇubeh}”(h]”(Œtargets-n-regions”j‰eh ]”h"]”(Œtargets//regions”Œ sysfs_regions”eh$]”h&]”uh1hÈhj£h²hh³hÇh´MLjŸ}”jëjsj¡}”j‰jsubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ regions//”h]”hŒ regions//”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjðh²hh³hÇh´McubhÞ)�”}”(hŒÛIn each region directory, you will find two files (``start`` and ``end``). You can set and get the start and end addresses of the initial monitoring target region by writing to and reading from the files, respectively.”h]”(hŒ3In each region directory, you will find two files (”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ ``start``”h]”hŒstart”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒ and ”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ``end``”h]”hŒend”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒ“). You can set and get the start and end addresses of the initial monitoring target region by writing to and reading from the files, respectively.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mehjðh²hubhÞ)�”}”(hŒ‡Each region should not overlap with others. ``end`` of directory ``N`` should be equal or smaller than ``start`` of directory ``N+1``.”h]”(hŒ-Each region should not overlap with others. ”…”�”}”(hj3h²hh³Nh´Nubj½)�”}”(hŒ``end``”h]”hŒend”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj3ubhŒ of directory ”…”�”}”(hj3h²hh³Nh´Nubj½)�”}”(hŒ``N``”h]”hŒN”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj3ubhŒ! should be equal or smaller than ”…”�”}”(hj3h²hh³Nh´Nubj½)�”}”(hŒ ``start``”h]”hŒstart”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj3ubhŒ of directory ”…”�”}”hj3sbj½)�”}”(hŒ``N+1``”h]”hŒN+1”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj3ubhŒ.”…”�”}”(hj3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mihjðh²hubjt)�”}”(hŒ.. _sysfs_schemes:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œ sysfs-schemes”uh1jsh´Mlhjðh²hh³hÇubeh}”(h]”(Œ regions-n”jäeh ]”h"]”(Œ regions//”Œ sysfs_region”eh$]”h&]”uh1hÈhj£h²hh³hÇh´McjŸ}”jšjÚsj¡}”jäjÚsubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒcontexts//schemes/”h]”hŒcontexts//schemes/”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjŸh²hh³hÇh´MoubhÞ)�”}”(hŒ²The directory for DAMON-based Operation Schemes (:ref:`DAMOS `). Users can get and set the schemes by reading from and writing to files under this directory.”h]”(hŒ1The directory for DAMON-based Operation Schemes (”…”�”}”(hj°h²hh³Nh´Nubh)�”}”(hŒ!:ref:`DAMOS `”h]”j)�”}”(hjºh]”hŒDAMOS”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj¸ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jÆŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œdamon_design_damos”uh1hh³hÇh´Mqhj°ubhŒ`). Users can get and set the schemes by reading from and writing to files under this directory.”…”�”}”(hj°h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MqhjŸh²hubhÞ)�”}”(hŒçIn the beginning, this directory has only one file, ``nr_schemes``. Writing a number (``N``) to the file creates the number of child directories named ``0`` to ``N-1``. Each directory represents each DAMON-based operation scheme.”h]”(hŒ4In the beginning, this directory has only one file, ”…”�”}”(hjâh²hh³Nh´Nubj½)�”}”(hŒ``nr_schemes``”h]”hŒ nr_schemes”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjâubhŒ. Writing a number (”…”�”}”(hjâh²hh³Nh´Nubj½)�”}”(hŒ``N``”h]”hŒN”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjâubhŒ<) to the file creates the number of child directories named ”…”�”}”(hjâh²hh³Nh´Nubj½)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjâubhŒ to ”…”�”}”(hjâh²hh³Nh´Nubj½)�”}”(hŒ``N-1``”h]”hŒN-1”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjâubhŒ?. Each directory represents each DAMON-based operation scheme.”…”�”}”(hjâh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MuhjŸh²hubjt)�”}”(hŒ.. _sysfs_scheme:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œ sysfs-scheme”uh1jsh´MyhjŸh²hh³hÇubeh}”(h]”(Œcontexts-n-schemes”j“eh ]”h"]”(Œcontexts//schemes/”Œ sysfs_schemes”eh$]”h&]”uh1hÈhj£h²hh³hÇh´MojŸ}”jIj‰sj¡}”j“j‰subhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ schemes//”h]”hŒ schemes//”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjNh²hh³hÇh´M|ubhÞ)�”}”(hXIn each scheme directory, nine directories (``access_pattern``, ``quotas``, ``watermarks``, ``core_filters``, ``ops_filters``, ``filters``, ``dests``, ``stats``, and ``tried_regions``) and three files (``action``, ``target_nid`` and ``apply_interval_us``) exist.”h]”(hŒ,In each scheme directory, nine directories (”…”�”}”(hj_h²hh³Nh´Nubj½)�”}”(hŒ``access_pattern``”h]”hŒaccess_pattern”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj_ubhŒ, ”…”�”}”(hj_h²hh³Nh´Nubj½)�”}”(hŒ ``quotas``”h]”hŒquotas”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj_ubhŒ, ”…”�”}”(hj_h²hh³Nh´Nubj½)�”}”(hŒ``watermarks``”h]”hŒ watermarks”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj_ubhŒ, ”…”�”}”hj_sbj½)�”}”(hŒ``core_filters``”h]”hŒ core_filters”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj_ubhŒ, ”…”�”}”hj_sbj½)�”}”(hŒ``ops_filters``”h]”hŒ ops_filters”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj_ubhŒ, ”…”�”}”hj_sbj½)�”}”(hŒ ``filters``”h]”hŒfilters”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj_ubhŒ, ”…”�”}”hj_sbj½)�”}”(hŒ ``dests``”h]”hŒdests”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj_ubhŒ, ”…”�”}”hj_sbj½)�”}”(hŒ ``stats``”h]”hŒstats”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj_ubhŒ, and ”…”�”}”(hj_h²hh³Nh´Nubj½)�”}”(hŒ``tried_regions``”h]”hŒ tried_regions”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj_ubhŒ) and three files (”…”�”}”(hj_h²hh³Nh´Nubj½)�”}”(hŒ ``action``”h]”hŒaction”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj_ubhŒ, ”…”�”}”hj_sbj½)�”}”(hŒ``target_nid``”h]”hŒ target_nid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj_ubhŒ and ”…”�”}”(hj_h²hh³Nh´Nubj½)�”}”(hŒ``apply_interval_us``”h]”hŒapply_interval_us”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj_ubhŒ) exist.”…”�”}”(hj_h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M~hjNh²hubhÞ)�”}”(hXThe ``action`` file is for setting and getting the scheme's :ref:`action `. The keywords that can be written to and read from the file and their meaning are same to those of the list on :ref:`design doc `.”h]”(hŒThe ”…”�”}”(hjEh²hh³Nh´Nubj½)�”}”(hŒ ``action``”h]”hŒaction”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjEubhŒ0 file is for setting and getting the scheme’s ”…”�”}”(hjEh²hh³Nh´Nubh)�”}”(hŒ):ref:`action `”h]”j)�”}”(hjah]”hŒaction”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj_ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jmŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œdamon_design_damos_action”uh1hh³hÇh´MƒhjEubhŒq. The keywords that can be written to and read from the file and their meaning are same to those of the list on ”…”�”}”(hjEh²hh³Nh´Nubh)�”}”(hŒ-:ref:`design doc `”h]”j)�”}”(hj…h]”hŒ design doc”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjƒubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j‘Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œdamon_design_damos_action”uh1hh³hÇh´MƒhjEubhŒ.”…”�”}”(hjEh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MƒhjNh²hubhÞ)�”}”(hŒ�The ``target_nid`` file is for setting the migration target node, which is only meaningful when the ``action`` is either ``migrate_hot`` or ``migrate_cold``.”h]”(hŒThe ”…”�”}”(hj­h²hh³Nh´Nubj½)�”}”(hŒ``target_nid``”h]”hŒ target_nid”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj­ubhŒR file is for setting the migration target node, which is only meaningful when the ”…”�”}”(hj­h²hh³Nh´Nubj½)�”}”(hŒ ``action``”h]”hŒaction”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj­ubhŒ is either ”…”�”}”(hj­h²hh³Nh´Nubj½)�”}”(hŒ``migrate_hot``”h]”hŒ migrate_hot”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj­ubhŒ or ”…”�”}”(hj­h²hh³Nh´Nubj½)�”}”(hŒ``migrate_cold``”h]”hŒ migrate_cold”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj­ubhŒ.”…”�”}”(hj­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MˆhjNh²hubhÞ)�”}”(hŒ‚The ``apply_interval_us`` file is for setting and getting the scheme's :ref:`apply_interval ` in microseconds.”h]”(hŒThe ”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ``apply_interval_us``”h]”hŒapply_interval_us”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒ0 file is for setting and getting the scheme’s ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ*:ref:`apply_interval `”h]”j)�”}”(hjh]”hŒapply_interval”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j+Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œdamon_design_damos”uh1hh³hÇh´MŒhjubhŒ in microseconds.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MŒhjNh²hubjt)�”}”(hŒ.. _sysfs_access_pattern:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œsysfs-access-pattern”uh1jsh´M�hjNh²hh³hÇubeh}”(h]”(Œ schemes-n”jBeh ]”h"]”(Œ schemes//”Œ sysfs_scheme”eh$]”h&]”uh1hÈhj£h²hh³hÇh´M|jŸ}”jXj8sj¡}”jBj8subhÉ)�”}”(hhh]”(hÎ)�”}”(hŒschemes//access_pattern/”h]”hŒschemes//access_pattern/”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj]h²hh³hÇh´M’ubhÞ)�”}”(hŒ�The directory for the target access :ref:`pattern ` of the given DAMON-based operation scheme.”h]”(hŒ$The directory for the target access ”…”�”}”(hjnh²hh³Nh´Nubh)�”}”(hŒ2:ref:`pattern `”h]”j)�”}”(hjxh]”hŒpattern”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjvubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j„Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ!damon_design_damos_access_pattern”uh1hh³hÇh´M”hjnubhŒ+ of the given DAMON-based operation scheme.”…”�”}”(hjnh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M”hj]h²hubhÞ)�”}”(hX’Under the ``access_pattern`` directory, three directories (``sz``, ``nr_accesses``, and ``age``) each having two files (``min`` and ``max``) exist. You can set and get the access pattern for the given scheme by writing to and reading from the ``min`` and ``max`` files under ``sz``, ``nr_accesses``, and ``age`` directories, respectively. Note that the ``min`` and the ``max`` form a closed interval.”h]”(hŒ Under the ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ``access_pattern``”h]”hŒaccess_pattern”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ directory, three directories (”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ``sz``”h]”hŒsz”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ, ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ``nr_accesses``”h]”hŒ nr_accesses”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ, and ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ``age``”h]”hŒage”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ) each having two files (”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ``min``”h]”hŒmin”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ and ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ``max``”h]”hŒmax”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒi) exist. You can set and get the access pattern for the given scheme by writing to and reading from the ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ``min``”h]”hŒmin”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ and ”…”�”}”hj sbj½)�”}”(hŒ``max``”h]”hŒmax”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ files under ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ``sz``”h]”hŒsz”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ, ”…”�”}”hj sbj½)�”}”(hŒ``nr_accesses``”h]”hŒ nr_accesses”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ, and ”…”�”}”hj sbj½)�”}”(hŒ``age``”h]”hŒage”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ+ directories, respectively. Note that the ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ``min``”h]”hŒmin”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ and the ”…”�”}”(hj h²hh³Nh´Nubj½)�”}”(hŒ``max``”h]”hŒmax”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubhŒ form a closed interval.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M—hj]h²hubjt)�”}”(hŒ.. _sysfs_quotas:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œ sysfs-quotas”uh1jsh´Mžhj]h²hh³hÇubeh}”(h]”(Œschemes-n-access-pattern”jQeh ]”h"]”(Œschemes//access_pattern/”Œsysfs_access_pattern”eh$]”h&]”uh1hÈhj£h²hh³hÇh´M’jŸ}”j©jGsj¡}”jQjGsubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒschemes//quotas/”h]”hŒschemes//quotas/”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj®h²hh³hÇh´M¡ubhÞ)�”}”(hŒjThe directory for the :ref:`quotas ` of the given DAMON-based operation scheme.”h]”(hŒThe directory for the ”…”�”}”(hj¿h²hh³Nh´Nubh)�”}”(hŒ):ref:`quotas `”h]”j)�”}”(hjÉh]”hŒquotas”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjÇubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jÕŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œdamon_design_damos_quotas”uh1hh³hÇh´M£hj¿ubhŒ+ of the given DAMON-based operation scheme.”…”�”}”(hj¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M£hj®h²hubhÞ)�”}”(hŒÝUnder ``quotas`` directory, seven files (``ms``, ``bytes``, ``reset_interval_ms``, ``effective_bytes``, ``goal_tuner``, ``fail_charge_num`` and ``fail_charge_denom``) and two directories (``weights`` and ``goals``) exist.”h]”(hŒUnder ”…”�”}”(hjñh²hh³Nh´Nubj½)�”}”(hŒ ``quotas``”h]”hŒquotas”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjñubhŒ directory, seven files (”…”�”}”(hjñh²hh³Nh´Nubj½)�”}”(hŒ``ms``”h]”hŒms”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjñubhŒ, ”…”�”}”(hjñh²hh³Nh´Nubj½)�”}”(hŒ ``bytes``”h]”hŒbytes”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjñubhŒ, ”…”�”}”(hjñh²hh³Nh´Nubj½)�”}”(hŒ``reset_interval_ms``”h]”hŒreset_interval_ms”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjñubhŒ, ”…”�”}”hjñsbj½)�”}”(hŒ``effective_bytes``”h]”hŒeffective_bytes”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjñubhŒ, ”…”�”}”hjñsbj½)�”}”(hŒ``goal_tuner``”h]”hŒ goal_tuner”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjñubhŒ, ”…”�”}”hjñsbj½)�”}”(hŒ``fail_charge_num``”h]”hŒfail_charge_num”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjñubhŒ and ”…”�”}”(hjñh²hh³Nh´Nubj½)�”}”(hŒ``fail_charge_denom``”h]”hŒfail_charge_denom”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjñubhŒ) and two directories (”…”�”}”(hjñh²hh³Nh´Nubj½)�”}”(hŒ ``weights``”h]”hŒweights”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjñubhŒ and ”…”�”}”(hjñh²hh³Nh´Nubj½)�”}”(hŒ ``goals``”h]”hŒgoals”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjñubhŒ) exist.”…”�”}”(hjñh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¦hj®h²hubhÞ)�”}”(hX!You can set the ``time quota`` in milliseconds, ``size quota`` in bytes, and ``reset interval`` in milliseconds by writing the values to the three files, respectively. Then, DAMON tries to use only up to ``time quota`` milliseconds for applying the ``action`` to memory regions of the ``access_pattern``, and to apply the action to only up to ``bytes`` bytes of memory regions within the ``reset_interval_ms``. Setting both ``ms`` and ``bytes`` zero disables the quota limits unless at least one :ref:`goal ` is set.”h]”(hŒYou can set the ”…”�”}”(hj³h²hh³Nh´Nubj½)�”}”(hŒ``time quota``”h]”hŒ time quota”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj³ubhŒ in milliseconds, ”…”�”}”(hj³h²hh³Nh´Nubj½)�”}”(hŒ``size quota``”h]”hŒ size quota”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj³ubhŒ in bytes, and ”…”�”}”(hj³h²hh³Nh´Nubj½)�”}”(hŒ``reset interval``”h]”hŒreset interval”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj³ubhŒn in milliseconds by writing the values to the three files, respectively. Then, DAMON tries to use only up to ”…”�”}”(hj³h²hh³Nh´Nubj½)�”}”(hŒ``time quota``”h]”hŒ time quota”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj³ubhŒ milliseconds for applying the ”…”�”}”(hj³h²hh³Nh´Nubj½)�”}”(hŒ ``action``”h]”hŒaction”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj³ubhŒ to memory regions of the ”…”�”}”(hj³h²hh³Nh´Nubj½)�”}”(hŒ``access_pattern``”h]”hŒaccess_pattern”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj³ubhŒ(, and to apply the action to only up to ”…”�”}”(hj³h²hh³Nh´Nubj½)�”}”(hŒ ``bytes``”h]”hŒbytes”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj³ubhŒ$ bytes of memory regions within the ”…”�”}”(hj³h²hh³Nh´Nubj½)�”}”(hŒ``reset_interval_ms``”h]”hŒreset_interval_ms”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj³ubhŒ. Setting both ”…”�”}”(hj³h²hh³Nh´Nubj½)�”}”(hŒ``ms``”h]”hŒms”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj³ubhŒ and ”…”�”}”(hj³h²hh³Nh´Nubj½)�”}”(hŒ ``bytes``”h]”hŒbytes”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj³ubhŒ4 zero disables the quota limits unless at least one ”…”�”}”(hj³h²hh³Nh´Nubh)�”}”(hŒ':ref:`goal `”h]”j)�”}”(hjqh]”hŒgoal”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjoubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j}Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œsysfs_schemes_quota_goals”uh1hh³hÇh´M«hj³ubhŒ is set.”…”�”}”(hj³h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M«hj®h²hubhÞ)�”}”(hX×You can set the goal-based effective quota auto-tuning algorithm to use, by writing the algorithm name to ``goal_tuner`` file. Reading the file returns the currently selected tuner algorithm. Refer to the design documentation of :ref:`automatic quota tuning goals ` for the background design of the feature and the name of the selectable algorithms. Refer to :ref:`goals directory ` for the goals setup.”h]”(hŒjYou can set the goal-based effective quota auto-tuning algorithm to use, by writing the algorithm name to ”…”�”}”(hj™h²hh³Nh´Nubj½)�”}”(hŒ``goal_tuner``”h]”hŒ goal_tuner”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj™ubhŒo file. Reading the file returns the currently selected tuner algorithm. Refer to the design documentation of ”…”�”}”(hj™h²hh³Nh´Nubh)�”}”(hŒK:ref:`automatic quota tuning goals `”h]”j)�”}”(hjµh]”hŒautomatic quota tuning goals”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj³ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jÁŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ%damon_design_damos_quotas_auto_tuning”uh1hh³hÇh´M´hj™ubhŒ^ for the background design of the feature and the name of the selectable algorithms. Refer to ”…”�”}”(hj™h²hh³Nh´Nubh)�”}”(hŒ2:ref:`goals directory `”h]”j)�”}”(hjÙh]”hŒgoals directory”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj×ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jåŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œsysfs_schemes_quota_goals”uh1hh³hÇh´M´hj™ubhŒ for the goals setup.”…”�”}”(hj™h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M´hj®h²hubhÞ)�”}”(hXkYou can set the action-failed memory quota charging ratio by writing the numerator and the denominator for the ratio to ``fail_charge_num`` and ``fail_charge_denom`` files, respectively. Reading those files will return the current set values. Refer to :ref:`design ` for more details of the ratio feature.”h]”(hŒxYou can set the action-failed memory quota charging ratio by writing the numerator and the denominator for the ratio to ”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ``fail_charge_num``”h]”hŒfail_charge_num”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒ and ”…”�”}”(hjh²hh³Nh´Nubj½)�”}”(hŒ``fail_charge_denom``”h]”hŒfail_charge_denom”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubhŒY files, respectively. Reading those files will return the current set values. Refer to ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒF:ref:`design `”h]”j)�”}”(hj/h]”hŒdesign”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj-ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j;Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ6damon_design_damos_quotas_failed_memory_charging_ratio”uh1hh³hÇh´M¼hjubhŒ' for more details of the ratio feature.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¼hj®h²hubhÞ)�”}”(hX>The time quota is internally transformed to a size quota. Between the transformed size quota and user-specified size quota, smaller one is applied. Based on the user-specified :ref:`goal `, the effective size quota is further adjusted. Reading ``effective_bytes`` returns the current effective size quota. The file is not updated in real time, so users should ask DAMON sysfs interface to update the content of the file for the stats by writing a special keyword, ``update_schemes_effective_quotas`` to the relevant ``kdamonds//state`` file.”h]”(hŒ±The time quota is internally transformed to a size quota. Between the transformed size quota and user-specified size quota, smaller one is applied. Based on the user-specified ”…”�”}”(hjWh²hh³Nh´Nubh)�”}”(hŒ':ref:`goal `”h]”j)�”}”(hjah]”hŒgoal”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj_ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jmŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œsysfs_schemes_quota_goals”uh1hh³hÇh´MÃhjWubhŒ9, the effective size quota is further adjusted. Reading ”…”�”}”(hjWh²hh³Nh´Nubj½)�”}”(hŒ``effective_bytes``”h]”hŒeffective_bytes”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjWubhŒÊ returns the current effective size quota. The file is not updated in real time, so users should ask DAMON sysfs interface to update the content of the file for the stats by writing a special keyword, ”…”�”}”(hjWh²hh³Nh´Nubj½)�”}”(hŒ#``update_schemes_effective_quotas``”h]”hŒupdate_schemes_effective_quotas”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjWubhŒ to the relevant ”…”�”}”(hjWh²hh³Nh´Nubj½)�”}”(hŒ``kdamonds//state``”h]”hŒkdamonds//state”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjWubhŒ file.”…”�”}”(hjWh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÃhj®h²hubhÞ)�”}”(hXGUnder ``weights`` directory, three files (``sz_permil``, ``nr_accesses_permil``, and ``age_permil``) exist. You can set the :ref:`prioritization weights ` for size, access frequency, and age in per-thousand unit by writing the values to the three files under the ``weights`` directory.”h]”(hŒUnder ”…”�”}”(hj¿h²hh³Nh´Nubj½)�”}”(hŒ ``weights``”h]”hŒweights”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¿ubhŒ directory, three files (”…”�”}”(hj¿h²hh³Nh´Nubj½)�”}”(hŒ ``sz_permil``”h]”hŒ sz_permil”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¿ubhŒ, ”…”�”}”(hj¿h²hh³Nh´Nubj½)�”}”(hŒ``nr_accesses_permil``”h]”hŒnr_accesses_permil”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¿ubhŒ, and ”…”�”}”(hj¿h²hh³Nh´Nubj½)�”}”(hŒ``age_permil``”h]”hŒ age_permil”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¿ubhŒ) exist. You can set the ”…”�”}”(hj¿h²hh³Nh´Nubh)�”}”(hŒH:ref:`prioritization weights `”h]”j)�”}”(hjh]”hŒprioritization weights”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ(damon_design_damos_quotas_prioritization”uh1hh³hÇh´MÌhj¿ubhŒm for size, access frequency, and age in per-thousand unit by writing the values to the three files under the ”…”�”}”(hj¿h²hh³Nh´Nubj½)�”}”(hŒ ``weights``”h]”hŒweights”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¿ubhŒ directory.”…”�”}”(hj¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÌhj®h²hubjt)�”}”(hŒ.. _sysfs_schemes_quota_goals:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œsysfs-schemes-quota-goals”uh1jsh´MÓhj®h²hh³hÇubeh}”(h]”(Œschemes-n-quotas”j¢eh ]”h"]”(Œschemes//quotas/”Œ sysfs_quotas”eh$]”h&]”uh1hÈhj£h²hh³hÇh´M¡jŸ}”j\j˜sj¡}”j¢j˜subhÉ)�”}”(hhh]”(hÎ)�”}”(hŒschemes//quotas/goals/”h]”hŒschemes//quotas/goals/”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjah²hh³hÇh´MÖubhÞ)�”}”(hŒŒThe directory for the :ref:`automatic quota tuning goals ` of the given DAMON-based operation scheme.”h]”(hŒThe directory for the ”…”�”}”(hjrh²hh³Nh´Nubh)�”}”(hŒK:ref:`automatic quota tuning goals `”h]”j)�”}”(hj|h]”hŒautomatic quota tuning goals”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjzubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jˆŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ%damon_design_damos_quotas_auto_tuning”uh1hh³hÇh´MØhjrubhŒ+ of the given DAMON-based operation scheme.”…”�”}”(hjrh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MØhjah²hubhÞ)�”}”(hXIn the beginning, this directory has only one file, ``nr_goals``. Writing a number (``N``) to the file creates the number of child directories named ``0`` to ``N-1``. Each directory represents each goal and current achievement. Among the multiple feedback, the best one is used.”h]”(hŒ4In the beginning, this directory has only one file, ”…”�”}”(hj¤h²hh³Nh´Nubj½)�”}”(hŒ ``nr_goals``”h]”hŒnr_goals”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¤ubhŒ. Writing a number (”…”�”}”(hj¤h²hh³Nh´Nubj½)�”}”(hŒ``N``”h]”hŒN”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¤ubhŒ<) to the file creates the number of child directories named ”…”�”}”(hj¤h²hh³Nh´Nubj½)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¤ubhŒ to ”…”�”}”(hj¤h²hh³Nh´Nubj½)�”}”(hŒ``N-1``”h]”hŒN-1”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¤ubhŒr. Each directory represents each goal and current achievement. Among the multiple feedback, the best one is used.”…”�”}”(hj¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÜhjah²hubhÞ)�”}”(hXrEach goal directory contains five files, namely ``target_metric``, ``target_value``, ``current_value``, ``nid``, and ``path``. Users can set and get the five parameters for the quota auto-tuning goals that specified on the :ref:`design doc ` by writing to and reading from each of the files. Because the kernel does not update ``current_value``, reading it only makes sense when ``target_metric`` is ``user_input``. Note that users should further write ``commit_schemes_quota_goals`` to the ``state`` file of the :ref:`kdamond directory ` to pass the feedback to DAMON.”h]”(hŒ0Each goal directory contains five files, namely ”…”�”}”(hjúh²hh³Nh´Nubj½)�”}”(hŒ``target_metric``”h]”hŒ target_metric”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjúubhŒ, ”…”�”}”(hjúh²hh³Nh´Nubj½)�”}”(hŒ``target_value``”h]”hŒ target_value”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjúubhŒ, ”…”�”}”(hjúh²hh³Nh´Nubj½)�”}”(hŒ``current_value``”h]”hŒ current_value”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjúubhŒ, ”…”�”}”hjúsbj½)�”}”(hŒ``nid``”h]”hŒnid”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjúubhŒ, and ”…”�”}”(hjúh²hh³Nh´Nubj½)�”}”(hŒ``path``”h]”hŒpath”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjúubhŒc. Users can set and get the five parameters for the quota auto-tuning goals that specified on the ”…”�”}”(hjúh²hh³Nh´Nubh)�”}”(hŒ9:ref:`design doc `”h]”j)�”}”(hj^h]”hŒ design doc”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj\ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jjŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ%damon_design_damos_quotas_auto_tuning”uh1hh³hÇh´MáhjúubhŒW by writing to and reading from each of the files. Because the kernel does not update ”…”�”}”(hjúh²hh³Nh´Nubj½)�”}”(hŒ``current_value``”h]”hŒ current_value”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjúubhŒ#, reading it only makes sense when ”…”�”}”(hjúh²hh³Nh´Nubj½)�”}”(hŒ``target_metric``”h]”hŒ target_metric”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjúubhŒ is ”…”�”}”(hjúh²hh³Nh´Nubj½)�”}”(hŒ``user_input``”h]”hŒ user_input”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjúubhŒ(. Note that users should further write ”…”�”}”(hjúh²hh³Nh´Nubj½)�”}”(hŒ``commit_schemes_quota_goals``”h]”hŒcommit_schemes_quota_goals”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjúubhŒ to the ”…”�”}”(hjúh²hh³Nh´Nubj½)�”}”(hŒ ``state``”h]”hŒstate”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjúubhŒ file of the ”…”�”}”(hjúh²hh³Nh´Nubh)�”}”(hŒ(:ref:`kdamond directory `”h]”j)�”}”(hjÜh]”hŒkdamond directory”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjÚubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jèŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ sysfs_kdamond”uh1hh³hÇh´MáhjúubhŒ to pass the feedback to DAMON.”…”�”}”(hjúh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Máhjah²hubjt)�”}”(hŒ.. _sysfs_watermarks:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œsysfs-watermarks”uh1jsh´Mëhjah²hh³hÇubeh}”(h]”(Œschemes-n-quotas-goals”jUeh ]”h"]”(Œschemes//quotas/goals/”Œsysfs_schemes_quota_goals”eh$]”h&]”uh1hÈhj£h²hh³hÇh´MÖjŸ}”j jKsj¡}”jUjKsubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒschemes//watermarks/”h]”hŒschemes//watermarks/”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´MîubhÞ)�”}”(hŒrThe directory for the :ref:`watermarks ` of the given DAMON-based operation scheme.”h]”(hŒThe directory for the ”…”�”}”(hj+ h²hh³Nh´Nubh)�”}”(hŒ1:ref:`watermarks `”h]”j)�”}”(hj5 h]”hŒ watermarks”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj3 ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jA Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œdamon_design_damos_watermarks”uh1hh³hÇh´Mðhj+ ubhŒ+ of the given DAMON-based operation scheme.”…”�”}”(hj+ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mðhj h²hubhÞ)�”}”(hX,Under the watermarks directory, five files (``metric``, ``interval_us``, ``high``, ``mid``, and ``low``) for setting the metric, the time interval between check of the metric, and the three watermarks exist. You can set and get the five values by writing to and reading from the files, respectively.”h]”(hŒ,Under the watermarks directory, five files (”…”�”}”(hj] h²hh³Nh´Nubj½)�”}”(hŒ ``metric``”h]”hŒmetric”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj] ubhŒ, ”…”�”}”(hj] h²hh³Nh´Nubj½)�”}”(hŒ``interval_us``”h]”hŒ interval_us”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj] ubhŒ, ”…”�”}”(hj] h²hh³Nh´Nubj½)�”}”(hŒ``high``”h]”hŒhigh”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj] ubhŒ, ”…”�”}”hj] sbj½)�”}”(hŒ``mid``”h]”hŒmid”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj] ubhŒ, and ”…”�”}”(hj] h²hh³Nh´Nubj½)�”}”(hŒ``low``”h]”hŒlow”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj] ubhŒÅ) for setting the metric, the time interval between check of the metric, and the three watermarks exist. You can set and get the five values by writing to and reading from the files, respectively.”…”�”}”(hj] h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Móhj h²hubhÞ)�”}”(hŒWKeywords and meanings of those that can be written to the ``metric`` file are as below.”h]”(hŒ:Keywords and meanings of those that can be written to the ”…”�”}”(hjÅ h²hh³Nh´Nubj½)�”}”(hŒ ``metric``”h]”hŒmetric”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÅ ubhŒ file are as below.”…”�”}”(hjÅ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Møhj h²hubhŒ block_quote”“”)�”}”(hŒX- none: Ignore the watermarks - free_mem_rate: System's free memory rate (per thousand) ”h]”hî)�”}”(hhh]”(hó)�”}”(hŒnone: Ignore the watermarks”h]”hÞ)�”}”(hjð h]”hŒnone: Ignore the watermarks”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mûhjî ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjë ubhó)�”}”(hŒ8free_mem_rate: System's free memory rate (per thousand) ”h]”hÞ)�”}”(hŒ7free_mem_rate: System's free memory rate (per thousand)”h]”hŒ9free_mem_rate: System’s free memory rate (per thousand)”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mühj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjë ubeh}”(h]”h ]”h"]”h$]”h&]”j•j–uh1híh³hÇh´Mûhjç ubah}”(h]”h ]”h"]”h$]”h&]”uh1jå h³hÇh´Mûhj h²hubhÞ)�”}”(hŒ;The ``interval_us`` should be written in microseconds unit.”h]”(hŒThe ”…”�”}”(hj)!h²hh³Nh´Nubj½)�”}”(hŒ``interval_us``”h]”hŒ interval_us”…”�”}”(hj1!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj)!ubhŒ( should be written in microseconds unit.”…”�”}”(hj)!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mþhj h²hubjt)�”}”(hŒ.. _sysfs_filters:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œ sysfs-filters”uh1jsh´Mhj h²hh³hÇubeh}”(h]”(Œschemes-n-watermarks”j eh ]”h"]”(Œschemes//watermarks/”Œsysfs_watermarks”eh$]”h&]”uh1hÈhj£h²hh³hÇh´MîjŸ}”jZ!j sj¡}”j j subhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ#schemes//{core\_,ops\_,}filters/”h]”hŒ#schemes//{core_,ops_,}filters/”…”�”}”(hjb!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj_!h²hh³hÇh´MubhÞ)�”}”(hŒfDirectories for :ref:`filters ` of the given DAMON-based operation scheme.”h]”(hŒDirectories for ”…”�”}”(hjp!h²hh³Nh´Nubh)�”}”(hŒ+:ref:`filters `”h]”j)�”}”(hjz!h]”hŒfilters”…”�”}”(hj|!h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjx!ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j†!Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œdamon_design_damos_filters”uh1hh³hÇh´Mhjp!ubhŒ+ of the given DAMON-based operation scheme.”…”�”}”(hjp!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj_!h²hubhÞ)�”}”(hX�``core_filters`` and ``ops_filters`` directories are for the filters handled by the DAMON core layer and operations set layer, respectively. ``filters`` directory can be used for installing filters regardless of their handled layers. Filters that requested by ``core_filters`` and ``ops_filters`` will be installed before those of ``filters``. All three directories have same files.”h]”(j½)�”}”(hŒ``core_filters``”h]”hŒ core_filters”…”�”}”(hj¦!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¢!ubhŒ and ”…”�”}”(hj¢!h²hh³Nh´Nubj½)�”}”(hŒ``ops_filters``”h]”hŒ ops_filters”…”�”}”(hj¸!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¢!ubhŒj directories are for the filters handled by the DAMON core layer and operations set layer, respectively. ”…”�”}”(hj¢!h²hh³Nh´Nubj½)�”}”(hŒ ``filters``”h]”hŒfilters”…”�”}”(hjÊ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¢!ubhŒm directory can be used for installing filters regardless of their handled layers. Filters that requested by ”…”�”}”(hj¢!h²hh³Nh´Nubj½)�”}”(hŒ``core_filters``”h]”hŒ core_filters”…”�”}”(hjÜ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¢!ubhŒ and ”…”�”}”hj¢!sbj½)�”}”(hŒ``ops_filters``”h]”hŒ ops_filters”…”�”}”(hjî!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¢!ubhŒ# will be installed before those of ”…”�”}”(hj¢!h²hh³Nh´Nubj½)�”}”(hŒ ``filters``”h]”hŒfilters”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¢!ubhŒ). All three directories have same files.”…”�”}”(hj¢!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj_!h²hubhÞ)�”}”(hX"Use of ``filters`` directory can make filters evaluation orders confusing to expect. For this reason, ``filters`` directory is deprecated. It is still functioning, but is scheduled for removal in the near future. Users should use ``core_filters`` and ``ops_filters`` directories instead.”h]”(hŒUse of ”…”�”}”(hj"h²hh³Nh´Nubj½)�”}”(hŒ ``filters``”h]”hŒfilters”…”�”}”(hj "h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj"ubhŒU directory can make filters evaluation orders confusing to expect. For this reason, ”…”�”}”(hj"h²hh³Nh´Nubj½)�”}”(hŒ ``filters``”h]”hŒfilters”…”�”}”(hj2"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj"ubhŒw directory is deprecated. It is still functioning, but is scheduled for removal in the near future. Users should use ”…”�”}”(hj"h²hh³Nh´Nubj½)�”}”(hŒ``core_filters``”h]”hŒ core_filters”…”�”}”(hjD"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj"ubhŒ and ”…”�”}”(hj"h²hh³Nh´Nubj½)�”}”(hŒ``ops_filters``”h]”hŒ ops_filters”…”�”}”(hjV"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj"ubhŒ directories instead.”…”�”}”(hj"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj_!h²hubhÞ)�”}”(hXIn the beginning, the directory has only one file, ``nr_filters``. Writing a number (``N``) to the file creates the number of child directories named ``0`` to ``N-1``. Each directory represents each filter. The filters are evaluated in the numeric order.”h]”(hŒ3In the beginning, the directory has only one file, ”…”�”}”(hjn"h²hh³Nh´Nubj½)�”}”(hŒ``nr_filters``”h]”hŒ nr_filters”…”�”}”(hjv"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjn"ubhŒ. Writing a number (”…”�”}”(hjn"h²hh³Nh´Nubj½)�”}”(hŒ``N``”h]”hŒN”…”�”}”(hjˆ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjn"ubhŒ<) to the file creates the number of child directories named ”…”�”}”(hjn"h²hh³Nh´Nubj½)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjš"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjn"ubhŒ to ”…”�”}”(hjn"h²hh³Nh´Nubj½)�”}”(hŒ``N-1``”h]”hŒN-1”…”�”}”(hj¬"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjn"ubhŒZ. Each directory represents each filter. The filters are evaluated in the numeric order.”…”�”}”(hjn"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj_!h²hubhÞ)�”}”(hXpEach filter directory contains nine files, namely ``type``, ``matching``, ``allow``, ``memcg_path``, ``addr_start``, ``addr_end``, ``min``, ``max`` and ``damon_target_idx``. To ``type`` file, you can write the type of the filter. Refer to :ref:`the design doc ` for available type names, their meaning and on what layer those are handled.”h]”(hŒ2Each filter directory contains nine files, namely ”…”�”}”(hjÄ"h²hh³Nh´Nubj½)�”}”(hŒ``type``”h]”hŒtype”…”�”}”(hjÌ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÄ"ubhŒ, ”…”�”}”(hjÄ"h²hh³Nh´Nubj½)�”}”(hŒ ``matching``”h]”hŒmatching”…”�”}”(hjÞ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÄ"ubhŒ, ”…”�”}”(hjÄ"h²hh³Nh´Nubj½)�”}”(hŒ ``allow``”h]”hŒallow”…”�”}”(hjð"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÄ"ubhŒ, ”…”�”}”hjÄ"sbj½)�”}”(hŒ``memcg_path``”h]”hŒ memcg_path”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÄ"ubhŒ, ”…”�”}”hjÄ"sbj½)�”}”(hŒ``addr_start``”h]”hŒ addr_start”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÄ"ubhŒ, ”…”�”}”hjÄ"sbj½)�”}”(hŒ ``addr_end``”h]”hŒaddr_end”…”�”}”(hj&#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÄ"ubhŒ, ”…”�”}”hjÄ"sbj½)�”}”(hŒ``min``”h]”hŒmin”…”�”}”(hj8#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÄ"ubhŒ, ”…”�”}”hjÄ"sbj½)�”}”(hŒ``max``”h]”hŒmax”…”�”}”(hjJ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÄ"ubhŒ and ”…”�”}”(hjÄ"h²hh³Nh´Nubj½)�”}”(hŒ``damon_target_idx``”h]”hŒdamon_target_idx”…”�”}”(hj\#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÄ"ubhŒ. To ”…”�”}”(hjÄ"h²hh³Nh´Nubj½)�”}”(hŒ``type``”h]”hŒtype”…”�”}”(hjn#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÄ"ubhŒ7 file, you can write the type of the filter. Refer to ”…”�”}”(hjÄ"h²hh³Nh´Nubh)�”}”(hŒ2:ref:`the design doc `”h]”j)�”}”(hj‚#h]”hŒthe design doc”…”�”}”(hj„#h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj€#ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jŽ#Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œdamon_design_damos_filters”uh1hh³hÇh´MhjÄ"ubhŒM for available type names, their meaning and on what layer those are handled.”…”�”}”(hjÄ"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj_!h²hubhÞ)�”}”(hXmFor ``memcg`` type, you can specify the memory cgroup of the interest by writing the path of the memory cgroup from the cgroups mount point to ``memcg_path`` file. For ``addr`` type, you can specify the start and end address of the range (open-ended interval) to ``addr_start`` and ``addr_end`` files, respectively. For ``hugepage_size`` type, you can specify the minimum and maximum size of the range (closed interval) to ``min`` and ``max`` files, respectively. For ``target`` type, you can specify the index of the target between the list of the DAMON context's monitoring targets list to ``damon_target_idx`` file.”h]”(hŒFor ”…”�”}”(hjª#h²hh³Nh´Nubj½)�”}”(hŒ ``memcg``”h]”hŒmemcg”…”�”}”(hj²#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjª#ubhŒ‚ type, you can specify the memory cgroup of the interest by writing the path of the memory cgroup from the cgroups mount point to ”…”�”}”(hjª#h²hh³Nh´Nubj½)�”}”(hŒ``memcg_path``”h]”hŒ memcg_path”…”�”}”(hjÄ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjª#ubhŒ file. For ”…”�”}”(hjª#h²hh³Nh´Nubj½)�”}”(hŒ``addr``”h]”hŒaddr”…”�”}”(hjÖ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjª#ubhŒW type, you can specify the start and end address of the range (open-ended interval) to ”…”�”}”(hjª#h²hh³Nh´Nubj½)�”}”(hŒ``addr_start``”h]”hŒ addr_start”…”�”}”(hjè#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjª#ubhŒ and ”…”�”}”(hjª#h²hh³Nh´Nubj½)�”}”(hŒ ``addr_end``”h]”hŒaddr_end”…”�”}”(hjú#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjª#ubhŒ files, respectively. For ”…”�”}”(hjª#h²hh³Nh´Nubj½)�”}”(hŒ``hugepage_size``”h]”hŒ hugepage_size”…”�”}”(hj $h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjª#ubhŒV type, you can specify the minimum and maximum size of the range (closed interval) to ”…”�”}”(hjª#h²hh³Nh´Nubj½)�”}”(hŒ``min``”h]”hŒmin”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjª#ubhŒ and ”…”�”}”hjª#sbj½)�”}”(hŒ``max``”h]”hŒmax”…”�”}”(hj0$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjª#ubhŒ files, respectively. For ”…”�”}”(hjª#h²hh³Nh´Nubj½)�”}”(hŒ ``target``”h]”hŒtarget”…”�”}”(hjB$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjª#ubhŒt type, you can specify the index of the target between the list of the DAMON context’s monitoring targets list to ”…”�”}”(hjª#h²hh³Nh´Nubj½)�”}”(hŒ``damon_target_idx``”h]”hŒdamon_target_idx”…”�”}”(hjT$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjª#ubhŒ file.”…”�”}”(hjª#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj_!h²hubhÞ)�”}”(hXYou can write ``Y`` or ``N`` to ``matching`` file to specify whether the filter is for memory that matches the ``type``. You can write ``Y`` or ``N`` to ``allow`` file to specify if applying the action to the memory that satisfies the ``type`` and ``matching`` should be allowed or not.”h]”(hŒYou can write ”…”�”}”(hjl$h²hh³Nh´Nubj½)�”}”(hŒ``Y``”h]”hŒY”…”�”}”(hjt$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjl$ubhŒ or ”…”�”}”(hjl$h²hh³Nh´Nubj½)�”}”(hŒ``N``”h]”hŒN”…”�”}”(hj†$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjl$ubhŒ to ”…”�”}”(hjl$h²hh³Nh´Nubj½)�”}”(hŒ ``matching``”h]”hŒmatching”…”�”}”(hj˜$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjl$ubhŒC file to specify whether the filter is for memory that matches the ”…”�”}”(hjl$h²hh³Nh´Nubj½)�”}”(hŒ``type``”h]”hŒtype”…”�”}”(hjª$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjl$ubhŒ. You can write ”…”�”}”(hjl$h²hh³Nh´Nubj½)�”}”(hŒ``Y``”h]”hŒY”…”�”}”(hj¼$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjl$ubhŒ or ”…”�”}”hjl$sbj½)�”}”(hŒ``N``”h]”hŒN”…”�”}”(hjÎ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjl$ubhŒ to ”…”�”}”(hjl$h²hh³Nh´Nubj½)�”}”(hŒ ``allow``”h]”hŒallow”…”�”}”(hjà$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjl$ubhŒI file to specify if applying the action to the memory that satisfies the ”…”�”}”(hjl$h²hh³Nh´Nubj½)�”}”(hŒ``type``”h]”hŒtype”…”�”}”(hjò$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjl$ubhŒ and ”…”�”}”(hjl$h²hh³Nh´Nubj½)�”}”(hŒ ``matching``”h]”hŒmatching”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjl$ubhŒ should be allowed or not.”…”�”}”(hjl$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M(hj_!h²hubhÞ)�”}”(hŒŽFor example, below restricts a DAMOS action to be applied to only non-anonymous pages of all memory cgroups except ``/having_care_already``.::”h]”(hŒsFor example, below restricts a DAMOS action to be applied to only non-anonymous pages of all memory cgroups except ”…”�”}”(hj%h²hh³Nh´Nubj½)�”}”(hŒ``/having_care_already``”h]”hŒ/having_care_already”…”�”}”(hj$%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj%ubhŒ.:”…”�”}”(hj%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M-hj_!h²hubj÷)�”}”(hX(# cd ops_filters/0/ # echo 2 > nr_filters # # disallow anonymous pages echo anon > 0/type echo Y > 0/matching echo N > 0/allow # # further filter out all cgroups except one at '/having_care_already' echo memcg > 1/type echo /having_care_already > 1/memcg_path echo Y > 1/matching echo N > 1/allow”h]”hX(# cd ops_filters/0/ # echo 2 > nr_filters # # disallow anonymous pages echo anon > 0/type echo Y > 0/matching echo N > 0/allow # # further filter out all cgroups except one at '/having_care_already' echo memcg > 1/type echo /having_care_already > 1/memcg_path echo Y > 1/matching echo N > 1/allow”…”�”}”hj<%sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jöh³hÇh´M0hj_!h²hubhÞ)�”}”(hŒãRefer to the :ref:`DAMOS filters design documentation ` for more details including how multiple filters of different ``allow`` works, when each of the filters are supported, and differences on stats.”h]”(hŒ Refer to the ”…”�”}”(hjJ%h²hh³Nh´Nubh)�”}”(hŒF:ref:`DAMOS filters design documentation `”h]”j)�”}”(hjT%h]”hŒ"DAMOS filters design documentation”…”�”}”(hjV%h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjR%ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j`%Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œdamon_design_damos_filters”uh1hh³hÇh´M<hjJ%ubhŒ> for more details including how multiple filters of different ”…”�”}”(hjJ%h²hh³Nh´Nubj½)�”}”(hŒ ``allow``”h]”hŒallow”…”�”}”(hjv%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjJ%ubhŒI works, when each of the filters are supported, and differences on stats.”…”�”}”(hjJ%h²hh³Nh´Nubeh}”(h]”h ]”h"•¾ª]”h$]”h&]”uh1hÝh³hÇh´M<hj_!h²hubjt)�”}”(hŒ.. _damon_sysfs_dests:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œdamon-sysfs-dests”uh1jsh´MAhj_!h²hh³hÇubeh}”(h]”(Œschemes-n-core-ops-filters”jS!eh ]”h"]”(Œ!schemes//{core_,ops_,}filters/”Œ sysfs_filters”eh$]”h&]”uh1hÈhj£h²hh³hÇh´MjŸ}”jŸ%jI!sj¡}”jS!jI!subhÉ)�”}”(hhh]”(hÎ)�”}”(hŒschemes//dests/”h]”hŒschemes//dests/”…”�”}”(hj§%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¤%h²hh³hÇh´MDubhÞ)�”}”(hXDirectory for specifying the destinations of given DAMON-based operation scheme's action. This directory is ignored if the action of the given scheme is not supporting multiple destinations. Only ``DAMOS_MIGRATE_{HOT,COLD}`` actions are supporting multiple destinations.”h]”(hŒÈDirectory for specifying the destinations of given DAMON-based operation scheme’s action. This directory is ignored if the action of the given scheme is not supporting multiple destinations. Only ”…”�”}”(hjµ%h²hh³Nh´Nubj½)�”}”(hŒ``DAMOS_MIGRATE_{HOT,COLD}``”h]”hŒDAMOS_MIGRATE_{HOT,COLD}”…”�”}”(hj½%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjµ%ubhŒ. actions are supporting multiple destinations.”…”�”}”(hjµ%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MFhj¤%h²hubhÞ)�”}”(hŒÚIn the beginning, the directory has only one file, ``nr_dests``. Writing a number (``N``) to the file creates the number of child directories named ``0`` to ``N-1``. Each directory represents each action destination.”h]”(hŒ3In the beginning, the directory has only one file, ”…”�”}”(hjÕ%h²hh³Nh´Nubj½)�”}”(hŒ ``nr_dests``”h]”hŒnr_dests”…”�”}”(hjÝ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÕ%ubhŒ. Writing a number (”…”�”}”(hjÕ%h²hh³Nh´Nubj½)�”}”(hŒ``N``”h]”hŒN”…”�”}”(hjï%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÕ%ubhŒ<) to the file creates the number of child directories named ”…”�”}”(hjÕ%h²hh³Nh´Nubj½)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÕ%ubhŒ to ”…”�”}”(hjÕ%h²hh³Nh´Nubj½)�”}”(hŒ``N-1``”h]”hŒN-1”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÕ%ubhŒ5. Each directory represents each action destination.”…”�”}”(hjÕ%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MKhj¤%h²hubhÞ)�”}”(hXBEach destination directory contains two files, namely ``id`` and ``weight``. Users can write and read the identifier of the destination to ``id`` file. For ``DAMOS_MIGRATE_{HOT,COLD}`` actions, the migrate destination node's node id should be written to ``id`` file. Users can write and read the weight of the destination among the given destinations to the ``weight`` file. The weight can be an arbitrary integer. When DAMOS apply the action to each entity of the memory region, it will select the destination of the action based on the relative weights of the destinations.”h]”(hŒ6Each destination directory contains two files, namely ”…”�”}”(hj+&h²hh³Nh´Nubj½)�”}”(hŒ``id``”h]”hŒid”…”�”}”(hj3&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj+&ubhŒ and ”…”�”}”(hj+&h²hh³Nh´Nubj½)�”}”(hŒ ``weight``”h]”hŒweight”…”�”}”(hjE&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj+&ubhŒ@. Users can write and read the identifier of the destination to ”…”�”}”(hj+&h²hh³Nh´Nubj½)�”}”(hŒ``id``”h]”hŒid”…”�”}”(hjW&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj+&ubhŒ file. For ”…”�”}”(hj+&h²hh³Nh´Nubj½)�”}”(hŒ``DAMOS_MIGRATE_{HOT,COLD}``”h]”hŒDAMOS_MIGRATE_{HOT,COLD}”…”�”}”(hji&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj+&ubhŒH actions, the migrate destination node’s node id should be written to ”…”�”}”(hj+&h²hh³Nh´Nubj½)�”}”(hŒ``id``”h]”hŒid”…”�”}”(hj{&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj+&ubhŒc file. Users can write and read the weight of the destination among the given destinations to the ”…”�”}”(hj+&h²hh³Nh´Nubj½)�”}”(hŒ ``weight``”h]”hŒweight”…”�”}”(hj�&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj+&ubhŒÑ file. The weight can be an arbitrary integer. When DAMOS apply the action to each entity of the memory region, it will select the destination of the action based on the relative weights of the destinations.”…”�”}”(hj+&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MOhj¤%h²hubjt)�”}”(hŒ.. _sysfs_schemes_stats:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œsysfs-schemes-stats”uh1jsh´MXhj¤%h²hh³hÇubeh}”(h]”(Œschemes-n-dests”j˜%eh ]”h"]”(Œschemes//dests/”Œdamon_sysfs_dests”eh$]”h&]”uh1hÈhj£h²hh³hÇh´MDjŸ}”j¶&jŽ%sj¡}”j˜%jŽ%subhÉ)�”}”(hhh]”(hÎ)�”}”(hŒschemes//stats/”h]”hŒschemes//stats/”…”�”}”(hj¾&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj»&h²hh³hÇh´M[ubhÞ)�”}”(hŒËDAMON counts statistics for each scheme. This statistics can be used for online analysis or tuning of the schemes. Refer to :ref:`design doc ` for more details about the stats.”h]”(hŒ~DAMON counts statistics for each scheme. This statistics can be used for online analysis or tuning of the schemes. Refer to ”…”�”}”(hjÌ&h²hh³Nh´Nubh)�”}”(hŒ+:ref:`design doc `”h]”j)�”}”(hjÖ&h]”hŒ design doc”…”�”}”(hjØ&h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjÔ&ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jâ&Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œdamon_design_damos_stat”uh1hh³hÇh´M]hjÌ&ubhŒ" for more details about the stats.”…”�”}”(hjÌ&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M]hj»&h²hubhÞ)�”}”(hŒïThe statistics can be retrieved by reading the files under ``stats`` directory (``nr_tried``, ``sz_tried``, ``nr_applied``, ``sz_applied``, ``sz_ops_filter_passed``, ``qt_exceeds``, ``nr_snapshots`` and ``max_nr_snapshots``), respectively.”h]”(hŒ;The statistics can be retrieved by reading the files under ”…”�”}”(hjþ&h²hh³Nh´Nubj½)�”}”(hŒ ``stats``”h]”hŒstats”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjþ&ubhŒ directory (”…”�”}”(hjþ&h²hh³Nh´Nubj½)�”}”(hŒ ``nr_tried``”h]”hŒnr_tried”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjþ&ubhŒ, ”…”�”}”(hjþ&h²hh³Nh´Nubj½)�”}”(hŒ ``sz_tried``”h]”hŒsz_tried”…”�”}”(hj*'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjþ&ubhŒ, ”…”�”}”hjþ&sbj½)�”}”(hŒ``nr_applied``”h]”hŒ nr_applied”…”�”}”(hj<'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjþ&ubhŒ, ”…”�”}”hjþ&sbj½)�”}”(hŒ``sz_applied``”h]”hŒ sz_applied”…”�”}”(hjN'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjþ&ubhŒ, ”…”�”}”(hjþ&h²hh³Nh´Nubj½)�”}”(hŒ``sz_ops_filter_passed``”h]”hŒsz_ops_filter_passed”…”�”}”(hj`'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjþ&ubhŒ, ”…”�”}”hjþ&sbj½)�”}”(hŒ``qt_exceeds``”h]”hŒ qt_exceeds”…”�”}”(hjr'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjþ&ubhŒ, ”…”�”}”hjþ&sbj½)�”}”(hŒ``nr_snapshots``”h]”hŒ nr_snapshots”…”�”}”(hj„'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjþ&ubhŒ and ”…”�”}”(hjþ&h²hh³Nh´Nubj½)�”}”(hŒ``max_nr_snapshots``”h]”hŒmax_nr_snapshots”…”�”}”(hj–'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjþ&ubhŒ), respectively.”…”�”}”(hjþ&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mahj»&h²hubhÞ)�”}”(hXNThe files are not updated in real time by default. Users should ask DAMON sysfs interface to periodically update those using ``refresh_ms``, or do a one time update by writing a special keyword, ``update_schemes_stats`` to the relevant ``kdamonds//state`` file. Refer to :ref:`kdamond directory ` for more details.”h]”(hŒ~The files are not updated in real time by default. Users should ask DAMON sysfs interface to periodically update those using ”…”�”}”(hj®'h²hh³Nh´Nubj½)�”}”(hŒ``refresh_ms``”h]”hŒ refresh_ms”…”�”}”(hj¶'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj®'ubhŒ8, or do a one time update by writing a special keyword, ”…”�”}”(hj®'h²hh³Nh´Nubj½)�”}”(hŒ``update_schemes_stats``”h]”hŒupdate_schemes_stats”…”�”}”(hjÈ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj®'ubhŒ to the relevant ”…”�”}”(hj®'h²hh³Nh´Nubj½)�”}”(hŒ``kdamonds//state``”h]”hŒkdamonds//state”…”�”}”(hjÚ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj®'ubhŒ file. Refer to ”…”�”}”(hj®'h²hh³Nh´Nubh)�”}”(hŒ(:ref:`kdamond directory `”h]”j)�”}”(hjî'h]”hŒkdamond directory”…”�”}”(hjð'h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjì'ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jú'Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ sysfs_kdamond”uh1hh³hÇh´Mfhj®'ubhŒ for more details.”…”�”}”(hj®'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mfhj»&h²hubjt)�”}”(hŒ .. _sysfs_schemes_tried_regions:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œsysfs-schemes-tried-regions”uh1jsh´Mlhj»&h²hh³hÇubeh}”(h]”(Œschemes-n-stats”j¯&eh ]”h"]”(Œschemes//stats/”Œsysfs_schemes_stats”eh$]”h&]”uh1hÈhj£h²hh³hÇh´M[jŸ}”j'(j¥&sj¡}”j¯&j¥&subhÉ)�”}”(hhh]”(hÎ)�”}”(hŒschemes//tried_regions/”h]”hŒschemes//tried_regions/”…”�”}”(hj/(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj,(h²hh³hÇh´MoubhÞ)�”}”(hŒ7This directory initially has one file, ``total_bytes``.”h]”(hŒ'This directory initially has one file, ”…”�”}”(hj=(h²hh³Nh´Nubj½)�”}”(hŒ``total_bytes``”h]”hŒ total_bytes”…”�”}”(hjE(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj=(ubhŒ.”…”�”}”(hj=(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mqhj,(h²hubhÞ)�”}”(hXŽWhen a special keyword, ``update_schemes_tried_regions``, is written to the relevant ``kdamonds//state`` file, DAMON updates the ``total_bytes`` file so that reading it returns the total size of the scheme tried regions, and creates directories named integer starting from ``0`` under this directory. Each directory contains files exposing detailed information about each of the memory region that the corresponding scheme's ``action`` has tried to be applied under this directory, during next :ref:`apply interval ` of the corresponding scheme. The information includes address range, ``nr_accesses``, and ``age`` of the region.”h]”(hŒWhen a special keyword, ”…”�”}”(hj](h²hh³Nh´Nubj½)�”}”(hŒ ``update_schemes_tried_regions``”h]”hŒupdate_schemes_tried_regions”…”�”}”(hje(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj](ubhŒ, is written to the relevant ”…”�”}”(hj](h²hh³Nh´Nubj½)�”}”(hŒ``kdamonds//state``”h]”hŒkdamonds//state”…”�”}”(hjw(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj](ubhŒ file, DAMON updates the ”…”�”}”(hj](h²hh³Nh´Nubj½)�”}”(hŒ``total_bytes``”h]”hŒ total_bytes”…”�”}”(hj‰(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj](ubhŒ� file so that reading it returns the total size of the scheme tried regions, and creates directories named integer starting from ”…”�”}”(hj](h²hh³Nh´Nubj½)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj›(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj](ubhŒ– under this directory. Each directory contains files exposing detailed information about each of the memory region that the corresponding scheme’s ”…”�”}”(hj](h²hh³Nh´Nubj½)�”}”(hŒ ``action``”h]”hŒaction”…”�”}”(hj­(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj](ubhŒ; has tried to be applied under this directory, during next ”…”�”}”(hj](h²hh³Nh´Nubh)�”}”(hŒ*:ref:`apply interval `”h]”j)�”}”(hjÁ(h]”hŒapply interval”…”�”}”(hjÃ(h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj¿(ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”jÍ(Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œdamon_design_damos”uh1hh³hÇh´Mshj](ubhŒG of the corresponding scheme. The information includes address range, ”…”�”}”(hj](h²hh³Nh´Nubj½)�”}”(hŒ``nr_accesses``”h]”hŒ nr_accesses”…”�”}”(hjã(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj](ubhŒ, and ”…”�”}”(hj](h²hh³Nh´Nubj½)�”}”(hŒ``age``”h]”hŒage”…”�”}”(hjõ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj](ubhŒ of the region.”…”�”}”(hj](h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mshj,(h²hubhÞ)�”}”(hŒ¥Writing ``update_schemes_tried_bytes`` to the relevant ``kdamonds//state`` file will only update the ``total_bytes`` file, and will not create the subdirectories.”h]”(hŒWriting ”…”�”}”(hj )h²hh³Nh´Nubj½)�”}”(hŒ``update_schemes_tried_bytes``”h]”hŒupdate_schemes_tried_bytes”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj )ubhŒ to the relevant ”…”�”}”(hj )h²hh³Nh´Nubj½)�”}”(hŒ``kdamonds//state``”h]”hŒkdamonds//state”…”�”}”(hj')h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj )ubhŒ file will only update the ”…”�”}”(hj )h²hh³Nh´Nubj½)�”}”(hŒ``total_bytes``”h]”hŒ total_bytes”…”�”}”(hj9)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj )ubhŒ. file, and will not create the subdirectories.”…”�”}”(hj )h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M}hj,(h²hubhÞ)�”}”(hŒ–The directories will be removed when another special keyword, ``clear_schemes_tried_regions``, is written to the relevant ``kdamonds//state`` file.”h]”(hŒ>The directories will be removed when another special keyword, ”…”�”}”(hjQ)h²hh³Nh´Nubj½)�”}”(hŒ``clear_schemes_tried_regions``”h]”hŒclear_schemes_tried_regions”…”�”}”(hjY)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjQ)ubhŒ, is written to the relevant ”…”�”}”(hjQ)h²hh³Nh´Nubj½)�”}”(hŒ``kdamonds//state``”h]”hŒkdamonds//state”…”�”}”(hjk)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjQ)ubhŒ file.”…”�”}”(hjQ)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M�hj,(h²hubhÞ)�”}”(hX7The expected usage of this directory is investigations of schemes' behaviors, and query-like efficient data access monitoring results retrievals. For the latter use case, in particular, users can set the ``action`` as ``stat`` and set the ``access pattern`` as their interested pattern that they want to query.”h]”(hŒÏThe expected usage of this directory is investigations of schemes’ behaviors, and query-like efficient data access monitoring results retrievals. For the latter use case, in particular, users can set the ”…”�”}”(hjƒ)h²hh³Nh´Nubj½)�”}”(hŒ ``action``”h]”hŒaction”…”�”}”(hj‹)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjƒ)ubhŒ as ”…”�”}”(hjƒ)h²hh³Nh´Nubj½)�”}”(hŒ``stat``”h]”hŒstat”…”�”}”(hj�)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjƒ)ubhŒ and set the ”…”�”}”(hjƒ)h²hh³Nh´Nubj½)�”}”(hŒ``access pattern``”h]”hŒaccess pattern”…”�”}”(hj¯)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjƒ)ubhŒ5 as their interested pattern that they want to query.”…”�”}”(hjƒ)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M…hj,(h²hubjt)�”}”(hŒ.. _sysfs_schemes_tried_region:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œsysfs-schemes-tried-region”uh1jsh´MŠhj,(h²hh³hÇubeh}”(h]”(Œschemes-n-tried-regions”j (eh ]”h"]”(Œschemes//tried_regions/”Œsysfs_schemes_tried_regions”eh$]”h&]”uh1hÈhj£h²hh³hÇh´MojŸ}”jØ)j(sj¡}”j (j(subhÉ)�”}”(hhh]”(hÎ)�”}”(hŒtried_regions//”h]”hŒtried_regions//”…”�”}”(hjà)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÝ)h²hh³hÇh´M�ubhÞ)�”}”(hX In each region directory, you will find five files (``start``, ``end``, ``nr_accesses``, ``age`` and ``sz_filter_passed``). Reading the files will show the properties of the region that corresponding DAMON-based operation scheme ``action`` has tried to be applied.”h]”(hŒ4In each region directory, you will find five files (”…”�”}”(hjî)h²hh³Nh´Nubj½)�”}”(hŒ ``start``”h]”hŒstart”…”�”}”(hjö)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjî)ubhŒ, ”…”�”}”(hjî)h²hh³Nh´Nubj½)�”}”(hŒ``end``”h]”hŒend”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjî)ubhŒ, ”…”�”}”(hjî)h²hh³Nh´Nubj½)�”}”(hŒ``nr_accesses``”h]”hŒ nr_accesses”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjî)ubhŒ, ”…”�”}”hjî)sbj½)�”}”(hŒ``age``”h]”hŒage”…”�”}”(hj,*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjî)ubhŒ and ”…”�”}”(hjî)h²hh³Nh´Nubj½)�”}”(hŒ``sz_filter_passed``”h]”hŒsz_filter_passed”…”�”}”(hj>*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjî)ubhŒm). Reading the files will show the properties of the region that corresponding DAMON-based operation scheme ”…”�”}”(hjî)h²hh³Nh´Nubj½)�”}”(hŒ ``action``”h]”hŒaction”…”�”}”(hjP*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjî)ubhŒ has tried to be applied.”…”�”}”(hjî)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M�hjÝ)h²hubeh}”(h]”(Œtried-regions-n”jÑ)eh ]”h"]”(Œtried_regions//”Œsysfs_schemes_tried_region”eh$]”h&]”uh1hÈhj£h²hh³hÇh´M�jŸ}”jn*jÇ)sj¡}”jÑ)jÇ)subhÉ)�”}”(hhh]”(hÎ)�”}”(hŒtried_regions//probes/”h]”hŒtried_regions//probes/”…”�”}”(hjv*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjs*h²hh³hÇh´M•ubhÞ)�”}”(hXPIn each region directory, one directory (``probes``) also exists. In the directory, subdirectories named ``0`` to ``N-1`` exists. ``N`` is the number of installed probes. In each number-named directory, a file (``hits``) exist. Reading the file shows the number of data attributes monitoring probe-hit positive samples of the region.”h]”(hŒ)In each region directory, one directory (”…”�”}”(hj„*h²hh³Nh´Nubj½)�”}”(hŒ ``probes``”h]”hŒprobes”…”�”}”(hjŒ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj„*ubhŒ7) also exists. In the directory, subdirectories named ”…”�”}”(hj„*h²hh³Nh´Nubj½)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjž*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj„*ubhŒ to ”…”�”}”(hj„*h²hh³Nh´Nubj½)�”}”(hŒ``N-1``”h]”hŒN-1”…”�”}”(hj°*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj„*ubhŒ exists. ”…”�”}”(hj„*h²hh³Nh´Nubj½)�”}”(hŒ``N``”h]”hŒN”…”�”}”(hjÂ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj„*ubhŒM is the number of installed probes. In each number-named directory, a file (”…”�”}”(hj„*h²hh³Nh´Nubj½)�”}”(hŒ``hits``”h]”hŒhits”…”�”}”(hjÔ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj„*ubhŒr) exist. Reading the file shows the number of data attributes monitoring probe-hit positive samples of the region.”…”�”}”(hj„*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M—hjs*h²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒExample”h]”hŒExample”…”�”}”(hjï*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjì*h²hh³hÇh´MžubhÞ)�”}”(hX[Below commands applies a scheme saying "If a memory region of size in [4KiB, 8KiB] is showing accesses per aggregate interval in [0, 5] for aggregate interval in [10, 20], page out the region. For the paging out, use only up to 10ms per second, and also don't page out more than 1GiB per second. Under the limitation, page out memory regions having longer age first. Also, check the free memory rate of the system every 5 seconds, start the monitoring and paging out when the free memory rate becomes lower than 50%, but stop it if the free memory rate becomes larger than 60%, or lower than 30%". ::”h]”hX^Below commands applies a scheme saying “If a memory region of size in [4KiB, 8KiB] is showing accesses per aggregate interval in [0, 5] for aggregate interval in [10, 20], page out the region. For the paging out, use only up to 10ms per second, and also don’t page out more than 1GiB per second. Under the limitation, page out memory regions having longer age first. Also, check the free memory rate of the system every 5 seconds, start the monitoring and paging out when the free memory rate becomes lower than 50%, but stop it if the free memory rate becomes larger than 60%, or lower than 30%â€�.”…”�”}”(hjý*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hjì*h²hubj÷)�”}”(hX7# cd /kernel/mm/damon/admin # # populate directories # echo 1 > kdamonds/nr_kdamonds; echo 1 > kdamonds/0/contexts/nr_contexts; # echo 1 > kdamonds/0/contexts/0/schemes/nr_schemes # cd kdamonds/0/contexts/0/schemes/0 # # set the basic access pattern and the action # echo 4096 > access_pattern/sz/min # echo 8192 > access_pattern/sz/max # echo 0 > access_pattern/nr_accesses/min # echo 5 > access_pattern/nr_accesses/max # echo 10 > access_pattern/age/min # echo 20 > access_pattern/age/max # echo pageout > action # # set quotas # echo 10 > quotas/ms # echo $((1024*1024*1024)) > quotas/bytes # echo 1000 > quotas/reset_interval_ms # # set watermark # echo free_mem_rate > watermarks/metric # echo 5000000 > watermarks/interval_us # echo 600 > watermarks/high # echo 500 > watermarks/mid # echo 300 > watermarks/low”h]”hX7# cd /kernel/mm/damon/admin # # populate directories # echo 1 > kdamonds/nr_kdamonds; echo 1 > kdamonds/0/contexts/nr_contexts; # echo 1 > kdamonds/0/contexts/0/schemes/nr_schemes # cd kdamonds/0/contexts/0/schemes/0 # # set the basic access pattern and the action # echo 4096 > access_pattern/sz/min # echo 8192 > access_pattern/sz/max # echo 0 > access_pattern/nr_accesses/min # echo 5 > access_pattern/nr_accesses/max # echo 10 > access_pattern/age/min # echo 20 > access_pattern/age/max # echo pageout > action # # set quotas # echo 10 > quotas/ms # echo $((1024*1024*1024)) > quotas/bytes # echo 1000 > quotas/reset_interval_ms # # set watermark # echo free_mem_rate > watermarks/metric # echo 5000000 > watermarks/interval_us # echo 600 > watermarks/high # echo 500 > watermarks/mid # echo 300 > watermarks/low”…”�”}”hj +sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jöh³hÇh´M©hjì*h²hubhÞ)�”}”(hŒÍPlease note that it's highly recommended to use user space tools like `damo `_ rather than manually reading and writing the files as above. Above is only for an example.”h]”(hŒHPlease note that it’s highly recommended to use user space tools like ”…”�”}”(hj+h²hh³Nh´Nubj`)�”}”(hŒ+`damo `_”h]”hŒdamo”…”�”}”(hj!+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œdamo”jqŒ!https://github.com/damonitor/damo”uh1j_hj+ubjt)�”}”(hŒ$ ”h]”h}”(h]”Œdamo”ah ]”h"]”Œdamo”ah$]”h&]”Œrefuri”j1+uh1jsj‚Khj+ubhŒ\ rather than manually reading and writing the files as above. Above is only for an example.”…”�”}”(hj+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÁhjì*h²hubjt)�”}”(hŒ.. _tracepoint:”h]”h}”(h]”h ]”h"]”h$]”h&]”j¡Œ tracepoint”uh1jsh´MÅhjì*h²hh³hÇubeh}”(h]”Œexample”ah ]”h"]”Œexample”ah$]”h&]”uh1hÈhjs*h²hh³hÇh´Mžubeh}”(h]”Œtried-regions-n-probes”ah ]”h"]”Œtried_regions//probes/”ah$]”h&]”uh1hÈhj£h²hh³hÇh´M•ubeh}”(h]”(j¢Œid1”eh ]”h"]”(Œsysfs interface”Œsysfs_interface”eh$]”h&]”uh1hÈhhÊh²hh³hÇh´K&jŸ}”jj+j—sj¡}”j¢j—subhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ"Tracepoints for Monitoring Results”h]”hŒ"Tracepoints for Monitoring Results”…”�”}”(hjr+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjo+h²hh³hÇh´MÈubhÞ)�”}”(hX&Users can get the monitoring results via the :ref:`tried_regions `. The interface is useful for getting a snapshot, but it could be inefficient for fully recording all the monitoring results. For the purpose, two trace points, namely ``damon:damon_aggregated`` and ``damon:damos_before_apply``, are provided. ``damon:damon_aggregated`` provides the whole monitoring results, while ``damon:damos_before_apply`` provides the monitoring results for regions that each DAMON-based Operation Scheme (:ref:`DAMOS `) is gonna be applied. Hence, ``damon:damos_before_apply`` is more useful for recording internal behavior of DAMOS, or DAMOS target access :ref:`pattern ` based query-like efficient monitoring results recording.”h]”(hŒ-Users can get the monitoring results via the ”…”�”}”(hj€+h²hh³Nh´Nubh)�”}”(hŒ2:ref:`tried_regions `”h]”j)�”}”(hjŠ+h]”hŒ tried_regions”…”�”}”(hjŒ+h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjˆ+ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j–+Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œsysfs_schemes_tried_regions”uh1hh³hÇh´MÊhj€+ubhŒª. The interface is useful for getting a snapshot, but it could be inefficient for fully recording all the monitoring results. For the purpose, two trace points, namely ”…”�”}”(hj€+h²hh³Nh´Nubj½)�”}”(hŒ``damon:damon_aggregated``”h]”hŒdamon:damon_aggregated”…”�”}”(hj¬+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj€+ubhŒ and ”…”�”}”(hj€+h²hh³Nh´Nubj½)�”}”(hŒ``damon:damos_before_apply``”h]”hŒdamon:damos_before_apply”…”�”}”(hj¾+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj€+ubhŒ, are provided. ”…”�”}”(hj€+h²hh³Nh´Nubj½)�”}”(hŒ``damon:damon_aggregated``”h]”hŒdamon:damon_aggregated”…”�”}”(hjÐ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj€+ubhŒ. provides the whole monitoring results, while ”…”�”}”(hj€+h²hh³Nh´Nubj½)�”}”(hŒ``damon:damos_before_apply``”h]”hŒdamon:damos_before_apply”…”�”}”(hjâ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj€+ubhŒU provides the monitoring results for regions that each DAMON-based Operation Scheme (”…”�”}”(hj€+h²hh³Nh´Nubh)�”}”(hŒ!:ref:`DAMOS `”h]”j)�”}”(hjö+h]”hŒDAMOS”…”�”}”(hjø+h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjô+ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j,Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œdamon_design_damos”uh1hh³hÇh´MÊhj€+ubhŒ) is gonna be applied. Hence, ”…”�”}”(hj€+h²hh³Nh´Nubj½)�”}”(hŒ``damon:damos_before_apply``”h]”hŒdamon:damos_before_apply”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj€+ubhŒQ is more useful for recording internal behavior of DAMOS, or DAMOS target access ”…”�”}”(hj€+h²hh³Nh´Nubh)�”}”(hŒ2:ref:`pattern `”h]”j)�”}”(hj,,h]”hŒpattern”…”�”}”(hj.,h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj*,ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j8,Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ!damon_design_damos_access_pattern”uh1hh³hÇh´MÊhj€+ubhŒ9 based query-like efficient monitoring results recording.”…”�”}”(hj€+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÊhjo+h²hubhÞ)�”}”(hŒšWhile the monitoring is turned on, you could record the tracepoint events and show results using tracepoint supporting tools like ``perf``. For example::”h]”(hŒ‚While the monitoring is turned on, you could record the tracepoint events and show results using tracepoint supporting tools like ”…”�”}”(hjT,h²hh³Nh´Nubj½)�”}”(hŒ``perf``”h]”hŒperf”…”�”}”(hj\,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjT,ubhŒ. For example:”…”�”}”(hjT,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M×hjo+h²hubj÷)�”}”(hX# echo on > kdamonds/0/state # perf record -e damon:damon_aggregated & # sleep 5 # kill 9 $(pidof perf) # echo off > kdamonds/0/state # perf script kdamond.0 46568 [027] 79357.842179: damon:damon_aggregated: target_id=0 nr_regions=11 122509119488-135708762112: 0 864 [...]”h]”hX# echo on > kdamonds/0/state # perf record -e damon:damon_aggregated & # sleep 5 # kill 9 $(pidof perf) # echo off > kdamonds/0/state # perf script kdamond.0 46568 [027] 79357.842179: damon:damon_aggregated: target_id=0 nr_regions=11 122509119488-135708762112: 0 864 [...]”…”�”}”hjt,sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jöh³hÇh´MÚhjo+h²hubhÞ)�”}”(hXÝEach line of the perf script output represents each monitoring region. The first five fields are as usual other tracepoint outputs. The sixth field (``target_id=X``) shows the id of the monitoring target of the region. The seventh field (``nr_regions=X``) shows the total number of monitoring regions for the target. The eighth field (``X-Y:``) shows the start (``X``) and end (``Y``) addresses of the region in bytes. The ninth field (``X``) shows the ``nr_accesses`` of the region (refer to :ref:`design ` for more details of the counter). Finally the tenth field (``X``) shows the ``age`` of the region (refer to :ref:`design ` for more details of the counter).”h]”(hŒ—Each line of the perf script output represents each monitoring region. The first five fields are as usual other tracepoint outputs. The sixth field (”…”�”}”(hj‚,h²hh³Nh´Nubj½)�”}”(hŒ``target_id=X``”h]”hŒ target_id=X”…”�”}”(hjŠ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj‚,ubhŒK) shows the id of the monitoring target of the region. The seventh field (”…”�”}”(hj‚,h²hh³Nh´Nubj½)�”}”(hŒ``nr_regions=X``”h]”hŒ nr_regions=X”…”�”}”(hjœ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj‚,ubhŒR) shows the total number of monitoring regions for the target. The eighth field (”…”�”}”(hj‚,h²hh³Nh´Nubj½)�”}”(hŒ``X-Y:``”h]”hŒX-Y:”…”�”}”(hj®,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj‚,ubhŒ) shows the start (”…”�”}”(hj‚,h²hh³Nh´Nubj½)�”}”(hŒ``X``”h]”hŒX”…”�”}”(hjÀ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj‚,ubhŒ ) and end (”…”�”}”(hj‚,h²hh³Nh´Nubj½)�”}”(hŒ``Y``”h]”hŒY”…”�”}”(hjÒ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj‚,ubhŒ6) addresses of the region in bytes. The ninth field (”…”�”}”(hj‚,h²hh³Nh´Nubj½)�”}”(hŒ``X``”h]”hŒX”…”�”}”(hjä,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj‚,ubhŒ ) shows the ”…”�”}”(hj‚,h²hh³Nh´Nubj½)�”}”(hŒ``nr_accesses``”h]”hŒ nr_accesses”…”�”}”(hjö,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj‚,ubhŒ of the region (refer to ”…”�”}”(hj‚,h²hh³Nh´Nubh)�”}”(hŒ2:ref:`design `”h]”j)�”}”(hj -h]”hŒdesign”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj-ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j-Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œ"damon_design_region_based_sampling”uh1hh³hÇh´Mãhj‚,ubhŒ= for more details of the counter). Finally the tenth field (”…”�”}”(hj‚,h²hh³Nh´Nubj½)�”}”(hŒ``X``”h]”hŒX”…”�”}”(hj,-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj‚,ubhŒ ) shows the ”…”�”}”(hj‚,h²hh³Nh´Nubj½)�”}”(hŒ``age``”h]”hŒage”…”�”}”(hj>-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj‚,ubhŒ of the region (refer to ”…”�”}”(hj‚,h²hh³Nh´Nubh)�”}”(hŒ):ref:`design `”h]”j)�”}”(hjR-h]”hŒdesign”…”�”}”(hjT-h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjP-ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j-Œ refdomain”j^-Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj3Œdamon_design_age_tracking”uh1hh³hÇh´Mãhj‚,ubhŒ" for more details of the counter).”…”�”}”(hj‚,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mãhjo+h²hubhÞ)�”}”(hŒhIf the event was ``damon:damos_before_apply``, the ``perf script`` output would be somewhat like below::”h]”(hŒIf the event was ”…”�”}”(hjz-h²hh³Nh´Nubj½)�”}”(hŒ``damon:damos_before_apply``”h]”hŒdamon:damos_before_apply”…”�”}”(hj‚-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjz-ubhŒ, the ”…”�”}”(hjz-h²hh³Nh´Nubj½)�”}”(hŒ``perf script``”h]”hŒ perf script”…”�”}”(hj”-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjz-ubhŒ% output would be somewhat like below:”…”�”}”(hjz-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mïhjo+h²hubj÷)�”}”(hŒ–kdamond.0 47293 [000] 80801.060214: damon:damos_before_apply: ctx_idx=0 scheme_idx=0 target_idx=0 nr_regions=11 121932607488-135128711168: 0 136 [...]”h]”hŒ–kdamond.0 47293 [000] 80801.060214: damon:damos_before_apply: ctx_idx=0 scheme_idx=0 target_idx=0 nr_regions=11 121932607488-135128711168: 0 136 [...]”…”�”}”hj¬-sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jöh³hÇh´Mòhjo+h²hubhÞ)�”}”(hXÂEach line of the output represents each monitoring region that each DAMON-based Operation Scheme was about to be applied at the traced time. The first five fields are as usual. It shows the index of the DAMON context (``ctx_idx=X``) of the scheme in the list of the contexts of the context's kdamond, the index of the scheme (``scheme_idx=X``) in the list of the schemes of the context, in addition to the output of ``damon_aggregated`` tracepoint.”h]”(hŒÜEach line of the output represents each monitoring region that each DAMON-based Operation Scheme was about to be applied at the traced time. The first five fields are as usual. It shows the index of the DAMON context (”…”�”}”(hjº-h²hh³Nh´Nubj½)�”}”(hŒ ``ctx_idx=X``”h]”hŒ ctx_idx=X”…”�”}”(hjÂ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjº-ubhŒa) of the scheme in the list of the contexts of the context’s kdamond, the index of the scheme (”…”�”}”(hjº-h²hh³Nh´Nubj½)�”}”(hŒ``scheme_idx=X``”h]”hŒ scheme_idx=X”…”�”}”(hjÔ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjº-ubhŒJ) in the list of the schemes of the context, in addition to the output of ”…”�”}”(hjº-h²hh³Nh´Nubj½)�”}”(hŒ``damon_aggregated``”h]”hŒdamon_aggregated”…”�”}”(hjæ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjº-ubhŒ tracepoint.”…”�”}”(hjº-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mõhjo+h²hubeh}”(h]”(Œ"tracepoints-for-monitoring-results”jS+eh ]”h"]”(Œ"tracepoints for monitoring results”Œ tracepoint”eh$]”h&]”uh1hÈhhÊh²hh³hÇh´MÈjŸ}”j.jI+sj¡}”jS+jI+subeh}”(h]”Œdetailed-usages”ah ]”h"]”Œdetailed usages”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j4.Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”(j¢]”j—aj?]”j5aj•]”j‹aj\]”jRaj¨ ]”jž ajm ]”jc aj:]”j0ajƒ]”jyaj]”jaj]”jaj–]”jŒaj‰]”jajä]”jÚaj“]”j‰ajB]”j8ajQ]”jGaj¢]”j˜ajU]”jKaj ]”j ajS!]”jI!aj˜%]”jŽ%aj¯&]”j¥&aj (]”j(ajÑ)]”jÇ)ajS+]”jI+auŒnameids”}”(j.j .j~j{j¡jžj j jj+j¢ji+jf+jEjBjœj?j›j˜jcj•jbj_j¯ j\j® j« jt j¨ js jp jAjm j@j=jŠj:j‰j†jjƒjjj jjjj�jjœj™j�j–j�jŒjëj‰jêjçjšjäj™j–jIj“jHjEjXjBjWjTj©jQj¨j¥j\j¢j[jXj jUj j jZ!j jY!jV!jŸ%jS!jž%j›%j¶&j˜%jµ&j²&j'(j¯&j&(j#(jØ)j (j×)jÔ)jn*jÑ)jm*jj*ja+j^+jY+jV+j;+j8+j.jS+j.j.uŒ nametypes”}”(j.‰j~ˆj¡ˆj ˆjj+ˆji+‰jE‰jœˆj›‰jcˆjb‰j¯ ˆj® ‰jt ˆjs ‰jAˆj@‰jŠˆj‰‰jˆj‰j ˆj‰j�ˆjœ‰j�ˆj�‰jëˆjê‰jšˆj™‰jIˆjH‰jXˆjW‰j©ˆj¨‰j\ˆj[‰j ˆj ‰jZ!ˆjY!‰jŸ%ˆjž%‰j¶&ˆjµ&‰j'(ˆj&(‰jØ)ˆj×)‰jn*ˆjm*‰ja+‰jY+‰j;+ˆj.ˆj.‰uh}”(j .hÊj{jujžj˜j jj¢j£jf+j£jBjj?jHj˜jHj•j£j_j£j\jhj« jhj¨ j´ jp j´ jm jy j=jy j:jFj†jFjƒj�jj�jjjjjj%j™j%j–j¢jŒj¢j‰j•jçj•jäjðj–jðj“jŸjEjŸjBjNjTjNjQj]j¥j]j¢j®jXj®jUjaj jaj j jV!j jS!j_!j›%j_!j˜%j¤%j²&j¤%j¯&j»&j#(j»&j (j,(jÔ)j,(jÑ)jÝ)jj*jÝ)j^+js*jV+jì*j8+j2+jS+jo+j.jo+uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”jB.Ks…”R”Œparse_messages”]”Œtransform_messages”]”(hŒsystem_message”“”)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ5Hyperlink target "sysfs-interface" is not referenced.”…”�”}”hj¶.sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj³.ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”hÇŒline”K#uh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ0Hyperlink target "sysfs-root" is not referenced.”…”�”}”hjÑ.sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjÎ.ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”Ksuh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ4Hyperlink target "sysfs-kdamonds" is not referenced.”…”�”}”hjë.sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjè.ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”K}uh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ3Hyperlink target "sysfs-kdamond" is not referenced.”…”�”}”hj/sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj/ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”KŠuh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ4Hyperlink target "sysfs-contexts" is not referenced.”…”�”}”hj/sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj/ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”KÀuh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ3Hyperlink target "sysfs-context" is not referenced.”…”�”}”hj9/sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj6/ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”KÌuh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒHyperlink target "damon-usage-sysfs-probes" is not referenced.”…”�”}”hj‡/sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj„/ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”Muh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ3Hyperlink target "sysfs-targets" is not referenced.”…”�”}”hj¡/sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjž/ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”M-uh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ2Hyperlink target "sysfs-target" is not referenced.”…”�”}”hj»/sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj¸/ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”M6uh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ3Hyperlink target "sysfs-regions" is not referenced.”…”�”}”hjÕ/sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjÒ/ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”MIuh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ2Hyperlink target "sysfs-region" is not referenced.”…”�”}”hjï/sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjì/ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”M`uh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ3Hyperlink target "sysfs-schemes" is not referenced.”…”�”}”hj 0sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj0ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”Mluh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ2Hyperlink target "sysfs-scheme" is not referenced.”…”�”}”hj#0sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj 0ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”Myuh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ:Hyperlink target "sysfs-access-pattern" is not referenced.”…”�”}”hj=0sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj:0ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”M�uh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ2Hyperlink target "sysfs-quotas" is not referenced.”…”�”}”hjW0sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjT0ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”Mžuh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ?Hyperlink target "sysfs-schemes-quota-goals" is not referenced.”…”�”}”hjq0sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjn0ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”MÓuh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ6Hyperlink target "sysfs-watermarks" is not referenced.”…”�”}”hj‹0sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjˆ0ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”Mëuh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ3Hyperlink target "sysfs-filters" is not referenced.”…”�”}”hj¥0sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj¢0ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”Muh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ7Hyperlink target "damon-sysfs-dests" is not referenced.”…”�”}”hj¿0sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj¼0ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”MAuh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ9Hyperlink target "sysfs-schemes-stats" is not referenced.”…”�”}”hjÙ0sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjÖ0ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”MXuh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒAHyperlink target "sysfs-schemes-tried-regions" is not referenced.”…”�”}”hjó0sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjð0ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”Mluh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ@Hyperlink target "sysfs-schemes-tried-region" is not referenced.”…”�”}”hj 1sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj 1ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”MŠuh1j±.ubj².)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ0Hyperlink target "tracepoint" is not referenced.”…”�”}”hj'1sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj$1ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jË.Œsource”hÇŒline”MÅuh1j±.ubeŒ transformer”NŒ include_log”]”Œ decoration”Nh²hub.