Dirty/Writeback fields in /proc/meminfo affected by 20d74bf29c

From: Tomas Vondra
Date: Sun Jul 31 2016 - 22:36:48 EST


While investigating a strange OOM issue on the 3.18.x branch (which turned out to be already fixed by 52c84a95), I've noticed a strange difference in Dirty/Writeback fields in /proc/meminfo depending on kernel version. I'm wondering whether this is expected ...

I've bisected the change to 20d74bf29c, added in 3.18.22 (upstream commit 4f258a46):

sd: Fix maximum I/O size for BLOCK_PC requests

With /etc/sysctl.conf containing

vm.dirty_background_bytes = 67108864
vm.dirty_bytes = 1073741824

a simple "dd" example writing 10GB file

dd if=/dev/zero of=ssd.test.file bs=1M count=10240

results in about this on 3.18.21:

Dirty: 740856 kB
Writeback: 12400 kB

but on 3.18.22:

Dirty: 49244 kB
Writeback: 656396 kB

I.e. it seems to revert the relationship. I haven't identified any performance impact, and apparently for random writes the behavior did not change at all (or at least I haven't managed to reproduce it).

But it's unclear to me why setting a maximum I/O size should affect this, and perhaps it has impact that I don't see.