Windows VM Disk Auslastung 100%

Feb 3, 2023
75
25
23
Hallo liebe Community :),

wir haben aktuell eine Situation, bei welcher die SCSI Disks innerhalb einer Windows VM (11 und 10), bei verhältnismäßigen kleinen Auslastungen, im Task Manager bei 100% sind, bzw. immer unverhältnismäßig hoch. (Bei ein paar wenigen MB/s oder KB/s geht das bereits auf 100%)

Die VMs liegen auf einem LVM over iSCSI Volume (SAN). Das SAN hat 12x HDDs im RAID6. => Verbunden über 2x 10Gbit/s via Multipathing.
Entsprechend sind die Reaktionszeiten teilweise bei mehreren hundert ms manchmal. Es laufen keine Datenbanken darauf, daher noch ganz verkraftbar.

Die Tests in einer dieser VMs zeigen eine gute Performance, für das was gegeben ist, natürlich erreicht es hier die 100% im Taks Manager bereits weit vorher:
1782303493914.png

Ich gehe davon aus, dass Windows hier einfach keine richtigen Referenzwerte hat und die Berechnung der Disk-Auslastung einfach murks ist?
Weiß evenutell jemand, wie diese Berechnung stattfindet? Hat jemand ähnliche Erfahrungen und kann dieses "Phänomen" bestätigen?

Verwendet wurde der VirtIO Treiber 271.
Das ist mal eine Beispiel VM, allerdings tritt das auch bei einer migrierten Windows 11 VM (von VMware) und einer frisch erstellen Windows 11 VM auf.

Code:
agent: 1
bios: ovmf
boot: order=sata0;scsi1;scsi2;scsi0
cores: 2
cpu: x86-64-v3
efidisk0: ift2024-vol2:vm-199-disk-0,efitype=4m,size=4M
machine: pc-i440fx-11.0
memory: 4096
meta: creation-qemu=11.0.0,ctime=1782131041
name: [red]
net0: virtio=[red],bridge=vmbr0
net1: virtio=[red],bridge=vmbr150
numa: 0
ostype: win10
scsi0: none,media=cdrom
scsi1: ift2024-vol2:vm-199-disk-1,iothread=1,size=200G
scsihw: virtio-scsi-single
smbios1: uuid=[red]
sockets: 1
vmgenid: [red]

Code:
# pveversion --verbose
proxmox-ve: 9.2.0 (running kernel: 7.0.2-6-pve)
pve-manager: 9.2.2 (running version: 9.2.2/b9984c6d90a4bd80)
proxmox-kernel-helper: 9.1.0+fde2
proxmox-kernel-7.0: 7.0.2-6
proxmox-kernel-7.0.2-6-pve-signed: 7.0.2-6
amd64-microcode: 3.20250311.1
ceph-fuse: 19.2.3-pve4
corosync: 3.1.10-pve2
criu: 4.1.1-1
frr-pythontools: 10.6.1-1+pve2
ifupdown2: 3.3.0-1+pmx12
ksm-control-daemon: 1.5-1
libjs-extjs: 7.0.0-5
libproxmox-acme-perl: 1.7.1
libproxmox-backup-qemu0: 2.0.2
libproxmox-rs-perl: 0.4.1
libpve-access-control: 9.1.1
libpve-apiclient-perl: 3.4.2
libpve-cluster-api-perl: 9.1.5
libpve-cluster-perl: 9.1.5
libpve-common-perl: 9.1.12
libpve-guest-common-perl: 6.0.3
libpve-http-server-perl: 6.0.5
libpve-network-perl: 1.6.5
libpve-notify-perl: 9.1.5
libpve-rs-perl: 0.15.3
libpve-storage-perl: 9.1.5
libspice-server1: 0.15.2-1+b1
lvm2: 2.03.31-2+pmx1
lxc-pve: 7.0.0-2
lxcfs: 7.0.0-pve1
novnc-pve: 1.7.0-1
proxmox-backup-client: 4.2.0-1
proxmox-backup-file-restore: 4.2.0-1
proxmox-backup-restore-image: 1.0.0
proxmox-firewall: 1.2.3
proxmox-kernel-helper: 9.1.0+fde2
proxmox-mail-forward: 1.0.3
proxmox-mini-journalreader: 1.6
proxmox-offline-mirror-helper: 0.7.4
proxmox-widget-toolkit: 5.2.2
pve-cluster: 9.1.5
pve-container: 6.1.10
pve-docs: 9.2.1
pve-edk2-firmware: 4.2025.05-2
pve-esxi-import-tools: 1.0.1
pve-firewall: 6.0.4
pve-firmware: 3.18-3
pve-ha-manager: 5.2.4
pve-i18n: 3.7.4
pve-qemu-kvm: 11.0.0-3
pve-xtermjs: 6.0.0-1
qemu-server: 9.1.15
smartmontools: 7.5-pve2
spiceterm: 3.4.2
swtpm: 0.8.0+pve3
vncterm: 1.9.2
zfsutils-linux: 2.4.2-pve1

Vielen Dank schonmal :)
 
Hallo liebe Community :),

wir haben aktuell eine Situation, bei welcher die SCSI Disks innerhalb einer Windows VM (11 und 10), bei verhältnismäßigen kleinen Auslastungen, im Task Manager bei 100% sind, bzw. immer unverhältnismäßig hoch. (Bei ein paar wenigen MB/s oder KB/s geht das bereits auf 100%)

Die VMs liegen auf einem LVM over iSCSI Volume (SAN). Das SAN hat 12x HDDs im RAID6. => Verbunden über 2x 10Gbit/s via Multipathing.
Entsprechend sind die Reaktionszeiten teilweise bei mehreren hundert ms manchmal. Es laufen keine Datenbanken darauf, daher noch ganz verkraftbar.
Also da ist vermutlich schon die Wurzel deines Problems. Mehrere Hundert ms sind einfach viel zu viel. Alles über 20ms ist schlecht und unbrauchbar.
Entweder hast du in deinem Storage ein Problem oder die iSCSI Konfiguration ist irgendwo schief gelaufen.
Ich gehe bei Kunden schon auf Fehlersuche wenn wir längere Zeit mehr als 5ms Latenz haben.

Was für ein Storage ist das und wie sieht deine iSCSI Konfiguration aus?
Die Tests in einer dieser VMs zeigen eine gute Performance, für das was gegeben ist, natürlich erreicht es hier die 100% im Taks Manager bereits weit vorher:
Das sieht OK aus
Ich gehe davon aus, dass Windows hier einfach keine richtigen Referenzwerte hat und die Berechnung der Disk-Auslastung einfach murks ist?
Weiß evenutell jemand, wie diese Berechnung stattfindet? Hat jemand ähnliche Erfahrungen und kann dieses "Phänomen" bestätigen?
Windows zeigt das korrekt an, bei den Latenzen zeigt der halt busy an.
 
Hey @Falk R.

Danke dir für deine erste Einschätzung!
Was für ein Storage ist das und wie sieht deine iSCSI Konfiguration aus?
Das Storage ist ein Infortrend DS1024RE mit Dual Controller. Jeder Controller hat jeweils zwei Schnittstellen.
Die Controller befinden sich in einer Aktiv/Passiv Konfiguration, für das jeweilige LUN.
Controller A stellt ein LUN bereit für VMware mit 12x HDDs im RAID6 via iSCSI.
Controller B stellte ursprünglich ebenfalls ein LUN bereit für VMware, nun für Proxmox mit anderen 12x HDDs im RAID6 via iSCSI.
=> Lastenverteilung, jeder Controller übernimmt ein LUN

Es hat unter VMware immer alles funktioniert. Ob dort die Latenzen vergleichbar waren, weiß ich leider nicht.
Allerdings wäre das sehr interessant zu wissen.

Die Konfiguration ist relativ simpel.
Der PVE Host besitzt eine Intel X710 SFP+ Dual Port Karte => 10Gbit.

Code:
auto nic5
iface nic5 inet static
    address 192.168.35.73/24
#SAN Switch .100

auto nic6
iface nic6 inet static
    address 192.168.36.73/24
#SAN Switch .101
=> Keine RX/TX errors

Jeder Controller besitzt zwei Channel, davon ist jeweils der erste Channel in Subnetz A und der zweite Channel in Subnetz B für Multipathing.
Der erste Channel geht auf Switch 1, der zweite Channel auf Switch 2.
Jeder Controller kann primär den Traffic für das jeweils aktive zugewiesene LUN aktzeptieren, der andere Passive Controller für dieses LUN kann das war auch, aber stark verlangsamt. => Über ALUA Priorities geregelt

Multipath arbeitet mit den ALUA Priorities auch korrekt:
Code:
# multipath -ll
3600d0231000de8f109b09bbd405847d2 dm-0 IFT,DS 1000 Series
size=36T features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| |- 18:0:0:1 sdd 8:48  active ready running
| `- 21:0:0:1 sdh 8:112 active ready running
`-+- policy='service-time 0' prio=10 status=enabled
  |- 19:0:0:1 sde 8:64  active ready running
  `- 20:0:0:1 sdi 8:128 active ready running
Code:
# iscsiadm -m node
192.168.35.84:3260,1 iqn.2002-10.com.infortrend:raid.uid[redacted].401
192.168.35.85:3260,1 iqn.2002-10.com.infortrend:raid.uid[redacted].412
192.168.36.84:3260,1 iqn.2002-10.com.infortrend:raid.uid[redacted].501
192.168.36.85:3260,1 iqn.2002-10.com.infortrend:raid.uid[redacted].512

# iscsiadm -m session
tcp: [1] 192.168.35.85:3260,1 iqn.2002-10.com.infortrend:raid.uid[redacted].412 (non-flash)
tcp: [2] 192.168.35.84:3260,1 iqn.2002-10.com.infortrend:raid.uid[redacted]401 (non-flash)
tcp: [3] 192.168.36.84:3260,1 iqn.2002-10.com.infortrend:raid.uid[redacted].501 (non-flash)
tcp: [4] 192.168.36.85:3260,1 iqn.2002-10.com.infortrend:raid.uid[redacted].512 (non-flash)

Anschließend ganz normal ein LVM drüber gelegt.

Ich gehe bei Kunden schon auf Fehlersuche wenn wir längere Zeit mehr als 5ms Latenz haben.
Nach der Aussage gehe ich davon aus, dass das wohl nicht normal ist? Auch bei SANs mit ausschließlich HDDs?
Die Latenzen sind ja nicht dauerhaft so hoch, nur wenn wirklich etwas gemacht wird. Also bspw. der Performancetest...
Manchmal schießt es aber halt auch nur beim Explorer öffnen oder anderen Kleinigkeiten in die Höhe.

Als Zusatztest wurde ebenfalls mal die virtuelle Disk einfach auf den lokalen ZFS Speicher (Bestehend im Mirror aus 2x M.2 NVMes) verschoben,
Da gab es das Latenzproblem ebenfalls, zwar nicht so drastisch wie mit dem SAN, aber ebenfalls kurzzeitig zwischen 0-300ms.
Beim HDD SAN war es manchmal aber sogar über 1000ms...

Danke schonmal!
 
Ok, die Info war gut. Das iSCSI sieht sauber aus.
Wenn du lokal auch solche Latenzen hast, tippe ich mal auf CPU Warteschlange.
Was zeigt denn der Host im Summary bei I/O Delay an? Sollte im Normalfall bei 0,x liegen und bei über 5 sollte man sich Gedanken machen.
Dann wäre noch interessant was beim CPU Pressure für Werte stehen.
 
  • Like
Reactions: Johannes S
Huhuu @Falk R.

also der I/O Delay der Node ist immer unter 0,3%.
Der CPU Pressure bei den VMs ist auch eher unauffällig. Manchmal kurz, aber das höchste waren 0.08.
1782458292403.png

Ich habe mal vier Screenshots der FIO Tests angehangen, vom SAN direkt. Leider nur noch Screenshots, sorry.
Da ist die Performance zwar OK, aber die Latenz schrecklich. Vom ZFS Speicher habe ich aktuelle keine Performancewerte.

Ebenfalls drei Videos, wie sich die Latenzen in der VM verhalten.
VM1 läuft auf dem lokalen ZFS Speicher (Nur die EFI und TPM sind noch auf dem SAN, das sollte aber irrelevant sein).
https://streamable.com/d6s4mo
VM2 läuft auf dem SAN während den Tests.
https://streamable.com/a0keyd (schreiben)
https://streamable.com/iwfl4y (lesen)

Auf VM1 arbeiten bereits Nutzer darauf. Die Latenzen sind zwar deutlich besser als auf VM2, aber trotzdem einfach zu hoch für den geringen Traffic.

Angemerkt, der lokale ZFS Speicher mit den NVMes sind 2x Samsung 9100 Pro im ZFS Spiegel.
Consumer SSDs sind hier auch eher suboptimal...

Oder was ganz anderes, worauf ich grad einfach nicht komme.
 

Attachments

  • randread-test.png
    randread-test.png
    250 KB · Views: 2
  • seqread-test.png
    seqread-test.png
    244.4 KB · Views: 2
  • randwrite-test.png
    randwrite-test.png
    302.9 KB · Views: 2
  • seqwrite-test.png
    seqwrite-test.png
    271.1 KB · Views: 2
OK, wenn du keine echten Latenzen misst sondern nur die Anzeige im Taskmanager meinst, da sind immer hohe Fantasiewerte.
Guck mal mit Tools wie nmon oder iotop auf dem Host wie die Auslastung und Latenzen auf der LUN sind.