Maximizing VM writeout performance


One Line Summary

Teach the VM subsystem to perform large I/O writeouts to avoid performance degradation in some situations.


An application making explicit writeout requests for relatively large, contiguous blocks of I/O can produce good I/O patterns and achieve high throughput. However, when the VM goes into writeback, pages are written based on age and the kernel may not produces as optimal of an I/O pattern as the application had. As a result, application performance drops as the app-initiated writeout is slowed by tiny, discontiguous VM writeouts. An application that had been avoiding VM writeout by monitoring global memory levels will appear to regress when it is moved to a NUMA system where per-node or per-zone limits initiate VM writeback before global limits are reached.

I would like to discuss mechanisms to improve writeout performance. Ideas include teaching the VM writeback paths in the kernel to perform I/O is larger swathes, or grouping pages which should be written together in some fashion.


Leave a private comment to organizers about this proposal