使用 onstat-g ioq 命令监视虚拟处理器

使用 onstat-g ioq 命令可确定您是否需要分配其他的 AIO 虚拟处理器。

onstat-g ioq 命令在 len 列下显示 I/O 队列的长度,如下图所示。也可以在 maxlen 列中查看最大队列长度(自从数据库服务器启动后)。如果 I/O 队列的长度不断增加,那么 I/O 请求的累积速度将超过 AIO 虚拟处理器处理请求的速度。如果 I/O 队列的长度继续显示 I/O 请求不断累积,那么考虑添加 AIO 虚拟处理器。

图: onstat-g ioqonstat -d 输出

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        gbasedbt rootdbs
a1df550  2        1        2        1        N        gbasedbt 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 

AIO 虚拟处理器维护的每个块在 onstat-g ioq 输出中均具有一行(由 q name 列中的值 gfd 标识)。可以将 onstat -g ioq 中的行与实际块相关联,因为这些块与 onstat -d 输出处于同样的顺序。 例如,在 onstat-g ioq 输出中,有两个 gfd 队列。第一个 gfd 队列保存 root_chunk 的请求,因为它与 onstat -d 输出中显示的第一个块相对应。同样,第二个 gfd 队列保存 chunk1 的请求,因为它与 onstat -d 输出内的第二个块相应。

如果数据库服务器既有裸设备又有熟文件(即已缓冲的文件),那么 gfd 队列仅与 onstat -d 输出中格式化的文件相应。