Re: [RFC RESEND PATCH] swap: choose swap device according to numa node

From: Aaron Lu
Date: Tue Jul 05 2016 - 02:22:29 EST


On Tue, Jul 05, 2016 at 01:57:35PM +0800, Yu Chen wrote:
> On Tue, Jul 5, 2016 at 11:19 AM, Aaron Lu <aaron.lu@xxxxxxxxx> wrote:
> > Resend:
> > This is a resend, the original patch doesn't catch much attention.
> > It may not be a big deal for swap devices that used to be hosted on
> > HDD but with devices like 3D Xpoint to be used as swap device, it could
> > make a real difference if we consider NUMA information when doing IO.
> > Comments are appreciated, thanks for your time.
> >
> -------------------------%<-------------------------
> > diff --git a/mm/vmscan.c b/mm/vmscan.c
> > index 71b1c29948db..dd7e44a315b0 100644
> > --- a/mm/vmscan.c
> > +++ b/mm/vmscan.c
> > @@ -3659,9 +3659,11 @@ void kswapd_stop(int nid)
> >
> > static int __init kswapd_init(void)
> > {
> > - int nid;
> > + int nid, err;
> >
> > - swap_setup();
> > + err = swap_setup();
> > + if (err)
> > + return err;
> > for_each_node_state(nid, N_MEMORY)
> > kswapd_run(nid);
> > hotcpu_notifier(cpu_callback, 0);
> In original implementation, although swap_setup failed,

In current implementaion swap_setup never fail :-)

> the swapd would also be created, since swapd is
> not only used for swap out but also for other page reclaim,
> so this change above might modify its semantic? Sorry if
> I understand incorrectly.

Indeed it's a behaviour change. The only reason swap_setup can return an
error code now is when it fails to allocate nr_node_ids * sizeof(struct
plist_head) memory and if that happens, I don't think it makes much
sense to continue boot the system.

Thanks,
Aaron