Raidframe performance and WD Raptors

David Brownlee <[email protected]> Tue, 2 Aug 2005 14:52:13 +0100 (BST)
Newsgroups gmane.os.netbsd.devel.performance
Message-ID <[email protected]>
 	Looking at putting together a new machine with a pair of
 	fast SATA disks (WD raptors), and wanted to get a rough
 	feel for the optimal filesystem blocksize, type, and
 	raidframe stripe size, plus what the speed increase would
 	be compared to an older IDE disk and another SATA disk.

 	So, one small perl script which calls newfs on a filesystem,
 	mounts, extracts Openoffice distfile, umounts, remounts
 	removes, and then umounts later...

 	Timings included for an older IDE disk (ST315320A), standard
 	SATA disk (ST3200822AS), the two fast raptors (WD740GD),
 	and of course two variations on raidframe RAID1 on top of
 	the two raptors.

 	In each case the filesystems were tested with 4k-64k
 	blocksizes, ffs 1 & 2 (O1 and O2), and softdep, no mount
 	flags, and async.

 	My conclusion on this was to go with 16 blocksizes, ffsv2
 	(more for the faster fsck), softdep, and raidframe with
 	128 stripe sizes.

 	The test system is the latest netbsd-2 on an Athlon64 4000+
 	in an Asus A8V-deluxe motherboard with 128M of RAM. On some
 	of the 64k async tests I was able to trigger a lockup.  I
 	need to look at that more.

 	In case anyone else finds this interesting. Do not place
 	any value on the fact seconds are displayed to one decimal
 	place.

wd2 at atabus2 drive 0: <ST315320A>
wd2: drive supports 16-sector PIO transfers, LBA addressing
wd2: 14594 MB, 29651 cyl, 16 head, 63 sec, 512 bytes/sect x 29888820 sectors
wd2: 32-bit data port
wd2: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 4 (Ultra/66)
wd2(viaide1:0:0): using PIO mode 4, Ultra-DMA mode 4 (Ultra/66) (using DMA data transfers)

  4k-O2-softdep  newfs:4.8    tar:212.9  um:8.0    rm:182.1  um:0.1
  8k-O2-softdep  newfs:2.0    tar:192.4  um:9.1    rm:168.1  um:0.2
16k-O2-softdep  newfs:0.8    tar:153.9  um:4.5    rm:177.3  um:0.2
32k-O2-softdep  newfs:0.4    tar:153.5  um:2.3    rm:189.4  um:0.2
64k-O2-softdep  newfs:0.3    tar:592.0  um:2.1    rm:226.4  um:0.2
  4k-O1-softdep  newfs:28.5   tar:215.6  um:6.0    rm:167.5  um:0.1
  8k-O1-softdep  newfs:12.6   tar:173.6  um:4.5    rm:158.3  um:0.3
16k-O1-softdep  newfs:6.3    tar:146.8  um:5.6    rm:170.9  um:0.2
32k-O1-softdep  newfs:3.2    tar:148.3  um:3.9    rm:183.6  um:0.2
64k-O1-softdep  newfs:1.7    tar:199.2  um:1.7    rm:221.8  um:0.2
  4k-O2-         newfs:4.6    tar:291.0  um:4.7    rm:181.9  um:0.2
  8k-O2-         newfs:2.0    tar:257.1  um:3.5    rm:170.0  um:0.1
16k-O2-         newfs:0.8    tar:257.1  um:2.5    rm:178.6  um:0.1
32k-O2-         newfs:0.4    tar:291.0  um:2.1    rm:189.0  um:0.3
64k-O2-         newfs:0.3    tar:431.5  um:1.8    rm:227.7  um:0.2
  4k-O1-         newfs:28.5   tar:283.2  um:4.9    rm:167.9  um:0.3
  8k-O1-         newfs:12.7   tar:281.4  um:3.5    rm:159.9  um:0.1
16k-O1-         newfs:6.4    tar:274.1  um:2.5    rm:170.7  um:0.2
32k-O1-         newfs:3.2    tar:301.0  um:1.0    rm:184.7  um:0.2
64k-O1-         newfs:1.7    tar:431.1  um:1.4    rm:222.7  um:0.2
  4k-O2-async    newfs:4.6    tar:199.8  um:4.2    rm:182.4  um:0.3
  8k-O2-async    newfs:1.9    tar:162.4  um:3.4    rm:169.6  um:0.2
16k-O2-async    newfs:0.7    tar:132.0  um:2.3    rm:176.0  um:0.3
32k-O2-async    newfs:0.4    tar:116.3  um:2.3    rm:190.1  um:0.2
64k-O2-async    newfs:0.3    tar:221.7  um:2.0    rm:226.8  um:0.1
  4k-O1-async    newfs:28.4   tar:180.5  um:5.1    rm:165.6  um:0.2
  8k-O1-async    newfs:12.6   tar:151.8  um:3.8    rm:158.8  um:0.1
16k-O1-async    newfs:6.3    tar:136.6  um:2.5    rm:170.3  um:0.3
32k-O1-async    newfs:3.2    tar:123.2  um:2.1    rm:184.5  um:0.2
64k-O1-async    newfs:1.6    tar:265.3  um:2.4    rm:222.3  um:0.2
---------------------------------------------------------------------
wd1 at atabus1 drive 0: <ST3200822AS>
wd1: drive supports 16-sector PIO transfers, LBA48 addressing
wd1: 186 GB, 387621 cyl, 16 head, 63 sec, 512 bytes/sect x 390721968 sectors
wd1: 32-bit data port
wd1: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133)
wd1(viaide0:1:0): using PIO mode 4, Ultra-DMA mode 6 (Ultra/133) (using DMA data transfers)

  4k-O2-softdep  newfs:3.6    tar:141.6  um:5.0    rm:101.9  um:0.3
  8k-O2-softdep  newfs:1.2    tar:132.8  um:2.6    rm:95.4   um:0.3
16k-O2-softdep  newfs:0.5    tar:122.3  um:1.9    rm:99.5   um:0.2
32k-O2-softdep  newfs:0.3    tar:118.1  um:1.3    rm:111.2  um:0.3
64k-O2-softdep  newfs:0.4    tar:2624   um:1.3    rm:133.8  um:0.2
  4k-O1-softdep  newfs:14.7   tar:131.4  um:4.0    rm:97.1   um:0.2
  8k-O1-softdep  newfs:5.5    tar:116.9  um:5.6    rm:95.7   um:0.3
16k-O1-softdep  newfs:2.7    tar:121.1  um:2.9    rm:97.9   um:0.3
32k-O1-softdep  newfs:1.5    tar:132.8  um:2.0    rm:113.6  um:0.4
64k-O1-softdep  newfs:0.8    tar:167.0  um:1.2    rm:132.5  um:0.2
  4k-O2-         newfs:3.6    tar:232.6  um:3.2    rm:101.3  um:0.5
  8k-O2-         newfs:1.5    tar:220.5  um:1.8    rm:96.5   um:0.3
16k-O2-         newfs:0.5    tar:210.8  um:0.9    rm:98.4   um:0.5
32k-O2-         newfs:0.4    tar:216.4  um:0.6    rm:111.2  um:0.4
64k-O2-         newfs:0.2    tar:302.2  um:0.4    rm:131.6  um:0.3
  4k-O1-         newfs:14.9   tar:221.7  um:3.1    rm:98.7   um:0.2
  8k-O1-         newfs:5.4    tar:210.5  um:1.7    rm:94.4   um:0.3
16k-O1-         newfs:2.9    tar:201.3  um:1.3    rm:92.8   um:0.3
32k-O1-         newfs:1.4    tar:210.6  um:1.1    rm:109.3  um:0.3
64k-O1-         newfs:0.8    tar:297.1  um:0.9    rm:135.0  um:0.3
  4k-O2-async    newfs:3.5    tar:121.2  um:4.1    rm:102.4  um:0.4
  8k-O2-async    newfs:1.2    tar:118.1  um:3.1    rm:97.6   um:0.1
16k-O2-async    newfs:0.5    tar:90.9   um:1.9    rm:96.4   um:0.3
32k-O2-async    newfs:0.2    tar:73.4   um:1.6    rm:109.4  um:0.4
64k-O2-async    newfs:0.1    tar:185.6  um:1.5    rm:131.9  um:0.3
  4k-O1-async    newfs:14.5   tar:118.4  um:3.8    rm:99.6   um:0.3
  8k-O1-async    newfs:5.5    tar:105.1  um:2.5    rm:90.6   um:0.2
16k-O1-async    newfs:2.7    tar:86.6   um:2.2    rm:95.8   um:0.3
32k-O1-async    newfs:1.5    tar:100.1  um:1.7    rm:106.1  um:0.3
64k-O1-async    newfs:0.8    tar:229.3  um:1.5    rm:127.3  um:0.3
---------------------------------------------------------------------
wd0 at atabus0 drive 0: <WDC WD740GD-50FLC0>
wd0: drive supports 16-sector PIO transfers, LBA48 addressing
wd0: 70911 MB, 144073 cyl, 16 head, 63 sec, 512 bytes/sect x 145226112 sectors
wd0: 32-bit data port
wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133)
wd0(viaide0:0:0): using PIO mode 4, Ultra-DMA mode 6 (Ultra/133) (using DMA data transfers)

  4k-O2-softdep  newfs:2.6    tar:133.6  um:4.4    rm:75.7   um:0.8
  8k-O2-softdep  newfs:0.9    tar:75.6   um:3.7    rm:57.0   um:0.5
16k-O2-softdep  newfs:0.4    tar:81.4   um:2.9    rm:56.9   um:0.5
32k-O2-softdep  newfs:0.3    tar:59.1   um:2.6    rm:75.3   um:0.3
64k-O2-softdep  newfs:0.2    tar:190.4  um:1.3    rm:140.6  um:0.1
  4k-O1-softdep  newfs:10.4   tar:128.0  um:3.4    rm:66.1   um:0.8
  8k-O1-softdep  newfs:4.5    tar:71.6   um:2.6    rm:51.9   um:0.5
16k-O1-softdep  newfs:2.3    tar:57.9   um:2.3    rm:56.4   um:0.5
32k-O1-softdep  newfs:1.2    tar:58.4   um:2.2    rm:79.9   um:0.5
64k-O1-softdep  newfs:0.7    tar:82.8   um:5.3    rm:134.5  um:0.2
  4k-O2-         newfs:2.7    tar:146.2  um:0.6    rm:73.6   um:0.6
  8k-O2-         newfs:0.9    tar:88.7   um:1.4    rm:56.8   um:0.5
16k-O2-         newfs:0.4    tar:91.4   um:1.0    rm:53.9   um:0.6
32k-O2-         newfs:0.3    tar:146.3  um:0.6    rm:67.9   um:0.4
64k-O2-         newfs:0.2    tar:186.0  um:0.7    rm:146.4  um:0.2
  4k-O1-         newfs:10.3   tar:136.3  um:1.3    rm:66.3   um:0.7
  8k-O1-         newfs:4.5    tar:87.1   um:1.3    rm:53.0   um:0.5
16k-O1-         newfs:2.3    tar:98.5   um:0.9    rm:53.4   um:0.4
32k-O1-         newfs:1.2    tar:174.2  um:0.6    rm:75.2   um:0.2
64k-O1-         newfs:0.7    tar:188.8  um:0.6    rm:141.0  um:0.2
  4k-O2-async    newfs:2.7    tar:113.5  um:2.6    rm:74.7   um:0.6
  8k-O2-async    newfs:0.9    tar:62.0   um:1.4    rm:57.3   um:0.4
16k-O2-async    newfs:0.4    tar:45.9   um:1.0    rm:53.8   um:0.6
32k-O2-async    newfs:0.3    tar:36.7   um:0.9    rm:71.6   um:0.3
64k-O2-async    newfs:0.2    tar:92.4   um:0.7    rm:136.5  um:0.2
  4k-O1-async    newfs:10.3   tar:100.1  um:1.9    rm:66.4   um:0.6
  8k-O1-async    newfs:4.5    tar:67.3   um:1.5    rm:51.2   um:0.4
16k-O1-async    newfs:2.3    tar:47.1   um:0.9    rm:51.5   um:0.4
32k-O1-async    newfs:1.2    tar:33.8   um:1.0    rm:70.8   um:0.3
64k-O1-async    newfs:0.6    tar:119.9  um:1.0    rm:146.0  um:0.1
---------------------------------------------------------------------
wd1 at atabus1 drive 0: <WDC WD740GD-00FLC0>
wd1: drive supports 16-sector PIO transfers, LBA48 addressing
wd1: 70911 MB, 144073 cyl, 16 head, 63 sec, 512 bytes/sect x 145226112 sectors
wd1: 32-bit data port
wd1: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133)
wd1(viaide0:1:0): using PIO mode 4, Ultra-DMA mode 6 (Ultra/133) (using DMA data transfers)

  4k-O2-softdep  newfs:2.3    tar:126.9  um:5.2    rm:71.3   um:0.6
  8k-O2-softdep  newfs:0.8    tar:69.5   um:4.5    rm:55.2   um:0.5
16k-O2-softdep  newfs:0.4    tar:59.1   um:2.0    rm:57.8   um:0.3
32k-O2-softdep  newfs:0.2    tar:66.2   um:0.6    rm:70.4   um:0.3
64k-O2-softdep  newfs:0.2    tar:659.2  um:0.9    rm:143.1  um:0.1
  4k-O1-softdep  newfs:10.2   tar:113.8  um:4.7    rm:64.3   um:0.5
  8k-O1-softdep  newfs:4.3    tar:69.5   um:4.8    rm:51.4   um:0.5
16k-O1-softdep  newfs:2.3    tar:55.9   um:2.8    rm:54.3   um:0.4
32k-O1-softdep  newfs:1.2    tar:59.4   um:2.6    rm:71.7   um:0.3
64k-O1-softdep  newfs:0.6    tar:86.8   um:1.1    rm:138.5  um:0.1
  4k-O2-         newfs:2.4    tar:140.3  um:1.8    rm:71.7   um:0.7
  8k-O2-         newfs:0.8    tar:85.3   um:1.3    rm:55.0   um:0.4
16k-O2-         newfs:0.4    tar:89.5   um:0.7    rm:51.7   um:0.3
32k-O2-         newfs:0.3    tar:136.9  um:0.7    rm:71.8   um:0.3
64k-O2-         newfs:0.2    tar:186.1  um:0.3    rm:143.2  um:0.2
  4k-O1-         newfs:10.2   tar:129.7  um:1.7    rm:64.4   um:0.7
  8k-O1-         newfs:4.4    tar:84.6   um:1.2    rm:50.3   um:0.4
16k-O1-         newfs:2.3    tar:94.3   um:0.8    rm:54.1   um:0.4
32k-O1-         newfs:1.2    tar:159.7  um:0.7    rm:73.3   um:0.2
64k-O1-         newfs:0.6    tar:181.3  um:0.6    rm:140.5  um:0.1
  4k-O2-async    newfs:2.5    tar:110.1  um:1.7    rm:71.6   um:0.6
  8k-O2-async    newfs:0.8    tar:59.4   um:1.0    rm:54.4   um:0.4
16k-O2-async    newfs:0.4    tar:45.9   um:0.7    rm:53.6   um:0.4
32k-O2-async    newfs:0.3    tar:36.3   um:0.9    rm:68.2   um:0.3
64k-O2-async    newfs:0.2    tar:62.6   um:0.7    rm:144.6  um:0.2
  4k-O1-async    newfs:10.2   tar:94.2   um:1.7    rm:64.9   um:0.6
  8k-O1-async    newfs:4.3    tar:77.1   um:1.5    rm:51.5   um:0.5
16k-O1-async    newfs:2.3    tar:42.7   um:0.8    rm:55.4   um:0.4
32k-O1-async    newfs:1.2    tar:41.6   um:0.8    rm:80.6   um:0.2
64k-O1-async    newfs:0.7    tar:142.7  um:0.9    rm:136.4  um:0.2
---------------------------------------------------------------------
Using both disks from WD740GD-0 and WD740GD-1, raidframe RAID1,
128 sectors per stripe

  4k-O2-softdep  newfs:2.2    tar:198.9  um:9.5    rm:106.9  um:0.9
  8k-O2-softdep  newfs:0.6    tar:98.3   um:6.5    rm:67.6   um:0.5
16k-O2-softdep  newfs:0.3    tar:79.8   um:2.9    rm:67.8   um:0.3
32k-O2-softdep  newfs:0.2    tar:84.6   um:1.5    rm:119.8  um:0.0
64k-O2-softdep  newfs:0.1    tar:964.7  um:2.2    rm:190.3  um:0.1
  4k-O1-softdep  newfs:10.3   tar:168.0  um:7.9    rm:123.0  um:0.0
  8k-O1-softdep  newfs:4.3    tar:89.2   um:7.0    rm:61.9   um:0.0
16k-O1-softdep  newfs:2.2    tar:77.5   um:6.2    rm:114.2  um:0.0
32k-O1-softdep  newfs:1.2    tar:70.3   um:5.5    rm:148.4  um:0.0
64k-O1-softdep  newfs:0.6    tar:108.1  um:3.7    rm:155.0  um:0.0
  4k-O2-         newfs:2.2    tar:280.1  um:3.5    rm:129.5  um:0.3
  8k-O2-         newfs:0.7    tar:138.3  um:1.8    rm:68.0   um:0.1
16k-O2-         newfs:0.2    tar:115.7  um:1.9    rm:66.6   um:0.2
32k-O2-         newfs:0.1    tar:164.0  um:0.6    rm:98.6   um:0.1
64k-O2-         newfs:0.1    tar:233.8  um:0.9    rm:172.1  um:0.0
  4k-O1-         newfs:10.2   tar:302.7  um:4.6    rm:122.8  um:0.6
  8k-O1-         newfs:4.5    tar:137.8  um:2.5    rm:61.0   um:0.0
16k-O1-         newfs:2.5    tar:133.2  um:1.9    rm:109.9  um:0.0
32k-O1-         newfs:1.2    tar:211.5  um:1.5    rm:177.5  um:0.0
64k-O1-         newfs:0.6    tar:240.1  um:1.2    rm:159.6  um:0.0
  4k-O2-async    newfs:2.2    tar:144.2  um:4.8    rm:129.7  um:0.1
  8k-O2-async    newfs:0.7    tar:74.7   um:3.0    rm:67.7   um:0.2
16k-O2-async    newfs:0.3    tar:57.7   um:1.4    rm:65.4   um:0.2
32k-O2-async    newfs:0.1    tar:45.2   um:1.2    rm:111.6  um:0.0
64k-O2-async    newfs:0.1    tar:72.4   um:0.6    rm:171.9  um:0.0
  4k-O1-async    newfs:10.2   tar:122.3  um:7.3    rm:120.3  um:0.1
  8k-O1-async    newfs:4.6    tar:68.4   um:3.8    rm:59.3   um:0.0
16k-O1-async    newfs:2.5    tar:53.8   um:2.7    rm:69.1   um:0.0
32k-O1-async    newfs:1.2    tar:42.8   um:2.4    rm:131.8  um:0.0
64k-O1-async    newfs:0.6    tar:71.8   um:1.7    rm:158.1  um:0.0
---------------------------------------------------------------------
Using both disks from WD740GD-0 and WD740GD-1, raidframe RAID1,
64 sectors per stripe

  4k-O2-softdep  newfs:2.2    tar:189.8  um:6.9    rm:107.9  um:0.3
  8k-O2-softdep  newfs:0.6    tar:99.8   um:3.8    rm:69.3   um:0.4
16k-O2-softdep  newfs:0.2    tar:82.8   um:1.5    rm:66.3   um:0.0
32k-O2-softdep  newfs:0.1    tar:89.4   um:1.0    rm:104.7  um:0.1
64k-O2-softdep  newfs:0.1    tar:104.8  um:1.4    rm:258.7  um:0.1
  4k-O1-softdep  newfs:10.5   tar:168.0  um:8.0    rm:129.8  um:0.1
  8k-O1-softdep  newfs:4.5    tar:95.5   um:3.6    rm:63.8   um:0.2
16k-O1-softdep  newfs:2.4    tar:73.8   um:4.6    rm:102.4  um:0.1
32k-O1-softdep  newfs:1.2    tar:71.8   um:5.0    rm:144.7  um:0.0
64k-O1-softdep  newfs:0.5    tar:103.9  um:4.2    rm:265.9  um:0.0
  4k-O2-         newfs:2.3    tar:269.2  um:3.3    rm:108.6  um:0.1
  8k-O2-         newfs:0.6    tar:122.7  um:2.0    rm:70.0   um:0.1
16k-O2-         newfs:0.3    tar:120.5  um:2.1    rm:62.9   um:0.1
32k-O2-         newfs:0.1    tar:160.6  um:1.8    rm:122.9  um:0.1
64k-O2-         newfs:0.1    tar:236.1  um:1.2    rm:253.1  um:0.0
  4k-O1-         newfs:10.8   tar:305.8  um:4.9    rm:138.4  um:0.0
  8k-O1-         newfs:4.4    tar:153.6  um:2.4    rm:64.6   um:0.1
16k-O1-         newfs:2.4    tar:121.9  um:1.5    rm:71.5   um:0.1
32k-O1-         newfs:1.1    tar:229.7  um:1.6    rm:123.6  um:0.0
64k-O1-         newfs:0.6    tar:250.7  um:0.4    rm:264.0  um:0.0
  4k-O2-async    newfs:2.3    tar:142.7  um:5.7    rm:116.3  um:0.1
  8k-O2-async    newfs:0.7    tar:75.2   um:3.2    rm:69.5   um:0.4
16k-O2-async    newfs:0.3    tar:56.7   um:2.3    rm:61.8   um:0.3
32k-O2-async    newfs:0.1    tar:45.6   um:2.0    rm:123.7  um:0.1
64k-O2-async    newfs:0.1    tar:86.1   um:1.4    rm:257.5  um:0.1
  4k-O1-async    newfs:10.9   tar:125.2  um:8.5    rm:130.6  um:0.1
  8k-O1-async    newfs:4.6    tar:69.0   um:3.9    rm:64.6   um:0.0
16k-O1-async    newfs:2.4    tar:53.6   um:3.0    rm:112.8  um:0.0
32k-O1-async    newfs:1.2    tar:43.5   um:2.5    rm:126.6  um:0.0
64k-O1-async    newfs:0.6    tar:56.7   um:1.9    rm:264.6  um:0.0
---------------------------------------------------------------------

-- 
 			   David Brownlee -- [email protected]
disktest (text/plain, 1.4 KB)
#!/usr/pkg/bin/perl

use Time::HiRes qw(time);

my @blocksizes = qw(4 8 16 32 64);
my @fstypes = qw(2 1);
my @mountopts = ('softdep', '', 'async');

if (@ARGV != 1)
    {
    print "Usage: disktest partition\n";
    exit 1;
    }

my $tarfile = 'OOo_1.1.4_source.tar.gz';
my $disk = $ARGV[0];
$disk =~ s#/dev/##;

system('umount -f /mnt > /dev/null');

foreach my $mountopt (@mountopts)
    {
    foreach my $fstype (@fstypes)
	{
	foreach my $blocksize (@blocksizes)
	    {
	    printf("%2dk-O$fstype-%-7s ", $blocksize, $mountopt);
	    time_cmd("newfs -O $fstype -b ".($blocksize*1024)." /dev/r$disk");
	    if ($mountopt)
		{ system("mount -o $mountopt /dev/$disk /mnt"); }
	    else
		{ system("mount /dev/$disk /mnt"); }
	    chdir('/mnt');
	    time_cmd("tar xzpf $tarfile");
	    chdir('/');
	    time_cmd('umount /mnt');
	    system("mount /dev/$disk /mnt");
	    time_cmd('rm -rf /mnt/*');
	    time_cmd('umount /mnt');
	    print "\n";
	    }
	}
    }

sub time_cmd
    {
    my($cmd) = @_;
    my $name = $cmd;
    $name =~ s/ .*//;
    if ($name eq 'umount')
	{ $name = 'um'; }
    print " $name:";
    my $start = time;
    open(CMD, "$cmd|");
    my @output = <CMD>;
    close(CMD);
    my $elapsed = time - $start;
    if ($?)
	{ print @output; }
    if ($elapsed >= 1000)
	{ printf("%-5d ", $elapsed); }
    else
	{ printf("%-5.1f ", $elapsed); }
    }