€•EŒ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/stat”Œ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/stat”Œ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/stat”Œ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/stat”Œ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/stat”Œ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/stat”Œ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/stat”Œ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³ŒG/var/lib/git/docbuild/linux/Documentation/admin-guide/mm/damon/stat.rst”h´KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ#Data Access Monitoring Results Stat”h]”hŒ#Data Access Monitoring Results Stat”…””}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)”}”(hXNData Access Monitoring Results Stat (DAMON_STAT) is a static kernel module that is aimed to be used for simple access pattern monitoring. It monitors accesses on the system's entire physical memory using DAMON, and provides simplified access monitoring results statistics, namely idle time percentiles and estimated memory bandwidth.”h]”hXPData Access Monitoring Results Stat (DAMON_STAT) is a static kernel module that is aimed to be used for simple access pattern monitoring. It monitors accesses on the system’s entire physical memory using DAMON, and provides simplified access monitoring results statistics, namely idle time percentiles and estimated memory bandwidth.”…””}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhŒtarget”“”)”}”(hŒ,.. _damon_stat_monitoring_accuracy_overhead:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œ'damon-stat-monitoring-accuracy-overhead”uh1híh´K hhÊh²hh³hÇubhÉ)”}”(hhh]”(hÎ)”}”(hŒ Monitoring Accuracy and Overhead”h]”hŒ Monitoring Accuracy and Overhead”…””}”(hhþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhûh²hh³hÇh´KubhÞ)”}”(hXpDAMON_STAT uses monitoring intervals :ref:`auto-tuning ` to make its accuracy high and overhead minimum. It auto-tunes the intervals aiming 4 % of observable access events to be captured in each snapshot, while limiting the resulting sampling interval to be 5 milliseconds in minimum and 10 seconds in maximum. On a few production server systems, it resulted in consuming only 0.x % single CPU time, while capturing reasonable quality of access patterns. The tuning-resulting intervals can be retrieved via ``aggr_interval_us`` :ref:`parameter `.”h]”(hŒ%DAMON_STAT uses monitoring intervals ”…””}”(hj h²hh³Nh´Nubh)”}”(hŒA:ref:`auto-tuning `”h]”hŒinline”“”)”}”(hjh]”hŒ auto-tuning”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œadmin-guide/mm/damon/stat”Œ refdomain”j%Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œ,damon_design_monitoring_intervals_autotuning”uh1hh³hÇh´Khj ubhXÆ to make its accuracy high and overhead minimum. It auto-tunes the intervals aiming 4 % of observable access events to be captured in each snapshot, while limiting the resulting sampling interval to be 5 milliseconds in minimum and 10 seconds in maximum. On a few production server systems, it resulted in consuming only 0.x % single CPU time, while capturing reasonable quality of access patterns. The tuning-resulting intervals can be retrieved via ”…””}”(hj h²hh³Nh´NubhŒliteral”“”)”}”(hŒ``aggr_interval_us``”h]”hŒaggr_interval_us”…””}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj ubhŒ ”…””}”(hj h²hh³Nh´Nubh)”}”(hŒ.:ref:`parameter `”h]”j)”}”(hjSh]”hŒ parameter”…””}”(hjUh²hh³Nh´Nubah}”(h]”h ]”(j$Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjQubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j1Œ refdomain”j_Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj7Œdamon_stat_aggr_interval_us”uh1hh³hÇh´Khj ubhŒ.”…””}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khhûh²hubeh}”(h]”(Œ monitoring-accuracy-and-overhead”húeh ]”h"]”(Œ monitoring accuracy and overhead”Œ'damon_stat_monitoring_accuracy_overhead”eh$]”h&]”uh1hÈhhÊh²hh³hÇh´KŒexpect_referenced_by_name”}”jhïsŒexpect_referenced_by_id”}”húhïsubhÉ)”}”(hhh]”(hÎ)”}”(hŒInterface: Module Parameters”h]”hŒInterface: Module Parameters”…””}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjˆh²hh³hÇh´KubhÞ)”}”(hŒèTo use this feature, you should first ensure your system is running on a kernel that is built with ``CONFIG_DAMON_STAT=y``. The feature can be enabled by default at build time, by setting ``CONFIG_DAMON_STAT_ENABLED_DEFAULT`` true.”h]”(hŒcTo use this feature, you should first ensure your system is running on a kernel that is built with ”…””}”(hj™h²hh³Nh´Nubj>)”}”(hŒ``CONFIG_DAMON_STAT=y``”h]”hŒCONFIG_DAMON_STAT=y”…””}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj™ubhŒC. The feature can be enabled by default at build time, by setting ”…””}”(hj™h²hh³Nh´Nubj>)”}”(hŒ%``CONFIG_DAMON_STAT_ENABLED_DEFAULT``”h]”hŒ!CONFIG_DAMON_STAT_ENABLED_DEFAULT”…””}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj™ubhŒ true.”…””}”(hj™h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjˆh²hubhÞ)”}”(hŒ½To let sysadmins enable or disable it at boot and/or runtime, and read the monitoring results, DAMON_STAT provides module parameters. Following sections are descriptions of the parameters.”h]”hŒ½To let sysadmins enable or disable it at boot and/or runtime, and read the monitoring results, DAMON_STAT provides module parameters. Following sections are descriptions of the parameters.”…””}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K#hjˆh²hubhÉ)”}”(hhh]”(hÎ)”}”(hŒenabled”h]”hŒenabled”…””}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÙh²hh³hÇh´K(ubhÞ)”}”(hŒEnable or disable DAMON_STAT.”h]”hŒEnable or disable DAMON_STAT.”…””}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K*hjÙh²hubhÞ)”}”(hŒËYou can enable DAMON_STAT by setting the value of this parameter as ``Y``. Setting it as ``N`` disables DAMON_STAT. The default value is set by ``CONFIG_DAMON_STAT_ENABLED_DEFAULT`` build config option.”h]”(hŒDYou can enable DAMON_STAT by setting the value of this parameter as ”…””}”(hjøh²hh³Nh´Nubj>)”}”(hŒ``Y``”h]”hŒY”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjøubhŒ. Setting it as ”…””}”(hjøh²hh³Nh´Nubj>)”}”(hŒ``N``”h]”hŒN”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjøubhŒ3 disables DAMON_STAT. The default value is set by ”…””}”(hjøh²hh³Nh´Nubj>)”}”(hŒ%``CONFIG_DAMON_STAT_ENABLED_DEFAULT``”h]”hŒ!CONFIG_DAMON_STAT_ENABLED_DEFAULT”…””}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjøubhŒ build config option.”…””}”(hjøh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K,hjÙh²hubhÞ)”}”(hŒóNote that this module (damon_stat) cannot run simultaneously with other DAMON-based special-purpose modules. Refer to :ref:`DAMON design special purpose modules exclusivity ` for more details.”h]”(hŒwNote that this module (damon_stat) cannot run simultaneously with other DAMON-based special-purpose modules. Refer to ”…””}”(hj<h²hh³Nh´Nubh)”}”(hŒj:ref:`DAMON design special purpose modules exclusivity `”h]”j)”}”(hjFh]”hŒ0DAMON design special purpose modules exclusivity”…””}”(hjHh²hh³Nh´Nubah}”(h]”h ]”(j$Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjDubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j1Œ refdomain”jRŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj7Œ0damon_design_special_purpose_modules_exclusivity”uh1hh³hÇh´K0hj<ubhŒ for more details.”…””}”(hj<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K0hjÙh²hubhî)”}”(hŒ .. _damon_stat_aggr_interval_us:”h]”h}”(h]”h ]”h"]”h$]”h&]”hùŒdamon-stat-aggr-interval-us”uh1híh´K5hjÙh²hh³hÇubeh}”(h]”Œenabled”ah ]”h"]”Œenabled”ah$]”h&]”uh1hÈhjˆh²hh³hÇh´K(ubhÉ)”}”(hhh]”(hÎ)”}”(hŒaggr_interval_us”h]”hŒaggr_interval_us”…””}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´K8ubhÞ)”}”(hŒ5Auto-tuned aggregation time interval in microseconds.”h]”hŒ5Auto-tuned aggregation time interval in microseconds.”…””}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K:hjh²hubhÞ)”}”(hŒÜUsers can read the aggregation interval of DAMON that is being used by the DAMON instance for DAMON_STAT. It is :ref:`auto-tuned ` and therefore the value is dynamically changed.”h]”(hŒqUsers can read the aggregation interval of DAMON that is being used by the DAMON instance for DAMON_STAT. It is ”…””}”(hj h²hh³Nh´Nubh)”}”(hŒ;:ref:`auto-tuned `”h]”j)”}”(hjªh]”hŒ auto-tuned”…””}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”(j$Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj¨ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j1Œ refdomain”j¶Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj7Œ'damon_stat_monitoring_accuracy_overhead”uh1hh³hÇh´K)”}”(hŒ``-1``”h]”hŒ-1”…””}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj1ubhXì becomes the idlee time of every byte of the region. If a region has zero access frequency (nr_accesses), how long the region was keeping the zero access frequency (age) becomes the idle time of every byte of the region. Then, DAMON_STAT exposes the percentiles of the idle time values via this read-only parameter. Reading the parameter returns 101 idle time values in milliseconds, separated by comma. Each value represents 0-th, 1st, 2nd, 3rd, ..., 99th and 100th percentile idle times.”…””}”(hj1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KQhjh²hubeh}”(h]”Œmemory-idle-ms-percentiles”ah ]”h"]”Œmemory_idle_ms_percentiles”ah$]”h&]”uh1hÈhjˆh²hh³hÇh´KMubeh}”(h]”Œinterface-module-parameters”ah ]”h"]”Œinterface: module parameters”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´Kubeh}”(h]”Œ#data-access-monitoring-results-stat”ah ]”h"]”Œ#data access monitoring results stat”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”jŒŒ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”}”(hú]”hïajx]”jnauŒnameids”}”(jfjcjhúj€j}j^j[j~j{jØjxj×jÔjj jVjSuŒ nametypes”}”(jf‰jˆj€‰j^‰j~‰j؈j׉j‰jV‰uh}”(jchÊhúhûj}hûj[jˆj{jÙjxjjÔjj jÝjSjuŒ 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”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”(hŒsystem_message”“”)”}”(hhh]”hÞ)”}”(hhh]”hŒMHyperlink target "damon-stat-monitoring-accuracy-overhead" 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ŒAHyperlink target "damon-stat-aggr-interval-us" is not referenced.”…””}”hjsbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j Œsource”hÇŒline”K5uh1jòubeŒ transformer”NŒ include_log”]”Œ decoration”Nh²hub.