Filesystems

From ArkWiki

Jump to: navigation, search

Before the release of Ark Linux 2006.1, we've run performance tests on various filesystems to see which one should be made the default.


Test hardware

All tests are being run on an Asus Pundit-S (Celeron 2.4/768 MB/IDE WD2000JB) using

Ark Linux2006.1 dockyard-devel snapshot 20060722
kernel2.6.18-0.rc1.1ark
glibc2.4-4ark
coreutils5.97-1ark
gcc4.1.1-1ark
binutils2.17.50.0.3-1ark

Comparison of file system performance

filesystemrun #testrealusersystem
xfs 1dd if=/dev/urandom of=/tmp/1GB bs=1M count=10246m34.878s0m0.008s6m34.517s
2 6m35.878s0m0.008s6m34.445s
3 6m35.155s0m0.012s6m34.721s
AVG 6m35.303s0m0.009s6m34.561s
jfs 1 6m39.272s0m0.016s6m38.969s
2 6m39.756s0m0.012s6m38.909s
3 6m52.723s0m0.020s6m46.741s
AVG 6m43.917s0m0.016s6m41.540s
ext3 1 6m37.352s0m0.008s6m36.109s
2 6m38.298s0m0.008s6m36.457s
3 6m38.867s0m0.016s6m37.497s
AVG 6m38.172s0m0.010s6m36.688s
reiserfs 1 6m42.259s0m0.016s6m41.249s
2 6m42.959s0m0.020s6m41.693s
3 6m43.689s0m0.008s6m41.901s
AVG 6m42.969s0m015s6m41.614s
xfs 1cat /tmp/1GB >/dev/null0m18.683s0m0.044s0m1.268s
20m17.957s0m0.104s0m1.344s
30m18.578s0m0.096s0m1.072s
AVG0m18.406s0m0.081s0m1.228s
jfs 1 0m17.662s0m0.084s0m1.344s
2 0m21.467s0m0.088s0m1.232s
3 0m21.963s0m0.044s0m1.020s
AVG 0m20.364s0m0.072s0m1.199s
ext3 1 0m27.926s0m0.072s0m0.972s
2 0m30.084s0m0.084s0m1.268s
3 0m29.976s0m0.076s0m1.242s
AVG 0m29.329s0m0.077s0m1.161s
reiserfs 1 0m25.574s0m0.068s0m1.316s
2 0m25.596s0m0.072s0m1.396s
3 0m25.777s0m0.080s0m1.640s
AVG 0m25.649s0m0.073s0m1.451s
xfs 1cp /tmp/1GB /tmp/1GB-20m37.958s0m0.116s0m6.180s
20m37.942s0m0.112s0m6.360s
30m38.271s0m0.144s0m5.656s
AVG0m38.057s0m0.124s0m6.065s
jfs 1 0m35.912s0m0.084s0m3.592s
2 0m40.615s0m0.092s0m3.884s
3 0m40.939s0m0.072s0m3.716s
AVG 0m39.155s0m0.083s0m3.731s
ext3 1 0m53.559s0m0.132s0m6.468s
2 1m4.545s0m0.176s0m6.472s
3 0m58.256s0m0.248s0m8.009s
AVG 0m58.787s0m0.185s0m6.983s
reiserfs 1 0m49.094s0m0.264s0m12.689s
2 0m49.247s0m0.308s0m12.393s
3 0m49.159s0m0.324s0m12.137s
AVG 0m49.167s0m0.299s0m0.406s
xfs 1shred /tmp/1GB8m2.776s0m6.536s0m51.771s
28m4.099s0m6.316s0m34.350s
38m3.941s0m6.496s0m31.086s
AVG8m3.605s0m6.449s0m39.069s
jfs 1 7m43.197s0m6.236s0m28.686s
2 9m17.987s0m6.256s0m31.830s
3 9m28.499s0m6.320s0m38.746s
AVG 8m49.894s0m6.271s0m33.087s
ext3 1 11m40.199s0m6.320s0m58.544s
2 12m18.667s0m7.068s0m58.628s
3 12m21.255s0m6.788s1m17.253s
AVG 12m6.707s0m6.722s1m4.808s
reiserfs 1 11m0.982s0m6.720s1m3.416s
2 11m2.494s0m7.312s1m5.308s
3 11m1.767s0m6.624s1m7.236s
AVG 11m1.748s0m6.885s1m5.320s
xfs 1cat /tmp/1GB >>/tmp/1GB-20m39.550s0m0.336s0m5.580s
20m40.253s0m0.128s0m6.036s
30m38.557s0m0.184s0m5.744s
AVG0m39.453s0m0.216s0m5.787s
jfs 1 0m35.387s0m0.108s0m3.396s
2 0m42.261s0m0.112s0m3.776s
3 0m40.691s0m0.060s0m3.612s
AVG 0m39.446s0m0.093s0m3.595s
ext3 1 1m2.566s0m0.176s0m7.016s
2 0m54.163s0m0.248s0m7.324s
3 0m59.388s0m0.156s0m7.320s
AVG 0m58.706s0m0.193s0m7.220s
reiserfs 1 0m49.849s0m0.188s0m13.413s
2 0m52.749s0m0.228s0m13.221s
3 0m49.046s0m0.228s0m13.621s
AVG 0m50.548s0m0.215s0m13.418s
xfs 1rm /tmp/1GB0m0.035s0m0.000s0m0.000s
20m0.262s0m0.000s0m0.232s
30m0.047s0m0.004s0m0.016s
AVG0m0.115s0m0.013s0m0.083s
jfs 1 0m0.148s0m0.000s0m0.004s
2 0m0.210s0m0.000s0m0.052s
3 0m0.233s0m0.000s0m0.036s
AVG 0m0.197s0m0.000s0m0.031s
ext3 1 0m0.853s0m0.004s0m0.112s
2 0m0.921s0m0.000s0m0.114s
3 0m0.919s0m0.000s0m0.116s
AVG 0m0.898s0m0.001s0m0.114s
reiserfs 1 0m0.801s0m0.000s0m0.188s
2 0m0.894s0m0.000s0m0.180s
3 0m1.006s0m0.000s0m0.184s
AVG 0m0.901s0m0.000s0m0.184s
xfs 1rpm --rebuild kernel-2.6.18-0.rc1.1ark.src.rpm &>/tmp/build.log257m03.239s225m24.290s18m43.870s
2257m44.235s225m32.118s18m41.242s
3256m43.697s225m13.625s18m45.502s
AVG257m10.390s225m23.344s18m43.538s
jfs 1 242m38.461s224m14.325s16m24.202s
2 248m56.931s220m21.942s16m46.827s
3 240m16.178s219m16.178s16m35.506s
AVG243m58.190s221m17.482s16m35.512s
ext3 1 241m5.628s222m59.828s16m39.070s
2 244m26.779s223m49.511s17m2.936s
3 239m2.752s221m1.029s16m29.090s
AVG 241m31.720s222m36.789s16m43.699s
reiserfs 1 239m36.781s221m18.642s17m8.484s
xfs 1tar xf linux-2.6.17.tar.bz21m24.834s0m45.655s0m7.532s
21m16.487s0m45.239s0m7.244s
31m16.974s0m45.371s0m7.108s
AVG1m19.432s0m45.522s0m7.295s
jfs 1 0m54.270s0m45.355s0m5.520s
2 0m53.102s0m44.739s0m5.916s
3 0m53.435s0m45.399s0m5.940s
AVG 0m53.602s0m45.164s0m5.792s
ext3 1 0m58.534s0m45.551s0m5.808s
2 1m1.471s0m45.371s0m6.804s
3 0m58.610s0m45.271s0m5.468s
AVG 0m59.538s0m45.398s0m6.027s
xfs 1find linux-2.6.17 >/dev/null0m0.097s0m0.036s0m0.060s
20m0.102s0m0.040s0m0.060s
30m0.108s0m0.048s0m0.052s
AVG0m0.102s0m0.041s0m0.057s
jfs 1 0m0.196s0m0.036s0m0.048s
2 0m0.078s0m0.044s0m0.032s
3 0m0.080s0m0.040s0m0.040s
AVG 0m0.118s0m0.040s0m0.040s
ext3 1 0m0.128s0m0.036s0m0.056s
2 0m0.028s0m0.028s0m0.060s
3 0m0.088s0m0.028s0m0.060s
AVG 0m0.043s0m0.030s0m0.059s
xfs 1find linux-2.6.17 -type f -exec sh -c 'cat {} >/dev/null' ';' 1m38.779s0m37.314s1m1.468s
21m38.062s0m37.498s1m0.396s
31m37.622s0m37.446s1m0.180s
AVG1m38.154s0m37.419s1m0.681s
jfs 1 1m17.404s0m23.073s0m54.203s
2 1m17.184s0m23.093s0m54.095s
3 1m17.622s0m23.329s0m54.287s
AVG 1m17.403s0m23.165s0m54.195s
ext3 1 1m17.236s0m23.689s0m53.459s
2 1m16.834s0m23.305s0m53.527s
3 1m16.583s0m23.389s0m53.135s
AVG 1m16.884s0m23.461s0m53.370s
xfs 1rm -rf linux-2.6.170m27.662s0m0.104s0m3.248s
20m29.462s0m0.088s0m3.272s
30m42.241s0m0.084s0m3.436s
AVG0m33.122s0m0.092s0m3.319s
jfs 1 0m3.458s0m0.076s0m1.040s
2 0m3.454s0m0.068s0m1.072s
3 0m2.739s0m0.056s0m1.088s
AVG 0m3.217s0m0.067s0m1.067s
ext3 1 0m0.836s0m0.044s0m0.744s
2 0m0.844s0m0.036s0m0.764s
3 0m0.825s0m0.052s0m0.728s
AVG 0m0.835s0m0.044s0m0.745s

Conclusion

jfs performs best on all the "theoretical" tests, and performs very well on real-world tests like compiling a kernel.

ext3 is fairly slow on theoretical tests, but outperforms even jfs in the real world tests, and remains one of the best filesystems.

Our choice to stick with ext3 over jfs is based mostly on the fact that it has a lot more testing in the Linux world, and doesn't seem to bring a notable performance disadvantage -- jfs is definitely worth another consideration for the next release though. It definitely seems to be the right choice for working with large files.

Note: As of 2007.1, jfs is being used.

Personal tools