NFS vs. NBD (Performance in großen Umgebungen)
Wieder mal ein Test gemacht mit einem luxuriösen Server und ganz ordentlichen Clients. Der Server bietet 16 CPU Cores und verfügt über 48 GByte Speicher und ist als SLX- sowie Homeverzeichnisserver im Einsatz. Der Server hängt mit 4 Gigabit-Netzwerkinterfaces der Intel-Server-Bauart mittels Bonding-Interface am Switch (3COM Gigabit). Dabei passierte während der Tests im Bereich der Homeverzeichnisse nichts. NFS lief mit insgesamt 64 Threads (bei maximal 32 Clients).
Der Server ist ein aktuelles Debian mit 2.6.32 Kernel, die Clients ein Ubuntu-LTS-10.04.01. Bootzeit eines einzelnen Clients sowohl mit NFSv3 als auch mit SuashFS/NBD lag bei 18 Sekunden von der PXE-Menüauswahl bis zum Login-Screen (KDM auf Xorg/Intel). Wenn 16 Clients gleichzeitig per NFS booteten stieg die Zeit auf 22 Sekunden bei NBD sogar auf 24 Sekunden.
Folgende Dinge waren zu beobachten:
- Die maximale Transferleistung ausgehend auf dem Server war 1.9 Gbit/s
- Maximal wurden 1.8 Gbit/s beim gleichzeitigen NFS-Boot von 16 Clients gemessen
- Der gleichzeitige Start von 16 Clients mittels SquashFS/NBD erbrachte maximal 680 Mbit/s
- Das lineare Lesen des Blockdevices auf den Clients
time dd if=/dev/nbd0 of=/dev/nullerbrachte ein maximales Transfervolumen serverseitig ausgehend von 1.75 Gbit/s
Insgesamt scheint also im beschriebenen Setup das NBD die Kapazität des Netzes so gut wie nicht auszunutzen. Auch das Lesen von nur einem Client nach der beschriebenen Methode brachte die Peakleistung auf gerade 1/10 der Leistung. Im gesamten NBD-Setup machte es keinen Unterschied, ob der auszuliefernde SquashFS-Container auf der Festplatte (RAID) oder im RAM lag.
Ebenfalls fiel eine start schwankende Transferleistung auf: Das Maximum empfangener Pakete lag bei 100 Mbit/s das Minimum fiel bis unter 10 MBit/s bei insgesamt hoher Volatilität. Dabei wurde nicht weiter untersucht, ob das durch TCP-Parameter (Window-Size, ACKs, …) verursacht wurde oder ein Problem des NBD-Servers war. Von der Server- und Client-Leistung her sollte es keine Einschränkungen gegeben haben.
Das wirft nochmal ein anderes Licht auf den NBD (zumindest im vorliegenden Setup).
NFS lässt sich auch aus einem TEMPFS heraus exportieren, man muss es aber mit einer ID versehen (“fsid=1234″). Es braucht jedoch bedeutend mehr Platz (ca. 5:2 bezogen auf SquashFS).
This entry was posted on Sonntag, November 14th, 2010 at 12:43 and is filed under de. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
