Comment 187 for bug 595047

Revision history for this message
In , thomas.pi (thomas.pi-linux-kernel-bugs) wrote :

In __block_write_full_page (buffer.c) nearby all submits to the block device are caused by pdflush.
At the beginning there are submits of 300MB on VM with 384MB. After that the dd processes submits the data direct. As soon as there is available memory, it is filled and submitted immediately by pdflush. The 300MB are submitted at once or nearby at once.

On the VM there is the following scheme, caused by the double buffering (VM/Host).
At 67.506825 300MB (pdflush)
               100MB (dd processes)
At 72.750497 300MB (pdflush)
               100MB (dd processes)
At 74.215577 50MB (pdflush) // Host cache filled
...

My guess is, that the dirty pages are not increased correctly by create_empty_buffers in __block_write_full_page. I currently don't known, how to check it, as I have just started to read and understand the kernel code.