I wanted to find out which format was the speediest for large file support. So I found a benchmarking utility called Bonnie++ and ran some tests on my new harddrive. A Western Digital 120gig 7200 rpm special edition with the 8meg cache.
I figured that I might as well document the tests and post it here so that anyone who cares can see the results.
hdparm -i /dev/hda
Model=WDC WD1200JB-00DUA3, FwRev=75.13B75, SerialNo=WD-WMACM1759228
Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
RawCHS=16383/16/63, TrkSize=57600, SectSize=600, ECCbytes=74
BuffType=DualPortCache, BuffSize=8192kB, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=234441648
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
AdvancedPM=no WriteCache=enabled
Drive conforms to: device does not report version: 1 2 3 4 5 6
hdparm /dev/hda
/dev/hda:
multcount = 16 (on)
IO_support = 1 (32-bit)
unmaskirq = 1 (on)
using_dma = 1 (on)
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 14593/255/63, sectors = 234441648, start = 0
hdparm -tT /dev/hda
/dev/hda:
Timing buffer-cache reads: 128 MB in 0.33 seconds =387.88 MB/sec
Timing buffered disk reads: 64 MB in 1.36 seconds = 47.06 MB/sec
The rest of the system is a 1700+ amd thunderbird overclocked to 1837mhz running on a nforce2 motherboard at a 166mhz bus. 512Megs of ram, but with 32 megs shared with the on-board video.
The OS is Slackware 9.0 and using tools that came with the distro exept for the bonnie benchmark. The kernel is 2.4.22 vanilla that I reconfigured to fit my hardware. The xfs patch was applied to it, but that was after all the other tests were run.
bonnie++ benchmarking 10 3g files (actually three 1 gig files put together each)
regular ext3
Version 1.03_______------Sequential Output------ --Sequential Input- --Random-
____________________-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine________Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
marvin___________3G 20581 98 46242 23 20777 7 28266 95 44182 8 112.0 0
____________________------Sequential Create------ --------Random Create--------
____________________-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
______________files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
_________________10 3158 99 +++++ +++ +++++ +++ 2951 99 +++++ +++ 10545 99
ext3 mounted -o noatime -o data=writeback
Version 1.03_______------Sequential Output------ --Sequential Input- --Random-
____________________-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine________Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
marvin___________3G 20504 96 48124 22 20888 6 28350 93 44272 7 117.0 0
____________________------Sequential Create------ --------Random Create--------
____________________-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
______________files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
_________________10 3210 98 +++++ +++ +++++ +++ 2521 99 +++++ +++ 11203 99
reiserfs mounted -o notail
Version 1.03_______------Sequential Output------ --Sequential Input- --Random-
____________________-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine________Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
marvin___________3G 20221 96 46831 22 20766 7 27814 93 43839 9 114.6 0
____________________------Sequential Create------ --------Random Create--------
____________________-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
______________files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
_________________10 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
Jfs
Version 1.03_______------Sequential Output------ --Sequential Input- --Random-
____________________-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine________Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
marvin___________3G 14791 66 44636 11 21526 5 28743 96 48847 8 114.6 0
____________________------Sequential Create------ --------Random Create--------
____________________-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
______________files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
_________________10 8098 25 +++++ +++ 4606 9 5421 40 +++++ +++ 4440 19
ext2
Version 1.03_______------Sequential Output------ --Sequential Input- --Random-
____________________-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine________Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
marvin___________3G 21526 97 50184 10 21193 5 28225 94 44267 7 116.1 0
____________________------Sequential Create------ --------Random Create--------
____________________-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
______________files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
_________________10 6810 100 +++++ +++ +++++ +++ 6951 99 +++++ +++ 16839 98
xfs
Version 1.03_______------Sequential Output------ --Sequential Input- --Random-
____________________-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine________Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
marvin___________3G 24898 98 49965 11 22281 6 28762 96 48878 8 117.7 0
____________________------Sequential Create------ --------Random Create--------
____________________-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
______________files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
_________________10 3134 20 +++++ +++ 2905 21 3081 23 +++++ +++ 1369 10
Looks to me that XFS is the winner here in terms of performance. Which is cool since I like xfs.
I guess this shouldn't be to suprising since it was orginally designed by SGI for their Unix workstations, which are commonally used in high-end graphics and digital rendering/editing.
One thing that is interesting is that the high cpu utilization when writing certain types of files to the IDE harddrive.
I ran the postmark benchmark, too. but that was unable to deal with files much larger then 100 megs, so it wasn't much use to me. In that test ext2 came out on top for small file handling speed. However I doubt I would use it since even though the journalling adds overhead the decrease in performance is very slight and the benifits far out way the slight difference in performance.
I figured that I might as well document the tests and post it here so that anyone who cares can see the results.
hdparm -i /dev/hda
Model=WDC WD1200JB-00DUA3, FwRev=75.13B75, SerialNo=WD-WMACM1759228
Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
RawCHS=16383/16/63, TrkSize=57600, SectSize=600, ECCbytes=74
BuffType=DualPortCache, BuffSize=8192kB, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=234441648
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
AdvancedPM=no WriteCache=enabled
Drive conforms to: device does not report version: 1 2 3 4 5 6
hdparm /dev/hda
/dev/hda:
multcount = 16 (on)
IO_support = 1 (32-bit)
unmaskirq = 1 (on)
using_dma = 1 (on)
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 14593/255/63, sectors = 234441648, start = 0
hdparm -tT /dev/hda
/dev/hda:
Timing buffer-cache reads: 128 MB in 0.33 seconds =387.88 MB/sec
Timing buffered disk reads: 64 MB in 1.36 seconds = 47.06 MB/sec
The rest of the system is a 1700+ amd thunderbird overclocked to 1837mhz running on a nforce2 motherboard at a 166mhz bus. 512Megs of ram, but with 32 megs shared with the on-board video.
The OS is Slackware 9.0 and using tools that came with the distro exept for the bonnie benchmark. The kernel is 2.4.22 vanilla that I reconfigured to fit my hardware. The xfs patch was applied to it, but that was after all the other tests were run.
bonnie++ benchmarking 10 3g files (actually three 1 gig files put together each)
regular ext3
Version 1.03_______------Sequential Output------ --Sequential Input- --Random-
____________________-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine________Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
marvin___________3G 20581 98 46242 23 20777 7 28266 95 44182 8 112.0 0
____________________------Sequential Create------ --------Random Create--------
____________________-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
______________files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
_________________10 3158 99 +++++ +++ +++++ +++ 2951 99 +++++ +++ 10545 99
ext3 mounted -o noatime -o data=writeback
Version 1.03_______------Sequential Output------ --Sequential Input- --Random-
____________________-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine________Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
marvin___________3G 20504 96 48124 22 20888 6 28350 93 44272 7 117.0 0
____________________------Sequential Create------ --------Random Create--------
____________________-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
______________files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
_________________10 3210 98 +++++ +++ +++++ +++ 2521 99 +++++ +++ 11203 99
reiserfs mounted -o notail
Version 1.03_______------Sequential Output------ --Sequential Input- --Random-
____________________-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine________Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
marvin___________3G 20221 96 46831 22 20766 7 27814 93 43839 9 114.6 0
____________________------Sequential Create------ --------Random Create--------
____________________-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
______________files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
_________________10 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
Jfs
Version 1.03_______------Sequential Output------ --Sequential Input- --Random-
____________________-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine________Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
marvin___________3G 14791 66 44636 11 21526 5 28743 96 48847 8 114.6 0
____________________------Sequential Create------ --------Random Create--------
____________________-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
______________files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
_________________10 8098 25 +++++ +++ 4606 9 5421 40 +++++ +++ 4440 19
ext2
Version 1.03_______------Sequential Output------ --Sequential Input- --Random-
____________________-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine________Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
marvin___________3G 21526 97 50184 10 21193 5 28225 94 44267 7 116.1 0
____________________------Sequential Create------ --------Random Create--------
____________________-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
______________files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
_________________10 6810 100 +++++ +++ +++++ +++ 6951 99 +++++ +++ 16839 98
xfs
Version 1.03_______------Sequential Output------ --Sequential Input- --Random-
____________________-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine________Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
marvin___________3G 24898 98 49965 11 22281 6 28762 96 48878 8 117.7 0
____________________------Sequential Create------ --------Random Create--------
____________________-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
______________files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
_________________10 3134 20 +++++ +++ 2905 21 3081 23 +++++ +++ 1369 10
Looks to me that XFS is the winner here in terms of performance. Which is cool since I like xfs.
One thing that is interesting is that the high cpu utilization when writing certain types of files to the IDE harddrive.
I ran the postmark benchmark, too. but that was unable to deal with files much larger then 100 megs, so it wasn't much use to me. In that test ext2 came out on top for small file handling speed. However I doubt I would use it since even though the journalling adds overhead the decrease in performance is very slight and the benifits far out way the slight difference in performance.
