I noticed that my NFSROOT test system goes slow responding when there
is heavy dd to a local disk. Traces show that the NFSROOT's bdi_limit
is near 0 and many tasks in the system are repeatedly stuck in
balance_dirty_pages().
There are two related problems:
- light dirtiers at one device (more often than not the rootfs) get
heavily impacted by heavy dirtiers on another independent device
- the light dirtied device does heavy throttling because bdi_limit=0,
and the heavy throttling may in turn withhold its bdi_limit in 0 as
it cannot dirty fast enough to grow up the bdi's proportional weight.
Fix it by introducing some "low pass" gate, which is a small (<=8MB)
value reserved by others and can be safely "stole" from the current
global dirty margin. It does not need to be big to help the bdi gain
its initial weight.