Jump to content

NVMe Übertragungsraten zu langsam


Tiras

Recommended Posts

1 hour ago, mgutt said:

Bei SMB eigentlich nicht, aber ich weiß nicht ob Server-Side Copy bei UD bzw NTFS funktioniert.

 

Die Aussagekraft dieser Vorgehensweise tendiert m.M.n. gegen Null.

 

Beide Platten sind gemountet auf einem Windows Laptop. Wenn das nicht die gleichen Platten sind, dann kopiert Windows über das Netzwerk.

 

Wenn man das ernsthaft wissen will: SSH auf Server, mc aufrufen, rechts den Zielordner unterhalb /mnt/disks/..., links den Quellordner unterhalb /mnt/disks/..., Datei auswählen, F5.

 

Alles andere ist pure Spekulation mit zufälligen Ergebnissen.

 

Ich arbeite unter Windows ausschließlich direkt auf dem Server. Glaub mir, Windows kopiert über das Netzwerk und nutzt "NET COPY" nur in genau definierten Umgebungen.

 

Beispiel: Ein Mount /Privat/Ordner1 und ein Mount /Privat/Ordner2. Beide liegen auf der selben Platte /mnt/disk1/ in zwei Shares Ordner1 und Ordner2. Das kopiert mein Windows10 völlig blöd über das Netzwerk.

 

Ich muss schon explizit \\server\disk1\Ordnerx als Ziel und Quelle angeben damit Windows das merkt.

 

Link to comment

Ich habe jetzt mal beide 1 TB NVMe´s als xfs formatiert und folgendes getestet:

- Kein Array gestartet und alle Disks als unassigned devices!!!!

1. 32 GB Transfer von der TR-004 (RAID 5 in der Extention selbst) via USB auf eine 1 TB NVMe mit einer Übertragungsrate von ~ 200 MB/s (besser als vorher) siehe Bild 1.

2. 32 GB Transfer von NVMe 1 nach NVMe 2 mit einer Übertragungsrate von ~ 1 GB/s (auch besser als vorher) siehe Bild 2.

3. Array gestartet und die 128 GB NVMe als Disk hinzugefügt (siehe Bild 3).

4. Array wieder wie zuvor aufgebaut (Parity = 6 TB, Disk 1 = 2TB, Disk 2 und 3 = 4 TB) mit einer Übertragungsrate von 1,12 GB/s (siehe Bild 4).

5. Pool1 = TestEins(1 TB), Pool2 = TestZwei(1 TB) und Pool3 = TestDrei(500 GB) erstellt:

5.1 Der Transfer von TestEins nach TestZwei mit einer Übertragungsrate von (siehe Bild 5).

 

Handelt es sich bei Bild 6 um ein Anzeigefehler oder wie kann bei einer Datenübertragen der Read vom Source kleiner sein als der Write auf die Zielplatte?

 

Fazit: 

Nachdem ich die Pools 1 und 2 wieder entfernt und eine Datenübertragung zwischen den beiden 1 TB NVMe´s gemacht habe, hatte ich eine Übertragungsrate von + 1 GB/s.

Somit kommt für mich ein BTRFS Pool nicht in Frage. Die 2 x 1 TB NVMe´s lasse ich als unassinged Devices und mounte sie einfach. So kann ich die VM-Images über bspw. /mnt/disks/nvme2n1 auf die NVMe speichern. Es gibt sicherlich ein Script mit dem sich ein Backup der VMs erstellen lässt, welches ich auf der QNAP Extention speicher.

 

Unraid wäre interessanter, wenn es ein Hardware RAID unterstützen würde. Sprich ich erstelle im BIOS ein entsprechendes RAID und Unraid erkennt bspw. bei einem RAID 0 nur die gesamte Platte. Vielleicht hat von euch ja noch jemand eine Idee wie ich die volle Leistung der NVMe´s in einem Pool nutzen kann.

 

Vielen Dank für eure Hilfe und Bemühungen. Vor allem Dir @mgutt

Unbenannt10.PNG

Unbenannt11.PNG

Unbenannt12.PNG

Unbenannt13.PNG

Unbenannt14.PNG

Unbenannt15.PNG

Link to comment
47 minutes ago, hawihoney said:

 

Die Aussagekraft dieser Vorgehensweise tendiert m.M.n. gegen Null.

 

Beide Platten sind gemountet auf einem Windows Laptop. Wenn das nicht die gleichen Platten sind, dann kopiert Windows über das Netzwerk.

 

Wenn man das ernsthaft wissen will: SSH auf Server, mc aufrufen, rechts den Zielordner unterhalb /mnt/disks/..., links den Quellordner unterhalb /mnt/disks/..., Datei auswählen, F5.

 

Alles andere ist pure Spekulation mit zufälligen Ergebnissen.

 

Ich arbeite unter Windows ausschließlich direkt auf dem Server. Glaub mir, Windows kopiert über das Netzwerk und nutzt "NET COPY" nur in genau definierten Umgebungen.

 

Beispiel: Ein Mount /Privat/Ordner1 und ein Mount /Privat/Ordner2. Beide liegen auf der selben Platte /mnt/disk1/ in zwei Shares Ordner1 und Ordner2. Das kopiert mein Windows10 völlig blöd über das Netzwerk.

 

Ich muss schon explizit \\server\disk1\Ordnerx als Ziel und Quelle angeben damit Windows das merkt.

 

Hast du das gemeint?

 

Unbenannt16.PNG

Edited by Tiras
Link to comment
2 hours ago, Tiras said:

Kannst du mir vielleicht kurz sagen, woran du erkennst - abgesehen von den Prozessen, dass nur 1 Kern 80% ausgelastet ist?

Weil htop im Gegensatz zu top standardmäßig die einzelnen Threads und nicht nur die Summe eines Prozesses anzeigt:

https://superuser.com/a/119121/129262

 

Wenn also zwei NTFS Platten im Spiel sind und es gibt nur zwei NTFS Prozesse, kann ich daraus schließen, dass der NTFS Prozess nicht Multi-Threaded ist.

 

Dass du das nicht im Graphen der einzelnen Kerne sehen kannst, liegt daran, dass die CPU den Prozess/Thread ständig von einem anderen Kern verarbeiten lässt und htop zeigt nur den Durchschnitt an wie lange der Kern im Zeitraum X damit beschäftigt war.

 

Man kann in htop zb auch eine Spalte anzeigen lassen wo der aktuell genutzte Kern des Prozess/Thread angezeigt wird. Bei jedem Refresh steht dann da eine andere Zahl.

 

 

 

Link to comment
18 minutes ago, Tiras said:

Vielleicht hat von euch ja noch jemand eine Idee wie ich die volle Leistung der NVMe´s in einem Pool nutzen kann.

 

Die NVMe M.2 entwickeln IMHO in einem anderen Zusammenhang ihr volles Potenzial: Die zufälligen, kleinen Zugriffe. Z.B. Plex mit seinen millionen Ordnern und Dateien. Außer beim Einsatz als Cache, wer kopiert schon permanent 32 GB hin und her? Da ist m.M.n. viel esoterisches BlaBla in der Werbung und der Presse.

 

Link to comment
31 minutes ago, Tiras said:

Unraid wäre interessanter, wenn es ein Hardware RAID unterstützen würde.

Die CPU beschleunigt das Software RAID bereits. Intel VROC ist zb schneller als ein Hardware RAID. Es gibt auch massig Hardware Controller, die nicht mit Software mithalten können. So pauschal kann man das also gar nicht sagen. Wie stark AMD hier ist, weiß ich ehrlich gesagt gar nicht. Mich würde wundern, wenn die hier mit einem Xeon mithalten können. Wozu sollten die da auch einen Schwerpunkt drauf legen. Nutzt ja keiner AMD im Server (außer EPYC, was aber nichts mit Consumer CPUs zu tun hat).

 

31 minutes ago, Tiras said:

Handelt es sich bei Bild 6 um ein Anzeigefehler oder wie kann bei einer Datenübertragen der Read vom Source kleiner sein als der Write auf die Zielplatte?

UD berechnet die Übertragungsrate meiner Erfahrung nach anders und eher falsch. 

 

31 minutes ago, Tiras said:

5. Pool1 = TestEins(1 TB), Pool2 = TestZwei(1 TB) und Pool3 = TestDrei(500 GB) erstellt:

5.1 Der Transfer von TestEins nach TestZwei mit einer Übertragungsrate von (siehe Bild 5).

Schade, dass du hier die CPU Last nicht überwacht hast. Denn hier spielen viele Faktoren mit. Zwei Software RAIDs, möglicherweise SMB Flaschenhals, usw

 

Durch Aktivierung von SMB Multichannel könnte man vielleicht diesen Knoten lösen.

Link to comment
10 hours ago, mgutt said:

Schade, dass du hier die CPU Last nicht überwacht hast. Denn hier spielen viele Faktoren mit. Zwei Software RAIDs, möglicherweise SMB Flaschenhals, usw.

Aus reiner Interesse habe ich noch einmal ein paar Tests gemacht.

 

1. Transfer (PoolEins = 500 GB nach PoolZwei = 1 TB) via Netzlaufwerk über den Laptop.1354360846_transferviawindowsnetdrive.thumb.PNG.c4d2e609f56cf8345409b9d779d3124e.PNG

 

2. Transfer via mc (PoolZwei = 1 TB nach PoolDrei = 1 TB)

1098633630_transferviamcohneraid.thumb.PNG.b711ec5b6803ffada73eb7e039003dba.PNG

 

3. Transfer (PoolEins = 500 GB nach PoolVier = BTRFS 2 x 1 TB) via Windows Netzlaufwerk .

59839226_transferviawindowsnetdrivebtrfsraid1_1.thumb.PNG.8c5c9f514b9dd89ed8937b3dd946d5f4.PNG

 

4. Transfer (PoolEins = 500 GB nach PoolVier = BTRFS 2 x 1 TB) via mc

1040591708_transferviamcmitbtrfsraid1_2.thumb.PNG.24e06b8eac944404cb2b23e7675b1593.PNG

 

Ich kann mir nicht erklären wieso die Übertragungsrate auf einmal ok ist. Der einzige Unterschied zu gestern ist, dass ich kein Share erstellt habe, sondern einfach nur:

[PoolEins]
path=/mnt/pooleins
browseable=yes
quest ok=yes
writeable=yes
read only=no
create mask= 0775
directory mask = 0775

 

[PoolVier]
path=/mnt/poolvier
browseable=yes
quest ok=yes
writeable=yes
read only=no
create mask= 0775
directory mask = 0775

 

in den Settings => SMB => Samba extra config eingetragen habe.

 

@mgutt Könntest du mir bitte kurz erklären, wie du das gemeint hast, dass man das RAID Level selbst und vor allem wo/wie, definieren kann?

 

Viele Grüße

Link to comment
22 minutes ago, Tiras said:

Ich kann mir nicht erklären wieso die Übertragungsrate auf einmal ok ist. Der einzige Unterschied zu gestern ist, dass ich kein Share erstellt habe, sondern einfach nur:

 

Du arbeitest jetzt direkt auf dem Unraid Server (/mnt) und nicht auf Windows und somit via SMB über das Netzwerk (/media). Das hat zunächst nix mit oder ohne Shares zu tun - deren Einschränkungen lauern an anderer Stelle.

 

Innerhalb der SSH Session ist Dein Windows Laptop überhaupt nicht im Spiel (außer für die Anzeige des Fensters).

 

Außerhalb der SSH Session läuft ein sehr großer Teil über Windows und Dein Netzwerk.

 

Deshalb meine ursprüngliche Frage, was sich hinter /media verbirgt.

 

Erste Regel bei jeder Analyse: Erkenne und eliminiere störende Faktoren.

 

Link to comment
3 minutes ago, hawihoney said:

Außerhalb der SSH Session läuft ein sehr großer Teil über Windows und Dein Netzwerk.

Dann kann ich aber nicht nachvollziehen, dass im Task Manager und im Ressourcen Manager keine Netzwerkaktivitäten mit dieser Übertragungsrate zu sehen sind.

 

Durch \\"servername oder ip" bin ich via Windows direkt auf dem Server, oder nicht?

Link to comment
28 minutes ago, Tiras said:

Durch \\"servername oder ip" bin ich via Windows direkt auf dem Server, oder nicht?

 

Du verstehst es einfach nicht.

 

Du hast bei \\server einen UNC Netzwerkpfad. Die ganze Arbeit verrichtet aber Dein Windows/Netzwerk/SMB.

 

In einer SSH Session arbeitest Du direkt auf dem Server. Der macht die Arbeit. Ohne Netzwerk, von Platte zu Platte via PCIe oder SATA (je nach Anschluss).

 

In einer Performance Messung einer NVMe auf dem Server hat der ganze Windows Kram nichts zu suchen.

 

Hängt Dein Laptop am LAN oder WLAN?

 

Edited by hawihoney
Link to comment
1 minute ago, Tiras said:

Nur F6 ist möglich, denn bei F5 passiert leider gar nichts.

 

Ach, komm. F5 ist Copy, F6 ist Move/Rename. Das funktioniert garantiert. Ich nutze den Midnight Commander seit Jahrzehnten unter Linux. Keine Ahnung was Du da machst.

 

4 minutes ago, Tiras said:

Im LAN. Dann sollte man besser über SSH arbeiten!?

 

Das eine hat nichts mit dem anderen zu tun. Ich wollte durch meine Frage nur herausfinden ob es noch weitere Störfaktoren gibt. Dein Laptop ist also mittels Ethernet Kabel im Netzwerk?

 

Link to comment
3 hours ago, Tiras said:

Der einzige Unterschied zu gestern ist, dass ich kein Share erstellt habe

Die CPU Last wird dir das zeigen. Ich vermute SHFS als Flaschenhals:

https://forums.unraid.net/topic/92282-solved-workaround-how-to-write-to-nvme-pcie-cache-at-full-1-gbs-with-10-gbe-nic/

 

 

Das ist eine Eigenheit bei Unraid Shares, die sich tatsächlich nur durch den direkten Disk Zugriff lösen lassen. Außerdem kann man die Performance mit SMB Multichannel noch weiter steigern:

https://forums.unraid.net/topic/92282-solved-workaround-how-to-write-to-nvme-pcie-cache-at-full-1-gbs-with-10-gbe-nic/

Link to comment
7 hours ago, Tiras said:

via mc

Was ist "mc"?

image.png.eaed9ab822b939260ad4828be531ed88.png

 

Ansonsten siehst du ja selbst. SMB ist der Flaschenhals:

image.png.ffc9c1894205c8a62b2c61a286fce2b6.png

 

Diesen Flaschenhals bekommst du abgeschwächt, in dem du SMB Multichannel + RSS aktivierst. Bei RSS wird pro CPU ein zusätzlicher Übertragungskanal geöffnet. Es werden also bei 4 Kernen entsprechend 4 Transfers parallel gemacht und diese Last auf 4 Kerne verteilt, was den Flaschenhals entsprechend reduziert.

 

 

Link to comment
7 hours ago, Tiras said:

@mgutt Könntest du mir bitte kurz erklären, wie du das gemeint hast, dass man das RAID Level selbst und vor allem wo/wie, definieren kann?

 

Ich meine du wählst deine ganzen NVMe SSDs für den Pool aus und klickst dann auf den Namen vom Pool. Dann kommt doch meine ich das Balance Tool von BTRFS oder nicht?

 

EDIT: Ja genau:

https://forums.unraid.net/topic/46802-faq-for-unraid-v6/?tab=comments#comment-480421

 

Denk dran. Bei RAID5/6 muss man eine USV haben und nach jedem Stromausfall/Crash sofort einen Scrub ausführen, sonst kann es zu Datenverlust kommen.

 

Link to comment
  • 3 months later...

Hallo Zusammen,

 

ich habe bzgl. der Übertragungsrate der NVMe´s eine neue Frage/ ein neues Problem.

Ich hatte vor 2 Tagen ein Pool aus 5 HDD Platten (2 x 4 TB + 1 5 TB mit CMR und 2 x 5 TB mit SMR) im RAID 6 konfiguriert. Die Übertragungsrate auf diesen Pool war mit den SMR Platten besser, als ich gedacht hatte. Ich muss habe es jedoch wieder umgebaut (sämtliche HDDs ins Array), weil die Übertragungsrate der NVMe´s unter 800 MB/s lag, nachdem ich sie ins Array hinzugefügt habe (1 TB 970 Evo Plus als Parity, 1 TB 970 Evo Plus und 2 x 128 GB Gigabyte als Daten Disks). Das war mir ehrlich gesagt bei dieser Hardware zu langsam und habe es wie gesagt wieder umgebaut. 

Ich fand die Übertragungsrate des RAID 6 Pools jedoch echt gut, weil sie wie gesagt trotz der SMR Platten konstant bei 97 MB/s lag. Da SMR Platten hauptsächlich für Datenspeicherung und nicht für Aktionen verwendet werden, habe ich meine Daten (Medien, Bilder, etc) dort gespeichert. Nun bin ich seit 2 Tagen dabei die Daten zu übertragen, weil die Schreibgeschwindigkeit immer wieder auf 19 MB/s runtergeht und es liegen noch 2 TB vor mir und 3 TB wurden erst übertragen. Das ist echt zu wenig und die Platten austauschen ist aktuell nicht drin.

 

Deswegen bin ich am überlegen, wieder den RAID 6 Pool zu konfigurieren, aber mit der Voraussetzung, dass die NVMe´s ihre volle Leistung im Array erreichen. Die NVMe´s dienen im Array für VMs, appdata, etc. 

Shares sollen auf dem RAID 6 Pool als "Only" landen. 

 

Nun meine Frage:

Hat jemand eine Idee, wie ich das Array mit den HDDs und höherer Schreibgeschwindigkeit oder die NVMe´s im Array mit voller Leistung nutzen kann?

In den Einstellungen für die Disks habe ich schon "md_write_method" auf "reconstruct write" gestellt, aber leider ohne Erfolg.

 

Danke schon einmal für eure Hilfe.

Link to comment
2 hours ago, mgutt said:

Die CMR ist als Parity konfiguriert?

Damit die Datenübertragung schneller geht, habe ich die Parity nicht in das Array eingebunden.

2 hours ago, mgutt said:

Hast paralleles Lesen und Schreiben auf einer Disk im Array?

Ich weis leider nicht was du damit meinst....

Link to comment
3 hours ago, Tiras said:

Ich weis leider nicht was du damit meinst....

Oben rechts die Transferraten aktivieren und schauen ob gleichzeitig von einer Platte gelesen und geschrieben wird.

896491028_2021-08-0716_30_25.png.e2ce6a85b7cd94303df468ebb524f4f0.png

 

Da du aber keine Parität aktiv ist, ist das eher unwahrscheinlich, außer du kopierst mit Checksummen-Prüfung auf dem Ziel.

 

8 hours ago, Tiras said:

Nun bin ich seit 2 Tagen dabei die Daten zu übertragen, weil die Schreibgeschwindigkeit immer wieder auf 19 MB/s runtergeht

Wie kopierst du die Daten? Also was ist die Quelle (USB Platte im Server, USB Platte im Client) und was das Ziel (User Share, Disk Share, Cache) und worüber kopierst du (USB, SMB, FTP). Verschlüsselte Platten?

 

8 hours ago, Tiras said:

In den Einstellungen für die Disks habe ich schon "md_write_method" auf "reconstruct write" gestellt

Nur relevant, wenn eine Parität verbaut ist.

 

8 hours ago, Tiras said:

SMR Platten

Kannst du den Transfer pausieren? Wenn ja, dann mach das mal für 1 Stunde und setze dann fort. Ist es wieder schnell? Dann liegt es an SMR.

 

8 hours ago, Tiras said:

die NVMe´s im Array mit voller Leistung nutzen kann?

Nicht möglich. Die werden später spätestens von der Parität limitiert auf HDD Niveau gedrosselt. Entweder nur SSDs oder nur HDDs. Alles andere ist Unsinn. Bedenke, dass man mit SSDs auch einen separaten Pool anlegen könnte (quasi Cache Only).

 

8 hours ago, Tiras said:

Hat jemand eine Idee, wie ich das Array mit den HDDs und höherer Schreibgeschwindigkeit ... nutzen kann?

Du könntest die Verteilregel des Shares auf most-free ändern, so dass er die Dateien parallel auf alle HDDs verteilt, allerdings wird das später mit einer Parity auch wieder durch die begrenzt.

 

Die Frage ist aber überhaupt, ob das relevant ist, dass es aktuell langsam ist. Später mit einem Cache merkst du das ja eh nicht. Die Frage ist viel mehr ob du ein energieeffizientes Array haben willst oder einen stromfressendes RAID. Und wenn dir die SMR Platten zu lahm sind, ist die eigentliche Lösung CMR Platten zu kaufen. Ist nun mal leider so.

Link to comment

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...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...