Skip to contentSkip to conversation

Virtual drives performance

DISCUSSION TooMeeK 5 participants 5 messages Sep 6, 2011 – Sep 8, 2011 KVM

lore
Share & tools
lore

TooMeeK

author
#0 lore raw

Hello,

I'm trying to set up a fast virtualized Samba file server. I'm using Debian Sqeeze 64 bit as hypervisor.
First, I created mirrored storage in hypervisor from one 600-gig partition (yes, that's correct - I have only one drive currently), details:
sudo mdadm --detail /dev/md3
/dev/md3:

        Version : 1.2

Creation Time : Thu Jul 28 20:07:00 2011
Raid Level : raid1
Array Size : 664187352 (633.42 GiB 680.13 GB)
Used Dev Size : 664187352 (633.42 GiB 680.13 GB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent

Update Time : Thu Jul 28 22:07:10 2011
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0

Name : Server:3 (local to host Server) UUID : 87184170:2d9102b1:ca16a5d7:1f23fe2e
Events : 3276

Number Major Minor RaidDevice State
0 8 23 0 active sync /dev/sdb7
1 0 0 1 removed

Partition type is Linux RAID autodetect and this drive can do 80MB/s write and 100 MB/s read seq.

QEMU PC emulator version 0.12.5 (qemu-kvm-0.12.5)

Next, I've tried following combinations with virt-manager 0.8.4 (from XML of VM):
1.on Debian VM with virtio drivers for both storage and NIC:
<disk type='block' device='disk'>
<source dev='/dev/md3'/>
<target dev='vdb' bus='virtio'/>
partition type used in guest: EXT4
result: poor performance, 9-10MB/s sequentional copy via SMB
2.on Debian VM with virtio drivers:
<disk type='block' device='disk' cache='writeback'>
<source dev='/dev/md3'/>
<target dev='vdb' bus='virtio'/>
partition type used: EXT4
result: poor performance, 10-15MB/s sequentional copy via SMB
3.Direct attached partition to FreeBSD VM without virtio support (e1000 NIC and SCSI disk):
<disk type='block' device='disk' cache='writeback'>
<source dev='/dev/md3'/>
<target dev='sdb' bus='scsi'/>
partition type used: ZFS
result: poor performance, 20-25MB/s sequentional copy via SMB
4.Direct attached whole physical disk to FreeBSD VM (/dev/sdc 2,5") partition type used in VM: ZFS
good performance, 60MB/s sequentional copy via SMB

I find that way it's not possible to direct attach PARTITION from host to VM using virt-manager, this only works for whole device (like /dev/sdc).

Anyway, any storage advices for performance?

#1 lore raw

also sprach TooMeeK <[email protected]> [2011.09.07.0025 +0200]:

Quoted 1 line

Partition type is Linux RAID autodetect

This is not really necessary, presuming that you are doing what everyone is doing nowadays and assemble the RAID from the initrd or the init scripts.

Quoted 3 lines

I find that way it's not possible to direct attach PARTITION from host to VM using virt-manager, this only works for whole device (like /dev/sdc).

You could/should be using LVM instead of partitions, IMHO.

Quoted 1 line

Anyway, any storage advices for performance?

Unfortunately, no. I have seen similar things happen. I think that the problem is Linux I/O. Your drive may be able to handle high, sustained read/write rates, but the Linux I/O scheduler, in combination with random-access reads/writes, makes these performance data inaccurate.

The only way I found to decently increase performance of drives:

- 10k and 15k drives
- external NAS or fibrechannel SAN, which do not use Linux

Yes, it's sad, and I would love to be proven wrong!

Signature · 7 lines
martin | http://madduck.net/ | http://two.sentenc.es/
 
"if java had true garbage collection,
 most programs would delete themselves upon execution."
                                                    -- robert sewell
 
spamtraps: [email protected]
#2 lore raw
In reply to TooMeeK
Quoted 24 lines · TooMeeK

First, I created mirrored storage in hypervisor from one 600-gig partition (yes, that's correct - I have only one drive currently), details:
sudo mdadm --detail /dev/md3
/dev/md3:
       Version : 1.2
 Creation Time : Thu Jul 28 20:07:00 2011
    Raid Level : raid1
    Array Size : 664187352 (633.42 GiB 680.13 GB)
 Used Dev Size : 664187352 (633.42 GiB 680.13 GB)
  Raid Devices : 2
 Total Devices : 1
   Persistence : Superblock is persistent

   Update Time : Thu Jul 28 22:07:10 2011
         State : clean, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
 Spare Devices : 0

          Name : Server:3  (local to host Server) UUID : 87184170:2d9102b1:ca16a5d7:1f23fe2e Events : 3276

Quoted 6 lines

   Number   Major   Minor   RaidDevice State
      0       8       23        0      active sync   /dev/sdb7 1       0        0        1      removed

Partition type is Linux RAID autodetect and this drive can do 80MB/s write and 100 MB/s read seq.

How did you measure those figures?

To double-check sequential read throughput on the host:

# dd if=/dev/md3 of=/dev/null bs=64k count=16384 iflag=direct

The SMB results don't help narrow down a disk I/O problem. To collect comparable sequential read throughput inside the guest:

# dd if=/dev/vda of=/dev/null bs=64k count=16384 iflag=direct
Quoted 1 line

QEMU PC emulator version 0.12.5 (qemu-kvm-0.12.5)

Try qemu-kvm 0.15.

Quoted 4 lines

Next, I've tried following combinations with virt-manager 0.8.4 (from XML of VM):
1.on Debian VM with virtio drivers for both storage and NIC:
<disk type='block' device='disk'>

cache='none'

Quoted 2 lines

<source dev='/dev/md3'/>
<target dev='vdb' bus='virtio'/>

You can enable Linux AIO, which typically performs better than the default io="threads":

<driver name="qemu" type="raw" io="native"/>

Stefan

#3 lore raw
In reply to TooMeeK
Quoted 16 lines · TooMeeK

Next, I've tried following combinations with virt-manager 0.8.4 (from XML of VM):
1.on Debian VM with virtio drivers for both storage and NIC:
<disk type='block' device='disk'>
<source dev='/dev/md3'/>
<target dev='vdb' bus='virtio'/>
partition type used in guest: EXT4
result: poor performance, 9-10MB/s sequentional copy via SMB
2.on Debian VM with virtio drivers:
<disk type='block' device='disk' cache='writeback'>
<source dev='/dev/md3'/>
<target dev='vdb' bus='virtio'/>
partition type used: EXT4
result: poor performance, 10-15MB/s sequentional copy via SMB
3.Direct attached partition to FreeBSD VM without virtio support (e1000 NIC and SCSI disk):
<disk type='block' device='disk' cache='writeback'>

Shouldn't have you used cache=none when using virtio?
http://www.linux-kvm.org/page/Tuning_KVM
how is that performance with cache none?

Also note that when you don't specify it, I think the default is not none. Maybe it is writethrough, I don't remember.

#4 lore raw
In reply to TooMeeK
Quoted 10 lines · TooMeeK

Next, I've tried following combinations with virt-manager 0.8.4 (from XML of VM):
1.on Debian VM with virtio drivers for both storage and NIC:
<disk type='block' device='disk'>
<source dev='/dev/md3'/>
<target dev='vdb' bus='virtio'/>
partition type used in guest: EXT4
result: poor performance, 9-10MB/s sequentional copy via SMB 2.on Debian VM with virtio drivers:

Quoted 8 lines

<disk type='block' device='disk' cache='writeback'> <source dev='/dev/md3'/>
<target dev='vdb' bus='virtio'/>
partition type used: EXT4
result: poor performance, 10-15MB/s sequentional copy via SMB 3.Direct attached partition to FreeBSD VM without virtio support (e1000 NIC and SCSI disk):
<disk type='block' device='disk' cache='writeback'>

Shouldn't have you used cache=none when using virtio?
http://www.linux-kvm.org/page/Tuning_KVM
how is that performance with cache none?

Also note that when you don't specify it, I think the default is not none. Maybe it is writethrough, I don't remember.