Commit Graph

390 Commits

Author SHA1 Message Date
Alexandre Derumier
2ed5d5724c add custom numa topology support
numaX: cpus=<id[-id],memory=<mb>[[,hostnodes=<id[-id]>][,policy=<preferred|bind|interleave>]]

example:
-------
sockets:4
cores:2
memory:4096
numa: 1
numa0: cpus=0-1,memory=1024,hostnodes=0-1,policy=interleave
numa1: cpus=2-3,memory=3072,hostnodes=2,policy=bind

qemu command line
-----------------
-object memory-backend-ram,size=1024M,policy=interleave,host-nodes=0-1,id=ram-node0
-numa node,nodeid=0,cpus=0-1,memdev=ram-node0

-object memory-backend-ram,size=3072M,policy=bind,host-nodes=2,id=ram-node1
-numa node,nodeid=1,cpus=2-3,memdev=ram-node1

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-12-04 13:02:47 +01:00
Alexandre Derumier
8a010eaeb1 add numa options v3
This enable numa support inside the guest, and share the memory and cores across the sockets numa nodes.

numa: 0|1

example:
-------
sockets:2
cores:2
memory:4096
numa: 1

qemu command line
-----------------
-object memory-backend-ram,size=2048,id=ram-node0
-numa node,nodeid=0,cpus=0-1,memdev=ram-node0
-object memory-backend-ram,size=2048,id=ram-node1
-numa node,nodeid=1,cpus=2-3,memdev=ram-node1

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-12-04 13:01:47 +01:00
Wolfgang Link
af9110ddd7 Fix in PVE::QemuServer::snapshot_create
remove the freezefs flag.
If Qemu Guest Agent flag is set in config the vm filesystem will always be frozen,
unless we save RAM.

also remove param freezefs in PVE::API2 snapshot,
because there is no use for it.

Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2014-12-04 12:30:35 +01:00
Dietmar Maurer
108864e591 snapshot_create: fix bug from prev. commit, consider $freezefs parameter 2014-12-02 13:42:51 +01:00
Wolfgang Link
65994ad73c snapshot_create: use guest-fsfreeze-freeze if possible
Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2014-12-02 13:11:42 +01:00
Dietmar Maurer
6f70864360 drive-mirror: avoid division by zero bug 2014-12-01 09:50:12 +01:00
Dietmar Maurer
c8125172c7 qmpclient: improve error handling 2014-12-01 09:50:12 +01:00
Dietmar Maurer
2ea5450311 simplify code by using vm_qmp_command() directly 2014-12-01 09:50:12 +01:00
Dietmar Maurer
7a6c215042 qmpclient: code cleanup, execute qga and qmp in parallel 2014-12-01 09:50:12 +01:00
Wolfgang Link
1c0c1c17b0 shutdown by Qemu Guest Agent if the agent flag in the config is set
Important: "guest-shutdown" returns only by error a message.

Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
2014-12-01 09:50:12 +01:00
Wolfgang Link
c5a07de5af qmpclient: now if the QMP command starts with guest-+ , it will bind dynamicly to the VMID.qga socket
Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
2014-12-01 09:50:12 +01:00
Alexandre Derumier
693d12a2c0 add vm_qga_command
and reuse vm_qmp_command && qmp_socket with $qga param

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-12-01 09:50:11 +01:00
Dietmar Maurer
f34ebd5259 code cleanups 2014-12-01 09:50:11 +01:00
Alexandre Derumier
2c9e8036f5 savevm-end : wait that savevm is finished
savevm-end is async, we need to wait that savevm is finished, before continue.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-12-01 09:50:11 +01:00
Dietmar Maurer
1b0b51ed94 serial: allow to pass arbitrary device names 2014-12-01 09:50:11 +01:00
Wolfgang Link
7626772856 Add check if host has enough real CPUs for starting VM
To prevent a Qemu CPU emualtion!

Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
2014-11-17 11:24:15 +01:00
Dietmar Maurer
883839209f qemu_drive_mirror: cleanup, avoid code duplication 2014-11-10 08:18:39 +01:00
Dietmar Maurer
08ac653fcf qemu_drive_mirror: raise exception if we cannot parse $dst_volid 2014-11-10 07:55:09 +01:00
Dietmar Maurer
b467f79a50 delete trailing whitespace 2014-11-10 06:31:08 +01:00
Alexandre Derumier
21ccdb506a block-job-complete : retry if block job cannot be complete
Even if we check the busy flag, we can have sometime race condition if new write
are coming between the query-block-job and the block-job-complete.

block-job-complete throw an error "The active block job for device '%(name)' cannot be completed"

we just need to retry in this case.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-11-10 06:26:25 +01:00
Dietmar Maurer
bcc87408c0 cleanup: do not entry wait loop if block-job-cancel() fails. 2014-11-07 15:31:56 +01:00
Alexandre Derumier
ab6ecffe53 drive-mirror : wait that busy eq false before block-job-complete
When the drive-mirror is at 100%, and write occurs, the busy flag can change from false->true

- 100% no new writes

transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: false
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: false
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: false

- 100% new writes

transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: true
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: true
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: true

- 100% no new writes

transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: false
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: false
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: false

So, we need to check that busy is false before doing the block-job-complete.

Also, we force the vm to pause, if it's busy for more than 120s when drive-mirror is at 100%

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-11-07 15:28:13 +01:00
Alexandre Derumier
5fe03fd8ee block-job-cancel : wait that jobs is really finished
block-job-cancel is async, we need to check that job is really finished

before try to free the volume

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-11-07 15:26:21 +01:00
Alexandre Derumier
f1e053055c enable write zeroes optimisations
This enable write zeroes optimisation inside guest.

(I have tested them with qcow2,raw (ext4|xfs) , zfs|iscsi and nfs too.

No impact if the block driver don't support it yet (like rbd)

https://lists.nongnu.org/archive/html/qemu-devel/2014-04/msg00009.html

> a) mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/vdX
>
> QCOW2         [off]     [on]     [unmap]
> -----
> runtime:       14secs    1.1secs  1.1secs
> filesize:      937M      18M      18M
>
> iSCSI         [off]     [on]     [unmap]
> ----
> runtime:       9.3s      0.9s     0.9s
>
> b) dd if=/dev/zero of=/dev/vdX bs=1M oflag=direct
>
> QCOW2         [off]     [on]     [unmap]
> -----
> runtime:       246secs   18secs   18secs
> filesize:      51G       192K     192K
> throughput:    203M/s    2.3G/s   2.3G/s
>
> iSCSI*        [off]     [on]     [unmap]
> ----
> runtime:       8mins     45secs   33secs
> throughput:    106M/s    1.2G/s   1.6G/s
> allocated:     100%      100%     0%

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-10-13 10:34:41 +02:00
Alexandre Derumier
7183bd9a8f add iothread/dataplane support
new config option:

iothread: 1|0

This enable iothread/dataplane support, to improve io performance on fast storages

Currently block jobs don't work yet, it's planned for qemu 2.2.
So it's better to not expose yet this option in gui.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-10-10 10:27:41 +02:00
Alexandre Derumier
f78cc802cf vm_devices_list : also list block devices
This allow scsi disk to be plug|unplug

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-09-01 11:33:54 +02:00
Dietmar Maurer
7946e0fa42 Currently,if we don't have a "machine" option in running config, and we take a vmstate snapshot
the machine option is write in the snapshot (ok), but also in the running config (bad)

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2014-08-29 11:27:27 +02:00
Alexandre Derumier
6c33c345ef allow hotplug of virtio-scsi disks
It was an old protection, it's working fine now

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-08-29 08:18:08 +02:00
Dietmar Maurer
cd11416f7a clone_vm: auto generate new uuid 2014-08-26 09:20:09 +02:00
Alexandre Derumier
3aefd6fdf9 add Broadwell cpu model
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-08-20 12:20:18 +02:00
Alexandre Derumier
d2da6d9b8e generate spice devices cmd line after pci bridge
we should push to $devices array instead $cmd array,

because pci bridges need to be create before spice devices

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-08-13 06:14:03 +02:00
Alexandre Derumier
5cffb2d2f2 bump max hostpci to 4
user need to passthough 3 devices here
http://forum.proxmox.com/threads/19134-KVM-passtrought-PciExpress-3-card

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-08-06 09:40:32 +02:00
Alexandre Derumier
137483c053 vga=none if x-vga passthrough is enabled
we need to disable virtual vga card if we passthrough a physical gpu

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-08-06 09:39:38 +02:00
Alexandre Derumier
9040435417 disable kvm cpu signature if x-vga is enabled
see
http://git.qemu.org/?p=qemu.git;a=commit;h=f522d2acc549dd11f495048330aa5f3f424a7dfa

last nvdia drivers don't install in kvm machine if they detect kvm signature.

This patch hide kvm signature in cpuflags (but don't disable kvm)

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-07-24 06:51:55 +02:00
Kamil Trzciński
8f3e88af00 Reset device only if has_fl_reset is defined
Signed-off-by: Kamil Trzciński <ayufan@ayufan.eu>
2014-07-23 06:11:15 +02:00
Stefan Priebe
8fd882a42b snapshot_delete: reorder parent "connection" after prepare
Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
2014-07-17 09:23:40 +02:00
Stefan Priebe
258e646c57 pass snapname to PVE::Storage::vdisk_clone
Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
2014-07-17 09:21:37 +02:00
Dietmar Maurer
2796e7d542 new option smbios1: specify SMBIOS type 1 fields (uuid, ...) 2014-06-26 11:12:25 +02:00
Alexandre Derumier
b1f72af6d4 add pci multifunction unbind support
we need to unbind each functions of a multifunction pci device

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-06-25 09:30:01 +02:00
Alexandre Derumier
4543ecf07f add pci multifunction support
multifunction device should be define without the .function

hostpci0: 00:00

example
-------
if 00:00.0
   00:00.1
   00:00.2

exists,

then we generate the multifunction devices

-device (pci-assign|vfio-pci),host=00:00.0,id=hostpci0.0,bus=...,addr=0x0.0,multifunction=on
-device (pci-assign|vfio-pci),host=00:00.1,id=hostpci0.1,bus=...,addr=0x0.1
-device (pci-assign|vfio-pci),host=00:00.2,id=hostpci0.2,bus=...,addr=0x0.2

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-06-25 09:29:53 +02:00
Alexandre Derumier
2e3b7e2a3a add pcie and x-vga passthrough
hostpci0:  .....,x-vga=on,pcie=1

x-vga require kernel 3.10 with vfio-vga support enable
if x-vga=on, we force vfio-pci device

pcie=1 choose the pciexpress bus (need q35 machine model)

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-06-25 09:29:10 +02:00
Stefan Priebe
000fc0a254 added support for vfio-pci passthrough
Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
2014-06-18 07:03:09 +02:00
Dietmar Maurer
db656e5f24 cleanup previous patch 2014-06-18 06:54:45 +02:00
Alexandre Derumier
f8e83f0548 enable q35 machine support
q35 use pcie.0 root by default. so currently we can't start machine model q35.

we need to add 3 pci-bridge pci.0, pci.1, pci.2, to handle our devices.

pcie.0 does not support hotplug. so pci-bridge are defined at startup.

I use an pve-q35.cfg (mostly the same than q35-chipset.cfg from qemu docs).

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-06-18 06:03:53 +02:00
Alexandre Derumier
a9410357d2 add virtio-net multiqueue support
this a new option queue=(\d+) to net interface

Allow to use more than 1 cpu for network stream, so this can improve network bandwidth,
when vhost-net cpu is the bottleneck

http://www.linux-kvm.org/page/Multiqueue#Enable_MQ_feature

-netdev tap,vhost=on,queues=N -device virtio-net-pci,mq=on,vectors=2N+2

host requirement
----------------
this require host kernel >= 3.8 (or qemu die at start)

linux guest requirement
-----------------------
kernel >= 3.8

manual enabling multiqueue

windows guest requierement
--------------------------
recent virtio-net driver

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-06-11 09:22:01 +02:00
Dietmar Maurer
5881b913c0 add option iscsi only once
We simply add option iscsi if we have an initiator name. So we
never add this option multiple times, and it works with hotplug
in case someone plugs an 'iscsi:' drive later.
2014-05-17 09:14:58 +02:00
Dietmar Maurer
46f58b5f03 cleanup previous commit - use IO::File 2014-05-17 09:07:18 +02:00
Michael Rasmussen
15b21acc0d add initiator-name to iscsi drives if configured
Signed-off-by: Michael Rasmussen <mir@datanom.net>
2014-05-17 08:42:54 +02:00
Alexandre Derumier
28138e9a1b print_net : add firewall option
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-05-09 11:52:15 +02:00
Alexandre Derumier
011c581720 add pve-bridgedown script
This allow to delete fwbr bridge, link interfaces, cleanup ovs
when vm is shutdown

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-05-08 08:37:04 +02:00