Post by Richard van den Berg:/tmp# time tar xjf /usr/src/linux-source-3.1.tar.bz2
real 1m23.518s
user 0m54.486s
sys 0m7.150s
Verschil tussen "real" en "user": 29 seconden, waarvan 7 seconden besteed
aan "sys". Beetje kort door de bocht, maar die 29 seconden is wat je kwijt
bent geweest aan de disk I/O.
Post by Richard van den Berg:/mnt/backup# time tar xjf /usr/src/linux-source-3.2.tar.bz2
real 1m57.357s
user 0m59.833s
sys 0m10.213s
Verschil tussen "real" en "user": 58 seconden, waarvan 10 seconden besteed
aan "sys".
Verder vind ik het overigens erg opvallend dat er 10 seconden verschil in
"user" zit. Dat geeft waarschijnlijk aan dat er iets als PowerNow (cq
SpeedStep) actief is.
Al met al ben je in het geval van NFS twee keer zoveel tijd kwijt geweest
aan I/O. Rekening houdend met het feit dat er ook I/O tijd schuilt in het
*inlezen* van die tarball (terwijl dat in het tweede geval waarschijnlijk
uit een diskcache komt) is het verschil in write performance *meer* dan een
factor 2. Dit had je eventueel kunnen uitsluiten door de tarball in een
ramdisk te zetten.
De totale hoeveelheid data die geschreven wordt tijdens het uitpakken van
die tarball is eigenlijk beperkt. Uit je graph volgt dit overigens ook: De
throughput is eigenlijk maar laag, en komt niet boven de 5.9 MB/s uit.
Interessanter is de vraag hoe de verdeling van bestandsgroottes is. Ik weet
niet welke kernelversie jij precies gebruikt hebt, maar ik heb 3.2.18 van
kernel.org geplukt. Erg veel verschil zal het wel niet maken.
3.2.18 is (uitgepakt) 431649626 bytes groot [1], over 37619 bestanden [2],
wat betekent dat de gemiddelde bestandsgrootte ruim 11K is. Dat is niet
bijzonder klein. Interessant is in dit geval ook de verdeling:
* Er zijn maar 2443 bestanden kleiner dan 256 bytes. Dit zijn relatief
weinig files, in vergelijking met een willekeurige svn checkout, waar met
name de svn metadata in .svn bijzonder veel hele kleine bestandjes
opleveren.
* Er zijn 4831 files tussen 256 en 1024 bytes[4]
* Er zijn 4841 files tussen 1024 en 2048 bytes[5]
* Er zijn 6193 files tussen 2048 en 4096 bytes.
* Er zijn 6692 files tussen 4096 en 8192 bytes
* Er zijn 5727 files tussen 8192 en 16384 bytes.
* Er zijn 3894 files tussen 16384 en 32768 bytes
* Er zijn 2998 files van 32KB of groter.
Een Linux kernel valt m.i. dus niet echt onder de noemer "veel kleine
bestanden", terwijl dat nou juist is waar NFS op stuk gaat. Maar zelfs
*dan* is de performance al gehalveerd t.o.v. een native filesystem.
Martijn
[1] du -s -b linux-3.2.18
[2] find linux-3.2.18 -type f| wc -l
[3] find linux-3.2.18 -type f -size -256c| wc -l
[4] find linux-3.2.18 -type f -size +255c -size -1024c | wc -l
[5] Ja, eh, zie [4], maar dan met andere getallen :)
--
Martijn van Buul - ***@dohd.org