Re: [PATCH v2 0/5] Introduce MADV_COLD and MADV_PAGEOUT

From: Pavel Machek
Date: Wed Jun 12 2019 - 07:04:25 EST


Hi!

> - Problem
>
> Naturally, cached apps were dominant consumers of memory on the system.
> However, they were not significant consumers of swap even though they are
> good candidate for swap. Under investigation, swapping out only begins
> once the low zone watermark is hit and kswapd wakes up, but the overall
> allocation rate in the system might trip lmkd thresholds and cause a cached
> process to be killed(we measured performance swapping out vs. zapping the
> memory by killing a process. Unsurprisingly, zapping is 10x times faster
> even though we use zram which is much faster than real storage) so kill
> from lmkd will often satisfy the high zone watermark, resulting in very
> few pages actually being moved to swap.

Is it still faster to swap-in the application than to restart it?


> This approach is similar in spirit to madvise(MADV_WONTNEED), but the
> information required to make the reclaim decision is not known to the app.
> Instead, it is known to a centralized userspace daemon, and that daemon
> must be able to initiate reclaim on its own without any app involvement.
> To solve the concern, this patch introduces new syscall -
>
> struct pr_madvise_param {
> int size; /* the size of this structure */
> int cookie; /* reserved to support atomicity */
> int nr_elem; /* count of below arrary fields */
> int __user *hints; /* hints for each range */
> /* to store result of each operation */
> const struct iovec __user *results;
> /* input address ranges */
> const struct iovec __user *ranges;
> };
>
> int process_madvise(int pidfd, struct pr_madvise_param *u_param,
> unsigned long flags);

That's quite a complex interface.

Could we simply have feel_free_to_swap_out(int pid) syscall? :-).

Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

Attachment: signature.asc
Description: Digital signature