在/proc/meminfo中,Dirty包含还是排除Writeback?

在/proc/meminfo中,Dirty包含还是排除Writeback?

Dirty%lu - 正在等待写回磁盘的内存。

Writeback%lu - 正在主动写回磁盘的内存。

--人进程

包括?DirtyWriteback还是排除了?

我的内核版本是4.18.16-200.fc28.x86_64。

答案1

“脏”和“写回”是单独的统计数据和页面状态;要证明这一点,请参见示例node_dirty_ok:

nr_pages += node_page_state(pgdat, NR_FILE_DIRTY);
nr_pages += node_page_state(pgdat, NR_UNSTABLE_NFS);
nr_pages += node_page_state(pgdat, NR_WRITEBACK);

return nr_pages <= limit;

如果其中之一包括另一个,则此处将予以考虑。

/proc/meminfo 也不处理相应的值:

show_val_kb(m, "Dirty:          ",
        global_node_page_state(NR_FILE_DIRTY));
show_val_kb(m, "Writeback:      ",
        global_node_page_state(NR_WRITEBACK));

答案2

我认为Dirty排除Writeback.

dd if=/dev/zero of=~/X.img bs=1M count=1 ; sync & for i in 1 2 3; do grep -E '^(Dirty:|Writeback:|MemFree:|Cached:)' /proc/meminfo ; done
1+0 records in
1+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00316564 s, 331 MB/s
[1] 13140
MemFree:         1461832 kB
Cached:          1475188 kB
Dirty:               132 kB
Writeback:          1032 kB
...

(尽管这只是/proc/meminfo保证 100% 一致的证明)。

相关内容