所需的 AIO 虚拟处理器数

分配 AIO 虚拟处理器的目的是分配足够的虚拟处理器从而可以保持 I/O 请求队列的长度比较短;即,队列中具有的 I/O 请求要尽可能少。当 gfd 队列总是很短时,它指示对于磁盘设备的 I/O 正在以与产生请求一样快的速度进行处理。

onstat-g ioq 命令显示了有关 I/O 队列的长度和其他统计信息。可以使用此命令为 AIO 虚拟处理器监视 gfd 队列的长度。有关更多信息,请参阅监视虚拟处理器以及《GBase 8s 性能指南》中有关监视虚拟处理器的信息。

一个 AIO 虚拟处理器可能已足够:
  • 如果数据库服务器在您的平台上实现内核异步 I/O (KAIO) 并且所有的数据库空间都是由原始的磁盘空间组成。
  • 如果您的文件系统支持用于数据库空间块的页大小的直接 I/O 并且您使用直接 I/O
对每个活动的数据库空间分配两个由缓冲区文件块组成的 AIO 虚拟处理器。
  • 如果数据库服务器实现 KAIO,但是您正在使用块的某些缓冲区文件
  • 如果系统不支持块的 KAIO。

如果 KAIO 在您的平台上实现,请为数据库服务器经常访问的每个磁盘分配两个 AIO 虚拟处理器。

如果您使用熟文件,并且如果您使用 DIRECT_IO 配置参数启用直接 I/O,那么您可能可以减少 AIO 虚拟处理器的数量。

如果数据库服务器实现了 KAIO 并且使用 DIRECT_IO 配置参数启用了直接 I/O,那么 GBase 8s 将尝试使用 KAIO,这样可能就不需要多个 AIO 虚拟处理器。 但是,即使启用了直接 I/O,如果文件系统不支持直接 I/O 或 KAIO,那么仍必须为组成已缓冲文件块或不使用 KAIO 的每个活动的数据库空间分配两个 AIO 虚拟处理器。

临时数据库空间不使用直接 I/O。如果您拥有临时数据库空间,那么可能需要多个 AIO 虚拟处理器。

分配足够的 AIO 虚拟处理器以满足 I/O 请求的最大值。通常来说,分配过多的 AIO 虚拟处理器不会产生不利影响。

当服务器检测到 AIO 虚拟处理器无法满足 I/O 工作负载时,AUTO_AIOVPS 配置参数可使数据库服务器自动增加 AIO 虚拟处理器和 page-cleaner 线程的数量。