I wanted to review "mm: Introduce Reported pages" just realize that I have no clue on what is going on so returned to the cover and it didn't really help much. I am completely unfamiliar with virtio so please bear with me. On Sat 07-09-19 10:25:03, Alexander Duyck wrote: [...] > This series provides an asynchronous means of reporting to a hypervisor > that a guest page is no longer in use and can have the data associated > with it dropped. To do this I have implemented functionality that allows > for what I am referring to as unused page reporting > > The functionality for this is fairly simple. When enabled it will allocate > statistics to track the number of reported pages in a given free area. > When the number of free pages exceeds this value plus a high water value, > currently 32, it will begin performing page reporting which consists of > pulling pages off of free list and placing them into a scatter list. The > scatterlist is then given to the page reporting device and it will perform > the required action to make the pages "reported", in the case of > virtio-balloon this results in the pages being madvised as MADV_DONTNEED > and as such they are forced out of the guest. After this they are placed > back on the free list, And here I am reallly lost because "forced out of the guest" makes me feel that those pages are no longer usable by the guest. So how come you can add them back to the free list. I suspect understanding this part will allow me to understand why we have to mark those pages and prevent merging. > and an additional bit is added if they are not > merged indicating that they are a reported buddy page instead of a > standard buddy page. The cycle then repeats with additional non-reported > pages being pulled until the free areas all consist of reported pages. -- Michal Hocko SUSE Labs