From patchwork Wed Jan 19 01:56:10 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lucas Meneghel Rodrigues X-Patchwork-Id: 487991 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p0J1uQ6w000743 for ; Wed, 19 Jan 2011 01:56:27 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751751Ab1ASB4U (ORCPT ); Tue, 18 Jan 2011 20:56:20 -0500 Received: from mx1.redhat.com ([209.132.183.28]:53149 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753319Ab1ASB4R (ORCPT ); Tue, 18 Jan 2011 20:56:17 -0500 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id p0J1uHJ7023591 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 18 Jan 2011 20:56:17 -0500 Received: from freedom.redhat.com (vpn-9-4.rdu.redhat.com [10.11.9.4]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id p0J1uBOP015294; Tue, 18 Jan 2011 20:56:15 -0500 From: Lucas Meneghel Rodrigues To: autotest@test.kernel.org Cc: kvm@vger.kernel.org, Lucas Meneghel Rodrigues Subject: [PATCH 2/2] KVM test: Removing scripts/hugepage.py Date: Tue, 18 Jan 2011 23:56:10 -0200 Message-Id: <1295402170-16839-3-git-send-email-lmr@redhat.com> In-Reply-To: <1295402170-16839-1-git-send-email-lmr@redhat.com> References: <1295402170-16839-1-git-send-email-lmr@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Wed, 19 Jan 2011 01:56:27 +0000 (UTC) diff --git a/client/tests/kvm/scripts/hugepage.py b/client/tests/kvm/scripts/hugepage.py deleted file mode 100755 index 8a1b0f6..0000000 --- a/client/tests/kvm/scripts/hugepage.py +++ /dev/null @@ -1,118 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -import os, sys, time - -""" -Simple script to allocate enough hugepages for KVM testing purposes. -""" - -class HugePageError(Exception): - """ - Simple wrapper for the builtin Exception class. - """ - pass - - -class HugePage: - def __init__(self, hugepage_path=None): - """ - Gets environment variable values and calculates the target number - of huge memory pages. - - @param hugepage_path: Path where to mount hugetlbfs path, if not - yet configured. - """ - self.vms = len(os.environ['KVM_TEST_vms'].split()) - self.mem = int(os.environ['KVM_TEST_mem']) - try: - self.max_vms = int(os.environ['KVM_TEST_max_vms']) - except KeyError: - self.max_vms = 0 - - if hugepage_path: - self.hugepage_path = hugepage_path - else: - self.hugepage_path = '/mnt/kvm_hugepage' - - self.hugepage_size = self.get_hugepage_size() - self.target_hugepages = self.get_target_hugepages() - print "Number of VMs this test will use: %d" % self.vms - print "Amount of memory used by each vm: %s" % self.mem - print ("System setting for large memory page size: %s" % - self.hugepage_size) - print ("Number of large memory pages needed for this test: %s" % - self.target_hugepages) - - - def get_hugepage_size(self): - """ - Get the current system setting for huge memory page size. - """ - meminfo = open('/proc/meminfo', 'r').readlines() - huge_line_list = [h for h in meminfo if h.startswith("Hugepagesize")] - try: - return int(huge_line_list[0].split()[1]) - except ValueError, e: - raise HugePageError("Could not get huge page size setting from " - "/proc/meminfo: %s" % e) - - - def get_target_hugepages(self): - """ - Calculate the target number of hugepages for testing purposes. - """ - if self.vms < self.max_vms: - self.vms = self.max_vms - # memory of all VMs plus qemu overhead of 64MB per guest - vmsm = (self.vms * self.mem) + (self.vms * 64) - return int(vmsm * 1024 / self.hugepage_size) - - - def set_hugepages(self): - """ - Sets the hugepage limit to the target hugepage value calculated. - """ - hugepage_cfg = open("/proc/sys/vm/nr_hugepages", "r+") - hp = hugepage_cfg.readline() - while int(hp) < self.target_hugepages: - loop_hp = hp - hugepage_cfg.write(str(self.target_hugepages)) - hugepage_cfg.flush() - hugepage_cfg.seek(0) - hp = int(hugepage_cfg.readline()) - if loop_hp == hp: - raise HugePageError("Cannot set the kernel hugepage setting " - "to the target value of %d hugepages." % - self.target_hugepages) - hugepage_cfg.close() - print ("Successfuly set %s large memory pages on host " % - self.target_hugepages) - - - def mount_hugepage_fs(self): - """ - Verify if there's a hugetlbfs mount set. If there's none, will set up - a hugetlbfs mount using the class attribute that defines the mount - point. - """ - if not os.path.ismount(self.hugepage_path): - if not os.path.isdir(self.hugepage_path): - os.makedirs(self.hugepage_path) - cmd = "mount -t hugetlbfs none %s" % self.hugepage_path - if os.system(cmd): - raise HugePageError("Cannot mount hugetlbfs path %s" % - self.hugepage_path) - - - def setup(self): - self.set_hugepages() - self.mount_hugepage_fs() - - -if __name__ == "__main__": - if len(sys.argv) < 2: - huge_page = HugePage() - else: - huge_page = HugePage(sys.argv[1]) - - huge_page.setup()