On 04/02/2012 10:58 AM, Hugh Dickins wrote:
On Mon, 2 Apr 2012, Luca Porzio (lporzio) wrote:
Great topics. As per one of Rik original points:
skip writeout of zero-filled pages - this can be a big help for KVM virtual machines running Windows, since Windows zeroes out free pages; simply discarding a zero-filled page is not at all simple in the current VM, where we would have to iterate over all the ptes to free the swap entry before being able to free the swap cache page (I am not sure how that locking would even work)
with the extra layer of indirection, the locking for this scheme can be trivial - either the faulting process gets the old page, or it gets a new one, either way it'll be zero filled
Since it's KVMs realm here, can't KSM simply solve the zero-filled pages problem avoiding unnecessary burden for the Swap subsystem?
I would expect that KSM already does largely handle this, yes. But it's also quite possible that I'm missing Rik's point.
Indeed, KSM handles it already.
However, it may be worthwhile for non-KVM users of transparent huge pages to discard zero-filled parts of pages (allocated by the kernel to the process, but not used memory).
Not just because it takes up swap space (writing to swap is easy, space is cheap), but because not swapping that memory back in later (because it is not used) will prevent us from re-building the transparent huge page...