On 07/18/2019 01:58 PM, Michael S. Tsirkin wrote:
what if it does not fail?
Shrinker is called on system memory pressure. On memory pressure
get_free_page_and_send will fail memory allocation, so it stops allocating
more.
Memory pressure could be triggered by an unrelated allocation
e.g. from another driver.
As memory pressure is system-wide (no matter who triggers it), free page
hinting
will fail on memory pressure, same as other drivers.
As long as the page allocation succeeds, we could just think the system
is not in
the memory pressure situation, then thing could go on normally.
Also, the VIRTIO_BALLOON_FREE_PAGE_ALLOC_FLAG includes NORETRY and
NOMEMALLOC,
which makes it easier than most other drivers to fail allocation first.
Best,
Wei