SMB Performance

  • Hallo zusammen,

    ich habe seit zwei Tagen mein DXP8800 Plus, nachdem ich keine Lust darauf hatte, von Synology gezwungen zu werden ihre maßlos überteuerten Platten zu kaufen. Ich hatte nämlich noch einige rumfliegen.

    Soweit bin ich ganz zufrieden mit dem NAS, allerdings ist die SMB-Performance etwas fragwürdig. Jedenfalls wenn es ums Lesen geht.

    Erst einmal zur verbauten Technik:

    10 G Switch-Ports, CAT7, 5G Thunderbolt-LAN-Adapter an MacOS (M4 Pro) (wird noch ersetzt durch einen 10G-Adapter). 8x4 TB Western Digital WD Red 4TB HDD (WD40EFRX) im Raid 5. Nicht die schnellsten oder die neuesten Platten, aber sollten dennoch mehr bringen im Raid. Filesystem ist Btrfs. Ext4 wäre schneller, ich weiß. Ansonsten ist das NAS Standard. Keine NVME oder RAM-Erweiterung.

    iPerf bringt (Client -> NAS) folgende reine Netzwerkleistung zutage (klar, ohne SMB):

    iperf -c 192.168.0.166 -p 4711 -P 4 -t 30

    ------------------------------------------------------------

    Client connecting to 192.168.0.166, TCP port 4711

    TCP window size: 128 KByte (default)

    ------------------------------------------------------------

    [ 2] local 192.168.0.105 port 52457 connected with 192.168.0.166 port 4711
    [ 1] local 192.168.0.105 port 52456 connected with 192.168.0.166 port 4711
    [ 3] local 192.168.0.105 port 52454 connected with 192.168.0.166 port 4711
    [ 4] local 192.168.0.105 port 52458 connected with 192.168.0.166 port 4711

    [ ID] Interval Transfer Bandwidth

    [ 3] 0.00-30.02 sec 3.85 GBytes 1.10 Gbits/sec
    [ 1] 0.00-30.02 sec 3.85 GBytes 1.10 Gbits/sec
    [ 2] 0.00-30.02 sec 3.85 GBytes 1.10 Gbits/sec
    [ 4] 0.00-30.02 sec 3.85 GBytes 1.10 Gbits/sec
    [SUM] 0.00-30.02 sec 15.4 GBytes 4.40 Gbits/sec

    In der umgekehrten Richtung (NAS->Client)

    iperf -c 192.168.0.166 -p 4711 -P 4 -t 30 -r

    ------------------------------------------------------------

    Client connecting to 192.168.0.166, TCP port 4711
    TCP window size: 128 KByte (default)

    ------------------------------------------------------------

    Server listening on TCP port 4711
    TCP window size: 128 KByte (default)
    ------------------------------------------------------------

    [ 1] local 192.168.0.105 port 52479 connected with 192.168.0.166 port 4711
    [ 2] local 192.168.0.105 port 52480 connected with 192.168.0.166 port 4711
    [ 4] local 192.168.0.105 port 52482 connected with 192.168.0.166 port 4711
    [ 3] local 192.168.0.105 port 52481 connected with 192.168.0.166 port 4711

    [ ID] Interval Transfer Bandwidth

    [ 3] 0.00-30.01 sec 3.86 GBytes 1.10 Gbits/sec
    [ 2] 0.00-30.01 sec 3.86 GBytes 1.10 Gbits/sec
    [ 4] 0.00-30.01 sec 3.86 GBytes 1.10 Gbits/sec
    [ 1] 0.00-30.01 sec 3.86 GBytes 1.10 Gbits/sec
    [SUM] 0.00-30.01 sec 15.4 GBytes 4.42 Gbits/sec

    [ 5] local 192.168.0.105 port 4711 connected with 192.168.0.166 port 37388
    [ 6] local 192.168.0.105 port 4711 connected with 192.168.0.166 port 37404
    [ 7] local 192.168.0.105 port 4711 connected with 192.168.0.166 port 37416
    [ 8] local 192.168.0.105 port 4711 connected with 192.168.0.166 port 37432

    [ ID] Interval Transfer Bandwidth

    [ 7] 0.00-30.00 sec 1.20 GBytes 345 Mbits/sec
    [ 5] 0.00-30.05 sec 13.1 GBytes 3.73 Gbits/sec
    [ 6] 0.00-30.82 sec 2.15 GBytes 598 Mbits/sec
    [ 8] 0.00-35.03 sec 19.8 MBytes 4.73 Mbits/sec

    Soweit so gut. Das Netzwerk passt. SMB SIGNING beim Mac aus, in der NAS-Config auf "Optional".

    Und jetzt mal mit Disk Speed Test. Schreiben ist gut, Lesen ist mau.

    The content cannot be displayed because you do not have authorisation to view this content.


    Nun wollte ich die /etc/samba/smbglb.conf tweaken und folgende Parameter ergänzen bzw. modifizieren um der Leseperformance auf die Sprünge zu helfen:

    aio read size = 1048576
    aio write size = 1048576
    use sendfile = yes

    Und das kann man vergessen. Auch eine Custom-Datei anlegen, diese referenzieren und reinladen, geht auch nicht. Nach jedem Neustart des SAMBA-Dienstes überschreibt das OS die Configs.

    Es bleibt bei aio read size = 16 KB . Ergo: kleine synchrone Reads. SMB läuft vermutlich single-stream im Downstream.

    Ich weiß, MacOS ist auch nicht so der Knaller in Sachen SMB. Aber da muss mehr gehen.

    Langer Rede kurzer Sinn: Meine Anregung wäre, dass UGREEN in einer zukünftigen Version entweder Custom-Configs zulässt oder aber mehr Optionen schafft.

    Und bei Euch so?

  • Also deine Werte entsprechen in keinem Fall einer 10GBit-Verbindung zwischen den Geräten.
    Hier mal die iperf3-Werte zwischen meiner DS1522+ und meiner DXP4800plus, die beide direkt an einem 10GBit-Switch hängen:


    .81 ist die DXP4800plus, auf der ja standardmäßig permanent ein iperf3-Server läuft.
    Mit SMB hat das alles noch nichts zu tun, iperf testet ja nur den reinen Netzwerk-Durchsatz.
    Bist du sicher, dass da nicht noch was mit "nur" 1GBit verbunden ist?
    Man muss da als aufpassen, wenn ein Gerät mit 1GBit und 10GBit im gleichen LAN hängt, da sollte das Routing stimmen und das 10GBit-Interface bevorzugt werden (s. "ip route show")

    DS1522+ | DSM 7.3.2-86009U1 (Final) | 40 GB RAM | 3 x WD 14TB WD140EFGX Red Plus SHR, 2 x M.2-Samsung 980 Pro SSD 1TB SHR
    DS415+ | DSM 7.1.1-42962-9 (Final) | 8 GB RAM | 3 x WD 6TB WD60EFRX Red Raid5, 1 x SSD Intel 128GB Basic
    Ugreen NAS DPX4800Plus, UGOS 1.13.1.0105, 2x Samsung 990 EVO Plus NVMe M.2 SSD 2 TB Raid1, 3*Toshiba MG10ACA20TE HDD 20TB Raid5, 64GB RAM -> 2 x Crucial DDR5 RAM 32GB 4800MHz SODIMM

  • Danke für Deine Antwort. Nein, natürlich entspricht das keiner 10 Gbit-Verbindung. Ist ja auch ein 5G-Thunderbolt-LAN-Adapter im Spiel - (noch). Und da stimmten die Werte. Die 10 Gbit-Verbindung ist im Moment nur theoretisch vorhanden, da die Strecke zwischen NAS und LAN-Adapter zumindest physikalisch eine ist :) Und, ja, ich weiß, dass iperf keine SMB-Verbindung testet, sondern den reinen Netzwerkdurchsatz. Aber der Disk-Speed-Test tut es. Den iperf-Test habe ich nur "beigelegt", um deutlich zu machen, dass die Physik stimmt. SMB ist m.E der Flaschenhals.

  • Sorry, mit Apple kenne ich mich nicht aus, aber Apple & SMB war schon immer so eine Sache :/
    Ich würde da eher auf Seiten des MAC weitersuchen.

    DS1522+ | DSM 7.3.2-86009U1 (Final) | 40 GB RAM | 3 x WD 14TB WD140EFGX Red Plus SHR, 2 x M.2-Samsung 980 Pro SSD 1TB SHR
    DS415+ | DSM 7.1.1-42962-9 (Final) | 8 GB RAM | 3 x WD 6TB WD60EFRX Red Raid5, 1 x SSD Intel 128GB Basic
    Ugreen NAS DPX4800Plus, UGOS 1.13.1.0105, 2x Samsung 990 EVO Plus NVMe M.2 SSD 2 TB Raid1, 3*Toshiba MG10ACA20TE HDD 20TB Raid5, 64GB RAM -> 2 x Crucial DDR5 RAM 32GB 4800MHz SODIMM

  • Kein Problem. Danke Dir dennoch.

    Aber ich denke, es ist eher auf Seiten des NAS zu suchen. Die SMB-Einstellungen sind nicht optimal und lassen sich leider auch nicht optimieren, weil das UGOS immer seine Parameter über die Configs juckelt. Und das wäre eben meine Anregung. Mehr Optionen zur SMB-Verwaltung oder eben die Option bieten, Custom-Configs referenzieren und laden zu können.

  • Ich bin auch kein Apple User, aber pflichte Benares bei. Auch ich habe die Beobachtung allein durchs lesen, auch an anderer Stelle gemacht, daß meistens Verbindungsprobleme eher beim MAC zu suchen sind. Egal welches Protokoll genutzt wird. Ich würde auch mal eher da ansetzen.

    Meine Hardware

    DXP4800+ 2x8TB WDRedPl Btrfs Raid1 2x 2TB NVME Lexar NM790 Raid1, 64GB RAM Kingst. KVR48S40BD8-32 DDR5/4800MH

    DXP2800 1x 12TB Seag. 1x 12TB WDRedPl, Raid1 Btrfs 16GB RAM Crucial CT16G56C46S5.C8B2, 2x NVME Samsg,

    DS1525+ 2x8TB WD, Btrfs SHR, 2x 2TB NVME Lexar NM790 Raid1. 40GB ECC RAM_Speicher.de

    DS920+ DSM 7.3.2 Btrfs Raid1 2x8TB WD, 2x2TB NVME Samsg. 970 EVOPlus, RAM 20GB DDR4-2666MHZ Speicher.de

    USV UGREEN US3000, EatonEllip.PRO 850DIN, Switch Zyxel GS1200-8 1GB, Zyxel XMG-108 8 x 2,5GB

  • Ich habe jetzt mal die Performance des RAIDs getestet und zwar ohne Netzwerk, d.h. auf dem NAS selbst.

    Erst mal ein 10 GB-File angelegt:
    user@UGREEN-NAS:~$ dd if=/dev/zero of="/volume1/fette_datei/testfile.bin" bs=1M count=10000
    10000+0 records in
    10000+0 records out
    10485760000 bytes (10 GB, 9.8 GiB) copied, 37.2213 s, 282 MB/s

    Und dann lesen lassen:

    user@UGREEN-NAS:~$ dd if="/volume1/fette_datei/testfile.bin" of=/dev/null bs=1M
    10000+0 records in
    10000+0 records out
    10485760000 bytes (10 GB, 9.8 GiB) copied, 23.6811 s, 443 MB/s

    Kurz: Das Raid liefert, was das Raid bei mir liefern kann.

    443 MB/s beim sequentiellen Lesen bedeutet, dass das RAID-5 sehr wohl parallel von mehreren Platten liest. Also kein Hardware-/RAID-Bottleneck. Writes mit ~280 MB/s sind auch realistisch für RAID-5 ohne SSD-Cache (wegen Paritätsberechnung).

    Damit ist bestätigt: Das Problem liegt nicht am RAID oder den Disks. Das Problem liegt zwischen Kernel → Netzwerk-Stack → SMB.

    Es muss also m.E. an der Samba-Implementierung und den limitierten Möglichkeiten liegen.

  • root@dxp-pve:~# dd if=/dev/zero of="/rpool/data/testfile.bin" bs=1M count=10000
    10000+0 records in
    10000+0 records out
    10485760000 bytes (10 GB, 9.8 GiB) copied, 1.67813 s, 6.2 GB/s
    root@dxp-pve:~# dd if="/rpool/data/testfile.bin" of=/dev/null bs=1M
    10000+0 records in
    10000+0 records out
    10485760000 bytes (10 GB, 9.8 GiB) copied, 0.710907 s, 14.7 GB/s
    root@dxp-pve:~#

    :/

    Ist das ein realistischer Test? ?( /dev/zero liefert ja nur Nullen. Da ich hier ZFS verwende, werden die vermutlich völlig zusammenGZIPt. Daher wohl die irre Performance. ^^

    Wenn ich einen Dateierzeugungstest (disk-filltest-0.8.2-win32) via 10 GbE von einer Windows-VM auf SMB-Share mache, komme ich so auf 400 bis 600 MB/s. Das scheint mir realistisch bei großen Dateien.

    CrystalDiskMarkPortable-901 in einer VM auf der DXP liefert - auf dem SMB-Share - so knapp 1 GB/s.

    MN5 | PVE 9.x | 80 GB | 2x SN700 1TB | 4x WD8005FFBX RAIDZ1 | 1x AirDisk 128GB (PVE Boot ZFS)

  • Ich denk, dass bei dd sowohl das Filesystem als auch der (RAM-)Cache mit beteiligt ist.

    Verlässlichere Werte für die reine Platten-Performance liefert wohl hdparm


    (die Device-Namen bekommt man mit "lvdisplay" oder auch "mount" heraus)

    DS1522+ | DSM 7.3.2-86009U1 (Final) | 40 GB RAM | 3 x WD 14TB WD140EFGX Red Plus SHR, 2 x M.2-Samsung 980 Pro SSD 1TB SHR
    DS415+ | DSM 7.1.1-42962-9 (Final) | 8 GB RAM | 3 x WD 6TB WD60EFRX Red Raid5, 1 x SSD Intel 128GB Basic
    Ugreen NAS DPX4800Plus, UGOS 1.13.1.0105, 2x Samsung 990 EVO Plus NVMe M.2 SSD 2 TB Raid1, 3*Toshiba MG10ACA20TE HDD 20TB Raid5, 64GB RAM -> 2 x Crucial DDR5 RAM 32GB 4800MHz SODIMM

  • hdparm liefert aber nur Leseleistung... Zudem geht's hier noch um SMB. CrystalDiskMarkPortable-901 kann auch mit UNC umgehen. Mit der größtmöglichen Datei (64 GB), um Cache-Effekte zu minimieren, bekomme ich im 10 GbE via SMB auf der dxp4800+:

    The content cannot be displayed because you do not have authorisation to view this content.

    MN5 | PVE 9.x | 80 GB | 2x SN700 1TB | 4x WD8005FFBX RAIDZ1 | 1x AirDisk 128GB (PVE Boot ZFS)

  • Ich kenne halt gerne die Einzelwerte der einzelnen Komponenten (Platten/Netzwerk/...) bevor ich über sowas wie "SMB-Performance" urteile. Wie immer bestimmt das schwächste Glied die Gesamtperformance.
    Es bringt halt nichts, gleich an irgendwelchen SMB-Parametern zu schrauben, wenn das Nadelöhr ganz woanders liegt. Ausgangslage war ja eine mutmaßlich schlechte SMB-Performance. Darum ging es mir.

    DS1522+ | DSM 7.3.2-86009U1 (Final) | 40 GB RAM | 3 x WD 14TB WD140EFGX Red Plus SHR, 2 x M.2-Samsung 980 Pro SSD 1TB SHR
    DS415+ | DSM 7.1.1-42962-9 (Final) | 8 GB RAM | 3 x WD 6TB WD60EFRX Red Raid5, 1 x SSD Intel 128GB Basic
    Ugreen NAS DPX4800Plus, UGOS 1.13.1.0105, 2x Samsung 990 EVO Plus NVMe M.2 SSD 2 TB Raid1, 3*Toshiba MG10ACA20TE HDD 20TB Raid5, 64GB RAM -> 2 x Crucial DDR5 RAM 32GB 4800MHz SODIMM

  • Damit kann man arbeiten.

    user@Mac-mini-264 ~ % iperf -c 192.168.0.166 -p 4711 -P 4 -t 20 -4

    ------------------------------------------------------------

    Client connecting to 192.168.0.166, TCP port 4711
    TCP window size: 128 KByte (default)

    ------------------------------------------------------------

    [ 3] local 192.168.0.184 port 52556 connected with 192.168.0.166 port 4711
    [ 4] local 192.168.0.184 port 52558 connected with 192.168.0.166 port 4711
    [ 2] local 192.168.0.184 port 52555 connected with 192.168.0.166 port 4711
    [ 1] local 192.168.0.184 port 52557 connected with 192.168.0.166 port 4711

    [ ID] Interval Transfer Bandwidth

    [ 3] 0.00-20.01 sec 5.48 GBytes 2.35 Gbits/sec
    [ 4] 0.00-20.01 sec 5.46 GBytes 2.34 Gbits/sec
    [ 2] 0.00-20.01 sec 5.53 GBytes 2.37 Gbits/sec
    [ 1] 0.00-20.01 sec 5.46 GBytes 2.34 Gbits/sec

    [SUM] 0.00-20.01 sec 21.9 GBytes 9.41 Gbits/sec


    user@Mac-mini-264 ~ % iperf -c 192.168.0.166 -p 4711 -P 4 -t 20 -4 -r

    ------------------------------------------------------------

    Server listening on TCP port 4711
    TCP window size: 128 KByte (default)

    ------------------------------------------------------------

    [ 2] local 192.168.0.184 port 52562 connected with 192.168.0.166 port 4711
    [ 1] local 192.168.0.184 port 52560 connected with 192.168.0.166 port 4711
    [ 3] local 192.168.0.184 port 52563 connected with 192.168.0.166 port 4711
    [ 4] local 192.168.0.184 port 52561 connected with 192.168.0.166 port 4711

    [ ID] Interval Transfer Bandwidth

    [ 4] 0.00-20.02 sec 5.48 GBytes 2.35 Gbits/sec
    [ 5] local 192.168.0.184 port 4711 connected with 192.168.0.166 port 60676
    [ 6] local 192.168.0.184 port 4711 connected with 192.168.0.166 port 60684
    [ 7] local 192.168.0.184 port 4711 connected with 192.168.0.166 port 60686
    [ 8] local 192.168.0.184 port 4711 connected with 192.168.0.166 port 60700
    [ 2] 0.00-20.02 sec 5.48 GBytes 2.35 Gbits/sec
    [ 1] 0.00-20.02 sec 5.48 GBytes 2.35 Gbits/sec
    [ 3] 0.00-20.02 sec 5.48 GBytes 2.35 Gbits/sec
    [ 8] 0.00-20.00 sec 5.48 GBytes 2.35 Gbits/sec
    [ 5] 0.00-20.01 sec 5.48 GBytes 2.35 Gbits/sec
    [ 7] 0.00-20.00 sec 5.48 GBytes 2.35 Gbits/sec
    [ 6] 0.00-20.01 sec 5.48 GBytes 2.35 Gbits/sec

    [SUM] 0.00-40.04 sec 43.9 GBytes 9.41 Gbits/sec


    Über SMB könnte es besser sein, denn mit dem 5G-Adapter habe ich auch 500 MB/s im Upload hinbekommen, dafür im Download nur 120 MB/s. Ich will mich also nicht beschweren. Und da NAS und Mac nun beide über 10 G in den Switch gehen, tut auch Multichannel-SMB wie es soll. Und genau das ist der Knackpunkt.

    The content cannot be displayed because you do not have authorisation to view this content.


    Jetzt muss ich nur noch in den Keller an die CNC und für den 10 G Adapter ein vernünftiges Gehäuse mit Kühlrippen fräsen. Die von mir behelfsweise aufgeklebten bringen das Gehäuse zwar um 10 Grad runter, aber da sollte noch mehr gehen, wenn man es richtig macht.
    Im Moment brät er mit 42 Grad vor sich hin.

  • Und hier NFS ....

    The content cannot be displayed because you do not have authorisation to view this content.

  • ... und deine Werte in #13 waren ftp?
    Dann hattest du ja doch Recht, dass es irgendwie doch an SMB liegt. Muss aber nicht unbedingt an der DXP-Seite liegen. Dazu bräuchte es aber einen Test von einem Nicht-MAC aus. Ich kann leider nicht testen, denn ich hänge momentan mit meinem Windows-PC nur per WLAN an meinen NASen, bei einer Renovierung wurde ein LAN-Kabel angebohrt.
    Hat jemand die Infrastruktur um das mal zu testen? 6equj5 hat ja schon ein paar Werte geliefert.

    DS1522+ | DSM 7.3.2-86009U1 (Final) | 40 GB RAM | 3 x WD 14TB WD140EFGX Red Plus SHR, 2 x M.2-Samsung 980 Pro SSD 1TB SHR
    DS415+ | DSM 7.1.1-42962-9 (Final) | 8 GB RAM | 3 x WD 6TB WD60EFRX Red Raid5, 1 x SSD Intel 128GB Basic
    Ugreen NAS DPX4800Plus, UGOS 1.13.1.0105, 2x Samsung 990 EVO Plus NVMe M.2 SSD 2 TB Raid1, 3*Toshiba MG10ACA20TE HDD 20TB Raid5, 64GB RAM -> 2 x Crucial DDR5 RAM 32GB 4800MHz SODIMM

  • In #13 ist SMB. Die Werte schwanken teilweise auch ordentlich. Über NFS ist es stabiler. Dumm nur, dass man über NFS nur die Shares einbinden kann. Auch ein Verbesserungsvorschlag in Richtung UGREEN, das zu ändern. Verstehe nicht, warum das so ist. Klar, NFS ist outdated, wird von Apple so weit ich weiß auch offiziell nicht mehr unterstützt ... aber ...

  • Kleine Anmerkung: Bitte für einen etwaigen NFS Verbesserungsvorschlag nen neuen Thread eröffnen.

  • NFS hat seine eigenen Freigaben (s. Dateien, Verwaltung, Ordner wählen, Bearbeiten, NFS-Berechtigungen)

    DS1522+ | DSM 7.3.2-86009U1 (Final) | 40 GB RAM | 3 x WD 14TB WD140EFGX Red Plus SHR, 2 x M.2-Samsung 980 Pro SSD 1TB SHR
    DS415+ | DSM 7.1.1-42962-9 (Final) | 8 GB RAM | 3 x WD 6TB WD60EFRX Red Raid5, 1 x SSD Intel 128GB Basic
    Ugreen NAS DPX4800Plus, UGOS 1.13.1.0105, 2x Samsung 990 EVO Plus NVMe M.2 SSD 2 TB Raid1, 3*Toshiba MG10ACA20TE HDD 20TB Raid5, 64GB RAM -> 2 x Crucial DDR5 RAM 32GB 4800MHz SODIMM

  • Das mündet in der Datei /etc/exports. Da steht dann, welches Verzeichnis für welche IP/IP-Bereich per NFS freigegeben ist, auch mit der Berechtigung, aber nur ro/rw. Das ist ganz anders als bei SMB.

    DS1522+ | DSM 7.3.2-86009U1 (Final) | 40 GB RAM | 3 x WD 14TB WD140EFGX Red Plus SHR, 2 x M.2-Samsung 980 Pro SSD 1TB SHR
    DS415+ | DSM 7.1.1-42962-9 (Final) | 8 GB RAM | 3 x WD 6TB WD60EFRX Red Raid5, 1 x SSD Intel 128GB Basic
    Ugreen NAS DPX4800Plus, UGOS 1.13.1.0105, 2x Samsung 990 EVO Plus NVMe M.2 SSD 2 TB Raid1, 3*Toshiba MG10ACA20TE HDD 20TB Raid5, 64GB RAM -> 2 x Crucial DDR5 RAM 32GB 4800MHz SODIMM

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!