Hyper-V: Receive Side Scaling (RSS-Settings (VMQ)): Unterschied zwischen den Versionen
Admin (Diskussion | Beiträge) K |
Admin (Diskussion | Beiträge) K |
||
Zeile 29: | Zeile 29: | ||
Set-NetAdapterVmq -Name NIC02 -BaseProcessorNumber 18 -MaxProcessors 7 -MaxProcessorNumber 30 | Set-NetAdapterVmq -Name NIC02 -BaseProcessorNumber 18 -MaxProcessors 7 -MaxProcessorNumber 30 | ||
</source> | </source> | ||
+ | |||
+ | |||
Version vom 7. September 2017, 14:08 Uhr
Receive side scaling (RSS) is a network driver technology that enables the efficient distribution of network receive processing across multiple CPUs in multiprocessor systems.
Note Because hyper-threaded CPUs on the same core processor share the same execution engine, the effect is not the same as having multiple core processors. For this reason, RSS does not use hyper-threaded processors.
Inhaltsverzeichnis
Erklärung
Standardmässig werden Live Migration in Hyper-V 2016 mit dem Core 0 auf allen NUMA-Nodes gerechnet.
Da in Core 0 ebenfalls die Parent Partition bzw. das Management OS auf Core 0 läuft, kann es zu Last Problemen während Live Migrationen von VMs kommen.
Das heisst wenn eine oder mehrere VMs Live migriert werden, wird Core 0 ausgelastet. Falls der Core zu 100% ausgelastet wird, kann die Parent Partition bzw. das Management OS nicht mehr vernünftig rechnen und der Hyper-V Node stützt ab.
Um dies zu verhindern gibt es die RSS-Settings. Diese weisen die sogenannten Queues (oder auch VM-Queues) bestimmten Cores zu. Somit wird verhindert das der Core 0 durch Live Migrationen ausgelastet wird.
RSS-Settings Beispiel (optimal, bei insgesamt 32 logischen Cores)
Wir haben einen Server mit folgender Hardware:
- 2 CPUs (sprich 2 Sockets) mit je 8 Cores (+ Hyperthreading aktiviert = 16 logische Cores pro NUMA-Node)
- 2 NICs (in einem Team/Bond)
Die Optimale Verteilung der Queues währe folgende:
Blau markiert die physischen Cores.
Es dürfen keine Hyperthreadete Cores verwendet werden!
Die erste NIC verteilen wir auf den ersten NUMA-Node (NUMA-Node 0), aber wir lassen Core 0 aus, sprich der erste Core im NUMA-Node 0)
Die zweite NIC verteilen wir auf den zweiten NUMA-Node (NUMA-Node 1), aber wir lassen Core 0 aus, sprich der erste Core im NUMA-Node 1)
RSS-Settings setzen
Set-NetAdapterVmq -Name NIC01 -BaseProcessorNumber 2 -MaxProcessors 7 -MaxProcessorNumber 14 Set-NetAdapterVmq -Name NIC02 -BaseProcessorNumber 18 -MaxProcessors 7 -MaxProcessorNumber 30
RSS-Settings Beispiel (optimal, bei insgesamt 56 logischen Cores)
Wir haben einen Server mit folgender Hardware:
- 2 CPUs (sprich 2 Sockets) mit je 14 Cores (+ Hyperthreading aktiviert = 28 logische Cores pro NUMA-Node)
- 2 NICs (in einem Team/Bond)
Die Optimale Verteilung der Queues währe folgende:
Blau markiert die physischen Cores.
Es dürfen keine Hyperthreadete Cores verwendet werden!
Die erste NIC verteilen wir auf den ersten NUMA-Node (NUMA-Node 0), aber wir lassen Core 0 aus, sprich der erste Core im NUMA-Node 0)
Die zweite NIC verteilen wir auf den zweiten NUMA-Node (NUMA-Node 1), aber wir lassen Core 0 aus, sprich der erste Core im NUMA-Node 1)
RSS-Settings setzen
Set-NetAdapterVmq -Name NIC01 -BaseProcessorNumber 2 -MaxProcessors 13 -MaxProcessorNumber 26 Set-NetAdapterVmq -Name NIC02 -BaseProcessorNumber 30 -MaxProcessors 13 -MaxProcessorNumber 54
Weitere Informationen:
RSS: https://docs.microsoft.com/en-us/windows-hardware/drivers/network/introduction-to-receive-side-scaling
RSS Best Practise: https://blogs.technet.microsoft.com/networking/2016/01/04/virtual-machine-queue-vmq-cpu-assignment-tips-and-tricks/