Random I/O and Sequential I/O Optimization
This section explains strategies for optimizing your configuration.
If you do not know if sequential I/O or random I/O predominates
on the Solaris Volume Manager volumes you are creating, do not implement these
performance tuning tips. These tips can degrade performance if the tips are improperly
implemented.
The following optimization suggestions assume that you are optimizing a RAID-0 volume. In
general, you would want to optimize a RAID-0 volume, then mirror that volume
to provide both optimal performance and data redundancy.
Random I/O
In a random I/O environment, such as an environment used for databases and
general-purpose file servers, all disks should spend equal amounts of time servicing I/O
requests.
For example, assume that you have 40 Gbytes of storage for a
database application. If you stripe across four 10 Gbyte disk spindles, and if
the I/O is random and evenly dispersed across the volume, then each of
the disks will be equally busy, which generally improves performance.
The target for maximum random I/O performance on a disk is 35
percent or lower usage, as reported by the iostat command. Disk use in excess
of 65 percent on a typical basis is a problem. Disk use
in excess of 90 percent is a significant problem. The solution to having
disk use values that are too high is to create a new RAID-0
volume with more disks (spindles).
Note - Simply attaching additional disks to an existing volume cannot improve performance. You must
create a new volume with the ideal parameters to optimize performance.
The interlace size of the stripe does not matter because you just
want to spread the data across all the disks. Any interlace value greater
than the typical I/O request will suffice.
Sequential Access I/O
You can optimize the performance of your configuration in a sequential I/O environment,
such as DBMS servers that are dominated by full table scans and NFS
servers in very data-intensive environments. To take advantage of a sequential I/O environment,
set the interlace value low relative to the size of the typical I/O
request.
For example, assume a typical I/O request size of 256 Kbytes and
striping across 4 spindles. A good choice for the stripe unit size in
this example would be:
256 Kbytes / 4 = 64 Kbytes, or smaller
This strategy ensures that the typical I/O request is spread across multiple disk
spindles, thus increasing the sequential bandwidth.
Note - Seek time and rotation time are practically zero in the sequential I/O environment.
When you optimize sequential I/O, the internal transfer rate of a disk is
most important.
In sequential applications, the typical I/O size is usually large, meaning more
than 128 Kbytes or even more than 1 Mbyte. Assume an application
with a typical I/O request size of 2 Mbytes and assume striping across
4 disk spindles, thus:
2048 Kbytes / 4 = 512 Kbytes
So, a good choice for the interlace size would be 256–512 Kbytes.