Slow and strange NFS...

bsd4me

Well-Known Member
Hallo Leute,

ich habe vor Wochen eine Sun X4540 mit FreeBSD 9.2 bestückt, die jetzt produktiv ist.

Zum ersten Anliegen: Wenn ich "per nfs" (also in ein /home Verzeichnis) auf den Server schreibe erhalt ich ca 18MB/Sek. Das ist schon langsam... Wenn ich vom Server's /home kopiere sind es lächerliche 3MB/sek. Die Maschine kann viel mehr! Was könnte ich da falsch machen?

Das zweite Problem, das ich aktuell habe, ist, dass der Rechner irgendwan mit einem cp Befehl einer ca. 20 GB grossen Datei "stehen" bleibt. D.h. es wird von einem Laptop per cp auf das gemountete /home Verzeichnis kopiert. Was erstmal doch ziemlich strange ist, oder? Ich habe keinen Log Eintrag, das einzige, was ich nach einem Reboot dann im log sehe ist, dass ypbind den NIS server nicht mehr findet :-(

Im zweiten Fall fängt der nfsd irgendwann anfängt "sich nach oben zu schrauben", also frisst immer mehr cpu. Ich bin mir nicht sicher, ob das mit dem freebsd-update auf patch4 zusammenhängt, denn vorher hatte ich keine Problem damit - oder vielleicht ist mir das jetzt erst aufgefallen. Die ursprüngliche "Bestückung" des Servers mit terrabyte-weise Daten von einem anderen temporären Server habe ich per rsync ohne nfs mounts gemacht - das lief tagelang ohne Probleme...

Viele Grüße, Norbert
 
Ach, noch ein kleiner Test, wenn ich per rsync direct auf den server schreibe, erhalte ich knapp 50MB/Sek, Lesen ist dann ca 43MB/Sek... Akzeptabel :-)
 
Alles ZFS - ich weiss, Schreiben und ZIL kann Sachen langsamer machen, aber Lesen??

Hier mein pool:

# zpool status
pool: storage
state: ONLINE
scan: none requested
config:

NAME STATE READ WRITE CKSUM
storage ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
da1 ONLINE 0 0 0
da9 ONLINE 0 0 0
da17 ONLINE 0 0 0
da25 ONLINE 0 0 0
da33 ONLINE 0 0 0
da41 ONLINE 0 0 0
raidz2-1 ONLINE 0 0 0
da2 ONLINE 0 0 0
da10 ONLINE 0 0 0
da18 ONLINE 0 0 0
da26 ONLINE 0 0 0
da34 ONLINE 0 0 0
da42 ONLINE 0 0 0
raidz2-2 ONLINE 0 0 0
da3 ONLINE 0 0 0
da11 ONLINE 0 0 0
da19 ONLINE 0 0 0
da27 ONLINE 0 0 0
da35 ONLINE 0 0 0
da43 ONLINE 0 0 0
raidz2-3 ONLINE 0 0 0
da4 ONLINE 0 0 0
da12 ONLINE 0 0 0
da20 ONLINE 0 0 0
da28 ONLINE 0 0 0
da36 ONLINE 0 0 0
da44 ONLINE 0 0 0
raidz2-4 ONLINE 0 0 0
da5 ONLINE 0 0 0
da13 ONLINE 0 0 0
da21 ONLINE 0 0 0
da29 ONLINE 0 0 0
da37 ONLINE 0 0 0
da45 ONLINE 0 0 0
raidz2-5 ONLINE 0 0 0
da6 ONLINE 0 0 0
da14 ONLINE 0 0 0
da22 ONLINE 0 0 0
da30 ONLINE 0 0 0
da38 ONLINE 0 0 0
da46 ONLINE 0 0 0
raidz2-6 ONLINE 0 0 0
da7 ONLINE 0 0 0
da15 ONLINE 0 0 0
da23 ONLINE 0 0 0
da31 ONLINE 0 0 0
da39 ONLINE 0 0 0
da47 ONLINE 0 0 0
spares
da16 AVAIL
da24 AVAIL
da32 AVAIL
da40 AVAIL
errors: No known data errors

pool: zroot
state: ONLINE
scan: none requested
config:

NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
gptid/5ed1bdd6-b01a-11e3-a9cc-00212845bce2 ONLINE 0 0 0
gptid/603f80fe-b01a-11e3-a9cc-00212845bce2 ONLINE 0 0 0

errors: No known data errors
 
# more /etc/fstab

# Device Mountpoint FStype Options Dump Pass#
...
server:/export/home /home nfs rw 0 0
 
32 GB sollten reichen, oder? ;-)

Denn eigentlich ist zwar das Schreiben mit knapp 20MB nicht gerade sonderliche schnell, aber 3 MB/Sek Lesegeschwindigkeit ist unter aller S... Ach, ich habe 8 GB für den ARC reserviert, aber auch das dürfte keine Probleme machen...


Hier einige Daten - vielleicht hilft das ja...

Hardware: Sun X4540

# uname -a
FreeBSD server 9.2-RELEASE-p4 FreeBSD 9.2-RELEASE-p4 #0: Tue Apr 8 18:08:22 UTC 2014 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64

# more /etc/rc.conf
...
rpcbind_enable="YES"
nis_client_enable="YES"
nisdomainname="blabla"
rpc_lockd_enable="YES"
rpc_statd_enable="YES"
nfs_server_enable="YES"
nfsv4_server_enable="YES"
nfsuserd_enable="YES"
mountd_flags="-r"

# more /boot/loader.conf
...
vfs.zfs.arc_max="8G"

# more /etc/exports
V4: /
...
/export/home -alldirs -network 1.2.3.4/27
/export/home -alldirs -network 1.2.3.5/26

Das, was ich ich beim Hängen der Maschine und nach einem Reboot in /var/log/messages sehen konnte, war:
Apr 29 12:03:53 server /usr/sbin/ypbind[1610]: NIS server [1.2.3.6] for domain "blabla" not responding


Hillft das weiter??

Cheers, Norbert
 
Ich habe mal parallel dazu einen Test mit einem "alten" DELL PC gemacht, der als NFS Server fungiert, mit FreeBSD 10.0-p2 und 2 x 1TB Platten per ZFS mirror:

# zool status
pool: zroot
state: ONLINE
scan: none requested
config:

NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
gptid/428898fb-9dfa-11e3-9b42-001aa0aac8a3 ONLINE 0 0 0
gptid/43b7b04f-9dfa-11e3-9b42-001aa0aac8a3 ONLINE 0 0 0

Da bekomme ich Werte, die ich wesentlich besser nachvollziehen kann:
Schreiben ca. 15 MB/Sek
Lesen ca 35 MB/Sek

Im Vergleich dazu: das Lesen von nur 3 MB/Sek von einem "dicken" Sun Server ist verwunderlich... Sollte ich evtl. die nfsd Anzahl hochsetzen?

Norbert
 
Die Anzahl der nfsd-Threads wird erst interessant, wenn du viele Clients hast und am CPU-Limit hängst. Raten wir lieber mal weiter. Hast du mal probiert TSO (ifconfig $NIC -tso) abzuschalten? TSO und NFS mochten sich lange Zeit nicht. Erst vor kurzem gab es eine ganze Reihe Commits um ihr Zusammenspiel zu verbessern.
 
Danke, das ist ja phänominal! Habe gerade ein paar Tests gemacht und siehe, die Lese Performance hat sich doch glatt um ca. Faktor 10 erhöht :-)

Norbert
 
Back
Top