On 3/10/22 01:43, Dmitry Osipenko wrote:
I think that, given virgl uses host storage, guest shrinker should be still useful.. so I think continue with this series.
Guest shrinker indeed will be useful for virgl today. I was already questioning why virgl needs both host and guest storages, maybe it will move to a host-only storage approach in the future.
I think the variant with the timer expiration actually could be interesting to try because it should allow host to purge its VM BOs by itself, preventing host OOMs.
While I was working on shrinker v2, I noticed that host-side allocation may take a significant time. So I decided to defer implementation of my idea of using timer-based expiration for host-only BOs. I'll need to examine it more.
For host shrinker, I'll have to look more at when crosvm triggers balloon inflation. I could still go the MADV:WILLNEED_REPLACE approach instead, which does have the advantage of host kernel not relying on host userspace or vm having a chance to run in order to release pages. The downside (perhaps?) is it would be more specific to virtgpu-native-context and less so to virgl or venus (but I guess there doesn't currently exist a way for madvise to be useful for vk drivers).
I'll also take a look at what CrOS does, maybe it has some interesting ideas.
I looked at CrOS kernel and crosvm, and haven't noticed anything special there in regards to purging GPU's memory of VM on host-side memory pressure. If you'll find something, then please let me know.
I sent out v2 of the shrinker series, but missed to CC you on it by accident, please find it here [1].
[1] https://lore.kernel.org/dri-devel/20220314224253.236359-1-dmitry.osipenko@co...