Porównanie wydajności wirtualnych kontrolerów SCSI i NVMe w VMware
Obecnie w maszynach wirtualnych (VM) wykonywanych jest coraz więcej zadań (workloads), w tym zadań, które wymagają znacznie większego IO w systemie operacyjnym gościa. W przypadku maszyn wirtualnych w środowisku VMware vSphere wszystkie dyski wirtualne (VMDK) są w domyślnej konfiguracji podłączone do adaptera LSI Logical SAS SCSI. Adapter ten jest rozpoznawany przez wszystkie systemy operacyjne bez konieczności instalowania dodatkowych sterowników, ale nie zawsze zapewnia on najlepszą wydajność, zwłaszcza w przypadku korzystania z macierzy RAID SSD lub NVMe. W tym artykule porównaliśmy wirtualne kontrolery pamięci masowej LSI Logical SAS, VMware Paravirtual oraz NVMe Controller.
Modele kontrolera
Standardowym kontrolerem w prawie każdej wirtualnej maszynie jest kontroler SCSI LSI Logical SAS. Ten kontroler jest rozpoznawany i obsługiwany przez każdy system operacyjny gościa bez dodatkowych sterowników. Jest on wystarczający dla prawie każdego rodzaju zadań, które nie mają dużych wymagań dotyczących I/O, ten kontroler jest również niezbędny do skonfigurowania Microsoft Server Cluster Service (MSCS).
Od ESXi 4.0 i hardware version 7 dostępny jest również kontroler VMware Paravirtual. Kontroler ten został opracowany z myślą o wysokowydajnych systemach pamięci masowej, może on przetwarzać znacznie większe ilości I/O, jednocześnie zmniejszając obciążenie procesora. Aby ten kontroler mógł być używany przez system operacyjny gościa, muszą być zainstalowane VMware Tools.
Od ESXi 6.5 i hardware version 13 wirtualne maszyny mogą korzystać również z kontrolera NVMe. Kontroler ten dodatkowo optymalizuje wydajność macierzy RAID SSD, NVMe i pamięci masowej PMEM. Począwszy od VMware vSphere 7.0 i hardware version 17, ten kontroler jest zawarty w domyślnej konfiguracji VM i zastępuje tym samym kontroler SCSI.
Wybór właściwego kontrolera jest uzależniony od aplikacji w maszynie wirtualnej. Na przykład, jeśli chodzi o biurową maszynę wirtualną i wymagana jest stosunkowo niewielka wydajność to można użyć standardowego kontrolera SCSI LSI Logical SAS. Jeśli natomiast w maszynie wirtualnej wymagana jest większa wydajność pamięci masowej, a znajdujący się za nią system pamięci masowej również oferuje większą wydajność, to parawirtualny kontroler VMware (VMware Paravirtual Controller) jest zazwyczaj lepszym wyborem. Kontroler NVMe jest najlepszym wyborem, jeśli chodzi o wysoką wydajność podczas korzystania z macierzy RAID SSD, NVMe lub PMEM przez wirtualne maszyny.
Test wydajności
Przeprowadziliśmy różne testy wydajności dla różnych scenariuszy. Scenariusze testowe są tylko przykładami, poszczególne wartości powinny być dostosowane indywidualnie do własnego obciążenia, aby uzyskać realistyczne wyniki. Szczegółowe informacje na temat użytego systemu testowego:
Hardware / Software:
- Supermicro Mainboard X11DPi-NT
- 2x Intel Xeon Gold 5222 (3,80GHz, 4-Core, 16,5MB)
- 256GB ECC Registered (RDIMM) DDR4 2666 RAM 4 Rank
- 3,2 TB Samsung SSD NVMe PCI-E 3.0 (PM1725b)
- ESXi 6.7.0 Update 2 (Build 13981272)
Test-VM
- Windows 10 Pro (18362)
- 2 CPU Sockets
- 8 vCPUs
- 8GB RAM
- VMware Paravirtual
- LSI Logical SAS
- NVMe Controller
- Thick-Provisioned eager-zeroed VMDK
Porównanie wydajności
Database Server
Database Server (8K Random; 70% Read; 8 Threads; 16 Outstanding IO) | |||||||
IOPS | MByte/s | Latency (ms) | CPU Usage (%) | ||||
---|---|---|---|---|---|---|---|
LSI Logical SAS | 78210.16 | 611.02 | 1.633 | 24.81 | |||
VMware Paravirtual | 153723.45 | 1200.96 | 0.832 | 31.27 | |||
NVMe Controller | 203612.54 | 1590.72 | 0.628 | 48.03 |
E-Mail Server
Email Server (4K Random; 60% Read; 8 Threads; 16 Outstanding IO) | |||||||
IOPS | MByte/s | Latency (ms) | CPU Usage (%) | ||||
---|---|---|---|---|---|---|---|
LSI Logical SAS | 83403.47 | 325.79 | 1.506 | 23.52 | |||
VMware Paravirtual | 157624.97 | 615.72 | 0.811 | 31.46 | |||
NVMe Controller | 236622.59 | 924.31 | 0.540 | 52.11 |
File Server
File Server (64K Sequential; 90% Read; 8 Threads; 16 Outstanding IO) | |||||||
IOPS | MByte/s | Latency (ms) | CPU Usage (%) | ||||
---|---|---|---|---|---|---|---|
LSI Logical SAS | 44739.43 | 2796.21 | 2.860 | 12.29 | |||
VMware Paravirtual | 53717.26 | 3357.33 | 2.382 | 16.87 | |||
NVMe Controller | 48929.05 | 3058.07 | 2.615 | 14.14 |
Streaming Media Server
Streaming Media Server (5120K Random; 80% Read; 8 Threads; 16 Outstanding IO) | |||||||
IOPS | MByte/s | Latency (ms) | CPU Usage (%) | ||||
---|---|---|---|---|---|---|---|
LSI Logical SAS | 458.16 | 2290.81 | 279.607 | 2.18 | |||
VMware Paravirtual | 504.22 | 2521.10 | 253.949 | 12.26 | |||
NVMe Controller | 505.14 | 2525.68 | 253.659 | 1.56 |
VDI Workload
VDI Workload (4K Random; 20% Read; 8 Threads; 8 Outstanding IO) | |||||||
IOPS | MByte/s | Latency (ms) | CPU Usage (%) | ||||
---|---|---|---|---|---|---|---|
LSI Logical SAS | 140155.89 | 547.48 | 0.456 | 35.69 | |||
VMware Paravirtual | 163073.26 | 637.00 | 0.392 | 37.98 | |||
NVMe Controller | 203464.89 | 794.78 | 0.314 | 49.55 |
Autor: Sebastian Köbke