direct IO or cache IO?

Patrick_Boyd at Patrick_Boyd at
Fri May 12 09:16:10 CDT 2006

When dealing with LSI controllers there are actually 3 caches to deal with. From the OMSA documentation (I have deleted all references to non-LSI options)

Read Policy:
The read policies indicate whether or not the controller should read sequential sectors of the logical drive when seeking data.

    * Read-Ahead. When using read-ahead policy, the controller reads sequential sectors of the logical drive when seeking data. Read-ahead policy may improve system performance if the data is actually written to sequential sectors of the logical drive.

    * No-Read-Ahead. Selecting no-read-ahead policy indicates that the controller should not use read-ahead policy.

    * Adaptive Read-Ahead. When using adaptive read-ahead policy, the controller initiates read-ahead only if the two most recent read requests accessed sequential sectors of the disk. If subsequent read requests access random sectors of the disk, the controller reverts to no-read-ahead policy. The controller continues to evaluate whether read requests are accessing sequential sectors of the disk, and can initiate read-ahead if necessary.

Write Policy:
The write policies specify whether the controller sends a write-request completion signal as soon as the data is in the cache or after it has been written to disk.

    * Write-Back. When using write-back caching, the controller sends a write-request completion signal as soon as the data is in the controller cache but has not yet been written to disk. Write-back caching may provide improved performance since subsequent read requests can more quickly retrieve data from the controller cache than they could from the disk. Write-back caching also entails a data security risk, however, since a system failure could prevent the data from being written to disk even though the controller has sent a write-request completion signal. In this case, data may be lost. Other applications may also experience problems when taking actions that assume the data is available on the disk.

    * Write-Through. When using write-through caching, the controller sends a write-request completion signal only after the data is written to the disk. Write-through caching provides better data security than write-back caching, since the system assumes the data is available only after it has been safely written to the disk.

Cache Policy:
The Direct I/O and Cache I/O cache policies apply to reads on a specific virtual disk. These settings do not affect the read-ahead policy. The cache policies are as follows:

    * Cache I/O. Specifies that all reads are buffered in cache memory.

    * Direct I/O. Specifies that reads are not buffered in cache memory. When using direct I/O, data is transferred to the controller cache and the host system simultaneously during a read request. If a subsequent read request requires data from the same data block, it can be read directly from the controller cache. The direct I/O setting does not override the cache policy settings. Direct I/O is also the default setting. 

Let me know if this information is not clear enough.

Patrick Boyd
Dell Storage Software Engineer

-----Original Message-----
From: linux-poweredge-bounces at [mailto:linux-poweredge-bounces at] On Behalf Of Jason Wozniak
Sent: Friday, May 12, 2006 8:53 AM
To: mcclnx mcc; linux-poweredge-Lists
Subject: RE: direct IO or cache IO?

Direct IO still does read ahead caching, so they both actually use the cache as I understand it.  If you have filesystemio_options set to "directio", or "setall" in oracle to bypass the os cache then perhaps cache IO would have a performance edge when writing to disk, though I haven't tested it myself.  If you're not running oracle using directIO, or setall, and have filesystemio_options set to "async" then I would advise against cache IO on the controller, as you would already be double caching with the OS, and oracle.

-----Original Message-----
From: linux-poweredge-bounces at [mailto:linux-poweredge-bounces at] On Behalf Of mcclnx mcc
Sent: Thursday, May 11, 2006 5:11 PM
To: linux-poweredge at
Subject: direct IO or cache IO?

we have several DELL 6800 with LSI 4e/DC adapter cards
(128 MB cache) in it.  DELL 6800 run under Redhar AS 4.0 and ORACLE 9ir2.  When I configured DELL 6800 server local disks (Mirror or RAID 5), it have two I/O policy to choice - direct IO and cache IO.

I doing simple test by copy files between differents disk set and found  "direct IO" performance better than "cache IO". It is against what I read before.  I used to saw documents from SUN and IBM said "large disk array cache will improve I/O performance".

Any one has suggestion FOR ORACLE server which I/O policy should I setup?


___________________________________________________  最新版 Yahoo!奇摩即時通訊 7.0,免費網路電話任你打!

Linux-PowerEdge mailing list
Linux-PowerEdge at
Please read the FAQ at

More information about the Linux-PowerEdge mailing list