Linux filesystems part 3: Comparing the standard filesystems
By Chris Samuels , LinuxWorld.com, 09/11/07
Comparisons
Standard filesystems
See a slideshow of the graphics with this article.
Timing Results
Bonnie++ Results
| Test |
ext2 |
ext3 |
xfs |
jfs |
reiserfs |
| Total |
3232.9 |
2509.9 |
2782.4 |
3064.5 |
2531.8 |
| Extract kernel sources |
2.7 |
4.0 |
8.1 |
10.5 |
3.1 |
| Extract GCC sources |
4.0 |
5.4 |
13.6 |
18.7 |
5.0 |
| Recursive random file |
22.7 |
22.5 |
22.7 |
22.1 |
25.0 |
| Configure GCC |
2.0 |
2.1 |
2.0 |
1.9 |
1.5 |
| Kernbench |
824.5 |
828.1 |
832.2 |
847.6 |
831.4 |
| GCC make-j16 bootstrap |
1288.3 |
1290.4 |
1307.3 |
1387.3 |
1273.9 |
| Remove kernel source |
0.3 |
0.7 |
6.6 |
12.1 |
1.2 |
| Bonnie++ file operations |
403.3 |
7.9 |
145.6 |
193.4 |
18.1 |
| Remove GCC tree |
0.9 |
1.8 |
7.4 |
21.5 |
2.8 |
| tiobench threaded I/O |
54.9 |
59.9 |
51.1 |
54.9 |
66.2 |
| Bonnie++ intelligent I/O |
629.1 |
286.6 |
385.4 |
443.8 |
303.3 |
|
| Test |
ext2 |
ext3 |
xfs |
jfs |
reiserfs |
| Sequential create/sec |
651 |
53412 |
2894 |
5562 |
29107 |
| Sequential stats/sec |
+++++ |
+++++ |
+++++ |
+++++ |
+++++ |
| Sequential delete/sec |
204531 |
60123 |
4602 |
2761 |
24549 |
| Random create/sec |
639 |
52744 |
2643 |
1556 |
28179 |
| Random stat/sec |
+++++ |
+++++ |
+++++ |
+++++ |
+++++ |
| Random delete/sec |
1204 |
59555 |
2109 |
1432 |
16623 |
| Block writes KB/sec |
648084 |
275239 |
617869 |
327055 |
359405 |
| Block rewrites KB/sec |
123908 |
115008 |
128171 |
128943 |
116784 |
| Block read KB/sec |
294471 |
309794 |
246910 |
279747 |
215436 |
| Random seeks/sec |
1007 |
991.9 |
1404 |
1060 |
989.1 |
|
Emerging filesystems
Timing Results
Bonnie++ Results
| Test |
ChunkFS |
NILFS |
btrfs |
ext4 |
reiserf4 |
ZFS/FUSE |
ZFS/OpenSolaris |
| |
| Sequential create/sec |
N/A |
495 |
33454 |
48103 |
54286 |
3446 |
25833 |
| Sequential stats/sec |
N/A |
+++++ |
+++++ |
+++++ |
+++++ |
4155 |
56906 |
| Sequential delete/sec |
N/A |
118726 |
37457 |
52397 |
21880 |
727 |
22659 |
| Random create/sec |
N/A |
495 |
34521 |
52234 |
23215 |
1195 |
17033 |
| Random stat/sec |
N/A |
+++++ |
+++++ |
+++++ |
+++++ |
3250 |
52337 |
| Random delete/sec |
N/A |
993 |
31331 |
57264 |
21318 |
205 |
17519 |
| Block writes KB/sec |
N/A |
102669 |
101102 |
291673 |
446526 |
27017 |
176336 |
| Block rewrites KB/sec |
N/A |
60190 |
46907 |
103971 |
122194 |
11529 |
142455 |
| Block read KB/sec |
N/A |
177609 |
121205 |
281596 |
173377 |
31963 |
777394 |
| Random seeks/sec |
N/A |
519.6 |
257.8 |
1245 |
1249 |
273.1 |
857.1 |
| |
|
| Test |
ChunkFS |
NILFS |
btrfs |
ext4 |
reiserf4 |
ZFS/FUSE |
ZFS/OpenSolaris |
| Total |
N/A |
3870.5 |
3268.5 |
2527.0 |
2732.8 |
23989.0 |
N/A |
| Extract kernel sources |
47.5 |
5.5 |
6.3 |
4.0 |
4.5 |
76.7 |
22.7 |
| Extract GCC sources |
116.2 |
8.2 |
8.0 |
5.6 |
6.1 |
111.0 |
23.4 |
| Recursive random file |
26.2 |
22.4 |
23.0 |
22.8 |
23.0 |
113.3 |
62.2 |
| Configure GCC |
Fail |
1.9 |
2.0 |
2.1 |
1.9 |
3.1 |
4.4 |
| Kernbench |
Fail |
827.0 |
870.9 |
828.3 |
922.2 |
2202.2 |
N/A |
| GCC make-j16 bootstrap |
Crash |
1293.6 |
1411.1 |
1293.3 |
1344.9 |
16966.0 |
N/A |
| Remove kernel source |
N/A |
0.7 |
1.6 |
0.7 |
10.2 |
19.1 |
N/A |
| Bonnie++ file operations |
N/A |
517.6 |
12.5 |
8.5 |
16.6 |
819.0 |
24.3 |
| Remove GCC tree |
N/A |
2.7 |
3.1 |
1.8 |
11.2 |
39.7 |
N/A |
| tiobench threaded I/O |
106.5 |
155.6 |
58.9 |
54.9 |
79.0 |
374.7 |
103.6 |
| Bonnie++ intelligent I/O |
N/A |
1084.4 |
774.5 |
300.6 |
313.0 |
3273.0 |
276.6 |
|
All together now!
Timing Results
Comparison Graphs of Individual Tests
| Test |
ext2 |
ext3 |
xfs |
jfs |
reiserf |
ChunkFS |
NILFS |
btrfs |
ext4 |
reiserf4 |
ZFS/FUSE |
ZFS/OpenSolaris |
| |
| Sequential create/sec |
651 |
53412 |
2894 |
5562 |
29107 |
N/A |
495 |
33454 |
48103 |
54286 |
3446 |
25833 |
| Sequential stats/sec |
+++++ |
+++++ |
+++++ |
+++++ |
+++++ |
N/A |
+++++ |
+++++ |
+++++ |
+++++ |
4155 |
56906 |
| Sequential delete/sec |
204531 |
60123 |
4602 |
2761 |
24549 |
N/A |
118726 |
37457 |
52397 |
21880 |
727 |
22659 |
| Random create/sec |
639 |
52744 |
2643 |
1556 |
28179 |
N/A |
495 |
34521 |
52234 |
23215 |
1195 |
17033 |
| Random stat/sec |
+++++ |
+++++ |
+++++ |
+++++ |
+++++ |
N/A |
+++++ |
+++++ |
+++++ |
+++++ |
3250 |
52337 |
| Random delete/sec |
1204 |
59555 |
2109 |
1432 |
16623 |
N/A |
993 |
31331 |
57264 |
21318 |
205 |
17519 |
| Block writes KB/sec |
648084 |
275239 |
617869 |
327055 |
359405 |
N/A |
102669 |
101102 |
291673 |
446526 |
27017 |
176336 |
| Block rewrites KB/sec |
123908 |
115008 |
128171 |
128943 |
116784 |
N/A |
60190 |
46907 |
103971 |
122194 |
11529 |
142455 |
| Block read KB/sec |
294471 |
309794 |
246910 |
279747 |
215436 |
N/A |
177609 |
121205 |
281596 |
173377 |
31963 |
777394 |
| Random seeks/sec |
1007 |
991.9 |
1404 |
1060 |
989.1 |
N/A |
519.6 |
257.8 |
1245 |
1249 |
273.1 |
857.1 |
| |
|
The scale on the lefthand side is in seconds, where less is better (faster). Filesystems with no bar shown failed that test.
FIGURE 7: Extract kernel sources (in seconds, lower is better)
FIGURE 8: Extract GCC sources (in seconds, lower is better)
FIGURE 9: Recursive random file test (in seconds, lower is better)
FIGURE 10: Configure GCC (in seconds, lower is better)
FIGURE 11: kernbench test (in seconds, lower is better)
FIGURE 12: Build GCC with “-j16 bootstrap” (in seconds, lower is better)
FIGURE 13: Remove kernel sources (in seconds, lower is better)
FIGURE 14: Bonnie++ benchmark, file operations (in seconds, lower is better)
FIGURE 15: Remove GCC sources (in seconds, lower is better)
FIGURE 16: tiobench threaded I/O test (in seconds, lower is better)
FIGURE 17: Bonnie++ intelligent I/O test (in seconds, lower is better)
Bonnie++ Results
Graph of file operations per second for all filesystems
(FIGURE 18)
Graph of bandwidth measured for Block I/O for all filesystems
(FIGURE 19)
Conclusions
Innovation
There is a great range of innovation in the various emerging filesystems tested here. It ranges from the rather conservative
ext4 model of extending an existing filesystem with some new features, all the way through porting an existing stable filesystem
to a new platform (ZFS/FUSE) to completely new code bases that integrate some of the current hot concepts in filesystem design
(btrfs & nilfs).
Note: Register to have your user name appear; otherwise your comment will show up as "Anonymous."
*Anonymous comments will only appear once they are approved by the moderator.
Note: Comments are subject to Linux World’s Terms of Service.
Anonymous comments will appear once they have been approved by the moderator.
Click here to log out of Community.
RE: Linux filesystems part 3: Comparing the standard filesystems By Cherev on September 20, 2007, 12:26 am Reply | Read entire comment Seems to me that all this filesystem ferment is beside the point for those who need stability and predictability. Wouldn't ext3, conjoined with a kernel module (or...
All comments (1)