pixel
21.05.16, 06:16
Hallo zusammen,
da ich etwas Probleme mit dem Durchsatz auf meinen VM's habe versuche ich das Problem mal einzugrenzen. Das Virtualisierungs-System besteht aus:
Host: KVM01 (Ubuntu-Server 16.04 LTS 64Bit)
VM: STORAGE (Debian8 64Bit)
Auf dem Host liegt der Storage-Pool von Libvirt in einer volume-Gruppe (LVM). Die virtuellen HD's für die Gäste bilden also die LV's die dann vom Gast aus partitioniert/formatiert werden. Im Gast sind diese als BTRFS formatiert.
für die Messung lege ich zunächst im Host ein LV an, formatiere und mounte es:
lvcreate -L 20G vg01 -n kvm_test
mkfs.btrfs /dev/vg01/kvm_test
mkdir /kvm_test
mount /dev/vg01/kvm_test /kvm_test
Die Default-Mount-Optionen unter Ubuntu sind:
(rw,relatime,space_cache,subvolid=5,subvol=/)
Anschließend lege ich für den Gast das gleiche LV an, Partitioniere es in der VM auf die maximale Größe, formatiere es ebenfalls mit BTRFS und mounte es. Auf dem Debian-System sind die Default-Mount-Optionen:
(rw,relatime,space_cache)
Um die Datenmenge (Ergebnisse) überschaubar zu halten wurden die Testläuft zunächst auf 0,1 und 2 reduziert. Nachfolgend eine Aufstellung aller Test-Variate:
0=write/rewrite
1=read/re-read
2=random-read/write
3=Read-backwards
4=Re-write-record
5=stride-read
6=fwrite/re-fwrite
7=fread/Re-fread,
8=random mix
9=pwrite/Re-pwrite
10=pread/Re-pread
11=pwritev/Re-pwritev
12=preadv/Re-preadv
Option:
-i 0 -i 1 -i 2
Es sollen insgesamt 500MB geschrieben werden welche in 5KB Records gesplittet sein sollen. Option:
-s 500m -r 8k
Der komplette Aufruf ist ist damit:
iozone -s 500m -r 8k -i 0 -i 1 -i 2
Nachfolgend die Ergebnisse mit verschieden VM-Einstellungen bezüglich der HD-Ansteuerung:
random random
write rewrite read reread read write
KVM01 1941489 2010112 3731912 3542148 3815172 7170
STOTAGE (RAW,None,Nativ) 29090 20018 4252343 4467829 3919768 7146
STOTAGE (RAW,Default,default) 25113 13200 4204817 4771042 3817302 7001
STOTAGE (RAW,writeback,threads) 16367 15659 4400141 4785267 3784040 7500
STOTAGE (RAW,directsync,native) 24792 13514 3951016 4716242 3993046 7474
STOTAGE (RAW,unsave,default) 21924 12909 4448891 4818920 4018684 6647
Was mir hier auffällt ist der regelrechte Einbruch von write/rewrite innerhalb der VM aber ich habe im Moment keine Idee wo ich ansetzen kann.
Evtl. hat jemand einen Tipp für mich.
Viele Grüße
pixel
da ich etwas Probleme mit dem Durchsatz auf meinen VM's habe versuche ich das Problem mal einzugrenzen. Das Virtualisierungs-System besteht aus:
Host: KVM01 (Ubuntu-Server 16.04 LTS 64Bit)
VM: STORAGE (Debian8 64Bit)
Auf dem Host liegt der Storage-Pool von Libvirt in einer volume-Gruppe (LVM). Die virtuellen HD's für die Gäste bilden also die LV's die dann vom Gast aus partitioniert/formatiert werden. Im Gast sind diese als BTRFS formatiert.
für die Messung lege ich zunächst im Host ein LV an, formatiere und mounte es:
lvcreate -L 20G vg01 -n kvm_test
mkfs.btrfs /dev/vg01/kvm_test
mkdir /kvm_test
mount /dev/vg01/kvm_test /kvm_test
Die Default-Mount-Optionen unter Ubuntu sind:
(rw,relatime,space_cache,subvolid=5,subvol=/)
Anschließend lege ich für den Gast das gleiche LV an, Partitioniere es in der VM auf die maximale Größe, formatiere es ebenfalls mit BTRFS und mounte es. Auf dem Debian-System sind die Default-Mount-Optionen:
(rw,relatime,space_cache)
Um die Datenmenge (Ergebnisse) überschaubar zu halten wurden die Testläuft zunächst auf 0,1 und 2 reduziert. Nachfolgend eine Aufstellung aller Test-Variate:
0=write/rewrite
1=read/re-read
2=random-read/write
3=Read-backwards
4=Re-write-record
5=stride-read
6=fwrite/re-fwrite
7=fread/Re-fread,
8=random mix
9=pwrite/Re-pwrite
10=pread/Re-pread
11=pwritev/Re-pwritev
12=preadv/Re-preadv
Option:
-i 0 -i 1 -i 2
Es sollen insgesamt 500MB geschrieben werden welche in 5KB Records gesplittet sein sollen. Option:
-s 500m -r 8k
Der komplette Aufruf ist ist damit:
iozone -s 500m -r 8k -i 0 -i 1 -i 2
Nachfolgend die Ergebnisse mit verschieden VM-Einstellungen bezüglich der HD-Ansteuerung:
random random
write rewrite read reread read write
KVM01 1941489 2010112 3731912 3542148 3815172 7170
STOTAGE (RAW,None,Nativ) 29090 20018 4252343 4467829 3919768 7146
STOTAGE (RAW,Default,default) 25113 13200 4204817 4771042 3817302 7001
STOTAGE (RAW,writeback,threads) 16367 15659 4400141 4785267 3784040 7500
STOTAGE (RAW,directsync,native) 24792 13514 3951016 4716242 3993046 7474
STOTAGE (RAW,unsave,default) 21924 12909 4448891 4818920 4018684 6647
Was mir hier auffällt ist der regelrechte Einbruch von write/rewrite innerhalb der VM aber ich habe im Moment keine Idee wo ich ansetzen kann.
Evtl. hat jemand einen Tipp für mich.
Viele Grüße
pixel