Filesystems
From ArkWiki
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 Linux | 2006.1 dockyard-devel snapshot 20060722 |
| kernel | 2.6.18-0.rc1.1ark |
| glibc | 2.4-4ark |
| coreutils | 5.97-1ark |
| gcc | 4.1.1-1ark |
| binutils | 2.17.50.0.3-1ark |
Comparison of file system performance
| filesystem | run # | test | real | user | system |
|---|---|---|---|---|---|
| xfs | 1 | dd if=/dev/urandom of=/tmp/1GB bs=1M count=1024 | 6m34.878s | 0m0.008s | 6m34.517s |
| 2 | 6m35.878s | 0m0.008s | 6m34.445s | ||
| 3 | 6m35.155s | 0m0.012s | 6m34.721s | ||
| AVG | 6m35.303s | 0m0.009s | 6m34.561s | ||
| jfs | 1 | 6m39.272s | 0m0.016s | 6m38.969s | |
| 2 | 6m39.756s | 0m0.012s | 6m38.909s | ||
| 3 | 6m52.723s | 0m0.020s | 6m46.741s | ||
| AVG | 6m43.917s | 0m0.016s | 6m41.540s | ||
| ext3 | 1 | 6m37.352s | 0m0.008s | 6m36.109s | |
| 2 | 6m38.298s | 0m0.008s | 6m36.457s | ||
| 3 | 6m38.867s | 0m0.016s | 6m37.497s | ||
| AVG | 6m38.172s | 0m0.010s | 6m36.688s | ||
| reiserfs | 1 | 6m42.259s | 0m0.016s | 6m41.249s | |
| 2 | 6m42.959s | 0m0.020s | 6m41.693s | ||
| 3 | 6m43.689s | 0m0.008s | 6m41.901s | ||
| AVG | 6m42.969s | 0m015s | 6m41.614s | ||
| xfs | 1 | cat /tmp/1GB >/dev/null | 0m18.683s | 0m0.044s | 0m1.268s |
| 2 | 0m17.957s | 0m0.104s | 0m1.344s | ||
| 3 | 0m18.578s | 0m0.096s | 0m1.072s | ||
| AVG | 0m18.406s | 0m0.081s | 0m1.228s | ||
| jfs | 1 | 0m17.662s | 0m0.084s | 0m1.344s | |
| 2 | 0m21.467s | 0m0.088s | 0m1.232s | ||
| 3 | 0m21.963s | 0m0.044s | 0m1.020s | ||
| AVG | 0m20.364s | 0m0.072s | 0m1.199s | ||
| ext3 | 1 | 0m27.926s | 0m0.072s | 0m0.972s | |
| 2 | 0m30.084s | 0m0.084s | 0m1.268s | ||
| 3 | 0m29.976s | 0m0.076s | 0m1.242s | ||
| AVG | 0m29.329s | 0m0.077s | 0m1.161s | ||
| reiserfs | 1 | 0m25.574s | 0m0.068s | 0m1.316s | |
| 2 | 0m25.596s | 0m0.072s | 0m1.396s | ||
| 3 | 0m25.777s | 0m0.080s | 0m1.640s | ||
| AVG | 0m25.649s | 0m0.073s | 0m1.451s | ||
| xfs | 1 | cp /tmp/1GB /tmp/1GB-2 | 0m37.958s | 0m0.116s | 0m6.180s |
| 2 | 0m37.942s | 0m0.112s | 0m6.360s | ||
| 3 | 0m38.271s | 0m0.144s | 0m5.656s | ||
| AVG | 0m38.057s | 0m0.124s | 0m6.065s | ||
| jfs | 1 | 0m35.912s | 0m0.084s | 0m3.592s | |
| 2 | 0m40.615s | 0m0.092s | 0m3.884s | ||
| 3 | 0m40.939s | 0m0.072s | 0m3.716s | ||
| AVG | 0m39.155s | 0m0.083s | 0m3.731s | ||
| ext3 | 1 | 0m53.559s | 0m0.132s | 0m6.468s | |
| 2 | 1m4.545s | 0m0.176s | 0m6.472s | ||
| 3 | 0m58.256s | 0m0.248s | 0m8.009s | ||
| AVG | 0m58.787s | 0m0.185s | 0m6.983s | ||
| reiserfs | 1 | 0m49.094s | 0m0.264s | 0m12.689s | |
| 2 | 0m49.247s | 0m0.308s | 0m12.393s | ||
| 3 | 0m49.159s | 0m0.324s | 0m12.137s | ||
| AVG | 0m49.167s | 0m0.299s | 0m0.406s | ||
| xfs | 1 | shred /tmp/1GB | 8m2.776s | 0m6.536s | 0m51.771s |
| 2 | 8m4.099s | 0m6.316s | 0m34.350s | ||
| 3 | 8m3.941s | 0m6.496s | 0m31.086s | ||
| AVG | 8m3.605s | 0m6.449s | 0m39.069s | ||
| jfs | 1 | 7m43.197s | 0m6.236s | 0m28.686s | |
| 2 | 9m17.987s | 0m6.256s | 0m31.830s | ||
| 3 | 9m28.499s | 0m6.320s | 0m38.746s | ||
| AVG | 8m49.894s | 0m6.271s | 0m33.087s | ||
| ext3 | 1 | 11m40.199s | 0m6.320s | 0m58.544s | |
| 2 | 12m18.667s | 0m7.068s | 0m58.628s | ||
| 3 | 12m21.255s | 0m6.788s | 1m17.253s | ||
| AVG | 12m6.707s | 0m6.722s | 1m4.808s | ||
| reiserfs | 1 | 11m0.982s | 0m6.720s | 1m3.416s | |
| 2 | 11m2.494s | 0m7.312s | 1m5.308s | ||
| 3 | 11m1.767s | 0m6.624s | 1m7.236s | ||
| AVG | 11m1.748s | 0m6.885s | 1m5.320s | ||
| xfs | 1 | cat /tmp/1GB >>/tmp/1GB-2 | 0m39.550s | 0m0.336s | 0m5.580s |
| 2 | 0m40.253s | 0m0.128s | 0m6.036s | ||
| 3 | 0m38.557s | 0m0.184s | 0m5.744s | ||
| AVG | 0m39.453s | 0m0.216s | 0m5.787s | ||
| jfs | 1 | 0m35.387s | 0m0.108s | 0m3.396s | |
| 2 | 0m42.261s | 0m0.112s | 0m3.776s | ||
| 3 | 0m40.691s | 0m0.060s | 0m3.612s | ||
| AVG | 0m39.446s | 0m0.093s | 0m3.595s | ||
| ext3 | 1 | 1m2.566s | 0m0.176s | 0m7.016s | |
| 2 | 0m54.163s | 0m0.248s | 0m7.324s | ||
| 3 | 0m59.388s | 0m0.156s | 0m7.320s | ||
| AVG | 0m58.706s | 0m0.193s | 0m7.220s | ||
| reiserfs | 1 | 0m49.849s | 0m0.188s | 0m13.413s | |
| 2 | 0m52.749s | 0m0.228s | 0m13.221s | ||
| 3 | 0m49.046s | 0m0.228s | 0m13.621s | ||
| AVG | 0m50.548s | 0m0.215s | 0m13.418s | ||
| xfs | 1 | rm /tmp/1GB | 0m0.035s | 0m0.000s | 0m0.000s |
| 2 | 0m0.262s | 0m0.000s | 0m0.232s | ||
| 3 | 0m0.047s | 0m0.004s | 0m0.016s | ||
| AVG | 0m0.115s | 0m0.013s | 0m0.083s | ||
| jfs | 1 | 0m0.148s | 0m0.000s | 0m0.004s | |
| 2 | 0m0.210s | 0m0.000s | 0m0.052s | ||
| 3 | 0m0.233s | 0m0.000s | 0m0.036s | ||
| AVG | 0m0.197s | 0m0.000s | 0m0.031s | ||
| ext3 | 1 | 0m0.853s | 0m0.004s | 0m0.112s | |
| 2 | 0m0.921s | 0m0.000s | 0m0.114s | ||
| 3 | 0m0.919s | 0m0.000s | 0m0.116s | ||
| AVG | 0m0.898s | 0m0.001s | 0m0.114s | ||
| reiserfs | 1 | 0m0.801s | 0m0.000s | 0m0.188s | |
| 2 | 0m0.894s | 0m0.000s | 0m0.180s | ||
| 3 | 0m1.006s | 0m0.000s | 0m0.184s | ||
| AVG | 0m0.901s | 0m0.000s | 0m0.184s | ||
| xfs | 1 | rpm --rebuild kernel-2.6.18-0.rc1.1ark.src.rpm &>/tmp/build.log | 257m03.239s | 225m24.290s | 18m43.870s |
| 2 | 257m44.235s | 225m32.118s | 18m41.242s | ||
| 3 | 256m43.697s | 225m13.625s | 18m45.502s | ||
| AVG | 257m10.390s | 225m23.344s | 18m43.538s | ||
| jfs | 1 | 242m38.461s | 224m14.325s | 16m24.202s | |
| 2 | 248m56.931s | 220m21.942s | 16m46.827s | ||
| 3 | 240m16.178s | 219m16.178s | 16m35.506s | ||
| AVG | 243m58.190s | 221m17.482s | 16m35.512s | ||
| ext3 | 1 | 241m5.628s | 222m59.828s | 16m39.070s | |
| 2 | 244m26.779s | 223m49.511s | 17m2.936s | ||
| 3 | 239m2.752s | 221m1.029s | 16m29.090s | ||
| AVG | 241m31.720s | 222m36.789s | 16m43.699s | ||
| reiserfs | 1 | 239m36.781s | 221m18.642s | 17m8.484s | |
| xfs | 1 | tar xf linux-2.6.17.tar.bz2 | 1m24.834s | 0m45.655s | 0m7.532s |
| 2 | 1m16.487s | 0m45.239s | 0m7.244s | ||
| 3 | 1m16.974s | 0m45.371s | 0m7.108s | ||
| AVG | 1m19.432s | 0m45.522s | 0m7.295s | ||
| jfs | 1 | 0m54.270s | 0m45.355s | 0m5.520s | |
| 2 | 0m53.102s | 0m44.739s | 0m5.916s | ||
| 3 | 0m53.435s | 0m45.399s | 0m5.940s | ||
| AVG | 0m53.602s | 0m45.164s | 0m5.792s | ||
| ext3 | 1 | 0m58.534s | 0m45.551s | 0m5.808s | |
| 2 | 1m1.471s | 0m45.371s | 0m6.804s | ||
| 3 | 0m58.610s | 0m45.271s | 0m5.468s | ||
| AVG | 0m59.538s | 0m45.398s | 0m6.027s | ||
| xfs | 1 | find linux-2.6.17 >/dev/null | 0m0.097s | 0m0.036s | 0m0.060s |
| 2 | 0m0.102s | 0m0.040s | 0m0.060s | ||
| 3 | 0m0.108s | 0m0.048s | 0m0.052s | ||
| AVG | 0m0.102s | 0m0.041s | 0m0.057s | ||
| jfs | 1 | 0m0.196s | 0m0.036s | 0m0.048s | |
| 2 | 0m0.078s | 0m0.044s | 0m0.032s | ||
| 3 | 0m0.080s | 0m0.040s | 0m0.040s | ||
| AVG | 0m0.118s | 0m0.040s | 0m0.040s | ||
| ext3 | 1 | 0m0.128s | 0m0.036s | 0m0.056s | |
| 2 | 0m0.028s | 0m0.028s | 0m0.060s | ||
| 3 | 0m0.088s | 0m0.028s | 0m0.060s | ||
| AVG | 0m0.043s | 0m0.030s | 0m0.059s | ||
| xfs | 1 | find linux-2.6.17 -type f -exec sh -c 'cat {} >/dev/null' ';' | 1m38.779s | 0m37.314s | 1m1.468s |
| 2 | 1m38.062s | 0m37.498s | 1m0.396s | ||
| 3 | 1m37.622s | 0m37.446s | 1m0.180s | ||
| AVG | 1m38.154s | 0m37.419s | 1m0.681s | ||
| jfs | 1 | 1m17.404s | 0m23.073s | 0m54.203s | |
| 2 | 1m17.184s | 0m23.093s | 0m54.095s | ||
| 3 | 1m17.622s | 0m23.329s | 0m54.287s | ||
| AVG | 1m17.403s | 0m23.165s | 0m54.195s | ||
| ext3 | 1 | 1m17.236s | 0m23.689s | 0m53.459s | |
| 2 | 1m16.834s | 0m23.305s | 0m53.527s | ||
| 3 | 1m16.583s | 0m23.389s | 0m53.135s | ||
| AVG | 1m16.884s | 0m23.461s | 0m53.370s | ||
| xfs | 1 | rm -rf linux-2.6.17 | 0m27.662s | 0m0.104s | 0m3.248s |
| 2 | 0m29.462s | 0m0.088s | 0m3.272s | ||
| 3 | 0m42.241s | 0m0.084s | 0m3.436s | ||
| AVG | 0m33.122s | 0m0.092s | 0m3.319s | ||
| jfs | 1 | 0m3.458s | 0m0.076s | 0m1.040s | |
| 2 | 0m3.454s | 0m0.068s | 0m1.072s | ||
| 3 | 0m2.739s | 0m0.056s | 0m1.088s | ||
| AVG | 0m3.217s | 0m0.067s | 0m1.067s | ||
| ext3 | 1 | 0m0.836s | 0m0.044s | 0m0.744s | |
| 2 | 0m0.844s | 0m0.036s | 0m0.764s | ||
| 3 | 0m0.825s | 0m0.052s | 0m0.728s | ||
| AVG | 0m0.835s | 0m0.044s | 0m0.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.
