• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

Performance "find" in Ubuntu und FreeBSD

bsd4me

Well-Known Member
Themenstarter #1
Hi, ich habe da mal eine Frage und zwar zu folgendem Kommando:
# find . -type f | wc -l
es scheint auf einem Ubuntu Server (64 cores, 512GB RAM) wesentlich schneller zu sein als auf meinem Arbeits PC (24 cores, 64GB RAM). Das nur als Info, sollte aber keinen entscheidenden Einfluss haben. Beide greifen per NFS auf das gleiche Verzeichnis zu. Woran könnte das liegen? Ach, das Verzeichnis hat etwa 50000 Dateien - aber auch das ist zwar viel, aber noch lange kein Grund, warum der Unterschied zu gross ist...
VG Norbert
 

Columbo0815

Kaffeemann
Mitarbeiter
#2
Wie ist denn die Anbindung der jeweiligen Rechner? Was für Netzwerkkarten sind verbaut? Wie wird die Freigabe jeweils gemountet?
 

bsd4me

Well-Known Member
Themenstarter #3
erstmal, beide mal läuft der Prozess in eienm Container (lxc / jail). die Anbindung geht durch das loopback interface

Die Konfiguration ist

Ubuntu Server:
# ifconfig
enp2s0f0 Link encap:Ethernet
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:139115774973 errors:27 dropped:0 overruns:20623951 frame:14
TX packets:133743173880 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:147857275554556 (147.8 TB) TX bytes:134749114439608 (134.7 TB)
# lspci | awk '/[Nn]et/ {print $1}' | xargs -i% lspci -ks %
02:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
Subsystem: Super Micro Computer Inc 82576 Gigabit Network Connection
Kernel driver in use: igb
Kernel modules: igb
02:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
Subsystem: Super Micro Computer Inc 82576 Gigabit Network Connection
Kernel driver in use: igb
Kernel modules: igb

FreeBSD Workstation:
# ifconfig
igb0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=a500b9<RXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,VLAN_HWFILTER,VLAN_HWTSO,RXCSUM_IPV6>
ether 00:25:90:e7:01:3b
inet xx.xx.xx.xx netmask 0xffffff00 broadcast xx.xx.xx.xx
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

hilft Dir das?

VG Norbert
 

medV2

Well-Known Member
#4
Nur ein Schuss ins blaue, aber vielleicht ist bei Ubuntu locate, bzw. der update-db Prozess für locate automatisch aktiv? Allgemein cached das Linux vfs agressiver als FreeBSD. Auch hat der Ubuntu Server DEUTLICH mehr RAM.

Ist das ganze nach nem Neustart auch?
 

Columbo0815

Kaffeemann
Mitarbeiter
#5
Und wie wird gemountet? ich habe die Erfahrung gemacht, dass rsize/wsize einen erheblichen Unterschied machen. Wie der Unterschied mit NFSv2/3/4 ist, habe ich persönlich noch nicht getestet, wäre aber evtl. ebenfalls ein Ansatz.

Edit: Kannst du das mit der Jail noch ein wenig ausführen?
 

bsd4me

Well-Known Member
Themenstarter #6
gemounted per nfs3... und beide Maschinen sind nicht unter last und haben deutliche reversen im RAM frei - von daher sollte es kaum einen Unterscheid geben :)
 

bsd4me

Well-Known Member
Themenstarter #7
ach, das per jail stimmt gar nicht, auf meinem Arbeits PC läuft das find Kommando nicht in einer jail :)
 

pit234a

Well-Known Member
#8
was aber noch einige Optionen übrig lässt und das könnte durchaus unterschiedlich auf beiden System gehandhabt werden und zwar sowohl in der Default-Einstellung, als auch generell. Ich zeige mal den Teil einer mount-Ausgabe eines busybox/Linux clienten bei mir:
Code:
rw,v3,rsize=16384,wsize=16384,hard,udp,lock
Für diesen Client war das nach viel Probierarbeit die beste Lösung. Und ich habe deshalb diesen Client gewählt, weil der in seiner Ausgabe von mount die Optionen anzeigt, mit denen gemountet wurde. Das machen meine anderen Clienten nicht und ich weiß nun gerade nicht, wie ich das sichtbar machen könnte, außer, wenn ich gezielt den jeweiligen mount-Befehl aus meinen Start-Scripts suchen würde.
dass rsize/wsize einen erheblichen Unterschied
und nur, um das zu erklären: der oben gezeigte Client hat so gut wie gar keinen RAM und eine super-schwache CPU und nur 10MB Netzwerk-Karte. Die hierfür gefundenen Werte sind sicher alles andere, als gute Werte für moderne Rechner.
 

turrican

Well-Known Member
#11
nein, beide greofen per NFS zu, wie ich schon ganz oben geschrieben hatte :)
Ja, das hatte ich gelesen :D, aber die Frage war berechtigt, denn du hättest ja das NFS-exportierte Verzeichnis auf dem Server auch per NFS-mount nutzen können; z.B. um gleiche Pfade zu erhalten...

Wenn ich auf mein (FreeNAS, also aktuell FreeBSD 11.3) Laufwerk per NFS zugreife, ist die Linux-Maschine auch langsamer als die FreeBSD Maschine daneben, allerdings hatte ich da noch nie genauere Messungen zu gemacht.

Hast du mal - um den Netzwerk-Weg auszuschließen - auf dem Fileserver und auf den Clients ein "iperf3" (benchmarks/iperf3 in den Ports, bzw als pkg) in beide Richtungen (Server->Client und Client->Server) getestet? Sollte in diesen beiden Richtungen und bei beiden Clients (FreeBSD und Linux) die nahezu gleichen Ergebnisse bringen.