Comments (5)
Thanks a lot for reporting the issue.
Is it some sort of regression in 0.1.117 or it is a permanent problem?
How vioscsi is bad comparing with viostor and IDE?
Can you post the obtained results along with Windows and Linux VMs
command lines?
Best regards,
Vadim.
from kvm-guest-drivers-windows.
OK, I'll do some tests and I'll use this post as an ongoing effort populated on the fly by a number of results. There is no hyper-v features but those have shown marginal improvement, not 3x or 2x.
test cmd line is:
iozone -i 0 -i 8 -t 1 -s 4m
iozone is run inside the tested drive.
this is the KVM:
[root@dl190g9 ~]# yum info qemu-kvm
Plugin abilitati:fastestmirror
Determining fastest mirrors
* base: mirrors.prometeus.net
* extras: mirrors.prometeus.net
* updates: mirrors.prometeus.net
Pacchetti disponibili
Nome : qemu-kvm
Arch : x86_64
Epoch : 10
Versione : 1.5.3
Rilascio : 105.el7_2.4
Dimensione : 1.8 M
Repo : updates/7/x86_64
Sommario : QEMU is a FAST! processor emulator
URL : http://www.qemu.org/
Licenza : GPLv2+ and LGPLv2+ and BSD
Descrizione : qemu-kvm is an open source virtualizer that provides hardware emulation for
: the KVM hypervisor. qemu-kvm acts as a virtual machine monitor together with
: the KVM kernel modules, and emulates the hardware for a full system such as
: a PC and its assocated peripherals.
:
: As qemu-kvm requires no host kernel patches to run, it is safe and easy to use.
lets do some benches with raw LVM parittions. Those LVM are passed to the VM and formatted in NTFS with default params. cache is None IO is native. Windows virtio is 0.1.102.
Ubuntu 14.04 LTS VirtIO drive - used as reference system
/usr/libexec/qemu-kvm -name postgres -S -machine pc-i440fx-rhel7.2.0,accel=kvm,usb=off -cpu Haswell-noTSX -m 2048 -realtime mlock=off -smp 2,sockets=2,cores=1,threads=1 -uuid 6cf8bccd-db34-44cc-9c56-8bca0f806aa6 -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-postgres/monitor.sock,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=discard -no-hpet -no-shutdown -boot strict=on -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x5.0x7 -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x5 -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x5.0x1 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x5.0x2 -drive file=/dev/virt/postgres,if=none,id=drive-virtio-disk0,format=raw,cache=none,aio=native -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x6,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -drive if=none,id=drive-ide0-0-1,readonly=on,format=raw -device ide-cd,bus=ide.0,unit=1,drive=drive-ide0-0-1,id=ide0-0-1 -netdev tap,fd=23,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:57:48:b7,bus=pci.0,addr=0x3 -netdev tap,fd=27,id=hostnet1 -device rtl8139,netdev=hostnet1,id=net1,mac=52:54:00:e8:26:df,bus=pci.0,addr=0x7 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -vnc 0.0.0.0:2 -device cirrus-vga,id=video0,bus=pci.0,addr=0x2 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4 -msg timestamp=on
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/virt/postgres'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
File size set to 4096 KB
Command line used: iozone -i 0 -i 8 -t 1 -s 4m
Output is in Kbytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 Kbytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
Throughput test with 1 process
Each process writes a 4096 Kbyte file in 4 Kbyte records
Children see throughput for 1 initial writers = 814953.12 KB/sec
Parent sees throughput for 1 initial writers = 32151.22 KB/sec
Min throughput per process = 814953.12 KB/sec
Max throughput per process = 814953.12 KB/sec
Avg throughput per process = 814953.12 KB/sec
Min xfer = 4096.00 KB
Children see throughput for 1 rewriters = 1122148.12 KB/sec
Parent sees throughput for 1 rewriters = 16293.54 KB/sec
Min throughput per process = 1122148.12 KB/sec
Max throughput per process = 1122148.12 KB/sec
Avg throughput per process = 1122148.12 KB/sec
Min xfer = 4096.00 KB
Children see throughput for 1 mixed workload = 2760348.00 KB/sec
Parent sees throughput for 1 mixed workload = 65072.60 KB/sec
Min throughput per process = 2760348.00 KB/sec
Max throughput per process = 2760348.00 KB/sec
Avg throughput per process = 2760348.00 KB/sec
Min xfer = 4096.00 KB
$> lspci
...
00:06.0 SCSI storage controller: Red Hat, Inc Virtio block device
Windows 8.1 attached 8GB IDE drive
/usr/libexec/qemu-kvm -name win8_scsi_test -S -machine pc-i440fx-rhel7.2.0,accel=kvm,usb=off -m 4096 -realtime mlock=off -smp 2,sockets=2,cores=1,threads=1 -uuid 02cb8b1d-57c7-a6b4-23d9-c959517b0c9d -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-win8_scsi_test/monitor.sock,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=localtime -no-shutdown -boot menu=off,strict=on -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x5 -drive file=/dev/virt/iscsi_test,if=none,id=drive-scsi0-0-0-0,format=raw,cache=none,aio=native -device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0-0-0-0,id=scsi0-0-0-0,bootindex=1 -drive if=none,id=drive-ide0-0-0,readonly=on,format=raw -device ide-cd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -drive file=/dev/virt/virtio_test,if=none,id=drive-ide0-0-1,format=raw,cache=none,aio=native -device ide-hd,bus=ide.0,unit=1,drive=drive-ide0-0-1,id=ide0-0-1 -drive file=/var/lib/libvirt/images/virtio-win.iso,if=none,id=drive-ide0-1-0,readonly=on,format=raw -device ide-cd,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,fd=33,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:36:7c:56,bus=pci.0,addr=0x3 -netdev tap,fd=34,id=hostnet1,vhost=on,vhostfd=35 -device virtio-net-pci,netdev=hostnet1,id=net1,mac=52:54:00:01:de:12,bus=pci.0,addr=0x4 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -device usb-tablet,id=input0 -vnc 127.0.0.1:4 -k it -device VGA,id=video0,vgamem_mb=16,bus=pci.0,addr=0x2 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6 -msg timestamp=on
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/virt/virtio_test'/>
<target dev='hdb' bus='ide'/>
<address type='drive' controller='0' bus='0' target='0' unit='1'/>
</disk>
Windows device manager screenshot
Run began: Mon May 30 08:34:39 2016
File size set to 4096 KB
Command line used: /Iozone3.405/iozone -i 0 -i 8 -t 1 -s 4m
Output is in Kbytes/sec
Time Resolution = 0.000006 seconds.
Processor cache size set to 1024 Kbytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
Throughput test with 1 process
Each process writes a 4096 Kbyte file in 4 Kbyte records
Children see throughput for 1 initial writers = 502857.50 KB/sec
Parent sees throughput for 1 initial writers = 6232.40 KB/sec
Min throughput per process = 502857.50 KB/sec
Max throughput per process = 502857.50 KB/sec
Avg throughput per process = 502857.50 KB/sec
Min xfer = 4096.00 KB
Children see throughput for 1 rewriters = 676751.25 KB/sec
Parent sees throughput for 1 rewriters = 5796.95 KB/sec
Min throughput per process = 676751.25 KB/sec
Max throughput per process = 676751.25 KB/sec
Avg throughput per process = 676751.25 KB/sec
Min xfer = 4096.00 KB
Children see throughput for 1 mixed workload = 508243.78 KB/sec
Parent sees throughput for 1 mixed workload = 425152.71 KB/sec
Min throughput per process = 508243.78 KB/sec
Max throughput per process = 508243.78 KB/sec
Avg throughput per process = 508243.78 KB/sec
Min xfer = 4096.00 KB
Windows 8.1 attached 8GB scsi drive (virt-scsi)
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/virt/virtio_test'/>
<target dev='sdb' bus='scsi'/>
<address type='drive' controller='0' bus='0' target='0' unit='1'/>
</disk>
Windows device manager screenshot
Run began: Mon May 30 09:24:35 2016
File size set to 4096 KB
Command line used: /Iozone3.405/iozone -i 0 -i 8 -t 1 -s 4m
Output is in Kbytes/sec
Time Resolution = 0.000005 seconds.
Processor cache size set to 1024 Kbytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
Throughput test with 1 process
Each process writes a 4096 Kbyte file in 4 Kbyte records
Children see throughput for 1 initial writers = 422092.84 KB/sec
Parent sees throughput for 1 initial writers = 9668.59 KB/sec
Min throughput per process = 422092.84 KB/sec
Max throughput per process = 422092.84 KB/sec
Avg throughput per process = 422092.84 KB/sec
Min xfer = 4096.00 KB
Children see throughput for 1 rewriters = 650162.56 KB/sec
Parent sees throughput for 1 rewriters = 8174.03 KB/sec
Min throughput per process = 650162.56 KB/sec
Max throughput per process = 650162.56 KB/sec
Avg throughput per process = 650162.56 KB/sec
Min xfer = 4096.00 KB
Children see throughput for 1 mixed workload = 447388.50 KB/sec
Parent sees throughput for 1 mixed workload = 380579.27 KB/sec
Min throughput per process = 447388.50 KB/sec
Max throughput per process = 447388.50 KB/sec
Avg throughput per process = 447388.50 KB/sec
Min xfer = 4096.00 KB
Windows 8.1 attached 8GB scsi drive (virtIO_blk)
/usr/libexec/qemu-kvm -name win8_scsi_test -S -machine pc-i440fx-rhel7.2.0,accel=kvm,usb=off -m 4096 -realtime mlock=off -smp 2,sockets=2,cores=1,threads=1 -uuid 02cb8b1d-57c7-a6b4-23d9-c959517b0c9d -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-win8_scsi_test/monitor.sock,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=localtime -no-shutdown -boot menu=off,strict=on -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x5 -drive file=/dev/virt/iscsi_test,if=none,id=drive-scsi0-0-0-0,format=raw,cache=none,aio=native -device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0-0-0-0,id=scsi0-0-0-0,bootindex=1 -drive file=/var/lib/libvirt/images/virtio-win.iso,if=none,id=drive-scsi0-0-0-1,readonly=on,format=raw -device scsi-cd,bus=scsi0.0,channel=0,scsi-id=0,lun=1,drive=drive-scsi0-0-0-1,id=scsi0-0-0-1 -drive if=none,id=drive-ide0-0-0,readonly=on,format=raw -device ide-cd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -drive file=/dev/virt/virtio_test,if=none,id=drive-virtio-disk0,format=raw,cache=none,aio=native -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x7,drive=drive-virtio-disk0,id=virtio-disk0 -netdev tap,fd=33,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:36:7c:56,bus=pci.0,addr=0x3 -netdev tap,fd=34,id=hostnet1,vhost=on,vhostfd=35 -device virtio-net-pci,netdev=hostnet1,id=net1,mac=52:54:00:01:de:12,bus=pci.0,addr=0x4 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -device usb-tablet,id=input0 -vnc 127.0.0.1:4 -k it -device VGA,id=video0,vgamem_mb=16,bus=pci.0,addr=0x2 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6 -msg timestamp=on
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/virt/iscsi_test'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</disk>
Windows device manager screenshot
Run began: Mon May 30 09:46:01 2016
File size set to 4096 KB
Command line used: /Iozone3.405/iozone -i 0 -i 8 -t 1 -s 4m
Output is in Kbytes/sec
Time Resolution = 0.000006 seconds.
Processor cache size set to 1024 Kbytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
Throughput test with 1 process
Each process writes a 4096 Kbyte file in 4 Kbyte records
Children see throughput for 1 initial writers = 489183.78 KB/sec
Parent sees throughput for 1 initial writers = 10275.42 KB/sec
Min throughput per process = 489183.78 KB/sec
Max throughput per process = 489183.78 KB/sec
Avg throughput per process = 489183.78 KB/sec
Min xfer = 4096.00 KB
Children see throughput for 1 rewriters = 592971.62 KB/sec
Parent sees throughput for 1 rewriters = 9243.52 KB/sec
Min throughput per process = 592971.62 KB/sec
Max throughput per process = 592971.62 KB/sec
Avg throughput per process = 592971.62 KB/sec
Min xfer = 4096.00 KB
Children see throughput for 1 mixed workload = 464378.28 KB/sec
Parent sees throughput for 1 mixed workload = 403773.31 KB/sec
Min throughput per process = 464378.28 KB/sec
Max throughput per process = 464378.28 KB/sec
Avg throughput per process = 464378.28 KB/sec
Min xfer = 4096.00 KB
Comment
These tests comfirm my opinion: I'm doing it wrong! how is it possible that a stable virtIO drivers suite gets exactly the same performance even if I use IDE vs SCSI vs VIRTIO?!
from kvm-guest-drivers-windows.
Thank you for your prompt reply.
First of all, please turn hv_time vCPU flag on, and make sure that guest doesn't use HPET or
"useplatformclock" is enabled.
In addition, try enabling hv_vapic as well (if your host CPU comes without APICv)
Vadim.
from kvm-guest-drivers-windows.
OK,
new bench with virtIO and the following snippet added to xml:
<clock >
<timer name='hypervclock' present='yes'/>
</clock>
<features>
<hyperv>
<vapic state='on'/>
</hyperv>
<features/>
no trace of HPET or useplatformclock in original XML
Results don't change...
Run began: Mon May 30 10:37:31 2016
File size set to 4096 KB
Command line used: /Iozone3.405/iozone -i 0 -i 8 -t 1 -s 4m
Output is in Kbytes/sec
Time Resolution = 0.000005 seconds.
Processor cache size set to 1024 Kbytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
Throughput test with 1 process
Each process writes a 4096 Kbyte file in 4 Kbyte records
Children see throughput for 1 initial writers = 277843.78 KB/sec
Parent sees throughput for 1 initial writers = 10234.10 KB/sec
Min throughput per process = 277843.78 KB/sec
Max throughput per process = 277843.78 KB/sec
Avg throughput per process = 277843.78 KB/sec
Min xfer = 4096.00 KB
Children see throughput for 1 rewriters = 649932.06 KB/sec
Parent sees throughput for 1 rewriters = 13404.88 KB/sec
Min throughput per process = 649932.06 KB/sec
Max throughput per process = 649932.06 KB/sec
Avg throughput per process = 649932.06 KB/sec
Min xfer = 4096.00 KB
Children see throughput for 1 mixed workload = 535083.25 KB/sec
Parent sees throughput for 1 mixed workload = 449170.28 KB/sec
Min throughput per process = 535083.25 KB/sec
Max throughput per process = 535083.25 KB/sec
Avg throughput per process = 535083.25 KB/sec
Min xfer = 4096.00 KB
Still thinking about an error on my side... attached you find the full XML
As additional reference here is a win7 64bit (virtIO + hyperV), write and rewrite improve 3x and somewhat like 1.5x respectively. random write still low. In win7 write and rewrite are something like 2k KB/sec slower (maybe virtualization overhead is higher than linux) but random still lags too much IMHO.
Run began: Mon May 30 12:47:50 2016
File size set to 4096 KB
Command line used: /Iozone3.405/iozone -t 1 -i 0 -i 8 -s 4m
Output is in Kbytes/sec
Time Resolution = 0.000011 seconds.
Processor cache size set to 1024 Kbytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
Throughput test with 1 process
Each process writes a 4096 Kbyte file in 4 Kbyte records
Children see throughput for 1 initial writers = 672869.00 KB/sec
Parent sees throughput for 1 initial writers = 12067.84 KB/sec
Min throughput per process = 672869.00 KB/sec
Max throughput per process = 672869.00 KB/sec
Avg throughput per process = 672869.00 KB/sec
Min xfer = 4096.00 KB
Children see throughput for 1 rewriters = 863882.69 KB/sec
Parent sees throughput for 1 rewriters = 16252.46 KB/sec
Min throughput per process = 863882.69 KB/sec
Max throughput per process = 863882.69 KB/sec
Avg throughput per process = 863882.69 KB/sec
Min xfer = 4096.00 KB
Children see throughput for 1 mixed workload = 562315.56 KB/sec
Parent sees throughput for 1 mixed workload = 161441.74 KB/sec
Min throughput per process = 562315.56 KB/sec
Max throughput per process = 562315.56 KB/sec
Avg throughput per process = 562315.56 KB/sec
Min xfer = 4096.00 KB
from kvm-guest-drivers-windows.
We have completed performance testing cycle some time ago.
(https://bugzilla.redhat.com/show_bug.cgi?id=1023894#c11)
No issues have been found so far.
Closing this issue for now.
If anyone experiences the similar problems when running the resent virtio block or scsi drivers on the latest stable upstream qemu, please feel free to reopen it again or open a new issue.
Vadim.
from kvm-guest-drivers-windows.
Related Issues (20)
- BOSD screen doesn't show up with VirtIO VGA HOT 2
- netkvm with lots of parallel network activity hanging Win10 VM HOT 22
- access host's `rclone mount`'ed directory HOT 1
- wiki update for virtiofs HOT 2
- Download link for pre built drivers doesn't work? HOT 4
- netkvm: Enhancing Host Throughput by Combining Virtio Header and Data in a Single Memory Block for NetKVM HOT 9
- Latest Win11 netkvm.cat files mention netkvmpoll.inf instead of netkvm.inf HOT 1
- virtiofs ignoring CLI arguments when created as a service HOT 6
- Virtio-Net driver is not respecting VIRTIO_NET_F_MRG_RXBUF HOT 10
- Windows Ballooning Question (version support) HOT 13
- viostor: It seems that RhelScsiVerify has an improperly handled boundary condition. HOT 5
- netkvm: HLK NDISTest 6.5 - [1 Machine] - GenericMiniportRequirements test failed HOT 5
- After upgrading virtio-win-guest-tools on Windows Server 2016, the CPU usage of the Balloon service and WMI Provider Host skyrocketed. HOT 2
- [virtio-block] Request support for multi-stage resume of Windows to speed up hibernate/resume HOT 5
- SCSI CD-ROM driver broken in recent Windows builds HOT 31
- viogpudo /virtio-vga broken in recent Windows builds HOT 5
- Add-WindowsDriver pvpanic-pci fails with: the request is not supported HOT 4
- Re-add latest working version of qemu-ga agent for win XP HOT 3
- Viogpu: support cross-adapter resources (use case: virtio-gpu-pci used w/ gpu passthru)
- windows server 2012 r2 datacenter install virtio-win-0.1.240 error HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kvm-guest-drivers-windows.