Monday, May 28, 2012

Filesystem Speed Tests


This was a precursor to my Encrypted Filesystem Test, to check the effects of filesystem operations on CPU. After reading a couple of very good articles here and here(Which seem to conclude to use either JFS or XFS). I decided to do my own benchmarking specifically geared towards CPU utilization. While not terribly rigorous it did seem to pretty much follow their findings. The results below are from an average of 3 runs per each type of test. Also I didn't try Reiser4 but instead included FAT ;)


Copying between drives:
  • ext2 = 16s
  • ext3 = 11s
  • jfs = 14s
  • xfs = 8s
  • fat = 18.2s
  • reiser = 8.5s
  • Winner = xfs

CPU usage after the copying:
  • ext2 = 1m 23s
  • ext3 = 1m 27s
  • jfs = 1m 13s
  • xfs = 1m 24s
  • fat = 1m 19.5s
  • reiser = 1m 29.6s
  • Winner = jfs

Copying a file to same drive:
  • ext2 = 12s
  • ext3 = 13.5s
  • jfs = 20.6s
  • xfs = 11s
  • fat = 18s
  • reiser = 2.5s
  • Winner = reiser

Removing data
  • ext2 = 0.21s
  • ext3 = 0.20s
  • jfs = 0.19s
  • xfs = 0.22s
  • fat = 0.57s
  • reiser = 1.78
  • Winner = jfs

CpuProg time during copying:
  • ext2 = 1m 36s
  • ext3 = 1m 37s
  • jfs = 1m 25s
  • xfs = 1m 30s
  • fat = 1m 37s
  • reiser = 1m 36.5s
  • Winner = jfs

Copy time with CpuProg running:
  • ext2 = 16.5s
  • ext3 = 15s
  • jfs = 17.87s
  • xfs = 16s
  • fat = 19s
  • reiser = 12.1s
  • Winner = xfs/reiser

Total to run benchmark tests:
  • ext2 = 5m 5.5s
  • ext3 = 5m 7s
  • jfs = 4m 49.5s
  • xfs = 4m 44s
  • fat = 5m 11.5s
  • reiser = 4m 55.5s
  • Winner = xfs


The program to run the cpu just made a huge 2D array and copied back and forth. Alone without any disk activity before or during it took almost exactly 1m 4s each run. Also it may seem odd to check the CPU reduction after the copying was complete, but in practice this always seems to be where the most activity occurs(Probably due to buffered IO delaying the actual work). Another weird thing was removing files(Which granted was too small a set), that most had times under a tenth second consistently(And an outlier), except for FAT which always had times over half a second. In conclusion I think I'm going to use xfs, although it's a little worse on CPU than jfs it does seem to noticably copy faster. Also FAT was worse in about every aspect compared to any other system, couple that with external fragmentation and I can't imagine using it for anything but compatibility reasons.


ReiserFS deserves it's own section due to it's bizarre nature. All the others were very consistent between runs with usually around a second difference in results, but Reiser was completely random, sometimes a copy would take half a second, other times 30 seconds...I could find no rhyme or reason to why(i.e. not the first time was slow and the rest faster or any pattern). Overall though it was usually slower than most of the others. Especially on removing things it was incredibly slow compared to even FAT. Also the copy time with cpuProg running I put xfs/reiser because reiser was much slower usually but always had a couple ridiculously fast runs(Fractions of a second) that made the average low.

No comments: