schlechte netzwerk performance mit x540 10Gbit Adapter

cat1510

Well-Known Member
hi Leutz,

welchen Schalter muss ich denn bei BSD druecken, damit das OS beim Netz Speed richtig reinhaut?

1. Hardware FreeBSD Server
irgendein schneller Xeon E3 mit 3,xxx Ghz & 16GB RAM
4x SSD
1x X540 Intel Nic
10Gbic Switch

2. Software FreeBSD 10.1 stable p6
zfs root system


der 2te Computer ist / war zum Test ein Windows / Ubuntu / Fedora

Nun die wichtige Frage: Warum kann ich mit BSD nicht mehr als 180MB/sec erreichen?
Keine Chance.

Was ich schon alles getestet habe:
4 SSD als RAID0 mit ufs
4SSD als volume zfs / Zil an aus egal
4SSD als raidz1 / Zil an aus egal

Egal was ich mache, auf den Server scheiben macht immer 180MB/sec.
Mehr nicht! Ubuntu als Testsystem liefert out of the box zwischen 800 - 1100 MB/sec!
In beide Richtungen. Als absoluten Spitzenwert habe ich 1,2GB/sec erreicht (Burst ueber 20sec).
Client war ein Windows in allen Faellen mit Win8.1 und einen Stripe aus 4SSD auch mit x540 Adapter.
Normales samba4 smb Protokoll und Filegroesse war immer 50GB Datei.

Ich wollte so gerne zfs auf dem System laufen lassen und sehe keine Moeglichkeit den Speed hoch zu bekommen.

Woran soll ich drehen? Was habe ich vergessen?


Hilfe! :o)

MFG


CAT
 
Ich kann die Suche eingrenzen:

iperf spuckt per default 9,41Gbit/sec aus. Super!
NFS kopiert mit immerhin 700MB/sec auf ein 2SSD Stripe mit UFS

Scheint also 'nur' das Schreiben von Samba ein Problem zu sein.
Habe nun mit 1000 Optionen rumgepielt und es sind immer noch nur 180MB/sec... :(
 
meine smb.conf ist zum testen ganz einfach gehalten.

fuer Netzwerk Performance ist nur:

sync always = no
sync strict = no

da drin.

Habe schon gespielt mit TCP Socket Options in allen Varianten
aio_write & aio_read
Habe in der Maillingliste ein paar Leute gefunden mit aehnlichen Fehlern.
in der loader.conf ist bei mir aio_load noch drin und das wars es erstmal damit.
ahci _load und der uebliche Kram auch.

Die Interrupteinstellungen fuer die NIC sind auch super.
Aber die kann es auch nicht sein bei 9,41GBit/sec, wa? :)


Ohne jegliche 'Tuning Option' bekomme ich die besten Werte.
Schreibend vom Win8.1 auf den Server 164,00MB/sec
Mit irgendwelchen Optionen immer langsamer.
Kein ZFS! NFS klappt sofort mit deutlich mehr Speed.
Ich habe keine Idee.

Der letzte Test war mit UFS also bringen da auch solche Sachen wie vmem_size und sowas in der loader.conf nix.
Was mich dabei stoert: Ubuntu macht es out of the box!?! Wie stellt das das ein?

Am System habe ich NIX geaendert. Habe heute Nacht nochmal ein 10.1 Release als fresh install da drauf geworfen.
Samba 4.0.irgendwas per pkg install und los.


Samba 4.2 liest sich auch gut, allerdings hat das Ubuntu auch nicht.



Mann mann.

Wer haette gedacht, dass das so schlimm wird?


Bis spaeter.


CAT
 
Hi,

ich bin beeindruckt. Mit den sysctl Werten hat sich echt was positiv geaendert!
Komme nun schonmal auf 400MB/sec mit einem UFS Stripe.
Teste nun mal ZFS, melde mich wieder.


Einzig
kern.ipc.nmbclusters=32768 invalid argument verstehe ich nicht.
 
kern.ipc.nmbclusters ist ein Tuneable, muss also in der /boot/loader.conf gesetzt werden. Es legt grob gesagt fest, wie viele interne Buffer der Netzwerkstack nutzt. Je nach Einsatzzweck ist 32768 für eine 10GBit/s Anbindung sogar noch relativ wenig, man kann sich nochmal locker das Vierfache gönnen. Allerdings würde ich klein Anfangen und erst bei konkreten Problemen (extremen Perfomanceeinbrüchen, Genörgel in der dmsg, Abriss des Links) den Wert erhöhen. Schließlich kostet das auch alles RAM.
 
256GB RAM DDR4 :D (aber nur Testsystem)

JA ich habe rausgefunden, warum er meckert.
Der Wert von 32768 ist viel zu wenig.
Viele von den Werten aus dem anderen Thread sind zu wenig.
Habe mal eine Uebersicht gemacht:

Orig Modified


net.inet.tcp.nolocaltimewait: 0 net.inet.tcp.nolocaltimewait=1
net.inet.tcp.sendbuf_max: 2097152 net.inet.tcp.sendbuf_max=16777216
net.inet.tcp.recvbuf_max: 2097152 net.inet.tcp.recvbuf_max=16777216
net.inet.tcp.sendspace: 32768 net.inet.tcp.sendspace=262144
net.inet.tcp.recvspace: 65536 net.inet.tcp.recvspace=262144
net.inet.tcp.mssdflt: 536 net.inet.tcp.mssdflt=1440
net.inet.tcp.rfc1323=1 net.inet.tcp.rfc1323=1
net.inet.tcp.rfc3390=1 net.inet.tcp.rfc3390=0
not found ?!?!?! kern.ipc.somaxconn=1024
kern.ipc.maxsockbuf: 2097152 kern.ipc.maxsockbuf=16777216
kern.ipc.nmbclusters: 786432 kern.ipc.nmbclusters=32768
kern.maxfiles: 4190124 kern.maxfiles=65536
kern.maxfilesperproc: 3771108 kern.maxfilesperproc=32768
kern.maxvnodes: 2250898 kern.maxvnodes=800000


Viele der vorgeschlagenen Werte sind viel zu klein... :)
Da muss ich noch ein bisschen spielen.


Warum macht der meine Formatierung nicht?
 
Zurück
Oben