unterirdische SMB Performance..... und keine Ahnung warum


unRAID-Tower

Recommended Posts

Guten Morgen,

 

das Thema gibt es sicher schon des öfteren, aber leider finde ich nichts passendes als Lösung.

Ich habe eine Lenovo Workstation mit 16GB RAM und Intel i7 6700 3,4GHz zudem hab ich eine 2,5GB NIC eingebaut die direkt mit meinem Mac verbunden ist (TS4 von Caldigit hat 2,4GBit)

Hab unRAID gerade wieder mal neu installiert und bekomme extrem schlechte SMB Performance mit Cache / ohne Cache und weiß nicht mehr weiter.
Hab mir aus der Verzweiflung heraus ein Asustor 6700 6Bay NAS gekauft und da bekomme ich out of the BOX 260MBs bei Unraid 3MBs bzw. max. hab ich 35MBs geschafft.
Turbowrite hab ich installiert / deconstructive write ist ein Jumbo Frames auf 9000

Aber irgendwie bringt das alles nichts.

Habt ihr da vielleicht noch Tips für mich? Ich meine der PC sollte doch mehr Durchsatz schaffen...

Ich würde das NAS gerne zurück schicken und wieder voll auf unRAID setzen, da mir die Möglichkeiten da mehr gefallen allerdings würde ich die 2,5GBit schon gerne ausreizen wollen.

Ich fotografiere und möchte meine Daten da ablegen bzw. auch davon "arbeiten". Da reicht 2,5GBit 

 

Ich bin ziemlich ratlos...

Link to comment

Ursachen kann es viele geben, diese 2,5Gbe Ports sind ja eigentlich nur Ausschussware (sollten mal 10Gbe werden, haben es aber nicht geschafft). Deine bösen Pausen lassen vermuten, dass da was mit der Flow Control nicht stimmt. Wie gesagt, eigentlich ist das 10Gbe, nur wird die Leitung nur mit 1*daten+3*Pause belegt um die Kabel zu schonen.

Damit das Ganze nicht aus dem Tritt kommt (bzw. jemand den anderen überrennen kann) werden Start/Stopp Pakete hinzugefügt. Wenn die verloren gehen / ignoriert werden / sonstigerweise nicht ankommen, dann pumpt die eine Seite die Leitung voll, die andere empfängt nix und da die Quittungen ausbleiben, werden die Pakete nach einem Timeout wiederholt.

Und wenn das dauernd vorkommt, dann sinkt der Nettodurchsatz unter das Level einer 1Gbe Verbindung, so zwischen 30 und 60Mb/s sind dann noch drin maximal.

ALLE Komponenten der Verbindung müssen da mitspielen, also auch irgendwelche Switche oder Docking Stationen.

Es ist manchmal schwer an verlässliche Daten bezüglich der Einstellungen zu kommen.

Üblicherweise gibt der Switch die Einstellung vor und die angeschlossenen Rechner passen sich automatisch an. Du hast aber keinen Switch, deshalb weis ich nicht, wo bei Dir der "Master" sein sollte.

Also such mal beim Mac.

Bei Unraid ist es normalerweise an, aber zur Sicherheit installier noch das Plugin "Tipps&Tweaks", da wird der Punkt an erster Stelle aufgeführt, allerdings negativ ("NIC Flow Control deaktivieren?" muss auf NEIN stehen).

Deshalb vermute ich den Mac als Fehlerquelle. (UNRAID spielt auch mit aktivierter Flow Control nicht Master, es sendet dann nur solche Pakete und reagiert darauf. Die Gegenstelle muß das auch tun, sonst fährts gegen die Wand)

 

Ich hab keine Ahnung von Macs, also diesbezügliche Rückfragen sinnlos.

 

Edited by MAM59
Link to comment

danke für deine schnelle und ausführliche Antwort...

 

Am Mac wird es wohl nicht liegen, da es über das NAS in voller Geschwindigkeit geht.

 

Bei unRAID sollte es doch, wenn ich cache auswähle auch mit der selben Geschwindigkeit gehen. Bzw. mir ist schon bewußt, dass unRAID normalerweise nur direkt auf die HDU schreibt und dann langsamer ist, aber mit Cache müsste dass doch passen (ist halt nur 2.5' SSD)

 

Ich meine wenn ich "nur" auf 200MBit kommen würde, wäre das ja voll ok - aber 2,8 - 30MBs ist schon nicht so toll

Edited by unRAID-Tower
Link to comment
51 minutes ago, unRAID-Tower said:

Am Mac wird es wohl nicht liegen, da es über das NAS in voller Geschwindigkeit geht.

DAS könnte sich als großer Denkfehler rausstellen. Wie erwähnt, wird das Feature bei einigen automatisch aktiviert, bei anderen nach Aufforderung und bei manchen gar nicht.

Es kann also gut sein, dass das NAS den Mac auffordert und er gehorcht und Unraid tut es nicht (und er "gehorcht" dann auch und nix passiert).

Ein Blick in den Mac sollte deshalb keine Zeitverschwendung sein. Zumal Mac OS ja von FreeBSD abstammt und dort gibt es KEINE Automatik.

Link to comment
4 hours ago, unRAID-Tower said:

Lenovo Workstation mit 16GB RAM und Intel i7 6700 3,4GHz

Das ist der Unraid Server? Hat der auch 2.5G oder warum hast du das mit den 2.5G erwähnt? Was ist denn zwischen Unraid Server und Mac?

 

Hast du es mal mit einer Direktverbindung versucht, um Probleme im Netzwerk auszuschließen?

 

Hier mal ein paar Kommandos, wo du schon mal die Disks selbst mit Benchmarken kannst. Sowohl direkt über /mnt/disk1 also auch über den Userpfad /mnt/user/appdata. Erklärungen als Kommentare:

# Wir erstellen eine Datei auf Disk 1, die wird aber vom RAM abgefangen
dd if=/dev/zero of=/mnt/disk1/1GB.bin bs=128k count=10000
10000+0 records in
10000+0 records out
1310720000 bytes (1.3 GB, 1.2 GiB) copied, 0.336121 s, 3.9 GB/s

# Wir wiederholen das Kommando. Nun wird die Datei direkt auf der HDD überschrieben (Parität vorhanden)
dd if=/dev/zero of=/mnt/disk1/1GB.bin bs=128k count=10000
10000+0 records in
10000+0 records out
1310720000 bytes (1.3 GB, 1.2 GiB) copied, 14.8688 s, 88.2 MB/s

# wir leeren den RAM
sync; echo 1 > /proc/sys/vm/drop_caches

# Und lesen so direkt von der HDD
dd if=/mnt/disk1/1GB.bin of=/dev/null bs=128k
10000+0 records in
10000+0 records out
1310720000 bytes (1.3 GB, 1.2 GiB) copied, 5.52072 s, 237 MB/s

# Jetzt testen wir den /mnt/user Pfad

# In meinem Fall ist noch ein Cache davor
dd if=/dev/zero of=/mnt/user/appdata/1GB.bin bs=128k count=10000
10000+0 records in
10000+0 records out
1310720000 bytes (1.3 GB, 1.2 GiB) copied, 0.937219 s, 1.4 GB/s

# wieder RAM leeren
sync; echo 1 > /proc/sys/vm/drop_caches

# Auch lesen ist schnell
dd if=/mnt/user/appdata/1GB.bin of=/dev/null bs=128k
10000+0 records in
10000+0 records out
1310720000 bytes (1.3 GB, 1.2 GiB) copied, 0.87372 s, 1.5 GB/s

 

 

EDIT:

 

Diesmal /mnt/user mit einem Share der beim Cache auf "no" steht:

# Der RAM hilft erneut
dd if=/dev/zero of=/mnt/user/html/1GB.bin bs=128k count=10000
10000+0 records in
10000+0 records out
1310720000 bytes (1.3 GB, 1.2 GiB) copied, 0.898517 s, 1.5 GB/s

# wir wiederholen... interessant, bei /mnt/user hilft der RAM scheinbar immer (im Dashboard sehe ich, dass die HDD mit 80 MB/s beschrieben wird)
dd if=/dev/zero of=/mnt/user/www/1GB.bin bs=128k count=10000
10000+0 records in
10000+0 records out
1310720000 bytes (1.3 GB, 1.2 GiB) copied, 1.13728 s, 1.2 GB/s

# dann eben mit Direct I/O Option, was aber scheinbar auch den Cache der HDD selbst deaktiviert hat?! (Im Dashboard genauso lahm)
dd if=/dev/zero of=/mnt/user/www/1GB.bin bs=128k count=10000 oflag=direct
10000+0 records in
10000+0 records out
1310720000 bytes (1.3 GB, 1.2 GiB) copied, 32.9462 s, 39.8 MB/s

# RAM leeren
sync; echo 1 > /proc/sys/vm/drop_caches

# erneut lesen
dd if=/mnt/user/www/1GB.bin of=/dev/null bs=128k
10000+0 records in
10000+0 records out
1310720000 bytes (1.3 GB, 1.2 GiB) copied, 5.59891 s, 234 MB/s

 

Link to comment

wow, danke für die umfangreiche Info....

 

ja, die ThinkStation ist der unRAID Server und da die ist mit 1x GBit Lan am Netz sowie 1x 2,5GBit direkt zum Mac verbunden.
Verbindung vom Mac natürlich über die 2,5GBit (anderer IP Kreis) und dann mit BlackMagic Disk Speedtest getestet.

Gleicher Test mit dem Asustor NAS auch direkt mit 2,5GBit. Da krieg ich 250Mbs zustande (mit Cache SSD)

Link to comment
1 hour ago, unRAID-Tower said:

die Frage ist dann halt, warum er beim Asutor NAS die volle Geschwindigkeit rüberbringt. Bei gleichen Einstellungen.... 

Nein, Du hast meine Antwort nicht aufmerksam gelesen. Dieses Feature ist optinal und seine Anwendung nicht genormt. Es KANN an sein, es KANN aus sein, ein Gerät teit es den anderen mit oder nicht und genauso reagieren sie darauf oder auch nicht.

Du musst also IMMER auf beiden Seiten gucken um sicher zu sein, dass es AN ist und auch befolgt wird.

 

Es ist also recht unerheblich, ob Dein NAS gut mit dem Mac harmoniert, das sagt gar nix aus über diese Verbindung.

 

Link to comment

Na ja, das hat ungefähr denselben Effekt.

Du zwingst damit Unraid immer nur EIN unquittiertes Paket auf der Leitung zu haben.

Somit kann es nicht zum "ungebremsten Überlauf" kommen und es muss nichts wiederholt werden.

 

Aber der Unterschied wäre wahrscheinlich eh nur im Promillebereich, also lass es so und lebe damit.

 

Link to comment
2 hours ago, MAM59 said:

Du zwingst damit Unraid immer nur EIN unquittiertes Paket auf der Leitung zu haben.

Wovon sprichst du?

 

aio read und write size versteht nur 0 oder 1. Also aus oder an und hat Null mit dem Netzwerk zu tun. Dabei geht es um I/O Direct, also Caching oder nicht. Mich wundert tatsächlich gerade, dass das standardmäßig aus sein soll... 🤔

 

 

Link to comment
2 hours ago, mgutt said:

aio read und write size versteht nur 0 oder 1.

Nein, lese er https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html. Die Zahl (durchaus auch grösser 1) gibt an, ab welcher Grösse SAMBA umschaltet von synchroner zu asynchroner IO. Bei "1" eben immer, aber bei höheren Werten wird eben nur bei Bedarf umgeschaltet.

 

Allerdings frage ich mich auch, warum diese Einstellungen (von denen so 90% eh Default sind) sein Problem geheilt haben sollen..

Link to comment
4 hours ago, MAM59 said:

Solltest du vielleicht selbst mal machen. 

 

Quote

The only reasonable values for this parameter are 0 (no async I/O) and 1 (always do async I/O).

 

Auf Deutsch: Ja, man könnte es erst ab einer gewissen Größe umschalten von Direct auf Buffer, aber das macht halt einfach keinen Sinn.

Link to comment
On 10/28/2022 at 5:55 PM, mgutt said:

Dabei geht es um I/O Direct, also Caching oder nicht. Mich wundert tatsächlich gerade, dass das standardmäßig aus sein soll... 🤔

 

 

 

Das sind die Standard-SMB-Einstellungen von Unraid 6.11.1 und aio write size ist tatsächlich 0 und damit wird I/O Direct erzwungen:

 

# tail -n +1 /etc/samba/*
==> /etc/samba/lmhosts <==
127.0.0.1       localhost

==> /etc/samba/smb-fruit.conf <==
# global parameters are defined in /etc/samba/smb.conf
# current per-share Unraid OS defaults
vfs objects = catia fruit streams_xattr
#fruit:resource = file
#fruit:metadata = netatalk
#fruit:locking = none
#fruit:encoding = private
fruit:encoding = native
#fruit:veto_appledouble = yes
#fruit:posix_rename = yes
#readdir_attr:aapl_rsize = yes
#readdir_attr:aapl_finder_info = yes
#readdir_attr:aapl_max_access = yes
#fruit:wipe_intentionally_left_blank_rfork = no
#fruit:delete_empty_adfiles = no
#fruit:zero_file_id = no
# these are added automatically if TimeMachine enabled for a share:
#fruit:time machine
#fruit:time machine max size = SIZE

==> /etc/samba/smb-names.conf <==
# Generated names
netbios name = Tower
server string = Media server
hide dot files = no
server multi channel support = no
multicast dns register = No
disable netbios = yes
server min protocol = SMB2
security = USER
workgroup = WORKGROUP
map to guest = Bad User
passdb backend = smbpasswd
null passwords = Yes
idmap config * : backend = tdb
idmap config * : range = 3000-7999
map archive = No
map hidden = No
map system = No
map readonly = Yes
create mask = 0777
directory mask = 0777

==> /etc/samba/smb-shares.conf <==
[isos]
        path = /mnt/user/isos
        comment = ISO images
        browseable = yes
        # Private
        writeable = no
        read list = test
        write list = 
        valid users = test 
        case sensitive = auto
        preserve case = yes
        short preserve case = yes
        vfs objects = catia fruit streams_xattr
        fruit:encoding = native

==> /etc/samba/smb.conf <==
[global]
        # configurable identification
        include = /etc/samba/smb-names.conf

        # log stuff only to syslog
        logging = syslog@0

        # we don't do printers
        show add printer wizard = No
        disable spoolss = Yes
        load printers = No
        printing = bsd
        printcap name = /dev/null

        # disable aio by default
        aio read size = 0
        aio write size = 0

        # misc.
        invalid users = root
        unix extensions = No
        wide links = Yes
        use sendfile = Yes

        # ease upgrades from Samba 3.6
        acl allow execute always = Yes
        # permit NTLMv1 authentication
        ntlm auth = Yes

        # default global fruit settings:
        #fruit:aapl = Yes
        #fruit:nfs_aces = Yes
        fruit:nfs_aces = No
        #fruit:copyfile = No
        #fruit:model = MacSamba

        # hook for user-defined samba config
        include = /boot/config/smb-extra.conf

        # auto-configured shares
        include = /etc/samba/smb-shares.conf

 

Für mich nicht wirklich nachvollziehbar warum man aio write size und damit das Caching deaktiviert hat. Bei Unraid 6.8 war aio write size noch auf 4096 eingestellt.

 

 

@unRAID-Tower

Wie du siehst ist use sendfile = yes bereits standardmäßig aktiv. Schadet aber natürlich nicht, wenn man den Wert noch mal setzt. Wenn du ein Benchmark machst, testest du übrigens NICHT die Geschwindigkeit der Datenträger, weil Linux die Daten dann noch im RAM vorhält. Daher sieht man beim manuellen Upload großer oder vieler kleiner Dateien meist ganz andere Werte.

 

Meine smb-extra sieht übrigens so aus (ich habe auch RSS aktiviert, da dadurch die Last auf dem Client auf mehrere Kerne verteilt wird):

 

# SMB Multichannel splits transfers across multiple NICs
server multi channel support = yes

# RSS splits transfers across multiple CPU cores (requires active SMB Multichannel)
interfaces = "192.168.178.8;capability=RSS,speed=10000000000"

# set minimum SMB version of this server
server min protocol = SMB3

# set minimum SMB version for clients
client min protocol = SMB3

# enable caching (was disabled since Unraid 6.9)
aio read size = 1
aio write size = 1

 

Was auch ein bisschen bringt ist case sensitive auf yes zu stellen:

 

image.png.96b3ae1297a6492eb8a308973302b99b.png

 

Zumindest wenn ein Verzeichnis viele Dateien enthält. Nur Windows ignoriert ja die Schreibweise und in Linux muss quasi jede Datei in jeder Schreibweise gesucht werden, wenn man die Groß- und Kleinschreibung ignoriert. Kann aber sein, dass die Einstellung "auto" bereits erkennt, dass der Client ein Mac ist und dann "Yes" voraussetzt. Das weiß ich nicht.

 

Ich hatte verschiedene Werte bei aio write size übrigens schon mal durchprobiert und es macht keinen Unterschied:

https://forums.unraid.net/topic/97165-smb-performance-tuning/#:~:text=analyze all benchmarks.-,SMB.conf Tuning,-I made many

 

 

Link to comment
15 hours ago, unRAID-Tower said:

deine SMB extra probieren

das hier muss aber dann angepasst werden:

On 10/29/2022 at 10:54 PM, mgutt said:
interfaces = "192.168.178.8;capability=RSS,speed=10000000000"

 

Die IP und Speed bezieht sich auf eine 10G Karte. Bei 2.5 müsste man den Wert auf 2500000000 ändern.

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.