我们使用Prometheus节点导出器来监控我们的系统
它包含node_memory_Dirty_bytes
,node_memory_MemAvailable_bytes
那么,是否可以说当node_memory_Dirty_bytes / node_memory_MemAvailable_bytes * 100
超过vm.dirty_background_ratio时,后台刷新器就会运行?
类似地,当它exeeeds vm.dirty_ratio时,所有的writers都会阻塞吗?
其他一些文档说它不仅仅是可用字节
dirty_background_ratio
Contains, as a percentage of total available memory that contains free pages and reclaimable pages, the number of pages at which the background kernel flusher threads will start writing out dirty data.
所以这里说可用=免费+可回收页面
那么公式是否会变为node_memory_Dirty_bytes / (node_memory_MemFree_bytes + node_memory_KReclaimable_bytes + node_memory_SReclaimable_bytes ) * 100
1条答案
按热度按时间5uzkadbs1#
您如何观察“写”?脏页 * 可能 * 由于多种原因而被写回:
1.超过了水印
vm.dirty_ratio
/dirty_background_ratio
(或它们的bytes
等效值),内核开始通过将脏页刷新到磁盘来异步或同步回收内存。1.脏页比
vm.dirty_writeback_centisecs
旧,也会被后台刷新线程写回。这可以防止脏页在磁盘上停留太久,否则停电可能会导致大量数据丢失。1.页面本身通过syscall进行
fsync()
艾德,syscall是一种按需同步写回操作。10%的水印没有被击中可能被认为是一件好事,因为I/O的速率是健康的,并且没有被磁盘瓶颈。
参考资料