Solaris 8 System Administration Supplement

Improved UFS Direct I/O Concurrency

The UFS software has been enhanced in the Solaris 8 1/01 release. The information here adds to information on direct I/O that is in the "Managing File Systems" section of the "Managing File Systems (Overview)" in System Administration Guide, Volume 1.

The performance of direct I/O, which is used by database applications to access unbuffered file-system data, has been improved by allowing concurrent read and write access to regular UFS files. Previously, an operation that updates file data would lock out all other read or write accesses until the update operation was completed.

Concurrent writes are restricted to the special case of file rewrites. If the file is being extended, writing is single threaded as before. Generally, databases pre-allocate files and seldom extend them thereafter. Therefore, the effects of this enhancement are seen during normal database operations.

The direct I/O improvements bring I/O-bound database performance on a UFS file system to about 90% of raw partition access speeds. If the database is CPU bound or bus bandwidth bound, you might not see any improvement.

Consider running your I/O database applications with direct I/O enabled if you are already using UFS to store database tables. Use your database administrative procedures to enable direct I/O, if possible. If you cannot enable direct I/O through your database product, use the mount -o forcedirectio option to enable direct I/O for each file system or use the directio(3C) library call to enable direct I/O.

See mount_ufs(1M) or directio(3C) for more information.