Prev: powerpc: Panic on platform ppc-xicp when CONFIG_XICS not set instead of build failure
Next: oom-kill: fix NUMA consraint check with nodemask v4.2
From: Alasdair G Kergon on 17 Nov 2009 08:20 On Tue, Nov 17, 2009 at 04:17:07PM +0900, KOSAKI Motohiro wrote: > Non MM subsystem must not use PF_MEMALLOC. Memory reclaim need few > memory, anyone must not prevent it. Otherwise the system cause > mysterious hang-up and/or OOM Killer invokation. This code is also on the critical path, for example, if you are swapping onto a dm device. (There are ways we could reduce its use further as not every dm ioctl needs to be on the critical path and the buffer size could be limited for the ioctls that do.) But what situations have been causing you trouble? The OOM killer must generally avoid killing userspace processes that suspend & resume dm devices, and there are tight restrictions on what those processes can do safely between suspending and resuming. Alasdair -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: KOSAKI Motohiro on 18 Nov 2009 01:20
Hi, Thank you for give me comment. > On Tue, Nov 17, 2009 at 04:17:07PM +0900, KOSAKI Motohiro wrote: > > Non MM subsystem must not use PF_MEMALLOC. Memory reclaim need few > > memory, anyone must not prevent it. Otherwise the system cause > > mysterious hang-up and/or OOM Killer invokation. > > This code is also on the critical path, for example, if you are swapping > onto a dm device. (There are ways we could reduce its use further as > not every dm ioctl needs to be on the critical path and the buffer size > could be limited for the ioctls that do.) May I ask one additional question? Original code is here. ------------------------------------------------------- /* * Trying to avoid low memory issues when a device is * suspended. */ current->flags |= PF_MEMALLOC; /* * Copy the parameters into kernel space. */ r = copy_params(user, ¶m); current->flags &= ~PF_MEMALLOC; ------------------------------------------------------- but PF_MEMALLOC doesn't gurantee allocation successfull. In your case, mempoll seems better to me. copy_params seems enough small function and we can rewrite it. Why didn't you use mempool? Am I missing something? > But what situations have been causing you trouble? The OOM killer must > generally avoid killing userspace processes that suspend & resume dm > devices, and there are tight restrictions on what those processes > can do safely between suspending and resuming. No. This is theorical issue. but I really want to avoid stress weakness kernel. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |