From patchwork Fri Jul 10 10:01:51 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?THVrw6HFoSBEb2t0b3I=?= X-Patchwork-Id: 34942 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n6AA2Ena022790 for ; Fri, 10 Jul 2009 10:02:14 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751083AbZGJKB5 (ORCPT ); Fri, 10 Jul 2009 06:01:57 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1750874AbZGJKB5 (ORCPT ); Fri, 10 Jul 2009 06:01:57 -0400 Received: from mx2.redhat.com ([66.187.237.31]:37857 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750765AbZGJKB4 (ORCPT ); Fri, 10 Jul 2009 06:01:56 -0400 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id n6AA1tBL009254 for ; Fri, 10 Jul 2009 06:01:55 -0400 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id n6AA1s3A021515; Fri, 10 Jul 2009 06:01:54 -0400 Received: from [10.34.33.254] (dhcp-lab-254.englab.brq.redhat.com [10.34.33.254]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id n6AA1rT2016915; Fri, 10 Jul 2009 06:01:53 -0400 Message-ID: <4A57118F.3030907@redhat.com> Date: Fri, 10 Jul 2009 12:01:51 +0200 From: =?ISO-8859-2?Q?Luk=E1=B9_Doktor?= User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b3pre) Gecko/20090513 Fedora/3.0-2.3.beta2.fc11 Thunderbird/3.0b2 MIME-Version: 1.0 To: KVM list , Jason Wang , Lucas Meneghel Rodrigues , Michael Goldish Subject: [KVM_AUTOTEST] add kvm hugepage variant References: <4A55B759.5080302@redhat.com> In-Reply-To: <4A55B759.5080302@redhat.com> X-Scanned-By: MIMEDefang 2.58 on 172.16.27.26 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org After discussion I split the patches. This patch adds kvm_hugepage variant. It prepares the host system and start vm with -mem-path option. It does not clean after itself, because it's impossible to unmount and free hugepages before all guests are destroyed. I need to ask you what to do with change of qemu parameter. Newest versions are using -mempath insted of -mem-path. This is impossible to fix using current config file. I can see 2 solutions: 1) direct change in kvm_vm.py (parse output and try another param) 2) detect qemu capabilities outside and create additional layer (better for future occurrence) Dne 9.7.2009 11:24, Lukáš Doktor napsal(a): > This patch adds kvm_hugepage variant. It prepares the host system and > start vm with -mem-path option. It does not clean after itself, because > it's impossible to unmount and free hugepages before all guests are > destroyed. > > There is also added autotest.libhugetlbfs test. > > I need to ask you what to do with change of qemu parameter. Newest > versions are using -mempath insted of -mem-path. This is impossible to > fix using current config file. I can see 2 solutions: > 1) direct change in kvm_vm.py (parse output and try another param) > 2) detect qemu capabilities outside and create additional layer (better > for future occurrence) > > Tested by:ldoktor@redhat.com on RHEL5.4 with kvm-83-72.el5 diff -Narup orig/client/tests/kvm/kvm_tests.cfg.sample new/client/tests/kvm/kvm_tests.cfg.sample --- orig/client/tests/kvm/kvm_tests.cfg.sample 2009-07-08 13:18:07.000000000 +0200 +++ new/client/tests/kvm/kvm_tests.cfg.sample 2009-07-09 10:15:58.000000000 +0200 @@ -546,6 +549,12 @@ variants: only default image_format = raw +variants: + - @kvm_smallpages: + - kvm_hugepages: + pre_command = "/bin/bash scripts/hugepage.sh /mnt/hugepage" + extra_params += " -mem-path /mnt/hugepage" + variants: - @basic: @@ -559,6 +568,7 @@ variants: only Fedora.8.32 only install setup boot shutdown only rtl8139 + only kvm_smallpages - @sample1: only qcow2 only ide diff -Narup orig/client/tests/kvm/kvm_vm.py new/client/tests/kvm/kvm_vm.py --- orig/client/tests/kvm/kvm_vm.py 2009-07-08 13:18:07.000000000 +0200 +++ new/client/tests/kvm/kvm_vm.py 2009-07-09 10:05:19.000000000 +0200 @@ -400,6 +400,13 @@ class VM: self.destroy() return False + if output: + logging.debug("qemu produced some output:\n%s", output) + if "alloc_mem_area" in output: + logging.error("Could not allocate hugepage memory" + " -- qemu command:\n%s", qemu_command) + return False + logging.debug("VM appears to be alive with PID %d", self.pid) return True diff -Narup orig/client/tests/kvm/scripts/hugepage.sh new/client/tests/kvm/scripts/hugepage.sh --- orig/client/tests/kvm/scripts/hugepage.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/client/tests/kvm/scripts/hugepage.sh 2009-07-09 09:47:14.000000000 +0200 @@ -0,0 +1,34 @@ +#!/bin/bash +# Alocates enough hugepages and mount hugetlbfs to $1. +if [ $# -ne 1 ]; then + echo "USAGE: $0 mem_path" + exit 1 +fi + +Hugepagesize=$(grep Hugepagesize /proc/meminfo | cut -d':' -f 2 | \ + xargs | cut -d' ' -f1) +VMS=$(expr $(echo $KVM_TEST_vms | grep -c ' ') + 1) +if [ "$KVM_TEST_max_vms" ] && [ "$VMS" -lt "$KVM_TEST_max_vms" ]; then + VMS="$KVM_TEST_max_vms" +fi +VMSM=$(expr $(expr $VMS \* $KVM_TEST_mem) + $(expr $VMS \* 64 )) +TARGET=$(expr $VMSM \* 1024 \/ $Hugepagesize) + +NR=$(cat /proc/sys/vm/nr_hugepages) +while [ "$NR" -ne "$TARGET" ]; do + NR_="$NR";echo $TARGET > /proc/sys/vm/nr_hugepages + sleep 5s + NR=$(cat /proc/sys/vm/nr_hugepages) + if [ "$NR" -eq "$NR_" ] ; then + echo "Can not alocate $TARGET of hugepages" + exit 2 + fi +done + +if [ ! "$(mount | grep /mnt/hugepage |grep hugetlbfs)" ]; then + mkdir -p $1 + mount -t hugetlbfs none $1 || \ + (echo "Can not mount hugetlbfs filesystem to $1"; exit 3) +else + echo "hugetlbfs filesystem already mounted" +fi