Received: by mail.netbsd.org (Postfix, from userid 0) id 7568F63B251; Thu, 3 Jun 2010 10:56:22 +0000 (UTC) Received: from cvs.netbsd.org (cvs.NetBSD.org [IPv6:2001:4f8:3:7:2e0:81ff:fe30:95bd]) by mail.netbsd.org (Postfix) with ESMTP id EEC3863B124 for ; Thu, 3 Jun 2010 10:56:20 +0000 (UTC) Received: by cvs.netbsd.org (Postfix, from userid 500) id D8914175DD; Thu, 3 Jun 2010 10:56:20 +0000 (UTC) MIME-Version: 1.0 Content-Disposition: inline Content-Transfer-Encoding: binary Content-Type: text/plain Date: Thu, 3 Jun 2010 10:56:20 +0000 From: Antti Kantee Subject: CVS commit: src/sys/rump/librump/rumpkern To: source-changes@NetBSD.org X-Mailer: log_accum Message-Id: <20100603105620.D8914175DD@cvs.netbsd.org> Sender: source-changes-owner@NetBSD.org List-Id: source-changes.NetBSD.org Precedence: list Reply-To: source-changes-d@NetBSD.org Mail-Reply-To: Antti Kantee Mail-Followup-To: source-changes-d@NetBSD.org Module Name: src Committed By: pooka Date: Thu Jun 3 10:56:20 UTC 2010 Modified Files: src/sys/rump/librump/rumpkern: locks_up.c memalloc.c rump.c rump_private.h vm.c Log Message: Implement a sort-of pagedaemon: adjust all memory allocators to go through an in-rumpkernel hypermemory allocator which knows it should kick the pagedaemon and block in case ``waitok'' memory allocation fails. This allows us to recover from some out-of-memory situations. Realworld'istically speaking (as opposed to whatever "should be" theory), these OOM situations will happen extremely rarely if ever when our hypervisor is a regular process. Speculatively, this should be useful for other types of hosts. issues remaining: * the hypervisor does not know how to reclaim kernel memory (and for the reason I stated above, I'm not sure if it makes sense to teach the current implementation about that) * vfs memory (buffers, vm object pages etc.) is not reclaimed To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/rump/librump/rumpkern/locks_up.c cvs rdiff -u -r1.6 -r1.7 src/sys/rump/librump/rumpkern/memalloc.c cvs rdiff -u -r1.174 -r1.175 src/sys/rump/librump/rumpkern/rump.c cvs rdiff -u -r1.49 -r1.50 src/sys/rump/librump/rumpkern/rump_private.h cvs rdiff -u -r1.79 -r1.80 src/sys/rump/librump/rumpkern/vm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.