Cache memory is an area of temporary volatile storage
on the controller that has a faster access time than the drive media.
With caching, overall I/O performance can be increased as follows:
Data requested from
the host for a read might already be in the cache from a previous
operation, thus eliminating the need for drive access.
Write data is written
initially to the cache, which frees the application to continue instead
of waiting for the data to be written to the drive.
The default cache settings meet the requirements for most environments,
but you can change them if you want.
Storage array cache
settings
For all volumes in the storage array, you can
specify the following values from the System page:
- Start value for flushing – the percentage of unwritten data in the cache that triggers
a cache flush (write to disk). When the cache holds the specified
start percentage of unwritten data, a flush is triggered. By default,
the controller starts flushing the cache when the cache reaches 80
percent full.
- Cache block size – the maximum size of each cache block, which is an organizational
unit for cache management. The cache block size is by default 8 KiB,
but can be set to 4, 8, 16, or 32 KiB. Ideally the cache block size
should be set to the predominant I/O size of your applications. File
systems or database applications generally use smaller sizes, while
a larger size is good for applications requiring large data transfer
or sequential I/O.
Volume cache settings
For individual volumes in a storage array, you can specify the
following values from the Volumes page (
Storage > Volumes ):
- Read caching – The read cache is a buffer that stores
data that has been read from the drives. The data for a read operation
might already be in the cache from a previous operation, which eliminates
the need to access the drives. The data stays in the read cache until
it is flushed.
- Dynamic cache read
prefetch – Dynamic cache read prefetch allows the
controller to copy additional sequential data blocks into the cache
while it is reading data blocks from a drive to the cache. This caching
increases the chance that future requests for data can be filled from
the cache. Dynamic cache read prefetch is important for multimedia
applications that use sequential I/O. The rate and amount of data
that is prefetched into cache is self-adjusting based on the rate
and request size of the host reads. Random access does not cause data
to be prefetched into cache. This feature does not apply when read
caching is disabled.
- Write caching – The write
cache is a buffer that stores data from the host that has not yet
been written to the drives. The data stays in the write cache until
it is written to the drives. Write caching can increase I/O performance.
CAUTION:
Possible loss of data – If you enable
the Write caching without batteries option
and do not have a universal power supply for protection, you could
lose data. In addition, you could lose data if you do not have controller
batteries and you enable the Write caching without batteries option.
- Write caching without
batteries – The write caching
without batteries setting lets write caching continue even when the
batteries are missing, failed, discharged completely, or not fully
charged. Choosing write caching without batteries is not typically
recommended, because data might be lost if power is lost. Typically,
write caching is turned off temporarily by the controller until the
batteries are charged or a failed battery is replaced.
- Write caching with
mirroring – Write caching with mirroring occurs when
the data written to the cache memory of one controller is also written
to the cache memory of the other controller. Therefore, if one controller
fails, the other can complete all outstanding write operations. Write
cache mirroring is available only if write caching is enabled and
two controllers are present. Write caching with mirroring is the default
setting at volume creation.