From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrea Arcangeli Subject: Re: [kvm-devel] performance with guests running 2.4 kernels (specifically RHEL3) Date: Wed, 28 May 2008 17:58:40 +0200 Message-ID: <20080528155840.GA8086@duo.random> References: <482FCEE1.5040306@qumranet.com> <4830F90A.1020809@cisco.com> <4830FE8D.6010006@cisco.com> <48318E64.8090706@qumranet.com> <4832DDEB.4000100@qumranet.com> <4835EEF5.9010600@cisco.com> <483D391F.7050007@qumranet.com> <483D6898.2050605@cisco.com> <20080528144850.GX27375@duo.random> <483D72D1.7080803@qumranet.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: "David S. Ahern" , kvm@vger.kernel.org To: Avi Kivity Return-path: Received: from host36-195-149-62.serverdedicati.aruba.it ([62.149.195.36]:55989 "EHLO mx.cpushare.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751457AbYE1P6m (ORCPT ); Wed, 28 May 2008 11:58:42 -0400 Content-Disposition: inline In-Reply-To: <483D72D1.7080803@qumranet.com> Sender: kvm-owner@vger.kernel.org List-ID: On Wed, May 28, 2008 at 05:57:21PM +0300, Avi Kivity wrote: > What about CONFIG_HIGHPTE? Ah yes sorry! Official 2.4 has no highpte capability but surely RH backported highpte to 2.4 so that would explain the cpu time spent in kswapd _guest_ context. If highpte is the problem and you've troubles reproducing, I recommend running some dozen of those in background on the 2.4 VM that has the ZERO_PAGE support immediately after boot. This will ensure there will be tons of pagetables in highmemory. This should allocate purely pagetables and allow for a worst case of highpte. Check with /proc/meminfo that the pagetable number goes up of a few megabytes for each one of those tasks. Then just try to allocate some real ram (not zeropage) and if there's a problem with highptes it should be possible to reproduce it with so many highptes allocated in the system. Guest VM size should be 2G, you don't really need more than 2G to reproduce by using the below ZERO_PAGE trick. #include #include #include int main() { char *p1, *p2; p1 = malloc(512*1024*1024); p2 = malloc(512*1024*1024); if (memcmp(p1, p2, 512*1024*1024)) *(char *)0 = 0; pause(); return 0; }