Home | Previous Page | Next Page   Tuning Configuration for Resource Usage > Tuning CPU-Management Parameters >

Tuning Virtual Processors That Manage I/O

The database server uses asynchronous I/O (AIO) virtual processors to manage all database I/O requests unless your operating system supports kernel asynchronous I/O (KAIO) and you enable this feature. The NUMAIOVPS configuration parameter specifies the number of AIO virtual processors that the database server starts initially on each coserver.

The recommended number of AIO virtual processors depends on how many disks each coserver supports. If kernel asynchronous I/O (KAIO) is not implemented on your platform, allocate one AIO virtual processor for each disk that contains database tables, and add an additional AIO virtual processor for each chunk that the database server accesses frequently.

Using AIO Virtual Processors With KAIO

The machine-notes file for your operating system specifies whether the operating system supports KAIO. If the operating system supports KAIO, the machine notes describe how to enable KAIO.

If you enable KAIO, the CPU virtual processors make unbuffered I/O requests directly to the operating system. You can then configure only one AIO virtual processor, plus two AIO virtual processors for every buffered operating-system file chunk.

Using Only AIO Virtual Processors

The goal is to provide enough AIO virtual processors to keep the I/O request queues short; that is, the queues should have as few I/O requests in them as possible. When the I/O request queues are short, I/O requests are processed as fast as they occur.

To determine the number of AIO virtual processors, monitor the length of the I/O queues. Add this information to the database performance history data that you collect so that you can evaluate queue length at intervals over several days.

Use the onstat -g ioq command to monitor the length of the I/O queues for the virtual processors. In the following sample output, gfd 5 displays the read queue for a pipe, and gfdwq 5 displays its write queue:

AIO I/O queues:
q name/id    len maxlen totalops  dskread dskwrite  dskcopy
 fifo   0      0      0        0        0        0        0
  adt   0      0      0        0        0        0        0
  msc   0      0      1       10        0        0        0
  aio   0      0      1    12939        8    12907        0
  pio   0      0      0        0        0        0        0
  lio   0      0      1        2        0        2        0
  gfd   3      0      4      496      117      379        0
  gfd   4      0      5   171228   171228        0        0
  gfd   5      0      0        0        0        0        0 
  gfdwq 5      2      4       15        0       15        0 

Monitor the len and maxlen fields of the I/O request queue. If len is usually greater than 10 or if maxlen is usually greater than 25, requests are not being serviced fast enough. If the disks or controllers are not already saturated, add more AIO virtual processors to improve request servicing.

Allocate enough AIO virtual processors to accommodate the peak number of I/O requests. Generally, it is not detrimental to allocate a few extra AIO virtual processors. You can use onmode -p to start additional AIO virtual processors while the database server is in online mode. You cannot drop AIO virtual processors in online mode.

Home | [ Top of Page | Previous Page | Next Page | Contents | Index ]