vmw_balloon: Add memory shrinker
authorNadav Amit <namit@vmware.com>
Thu, 25 Apr 2019 11:54:44 +0000 (04:54 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 24 May 2019 18:19:17 +0000 (20:19 +0200)
commit5d1a86ecf328586fbedf7b66595ac3c7039eb8c8
tree05e87ca3fe5d5c0fe65f63d99325dd396c974f92
parent83a8afa72e9c0a200d9d400ce83a0cb5193b0e3d
vmw_balloon: Add memory shrinker

Add a shrinker to the VMware balloon to prevent out-of-memory events.
We reuse the deflate logic for this matter. Deadlocks should not happen,
as no memory allocation is performed while the locks of the
communication (batch/page) and page-list are taken. In the unlikely
event in which the configuration semaphore is taken for write we bail
out and fail gracefully (causing processes to be killed).

Once the shrinker is called, inflation is postponed for few seconds.
The timeout is updated without any lock, but this should not cause any
races, as it is written and read atomically.

This feature is disabled by default, since it might cause performance
degradation.

Reviewed-by: Xavier Deguillard <xdeguillard@vmware.com>
Signed-off-by: Nadav Amit <namit@vmware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/vmw_balloon.c