ZFS (Raid) auf EPYC 7402P mit 256GB RAM und NVMe SSDs - sehr schlechte Performance

tsoo

New Member
Jan 6, 2020
6
0
1
34
Hallo zusammen,
bei einem neuen Server kämpfe ich seit einiger Zeit mit einem Problem und komme irgendwie nicht weiter.

Der Server hat folgende Daten:
- AMD EPYC 7402P 24c/48t CPU
- 256GB ECC RAM
- 2x Samsung EVO 970 1TB m.2 NVMe SSD (on board)
- 2x Samsung PM983 2,5" U.2 NVMe SSD
- 2x 1TB 2,5" SATA HDD
- Mainboard H12SSW-NT

Was ich mir für eine Konfiguration vorstelle (bin für bessere alternativen offen):
- Proxmox 6.1
- ZFS Raid 1 auf den Samsung EVOs für VM Storage und das OS selbst
- ZFS Raid 1 auf den Samsung PM983s für VM storage
- ZFS Raid 1 auf den HDDs für VMs ohne hohe IOs sowie als log storage damit die SSDs etwas weniger Schreibzyklen abbekommen

Was ich bisher gemacht habe:
- Proxmox wie oben beschrieben in mit Standardeinstellungen installiert (8k block size, ashift12, lz4 compression)
- Eine Test Windows Server 2019 VM (150GB SCSI, VirtIO NIC, 6 Cores, 4GB RAM) installiert
- Eine größere Testdatei auf diese VM (~6GB Datei) kopiert.
- Diese Testdatei innerhalb der VM kopiert.

Das Problem:
- Während die VM die Datei kopiert geht die CPU des Servers auf 100% auf allen 24 cores / 48 threads.
- Der RAM verbrauch auf dem Server steigt auf 130+GB mit nur dieser einen VM (vermutlich ZFS cache?).
- Geschwindigkeiten für diesen Kopiervorgang betragen ~300-600MB/s . Ich weiß, dass die EVOs keine enterprise SSDs sind. Dennoch sollten sie weitaus höhere Datenraten erreichen. Zumindest tun sie das, solange auf dem Server nur ein nacktes Windows läuft. Außerdem ist es kein “gleichmäßiger” Kopiervorgang: mal 600MB/s, dann 0, dann mal 350MB/s bis der Vorgang abgeschlossen ist.
- atop sagt ebenfalls 100% busy time auf den betroffenen SSDs.
- Während des Kopiervorgangs in der VM gibt es unzählige "zvol" Prozesse die das ganze Hostsystem mehr oder weniger lahmlegen.

Was ich bisher versucht hab:
- Die max. zvol Threads auf 8 zu limitieren. Werte wurden dadurch eher schlechter.
- Mit dem maximal erlaubten RAM für ZFS caching herumprobiert was aber auch nicht wirklich geholfen hat.
- Die block size des volumes auf 128k erhöht. Dies hat insoweit geholfen, dass die CPU im selben Szenario "nur" noch bei ca. 50% war und die Transferraten auf etwa 1GB/s gestiegen sind. Der Arbeitsspeicherverbrauch zwar wieder 100+GB, aber wenn die bei Bedarf wieder freigegeben werden und solange halt fürs caching benutzt werden ist das für mich OK. Jedoch ist die Auslastung meiner Meinung nach immer noch viel zu hoch, und die Transferraten zu gering. Habe aber dadurch meine Vermutung bestärkt bekommen, dass es sich um ein Konfigurationsproblem handelt.
- LVM anstelle von ZFS habe ich testweise auch ausprobiert. Dies funktioniert wie erwartet. Schnell, fast keine CPU Last, normaler RAM verbrauch.

Nichtsdestotrotz möchte ich gerne ein offiziell supportetes ZFS Raid 1 anstelle von einem LVM/mdraid.

Ich wäre euch sehr Dankbar wenn mir jemand ein paar Ideen hätte woran es liegen könnte und im mir im Idealfall helfen kann das Problem zu beheben damit der Server so performt wie er es eigentlich sollte.

Danke euch!

Grüße,
tsoo
 
Hast du mal probiert für den Pool "sync=disabled" zu setzen (bei der VM reicht Writeback)?
Die EVOs, also sogar die Billig-Variante der Consumer-SSDs, sind wirklich die schlechtesten SSDs für solch einen Zweck.
Tritt das mit den besseren PM983 auch auf?
 
Ich hab's auch mit sync=disabled und diversen cachingeinstellungen bei der VM selbst probiert. Ob ich das ganze auf den EVOs mache oder auf den PM983 spielt keine Rolle (hab's grad nochmal nachgetestet). Die Performanceprobleme bestehen mit beiden Raid1. Das einzige was bis jetzt geringfügig zu helfen scheint ist wie bereits erwähnt die block size auf 128k zu erhöhen. Warum auch immer..
load.PNG
 
Last edited:
Ok, das wundert mich dann doch sehr. So spontan hätte ich da auch keine weitere Idee.
Mal dmesg und journal beobachtet? Für ZFS gibts übrigens ein Stat-Tool, dass die Performancecounter live anzeigt, vielleicht hilft das.

Voller RAM heißt i.d.R. Pagecache, steht in top ein hoher Wert bei Dirty?
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!