Hi. I started running some comparison benchmarks between ext3 and ext4 this week. During one torture test, I observed that ext4 unlink speed is much slower than ext3, and using 256-byte inodes makes it worse. The torture test consists of unpacking a large tarball consisting of a about 725,000 small files in random order and then recursively unlinking the extracted directory. The majority of the files in the archive are a single block, about 15% are span multiple blocks. The results: ext4 128 extract: 618.991 elapsed 54.903 user 81.789 sys 22.08% ext4 256 extract: 671.655 elapsed 55.099 user 74.593 sys 19.30% ext3 128 extract: 950.965 elapsed 55.155 user 77.473 sys 13.94% ext3 256 extract: 985.687 elapsed 55.591 user 94.698 sys 15.24% ext4 beats ext3 hands down, with either inode size. I would think that the 128 byte inode runs are faster than the 256 byte inode runs simply because of the number of small files involved. ext4 128 unlink: 913.934 elapsed 0.296 user 33.550 sys 3.70% ext4 256 unlink: 1507.696 elapsed 0.324 user 37.602 sys 2.51% ext3 128 unlink: 171.150 elapsed 0.244 user 23.825 sys 14.06% ext3 256 unlink: 360.073 elapsed 0.328 user 27.954 sys 7.85% Ouch. Why is ext4 so much slower than ext3 here, and why is there such a huge discrepancy between the different inode sizes? The filesystems were created with the stock options except for inode size and ^huge_file (for historical reasons when I was testing with older kernels). I tested this with Linus's git sources on x86_64 on IDE. 2.6.28-rc4 and 2.6.27 had similar performance. -- Bruce Guenter <bruce@xxxxxxxxxxxxxx> http://untroubled.org/
Attachment:
pgpy1yraLe6Yb.pgp
Description: PGP signature