Memory management is a balancing act in a number of ways. The kernel must
balance the needs of current users of memory with anticipated future needs,
for example. The kernel must
also balance the act of reclaiming memory for other uses, which can involve
writing data to permanent storage, with the rate of data that the
underlying storage devices are able to accept. For years, the
memory-management subsystem has used storage-device congestion as a signal
that it should slow down reclaim. Unfortunately, that mechanism, which was
a bit questionable from the beginning, has not worked in a long time. Mel
Gorman is now trying to fix this problem with a
patch set that moves the kernel away from the idea of waiting on congestion.
Source: LWN.net – [$] Replacing congestion_wait()