Re: [RFC][PATCH 2/9] deadlock prevention core
From: Peter Zijlstra <hidden>
Date: 2006-08-14 04:42:00
Also in:
lkml, netdev
On Sun, 2006-08-13 at 18:53 -0700, Andrew Morton wrote:
On Sun, 13 Aug 2006 18:31:14 -0700 Daniel Phillips [off-list ref] wrote:quoted
But to solve the whole problemWhat problem? Has anyone come up with a testcase which others can reproduce?
Problem: Networked Block devices (NBD, iSCSI, AoE) can deadlock in the following manner: deplete normal memory because of memory pressure; deplete reserves by writeout over network (pageout happens under PF_MEMALLOC), little to no memory left for receiving those now crucial ACK packets. A few packets could still fit in memory, but are quickly gobbled up by non-crucial sockets and are left waiting on blocked user-space processes. All memory is depleted and progress stalled forever. (This affects swap and shared mmap) Our Solution: Mark some sockets with SOCK_MEMALLOC; which is essentially a promise to never block. When under memory pressure only deliver packets to these sockets, memory will still be used but never lost waiting on a blocked user space process. Also make sure the reserve is large enough so that writeout will never be able to completely deplete it. (It is here I still do not see Evgeniy's Network Tree Allocator work; where is the guarantee that you do not end up with all memory lost waiting on blocked sockets?) Testcase: Mount an NBD device as sole swap device and mmap > physical RAM, then loop through touching pages only once. My normal test setup is a p3-550 with 192M of ram with a 100Mbit card and remote machine with a regular 7200 RPM pata drive. I'm sure there is an iSCSI equivalent scenario, playing with iSCSI is next on my list of things. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>