Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

"Performance-Einbruch: Windows 11 VM auf Unraid überträgt via SMB extrem langsam auf ZFS-Pool"

Featured Replies

  • Community Expert

Hallo zusammen,

ich habe ein hartnäckiges Performance-Problem bei SMB-Transfers in meiner Windows 11 VM unter Unraid und benötige eure Expertise bei der Analyse des Netzwerk-Stacks.

System-Eckdaten:

Unraid Version: [Deine Version einfügen]

CPU: [AMD Ryzen Threadripper PRO 7975WX 32-Cores @ 4000 MHz]

Unraid Version : 7.2.4

Ram 128 GB DDR5 ECC Rdimm

Gpu : Nvidia 5090 Rtx

Motherboard : ASUSTeK COMPUTER INC. Pro WS WRX90E-SAGE SE , Version Rev 1.xx

American Megatrends Inc., Version 1317

BIOS Datum: Dienstag, 03.02.2026

<?xml version='1.0' encoding='UTF-8'?>

<domain type='kvm'>

<name>Windows 11</name>

<uuid>6d688bd3-b8f9-69ca-dc59-68fa0d5b29d7</uuid>

<metadata>

<vmtemplate xmlns="http://unraid" name="Windows 11" icon="windows11.png" os="windowstpm" storage="default" iconold="windows11.png" webui=""/>

</metadata>

<memory unit='KiB'>33554432</memory>

<currentMemory unit='KiB'>33554432</currentMemory>

<memoryBacking>

<nosharepages/>

</memoryBacking>

<vcpu placement='static'>8</vcpu>

<cputune>

<vcpupin vcpu='0' cpuset='12'/>

<vcpupin vcpu='1' cpuset='44'/>

<vcpupin vcpu='2' cpuset='13'/>

<vcpupin vcpu='3' cpuset='45'/>

<vcpupin vcpu='4' cpuset='14'/>

<vcpupin vcpu='5' cpuset='46'/>

<vcpupin vcpu='6' cpuset='15'/>

<vcpupin vcpu='7' cpuset='47'/>

</cputune>

<os>

<type arch='x86_64' machine='pc-q35-9.2'>hvm</type>

<loader readonly='yes' type='pflash' format='raw'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi-tpm.fd</loader>

<nvram format='raw'>/etc/libvirt/qemu/nvram/6d688bd3-b8f9-69ca-dc59-68fa0d5b29d7_VARS-pure-efi-tpm.fd</nvram>

<boot dev='hd'/>

</os>

<features>

<acpi/>

<apic/>

<hyperv mode='custom'>

<relaxed state='on'/>

<vapic state='on'/>

<spinlocks state='on' retries='8191'/>

<vpindex state='on'/>

<synic state='on'/>

<stimer state='on'/>

<vendor_id state='on' value='none'/>

</hyperv>

<kvm>

<hidden state='on'/>

</kvm>

<ioapic driver='kvm'/>

</features>

<cpu mode='host-passthrough' check='none' migratable='on'>

<topology sockets='1' dies='1' clusters='1' cores='4' threads='2'/>

<cache mode='passthrough'/>

<feature policy='require' name='topoext'/>

</cpu>

<clock offset='localtime'>

<timer name='hpet' present='no'/>

<timer name='hypervclock' present='yes'/>

</clock>

<on_poweroff>destroy</on_poweroff>

<on_reboot>restart</on_reboot>

<on_crash>restart</on_crash>

<devices>

<emulator>/usr/local/sbin/qemu</emulator>

<disk type='file' device='cdrom'>

<driver name='qemu' type='raw'/>

<source file='/mnt/media/Medien/Diskimages/tiny11_25H2_Nov25.iso'/>

<target dev='hda' bus='sata'/>

<readonly/>

<address type='drive' controller='0' bus='0' target='0' unit='0'/>

</disk>

<disk type='file' device='cdrom'>

<driver name='qemu' type='raw'/>

<source file='/mnt/media/Medien/Diskimages/virtio-win-0.1.285-1.iso'/>

<target dev='hdb' bus='sata'/>

<readonly/>

<address type='drive' controller='0' bus='0' target='0' unit='1'/>

</disk>

<controller type='usb' index='0' model='nec-xhci' ports='15'>

<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>

</controller>

<controller type='pci' index='0' model='pcie-root'/>

<controller type='pci' index='1' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='1' port='0x8'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0' multifunction='on'/>

</controller>

<controller type='pci' index='2' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='2' port='0x9'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>

</controller>

<controller type='pci' index='3' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='3' port='0xa'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>

</controller>

<controller type='pci' index='4' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='4' port='0xb'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x3'/>

</controller>

<controller type='pci' index='5' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='5' port='0xc'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x4'/>

</controller>

<controller type='pci' index='6' model='pcie-to-pci-bridge'>

<model name='pcie-pci-bridge'/>

<address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>

</controller>

<controller type='pci' index='7' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='7' port='0xd'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x5'/>

</controller>

<controller type='pci' index='8' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='8' port='0xe'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x6'/>

</controller>

<controller type='sata' index='0'>

<address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>

</controller>

<controller type='virtio-serial' index='0'>

<address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>

</controller>

<interface type='bridge'>

<mac address='52:54:00:72:af:c2'/>

<source bridge='br0'/>

<model type='virtio-net'/>

<driver name='vhost' queues='8'/>

<address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>

</interface>

<serial type='pty'>

<target type='isa-serial' port='0'>

<model name='isa-serial'/>

</target>

</serial>

<console type='pty'>

<target type='serial' port='0'/>

</console>

<channel type='unix'>

<target type='virtio' name='org.qemu.guest_agent.0'/>

<address type='virtio-serial' controller='0' bus='0' port='1'/>

</channel>

<input type='mouse' bus='ps2'/>

<input type='keyboard' bus='ps2'/>

<tpm model='tpm-tis'>

<backend type='emulator' version='2.0' persistent_state='yes'/>

</tpm>

<audio id='1' type='none'/>

<hostdev mode='subsystem' type='pci' managed='yes'>

<driver name='vfio'/>

<source>

<address domain='0x0000' bus='0xc1' slot='0x00' function='0x0'/>

</source>

<rom file='/mnt/media/vbios/rtx5090.rom'/>

<address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>

</hostdev>

<hostdev mode='subsystem' type='pci' managed='yes'>

<driver name='vfio'/>

<source>

<address domain='0x0000' bus='0xc1' slot='0x00' function='0x1'/>

</source>

<address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>

</hostdev>

<hostdev mode='subsystem' type='pci' managed='yes'>

<driver name='vfio'/>

<source>

<address domain='0x0000' bus='0x8d' slot='0x00' function='0x0'/>

</source>

<address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/>

</hostdev>

<hostdev mode='subsystem' type='pci' managed='yes'>

<driver name='vfio'/>

<source>

<address domain='0x0000' bus='0xe1' slot='0x00' function='0x0'/>

</source>

<address type='pci' domain='0x0000' bus='0x08' slot='0x00' function='0x0'/>

</hostdev>

<watchdog model='itco' action='reset'/>

<memballoon model='none'/>

</devices>

</domain>

Storage-Backend: ZFS-Pool, Daten liegen direkt auf dem Pfad /mnt/media/Medien/ (kein FUSE/User-Share Overhead).

Netzwerk: 10G-NIC, VM via virtio-net Bridge.

Hardware-Beweis (Host-Storage): Um das Storage als Ursache auszuschließen, habe ich einen dd-Test auf dem Pool durchgeführt: dd if=/dev/zero of=/mnt/media/Medien/testfile bs=1G count=2 oflag=direct Ergebnis: 6,8 GB/s. Die Hardware-Basis ist also absolut potent.

Konfiguration & Bisherige Versuche:

VM-XML: <driver name='vhost' queues='8'/> ist aktiv.

SMB: Multichannel ist sowohl auf dem Host als auch in der Windows-VM aktiv (Set-SmbServerConfiguration -EnableMultiChannel $true).

Windows-VM:

Aktuelle VirtIO-Treiber installiert.

MTU testweise auf 9000 gesetzt.

LSO, RSC und Checksum-Offloading deaktiviert.

Beobachtung: Get-SmbClientNetworkInterface zeigt für das Interface RSS Capable: False.

Das Problem: Beim Kopieren von Dateien klebt die Performance konstant bei 140–180 MB/s (ca. 13 % Netzauslastung im Task-Manager). Es fühlt sich wie ein "Deadlock" an, da die CPU-Auslastung nicht auf Volllast steht, aber die Datenpakete nicht "durchgehen".

Meine Fragen:

Warum erkennt Windows das vhost-Interface trotz queues='8' nicht als RSS-fähig (RSS Capable: False)?

Ist dies ein bekanntes Problem beim Zusammenspiel von virtio-net und der Bridge unter Unraid bei 10G-Setups?

Gibt es spezifische Samba-Parameter (smb-extra.conf) oder XML-Anpassungen, die diese künstliche Bremse lösen könnten?

Ich habe die XML meiner VM hier angehängt und bin für jeden Hinweis dankbar, wie ich Windows dazu bringe, die volle 10G-Bandbreite zu nutzen.

4.<driver name='vhost' queues='8'/> wird leider nicht übernommen .

Vielen Dank!

tower-diagnostics-20260316-0028.zip

5 hours ago, Tarawa said:

Vielen Dank!

mal abgesehen davon dass das furchtbar zu lesen ist ... und der Transfer "lokal" von VM <> pool nicht am NIC hängen sollte, ein paar Anmerkungen

1/ Tiny VM überdenken, vielleicht fehlt ja was ;)

2/ du schreibst 10G NIC, deine bond mit 2 NIC's welche jeweils 5G können und mit 1G verbunden sind ... (wobei du evtl. nur die lokale VM NIC meinst)

3/ DNS, du nutzt google und CF ? vielleicht mal lokalen Router testen

4/ den ganzen multichannel Kram deaktivieren bzw, revidieren, sollte nicht nötig sein für single NIC und normale transfers sofern die CPU nicht im bottleneck wäre

rein von speed her sieht es ja fast so aus als würde es irgendwie über die 2x 1G Leitung laufen, da ich jetzt noch in Erinnerung hatte

"VM mit eigener xml ohne libvirt da du deine eigene xml ...." und ich mir das oben nicht im Detail anschaue, vielleicht mal wirklich erstmal alles Standard testen, dann custom ?

aus Erfahrung, einfache 10G lokal zu einem schnellen pool, ohne irgendwas einstellen zu müssen, kein Problem.

  • Author
  • Community Expert
On 3/14/2026 at 10:00 PM, alturismo said:

vorweg, das libvirt.img hat nichts damit zu tun wie du deine vm's betreibst, sprich ob per nvme pass oder vdisk.img, sprich, falscher Denk Ansatz.

in dem libvirt.img sind persistent die xml Dateien hinterlegt, diverse VM (kvm qemu) Grundsettings, Bios TPM files, usw ...

Lösungsansatz,

1/M Dienst stoppen

2/ das libvirt image löschen

3/ VM Dienst starten

evtl. auch zwischen 1 und 2 oder 2 und 3 Neustart falls das nicht gehen sollte, danach ist alles "blank", schätze du hast mit deinen Eingriffen was kaputt gemacht.

Um deine vorhandenen vm's per xml halbwegs sauber einzuspielen, Beispiel

1/ VM anlegen und NICHT starten

jetzt hast du eine xml welche du im Form view komplett editieren kannst mit deinen speziellen Einträgen (was auch immer du da machst, wird seinen Grund haben), dabei aber die uuid nicht verwerfen !!! sprich, wenn du stumpf einfach deinen xml Inhalt rein kopierst, den uuid Eintrag aus der vorhandenen übernehmen, ebenso die Bios file settings falls die auch manuell sind.

Danach kannst du die dann sauber starten sofern das alles korrekt ist was du da

ZFS Performance Analyse: 8x NVMe Gen4 Pool vs. Windows VM

Status: Host-Power vorhanden (5,6 GB/s), SMB-Schreiblimit bei ~300 MB/s.

1. Hardware & Roh-Performance (Host)

  • Pool: 8x NVMe Gen4 SSDs im ZFS RaidZ2.

  • Benchmark: dd Write-Test auf Host-Ebene: 5,6 GB/s.

  • Fazit: Die physische Anbindung und das ZFS-Setup auf Unraid sind voll leistungsfähig.

2. Messwerte VM (Windows 11 / VirtIO)

  • Lesen (SMB): ~600 MB/s (ca. 4,8 Gbit/s).

  • Schreiben (SMB): ~300 MB/s (ca. 2,4 Gbit/s) – konstantes Plateau.

  • SMB-Status: Trotz aktiver Optionen wird nur eine Single-Session (ein Kanal) genutzt.

3. Bereits aktive Optimierungen

  • ZFS: atime=off, xattr=sa, compression=lz4, recordsize=128k.

  • Unraid: Exclusive Shares aktiv (Direktzugriff auf /mnt/media/).

  • VM: RSS (Receive Side Scaling) auf 16 Kerne konfiguriert, VirtIO-Netzwerk aktiv.

  • SMB Extras (Aktueller Stand):

    Plaintext

    server multi channel support = yes
    aio read size = 1
    aio write size = 1
    case sensitive = auto
    socket options = TCP_NODELAY
    

4. Diagnose

Das Problem ist nicht die Hardware, sondern die virtuelle Übergabe. Die Differenz zwischen 5,6 GB/s (Host) und 300 MB/s (VM) deutet auf ein Single-Threading-Limit im SMB-Protokoll oder eine Latenz-Bremse im Zusammenspiel mit dem ZFS-Schreibpuffer hin.


tower-diagnostics-20260318-2206.zip

@Tarawa nur mal angemerkt, wenn ich mich mit einer KI unterhalten will kann ich das selbst, dazu brauch ich das hier sicher nicht ;)

  • Author
  • Community Expert

Ich hab gewisse Einschränkungen und ich nutze KI als Werkzeug um mir zu helfen alle relevanten Infos zusammen zu tragen 😒

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.