Monitor virtual processors with the onstat-g ioq command

Use the onstat-g ioq command to determine whether you need to allocate additional AIO virtual processors.

The onstat-g ioq command displays the length of the I/O queues under the column len, as the figure below shows. You can also see the maximum queue length (since the database server started) in the maxlen column. If the length of the I/O queue is growing, I/O requests are accumulating faster than the AIO virtual processors can process them. If the length of the I/O queue continues to show that I/O requests are accumulating, consider adding AIO virtual processors.
Figure 1: onstat-g ioq and onstat -d output
onstat -g ioq

AIO I/O queues:
q name/id    len maxlen totalops  dskread dskwrite  dskcopy
  adt   0      0      0        0        0        0        0
  msc   0      0      1       12        0        0        0
  aio   0      0      4       89       68        0        0
  pio   0      0      1        1        0        1        0
  lio   0      0      1       17        0       17        0
  kio   0      0      0        0        0        0        0
  gfd   3      0      3      254      242       12        0
  gfd   4      0     17      614      261      353        0


onstat -d
Dbspaces
address  number   flags    fchunk   nchunks  flags    owner    name
a1de1d8  1        1        1        1        N        informix rootdbs
a1df550  2        1        2        1        N        informix space1
 2 active, 32,678 maximum
Chunks
address  chk/dbs offset   size     free     bpages   flags pathname
a1de320  1   1   0        75000    66447             PO-   /ix/root_chunk
a1df698  2   2   0        500      447               PO-   /ix//chunk1
 2 active, 32,678 maximum 

Each chunk serviced by the AIO virtual processors has one line in the onstat-g ioq output, identified by the value gfd in the q name column. You can correlate the line in onstat -g ioq with the actual chunk because the chunks are in the same order as in the onstat -d output. For example, in the onstat-g ioq output, there are two gfd queues. The first gfd queue holds requests for root_chunk because it corresponds to the first chunk shown in the onstat -d output. Likewise, the second gfd queue holds requests for chunk1 because it corresponds to the second chunk in the onstat -d output.

If the database server has a mixture of raw devices and cooked files, the gfd queues correspond only to the cooked files in onstat -d output.