JFS appears to be horribly inneficient with small files, especially on USB flash drives (I'm guessing this may have to do with the block sizes not lining up, or some regressions with older filesystems in the newer kernels). I threw out JFS halfway through my first test, when it took 6+ minutes to extract the 000-kernel.xzm module. This takes 40 seconds on EXT2, and 24 seconds on EXT4. The largest single file I transferred was the 300MB porteus ISO (I'm guessing multi GB transfers to a flash drive are rare for most users), and while JFS was somewhat faster with this file than EXT2, it was narrowly beaten by EXT4.
Here's some early results to whet your appetites (results from 64-bit)
Sorry, I can't seem to get these to line up better...
I have some naming conventions here that are a bit confusing-- EXT4-J is EXT4 with a Journal. EXT4-NJ is 'no journal'. XFS-DL is XFS mounted with the delaylog option (NOTE: I only ran one test with this option -- all other figures are the average result of 3 tests). BTRFS-AM is BTRFS mounted with the following options: rw,noatime,nodatasum,nodatacow,ssd_spread (standard BTRFS mount is only rw,noatime)
Sustained Write Speed (copy 300MB ISO), given in Megabytes per second (MB/s):
Code: Select all
NTFS FAT EXT2 EXT3 EXT4-J EXT4-NJ XFS XFS-DL REIS BTRFS BTRFS-AM
5.09 5.53 4.65 4.20 5.72 5.81 5.87 5.89 4.80 5.92 5.91
Sustained Read Speed (copy 300MB ISO back to RAM), MB/s:
Code: Select all
NTFS FAT EXT2 EXT3 EXT4-J EXT4-NJ XFS XFS-DL REIS BTRFS BTRFS-AM
17.65 17.81 17.64 17.82 17.05 17.39 17.84 17.83 17.66 18.56 18.61
Module Extraction Speed (extract 000-kernel.xzm module onto disk), MB/s:
Code: Select all
NTFS FAT EXT2 EXT3 EXT4-J EXT4-NJ XFS XFS-DL REIS BTRFS BTRFS-AM
1.48 1.59 1.85 1.94 3.07 3.17 3.20 3.54 3.55 4.33 4.63
Copy2RAM Speed (loop mount 000-kernel.xzm on disk and copy contents to RAM), MB/s:
Code: Select all
NTFS FAT EXT2 EXT3 EXT4-J EXT4-NJ XFS XFS-DL REIS BTRFS BTRFS-AM
22.96 13.28 20.11 23.20 23.19 23.00 23.39 23.54 22.94 18.01* 23.30
Module Compression Speed (compress contents of 000-kernel.xzm back into a module), MB/s:
Code: Select all
NTFS FAT EXT2 EXT3 EXT4-J EXT4-NJ XFS XFS-DL REIS BTRFS BTRFS-AM
1.22 0.66 1.02 1.24 1.16 1.14 1.22 1.18 1.14 0.95* 1.21
*NOTE: these two figures for BTRFS appear to be too low, I need to re-run one of my tests. The actual rates are closer to what is shown for BTRFS-AM. About one in six of my tests on the 64-bit platform come back with unusually low speeds. When this occurrs I throw out that data and run the test again, but I didn't see that I had one of these faulty tests for BTRFS until I put in in my spreadsheet and saw an unusually high standard deviation. I have yet to identify whether this is an issue with the OS or my hardware, but additional testing with another USB drive will help narrow this down.
Write many small files (Extract kernel source tarball located in RAM onto device), MB/s:
Code: Select all
NTFS FAT EXT2 EXT3 EXT4-J EXT4-NJ XFS XFS-DL REIS BTRFS BTRFS-AM
2.51 1.25 2.35 1.58 3.84 4.06 1.21 1.47 1.56 4.09 4.09
Read many small files (Copy the extracted kernel source files from the disk back to RAM), MB/s:
Code: Select all
NTFS FAT EXT2 EXT3 EXT4-J EXT4-NJ XFS XFS-DL REIS BTRFS BTRFS-AM
2.72 9.98 8.95 8.99 8.81 8.57 9.38 8.75 11.12 11.22 12.26