Date: Wed, 11 Nov 1998 11:32:15 -0800 (PST) From: Matthew Dillon <dillon@apollo.backplane.com> To: Martin Cracauer <cracauer@cons.org> Cc: =?iso-8859-1?Q?S=F8ren_Schmidt?= <sos@freebsd.dk>, Martin Cracauer <cracauer@cons.org>, john@isi.co.jp, grog@lemis.com, hackers@FreeBSD.ORG, mike@smith.net.au, ticso@cicely.de Subject: Re: SCSI vs. DMA33.. Message-ID: <199811111932.LAA22898@apollo.backplane.com> References: <19981111164136.A29513@cons.org> <199811111730.SAA01133@freebsd.dk> <19981111184459.A10448@cons.org>
next in thread | previous in thread | raw e-mail | index | archive | help
:What means "work"? I get a functional ccd filessystem over 4 :drives/4channels/2cards, so far so good. : :But while the throughput is raised when striping over different cards, :it isn't when striping over two channels on the same card. Or in other :words, the maximum thoughput for a :(2x) 4-drive, 4-channel, 2-card ccd is the same as for a :(2x) 2-drive, 2-channel, 2-card array, while :(1x) 2-drive, 2-channel, 1-card is excatly the same as for :(1x) 1-drive, 1-channel, 1-card. : :Hence my impression I can't use the two channels on one card :simultaneously. Is this really different for you? Do you have the :promise BIOS prom installed? : :Thanks for the fix, BTW, does this fix the IDE timeouts I see when :striping over 4 drives? : :Martin :-- You guys are all doing something wrong. First, everyone is using tiny dd's to test. Second, one SCSI channel is plenty sufficient to drive huge transfer rates through a 4-drive ccd stripe as I will demonstrate with our backup1 machine. Third, raw devices impose serialization limits and throughput depends heavily on the number of processes accessing the device. i.e. you can't pipeline to or from a raw device. Test it through the filesystem and read and write a lot of data to get around caches. Here are some tests I did with BEST's backup1 machine. It has a 36 GB 4xDisk stripe for a tape buffer. PPro 200. 4 x 9G drive (three Seagate ST19171W, 7200 RPM drives and one ST39173W 3600 rpm drive). All drives are connected to *ONE* SCSI ultra-wide controller (one 40 MBytes/sec SCSI bus). The tape units are connected to a second controller which is unused for all the tests below. CCD: 128 sector (64 KByte) interleave across four drives. And this is FreeBSD-stable, too, without CAM. Test #1: read raw device, 64K blocks, 256 MBytes total: backup1:/# dd if=/dev/rccd0d of=/dev/null bs=64k count=4096 268435456 bytes transferred in 8.617552 secs (31149851 bytes/sec) 31 MBytes/sec transfer rate. Because the disk does its own internal read-ahead. Test #2: write raw device, 64K blocks, 64 MBytes total: backup1:/# dd if=/dev/zero of=/dev/rccd0d bs=64k count=1024 67108864 bytes transferred in 12.152601 secs (5522181 bytes/sec) 5.5 MBytes/sec, because the OS/disk doesn't cache writes through the raw device. Test #3: write raw device, 64K blocks, 64 MBytes total, 4 dd's in parallel each doing 64 MBytes. foreach? dd if=/dev/zero of=/dev/rccd0d bs=64k count=1024 seek=$i & foreach? end [1] 8465 [2] 8466 [3] 8467 [4] 8468 67108864 bytes transferred in 22.503316 secs (2982177 bytes/sec) 67108864 bytes transferred in 22.510251 secs (2981258 bytes/sec) 67108864 bytes transferred in 22.529739 secs (2978679 bytes/sec) 67108864 bytes transferred in 22.542779 secs (2976956 bytes/sec) 12 MBytes/sec, again because the OS/disk doesn't cache writes through the raw device. Test #4: filesystem throughput. 1 GByte total, write 64K blocks newfs -i 32768 /dev/rccd0d backup1:/ccd# dd if=/dev/zero of=/ccd/test1 bs=64k count=16384 1073741824 bytes transferred in 41.744593 secs (25721698 bytes/sec) 25 MBytes/sec writing. <--------------- write FS throughput No chance of the OS or drive getting cache hits here, I'm writing a friggin gigabyte file! Test #5: filesystem throughput. 1 GByte total, read 64K blocks backup1:/ccd# dd if=/ccd/test1 of=/dev/null bs=64k count=16384 1073741824 bytes transferred in 34.051957 secs (31532456 bytes/sec) 31 MBytes/sec reading. <-------------- read FS throughput No chance of the OS or drive getting cache hits here, I'm reading a friggin gigabyte file! That's with *ONE* SCSI controller. An adaptec 2940UW. This is one of several reasons why you use SCSI if you need performance. You can't beat it for linear performance, and you can beat it for transactional performance either. If you have just one drive then sure, IDE will have similar linear performance. If you have two drives you may even see similar linear performance reading, but I would guess that you wouldn't see it writing. If you have several drives, SCSI beats the shit out of IDE reading and writing. For non-linear performance under load, the one-drive case will again yield similar results SCSI vs IDE. But the moment you start trying to random read two IDE devices on a single IDE controller, SCSI instantly scales to the two drives while the two IDE devices will not perform much better then one. After that, IDE goes into the shitpile for non-linear performance tests due to its command serialization. A SCSI bus with 4 drives on it will scale 4x for non-linear performance. Two IDE busses with 4 drives total will only scale 2x for non-linear performance. A SCSI bus with 8 drives on it will scale 8x for non-linear performance. I need non-linear performance on my web servers. My tape backup machine needs linear performance on the disk buffer since it is throwing multi-gigabyte files all over the place. A mail partition typically needs linear performance as well... gotta be able to copy those 20 MByte pop boxes :-). -Matt Matthew Dillon Engineering, HiWay Technologies, Inc. & BEST Internet Communications & God knows what else. <dillon@backplane.com> (Please include original email in any response) To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199811111932.LAA22898>