Note
此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。
- Original:
- 翻译:
Doehyun Baek <doehyunbaek@gmail.com>
数据访问监测结果统计¶
数据访问监测结果统计(DAMON_STAT)是一个静态内核模块,旨在用于简单的 访问模式监测。它使用 DAMON 监测系统整个物理内存上的访问,并提供简化的 访问监测结果统计,即空闲时间百分位数和估计的内存带宽。
监测精度和开销¶
DAMON_STAT 使用监测间隔
自动调优 来提高
精度并最小化开销。它会自动调优间隔,目标是在每个快照中捕获 4 % 的
可观测访问事件,同时将得到的采样间隔限制在最小 5 毫秒、最大 10 秒。
在少数生产服务器系统上,它的结果是只消耗 0.x % 的单个 CPU 时间,同时
捕获质量合理的访问模式。调优得到的间隔可以通过
aggr_interval_us 参数 获取。
接口:模块参数¶
要使用这个功能,首先应确保你的系统运行在构建时启用了
CONFIG_DAMON_STAT=y 的内核上。通过将
CONFIG_DAMON_STAT_ENABLED_DEFAULT 设置为 true,可以在构建时默认
启用该功能。
为了让系统管理员在启动时和/或运行时启用或禁用它,并读取监测结果, DAMON_STAT 提供了模块参数。下面的章节描述这些参数。
enabled¶
启用或禁用 DAMON_STAT。
你可以将该参数的值设置为 Y 来启用 DAMON_STAT。设置为 N 会
禁用 DAMON_STAT。默认值由 CONFIG_DAMON_STAT_ENABLED_DEFAULT 构建
配置选项设置。
请注意,该模块(damon_stat)不能与其他基于 DAMON 的专用模块同时运行。 更多细节请参考 DAMON 设计文档的专用模块互斥性。
aggr_interval_us¶
自动调优后的聚集时间间隔,单位是微秒。
用户可以读取 DAMON_STAT 使用的 DAMON 实例的聚集间隔。它会被 自动调优,因此该值 会动态变化。
estimated_memory_bandwidth¶
系统的估计内存带宽消耗(字节/秒)。
DAMON_STAT 读取当前 DAMON 结果快照上的观测访问事件,并将其转换为以 字节/秒为单位的内存带宽消耗估计。得到的指标通过这个只读参数向用户 公开。由于 DAMON 使用采样,所以这只是访问强度的估计,而不是精确的 内存带宽。
memory_idle_ms_percentiles¶
系统的逐字节空闲时间(毫秒)百分位数。
DAMON_STAT 基于当前 DAMON 结果快照,计算内存中每个字节到现在为止未被
访问的时间(空闲时间)。对于访问频率(nr_accesses)大于零的区域,当前
访问频率水平保持的时间乘以 -1,就是该区域每个字节的空闲时间。如果
某个区域的访问频率(nr_accesses)为零,则该区域保持零访问频率的时间
(age)就是该区域每个字节的空闲时间。然后,DAMON_STAT 通过这个只读参数
公开空闲时间值的百分位数。读取该参数会返回 101 个以毫秒为单位、用逗号
分隔的空闲时间值。每个值分别表示第 0、第 1、第 2、第 3、……、第 99 和
第 100 百分位的空闲时间。
kdamond_pid¶
DAMON 线程的 PID。
如果 DAMON_STAT 已启用,这将成为工作线程的 PID。否则为 -1。