Performance of Ext2, ReiserFS, and XFS?
3141592654 asks: "I've been doing a little experiement to compare Ext2, ReiserFS,
and SGI XFS. The experiment (LFS Sprite benchmark for small
files) involves tight loops of creating 10,000 1K files spread
equally among 100 directories, reading them back in order, and
deleting them. On a 1GHz processor with plenty of RAM running Linux 2.4.2, with
matching versions of file systems in default configurations
(no debugging and no internal checks). In our tests, EXT2 turned out to be faster than both ReiserFS and XFS. We had been led to believe by other published results that XFS would be much faster than Ext2, and ReiserFS would run just about
as fast. Have any slashdot readers had experienced similar results
with these filesystems? Or have we simply overlooked a major factor
in our tests?"
"Here are the results (create, read, delete) in seconds:
- Ext2 (0.45, 0.093, 0.13)
- ReiserFS (2.5, 0.45, 0.94)
- XFS (6.4, 0.15, 7.1)
Note that ReiserFS (v3.6.25) and XFS (v1.0) are vastly slower than
Ext2 (v0.5b) in an identical configuration.
Since we can obtain these numbers consistently, we are wondering
why they deviate from various published results. We have ruled
out cache warm-up and disk-zone effects. All three file systems
were set up from scratch from a 6 GB disk partition."
ReiserFS (2.5, 0.45, 0.94)
XFS (6.4, 0.15, 7.1)
Hmmm, seems to me that the more time it spends on writes, the faster it reads... Notice a slight trend? Now, unplug the power. See which one comes up faster. No benchmark needed - you DON'T want to sit through a fsck run. Also, longer writes are a result of better indexing. Better indexing = bad ass read times, and in respectable proportion. (Of course, XFS COULD work on that delete time...)
SIG: HUP
Forgive me if any of this is mentioned inother responses, but...
First of all, the tests need to be Reiser, XFS, and *Ext3*. Journalling has an impact on performance, even if you're only jounalling the metadata.
Second of all, you should be testing the latest version of all of these against the latest kernels. 2.4.10 or new.
Third of all, one test doesn't show any real benchmarks. You need to test reads and writes of small and large files in differing directory structures. Also, testing should focus on the specific performance gains of each, as well as some real world tests. I believe Reiser does dynamic block allocation while ext generally relies on 4kb blocks (I can already see a number of tests on things like sparse files). Partially fragmented filesystem simulation would be beneficial, too (think "news server"). Yes, I know all the filesystems don't easily fragment, but if you fill a filesystem, then start removing some files and adding others, (especially removing small files and adding large ones), you _will_ get a chance to test it.
Finally, you should consider other filesystems. I think a very good comparison would be ext3, JFS, XFS, and Reiser vs. ext2. That would give you a valid baseline comparison. In addition, testing something like VFAT support under Linux might be interesting
I think this is a valiant effort, but there's a lot more which needs to be put into it to show any useful results.