Date: Fri, 12 Oct 2001 17:54:38 -0600 From: "Justin T. Gibbs" <gibbs@scsiguy.com> To: Mike Smith <msmith@FreeBSD.ORG> Cc: Scott Long <scott_long@btc.adaptec.com>, Alexey Koptsevich <alex@astro.su.se>, scsi@FreeBSD.ORG, msmith@mass.dis.org Subject: Re: Adaptec 3210S: RAID5 performance and bus throughput Message-ID: <200110122354.f9CNscY23560@aslan.scsiguy.com> In-Reply-To: Your message of "Fri, 12 Oct 2001 16:37:30 PDT." <200110122337.f9CNbUk05018@mass.dis.org>
next in thread | previous in thread | raw e-mail | index | archive | help
>> >> RAID5 read performance will be almost identical to RAID0 read performance. >> Write performace will be considerably less because it involves more than >> just writing to one disk; if you are writing a piece of data that is less >> than the size of a full stripe, you will also have to read the parity >> disk, compute the parity, and then write out the data plus the parity. > >This is (often but not always) correct, but misleading. > >RAID5 parity is typically byte-parallel, ie. if you have N disks and >you are writing one byte, you only actually *need* to read N-1 bytes >(one from each of the disks to which you are not writing) to compute >the parity, and write 2 bytes. For small writes, you read the blocks you are about to overwrite and the old parity block, XOR the old data into the parity data, XOR the new data into the parity, and finally write both the parity and the new data out. In otherwords, you need only read from the parity disk and those disks in the stripe that will be modified. Of course, if the number of disks to be modified is greater than the disks left unmodified, it is an optimization to just fully recalculate the parity by reading only from the unmodified members as you show above. -- Justin To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-scsi" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200110122354.f9CNscY23560>
