From d518ac45f5b8a268101fd7ce4a7c8960b663fe02 Mon Sep 17 00:00:00 2001 From: grossmj Date: Mon, 8 Jun 2015 14:51:06 -0600 Subject: [PATCH] Enable KVM acceleration option. --- gns3server/modules/qemu/qemu_vm.py | 27 +++++++++++++++++++++++++++ gns3server/schemas/qemu.py | 14 +++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/gns3server/modules/qemu/qemu_vm.py b/gns3server/modules/qemu/qemu_vm.py index bea80f74..69aea17e 100644 --- a/gns3server/modules/qemu/qemu_vm.py +++ b/gns3server/modules/qemu/qemu_vm.py @@ -84,6 +84,7 @@ class QemuVM(BaseVM): self._kernel_image = "" self._kernel_command_line = "" self._legacy_networking = False + self._kvm = True self._acpi_shutdown = False self._cpu_throttling = 0 # means no CPU throttling self._process_priority = "low" @@ -354,6 +355,30 @@ class QemuVM(BaseVM): log.info('QEMU VM "{name}" [{id}] has disabled ACPI shutdown'.format(name=self._name, id=self._id)) self._acpi_shutdown = acpi_shutdown + @property + def kvm(self): + """ + Returns either this QEMU VM uses KVM acceleration. + + :returns: boolean + """ + + return self._kvm + + @kvm.setter + def kvm(self, kvm): + """ + Sets either this QEMU VM uses KVM acceleration. + + :param kvm: boolean + """ + + if kvm: + log.info('QEMU VM "{name}" [{id}] has enabled KVM acceleration'.format(name=self._name, id=self._id)) + else: + log.info('QEMU VM "{name}" [{id}] has disabled KVM acceleration'.format(name=self._name, id=self._id)) + self._kvm = kvm + @property def cpu_throttling(self): """ @@ -1127,6 +1152,8 @@ class QemuVM(BaseVM): command = [self.qemu_path] command.extend(["-name", self._name]) command.extend(["-m", str(self._ram)]) + if sys.platform.startswith("linux") and self._kvm: + command.extend(["-enable-kvm"]) disk_options = yield from self._disk_options() command.extend(disk_options) command.extend(self._linux_boot_options()) diff --git a/gns3server/schemas/qemu.py b/gns3server/schemas/qemu.py index f4f97685..45a6dce7 100644 --- a/gns3server/schemas/qemu.py +++ b/gns3server/schemas/qemu.py @@ -104,6 +104,10 @@ QEMU_CREATE_SCHEMA = { "description": "ACPI shutdown support", "type": ["boolean", "null"], }, + "kvm": { + "description": "KVM support", + "type": ["boolean", "null"], + }, "cpu_throttling": { "description": "Percentage of CPU allowed for QEMU", "minimum": 0, @@ -207,6 +211,10 @@ QEMU_UPDATE_SCHEMA = { "description": "ACPI shutdown support", "type": ["boolean", "null"], }, + "kvm": { + "description": "KVM support", + "type": ["boolean", "null"], + }, "cpu_throttling": { "description": "Percentage of CPU allowed for QEMU", "minimum": 0, @@ -319,6 +327,10 @@ QEMU_OBJECT_SCHEMA = { "description": "ACPI shutdown support", "type": "boolean", }, + "kvm": { + "description": "KVM support", + "type": ["boolean", "null"], + }, "cpu_throttling": { "description": "Percentage of CPU allowed for QEMU", "minimum": 0, @@ -342,7 +354,7 @@ QEMU_OBJECT_SCHEMA = { "additionalProperties": False, "required": ["vm_id", "project_id", "name", "qemu_path", "hda_disk_image", "hdb_disk_image", "hdc_disk_image", "hdd_disk_image", "ram", "adapters", "adapter_type", "mac_address", "console", - "initrd", "kernel_image", "kernel_command_line", "legacy_networking", "acpi_shutdown", + "initrd", "kernel_image", "kernel_command_line", "legacy_networking", "acpi_shutdown", "kvm", "cpu_throttling", "process_priority", "options"] }