[CentOS] Serial ATA hardware raid.

Sun Apr 17 04:16:54 UTC 2005
Bryan J. Smith <b.j.smith@ieee.org> <thebs413 at earthlink.net>

From: Harald Finn�s <spamcatcher at lantrix.no>
> If memory serves, I had the worst performance on aa 7506-8 running R5 and 
> MDK 10.1. Write performance was extremenly slow, so the box would use all 
> memory for cache almost immidiately. This resulted in very high CPU, and 
> the machine became unresponsive. After applying:
> sysctl -w "vm.bdflush=0 500 0 0 500 3000 0 20 0"
> it was back to normal. This works with 2.4 kernels only.

Correct, because the Linux kernel is tuned to assume the storage does NOT provide I/O queuing.
As I stated in another e-mail, the Linux kernel does async I/O by default.
Some cards, like the 3Ware, try to sync I/O as best as it can for safety.
This hurts performance quite a bit -- especially on the 9000 series.

The 9000 series now introduces DRAM, and by default, isn't battery backed on the 9000 (the kits just became available), hence the defaults that are very "sync-like."
I _highly_recommend_ you change those defaults (and get the kit too).

All prior 3Ware cards are SRAM-only, which does not require an external battery source.
DRAM is a leaky cell that uses 100x+ the power of SRAM, which is a complex, combinational circuit.
That's why prior 3Ware cards didn't need external battery, they use SRAM.
You can typically cycle power and the 3Ware write cache will be flushed (at least on the 7000/8000 series).

> With 2.6 this improves performance:
> blockdev --setra 16384 /dev/sda
> I'm pretty sure I found both these setting in the 3ware knowledgebase.

So many people don't hit the 3Ware knowledge base.
You should *ALWAYS* hit the knowledge base of your intelligent card vendor.

Remember, the Linux kernel is tuned to assume storage controllers unintelligent and have *0* I/O queuing capability.
Hence why LVM/MD is "tuned out of the box" with Linux.
Furthermore, the SCSI-2 protocol provides standard command-sets for I/O queuing for SCSI cards,
as well as Intel's I2O (dpt_i2o).

But when you have a "generic" SCSI block driver, like with 3Ware and many others (including the DAC_960 for a few older Mylex cards),
you need to tell the kernel's VM and block interface how to best stages writes and other operations.

Bryan J. Smith   mailto:b.j.smith at ieee.org