 |
 |
 |
 |
|
|
 |
|
Linux kernel 2.6 supports two new I/O
options:
-
Direct I/O on block
device
This a replacement for Linux kernel 2.4's raw devices.
The application works directly on a block device node, like
/dev/sdb1, instead of /dev/raw01. This
mode avoids the Linux buffer cache handling, which is the preferred
mode for the most databases, because they use their own cache
handling.
-
Async I/O
In the 'normal' I/O mode the issuer of a read request has to wait
until the data are available, the process is blocked meanwhile.
Using async I/O the application can issue an I/O request to the
kernel and continue normal operating. Later it checks the state of
the I/O request. Thus, the process is not blocked until the kernel
has executed the request.
Both features must be supported by the application.
The usage of async I/O achieves an
additional advantage:
You can get rid of the dedicated I/O processes from the database
server which are normally responsible for the I/O work. This frees
memory which can be used for additional database buffers in shared
memory. And this gains an overall throughput improvement of
50%.
The following chart shows the transaction throughput on Linux kernel 2.6 for the different I/O options relative to the throughput on
Linux kernel 2.4 using ext2 file system.

- IBM eServer zSeries 900 (2064-216)
- IBM TotalStorage Enterprise Storage Server 2105-800
- LPAR with 8 CPUs, 2GB memory
- Novell/SUSE SLES 9 for IBM zSeries (64-bit), kernel
2.6.5
- Informix 9.5.0 (64-bit)
- Benchmark Informix OLTP
- Database data Logical Volume (LV): 8 CHPIDs, 8 host
adapters, FCP/SCSI disks in 8 ranks, ext2 filesystem
The transactional throughput using the file system
ext2 on Linux kernel 2.6 is very similar to the behavior
on Linux kernel 2.4. The throughput using direct I/O
behaves in the same way. Throughout our tests, the combination
of direct I/O with async I/O produced the best results.
|
|
|
 |
|
 |