Hi! > > > 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? :-). > > I wonder for how long we'll go on with adding new syscalls each time we need > some amendment to existing interfaces. Yes, clone6(), I'm looking at > you :(. > > In case of process_madvise() keep in mind it will be focused not only on > MADV_COLD, but also, potentially, on other MADV_ flags as well. I can > hardly imagine we'll add one syscall per each flag. Use case described above talked about whole-process-at-a-time usage, so I'm asking if simpler interface/code is enough. If there's motivation for more complex version, it should be described here... Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html