Fast write cache use

Fast write cache (FWC) is an optional nonvolatile cache that provides redundancy with the standard adapter cache. The FWC tracks writes that have not been committed to disk.

Fast write cache can significantly improve the response time for write operations. However, care must be taken not to flood the cache with write requests faster than the rate at which the cache can destage its data. FWC can also adversely affect the maximum I/O rate because additional processing is required in the adapter card to determine if the data that is being transferred is in the cache.

Fast write cache typically provides significant advantages in specialized workloads, for example, copying a database onto a new set of disks. If the fast write cache is spread over multiple adapters, this can multiply the benefit.

The FWC can also reduce JFS log bottlenecks due to the following properties of the JFS log:

  1. The JFS log is write-intensive. The FWC does not cache unmodified data.
  2. The writes are small and frequent. Because the cache capacity is not large, it works best for high-rate small I/Os that are gathered together in the adapter into larger physical I/Os. Larger I/Os tend to have better performance because less disk rotations are normally needed to write the data.
  3. Logs are not typically very large relative to the cache size, so the log does not tend to "wash" the cache frequently. Therefore, the log loses the benefit of rewriting over existing cached data. Although other array controllers with write caches have proven effective with logs, this article only discusses log performance with the FWC.

When single-disk bandwidth becomes the limiting performance factor, one solution is to strip several RAID 5 devices into a logical volume. The strip size is 64 KB multiplied by the number of data disks in the RAID 5. When the adapter is configured for RAID 5, writes equal to or larger than the strip size will bypass the cache. This is why 128 KB writes to a 2+p array with FWC are slower than 127 KB writes, and are equal to 128 KB writes to 2+p without the FWC. This is intended to keep bulk sequential I/O from "washing" the cache.