ioo 命令

用途

管理 I/O 可调参数。

语法

ioo [ -p | -r [ -K ]] [ -y ]{ -o Tunable [ =NewValue ] } 
ioo [ -p | -r [ -K ]] [ -y ] { -d Tunable } 
ioo [ -p | -r [-K ]] [ -y ] -D
ioo [ -p | -r | -K ] [  -F  ] -a
ioo -h [ Tunable ]
ioo [ -F ] [ -K ] -L [ Tunable ]
ioo [ -F ] [ -K ] -x [ Tunable ]
注意: 允许使用多个标记,如 -o, -d, -x-L 标记。

描述

注意: ioo 命令只能由根用户执行。

ioo 命令配置输入/输出 (I/O) 调整参数。 该命令设置或显示所有 I/O 调整参数的当前或下一次启动值。 还可以用此命令进行永久性更改,或将更改推迟到下一次重新引导之后生效。 命令是否设置或显示参数由附带的标记决定。 -o 标志可显示参数值或设置新参数值。

如果进程按顺序读取文件, minpgahead 参数指定的值将决定首次检测到条件时提前读取的页数。 maxpgahead 参数指定的值设置提前读的最大页数,不管先前顺序读的数目为多少都是如此。

操作系统允许调整文件系统 bufstructs 的数目 (numfsbuf) 以及延迟写算法所处理的数据量 (numclust)。

注意:适用于整个系统的可调变量可能无法在工作负载分区内修改。
改变可调参数的效果
滥用 ioo 命令会导致性能下降或操作系统故障。 在尝试使用 ioo 命令之前,请参考虚拟内存管理器性能概述

有关修改任何可调参数及其用途的更多信息,请参阅可调参数部分中的可调参数特性。

确保可调参数的诊断和调整部分适用于您的情况。 更改可调参数的值可能会提高系统性能。

如果 "诊断 "和 "调整 "部分都只包含 "不适用",除非得到开发人员的指示,否则不要更改可调参数。 AIX 开发。

标志

表 1. 标志
描述
-h [ 可调 ] 显示指定可调参数的帮助信息。 如果未指定可调参数, -h 标志将显示 ioo 命令的用法说明。
-a 显示当前值、重启值(与 -r 标记)、实时更新值(与 -K 标志)或永久值(与 -p 标志),每行一个,成对显示 tunable = value。 对于永久选项,只有在可调参数的重启值和当前值相等时,才会显示该参数的值。 否则,NONE 显示为该值。
-d Tunable 将指定的可调参数重置为默认值。 如果因未设置为默认值而必须更改的可调参数符合以下一个或多个标准,则会显示警告信息,且不会对可调参数进行更改:
  • 可调参数类型为 BosbootReboot
  • 可调参数的类型是 Incremental ,并在默认值的基础上进行修改,而 -r 标志不结合使用。
  • 可调参数的类型为 Reboot ,在整个实时更新操作中均受支持。

有关不同类型可调参数的更多信息,请参阅可调参数类别。

-D 将所有可调参数重置为默认值。 如果因未设置为默认值而必须更改的可调参数符合以下一组或多组标准,则会显示警告信息,且不会对可调参数进行更改:
  • 可调参数类型为 BosbootReboot
  • 可调参数的类型是 Incremental ,并在默认值的基础上进行修改,而 -r 标志不结合使用。
  • 可调参数的类型为 Reboot ,在整个实时更新操作中均受支持。

有关不同类型可调参数的更多信息,请参阅可调参数类别。

-F 时,强制显示受限的可调参数。 -a, -L-x 标记时,将显示受限的可调参数。 如果不指定 -F 标记,受限可调参数将不被包括在内,除非它们的名称与显示标记相关,如 -o, -a, -x-L 标志。
-K /etc/tunables/nextboot/etc/tunables/nextliveupdate 文件中设置可调参数值。 -K 标志仅与 -r 标志一起使用。

当您用 和 标志或 和 标志指定 -K-r -d 标志或 -r-D 标志时,可调参数值将被设置为 /etc/tunables/nextboot/etc/tunables/nextliveupdate 文件中的默认值,并在下一次启动或实时更新操作中使用。

当您使用 -L-x 标志指定 -K 标志时, ioo 命令将显示实时更新值。

-L [ 可调 ] 使用以下格式列出一个或所有可调参数的特性,每行一个:

NAME                      CUR    DEF    BOOT   MIN    MAX    UNIT           TYPE 
     DEPENDENCIES 
------------------------------------------------------------------------------------
minpgahead                2      2      2      0      4K     4KB pages         D 
     maxpgahead 
------------------------------------------------------------------------------------
maxpgahead                8      8      8      0      4K     4KB pages         D 
     minpgahead 
------------------------------------------------------------------------------------ 
pd_npages                 64K    64K    64K    1      512K   4KB pages         D 
------------------------------------------------------------------------------------ 
maxrandwrt                0      0      0      0      512K   4KB pages         D 
------------------------------------------------------------------------------------ 
numclust                  1      1      1      0             16KB/cluster      D 
------------------------------------------------------------------------------------ 
numfsbufs                 196    196    196                                    M 
-------------------------------------------------------------------------------- 
recoveryMode              1      1      1      0      1      N/A               D 
-------------------------------------------------------------------------------- 
... 
where: 
    CUR = current value 
    DEF = default value 
    BOOT = reboot value 
    MIN = minimal value 
    MAX = maximum value 
    UNIT = tunable unit of measure 
    TYPE = parameter type: D (for Dynamic), S (for Static), R (for Reboot),
               B (for Bosboot), M (for Mount), I (for Incremental),
               C (for Connect), and d (for Deprecated) 
    DEPENDENCIES = list of dependent tunable parameters, one per line
如果使用 -L 标志指定 -K 标志,那么还会显示 "实时更新" 值。
-o Tunable[=NewValue] 显示可调参数的值或将其设置为新值。 使用 -o 标志更改动态可调参数值时, /etc/tunables/usermodified 文件会用新的可调参数值更新。 如果要更改的可调参数符合以下一组标准中的一个或多个标准,则会显示警告信息,并且不会对可调参数进行更改:
  • 可调参数类型为 BosbootReboot
  • 可调参数的类型为 Incremental ,其当前值大于指定值,且 -r 标志未结合使用。
  • 可调参数的类型是 Reboot ,整个实时更新操作都支持可调参数。

有关不同类型可调参数的更多信息,请参阅可调参数类别。

指定 -r 标志而不指定 NewValue 时,将显示可调参数的下一次启动值。 -K 标志与 -o 标志结合使用且不带 NewValue 时,将显示可调参数的下一个实时更新值。-p 标志与 -o 标志一起使用且不带 NewValue 时,只有当可调整参数的当前值和下一次启动值相同时,才会显示该值。 否则,NONE 显示为该值。

-p 使用 -o-d-D 标志时,指定更改同时应用于当前值和重启值。 通过可调参数,您可以更新 /etc/tunables/nextboot 文件和当前值。 这些组合不能用于 RebootBosboot 类型的可调参数。 RebootBosboot 可调参数类型的当前值不可更改。

当您指定 -a-o 标志而不指定新值时,只有当可调整参数的当前值和下一次启动值相同时,才会显示这些值。 否则, NONE 显示为可调值。

-r -o-d-D 标志一起使用时,对 reboot 参数值进行修改。 通过可调参数,您可以更新 /etc/tunables/nextboot 文件。 如果更改了 Bosboot 类型的任何可调参数,系统会提示用户运行 bosboot 命令。

-r 标志与 -a-o 标志一起使用而未指定新值时,将显示可调参数的下一次启动值,而不是当前值。 -K 标志一起使用时,更改同时适用于 /etc/tunables/nextboot 文件和 /etc/tunables/nextliveupdate 文件。

-x[可调整] 使用以下电子表格格式列出一个或所有可调参数的特性,每行一个:
tunable,current,default,reboot,min,max,unit,type,{dtunable} 


where: 
    current = current value 
    default = default value 
    reboot = reboot value
    min = minimal value 
    max = maximum value 
    unit = tunable unit of measure 
    type = parameter type: D (for Dynamic), S (for Static), R (for Reboot),
               B (for Bosboot), M (for Mount), I (for Incremental),
               C (for Connect), and d (for Deprecated) 
    dtunable = space separated list of dependent tunable parameters
如果使用 -x 标志指定 -K 标志,那么还会显示 "实时更新" 值。
-y 禁止在运行 bosboot 命令前出现确认提示。

如果使用 -o-d-D 标志修改受限的可调参数,用户将收到一条警告信息,说明修改了受限使用类型的可调参数。 如果还指定了 -r-p 标志,系统会提示您确认更改受限可调参数。 此外,在系统重启时,使用指定 -r-p 标志的命令行,可将 /etc/tunables/nextboot 文件中的受限可调参数修改为不同于默认值的值。 修改受限可调参数会导致错误日志条目,该条目列出了修改后的可调参数列表。

修改可调参数时,可以使用以下缩写表示相应的值来指定可调参数值:
表 2. 可调参数值的缩写
缩写 2 的力量
K 210
M 220
G 230
T 240
P 250
E 260
因此,1024 的可调参数值可指定为 1 K。

使用 -o-d-D 标志对 Mount 类型的可调参数进行更改时,会向用户显示一条警告信息,说明该更改仅对未来的挂载有效。

使用 -o-d-D 标志对 Connect 类型的可调参数进行更改,会重新启动 inetd 命令,并向用户显示一条警告信息,说明更改仅对未来的套接字连接有效。

如果尝试使用 -o-d-D 标志更改 BosbootReboot 类型的可调参数,而不使用 -r 标志,则会显示错误信息。

如果使用 -o-d-D 标志,但不使用 -r 标志,试图将 Incremental 类型的可调参数的当前值改为小于当前值的新值,则会显示错误信息。

兼容性方式

在 pre-5.2 兼容模式下运行可调参数时,该模式由 sys0 属性控制,该属性被称为 pre520tune ,除 Bosboot 外,可调参数的重启值没有意义。 在 pre-5.2 兼容模式下,它们不会在启动时应用。

在pre-5.2兼容性模式中,为调整参数设置重启值仍然是通过在启动序列中调用脚本来实现的。 因此,重启类型参数的设置可以不使用 "-r标记,这样现有脚本就能继续工作。

pre-5.2 兼容模式会在机器迁移至 AIX 5.2. 对于完整安装,则将其关闭,并通过在重启序列中应用 /etc/tunables/nextboot 文件的内容来设置可调整参数的重启值。 只有在这种模式下,"-r和 "-p标志才能充分发挥作用。 有关详细信息,请参阅《性能工具指南和参考》中的内核调优

可调参数

由调谐命令操作的可调谐参数,如 no, nfso, vmo, ioo, rasoschedo 命令分为以下可调参数类别:
表 3. 可调整参数类别
描述
Dynamic 如果可调参数可以随时更改。
Static 如果可调参数永远无法更改。
Reboot 如果可调参数只能在重启时更改。
Bosboot 如果只能使用 bosboot 命令更改可调参数,并重新启动机器。
Mount 如果对可调参数的更改仅对未来的文件系统或目录挂载有效。
Incremental 如果可调参数可以逐步增加,启动时除外。
Connect 如果对可调参数的更改只对未来的套接字连接有效,那么就会出现"......"。
Deprecated 如果当前版本的 AIX.
对于 Bosboot 类型的可调整参数,每当执行更改时,调整命令都会自动提示用户是否要运行 bosboot 命令。 对于 Connect 类型的可调整参数,调整命令会自动重启 inetd 守护进程。
注意: 目前由 ioo 命令管理的参数集仅包括 Static, Dynamic, MountIncremental 类型的可调参数。
有关可调参数的默认值和取值范围,请输入以下命令:
ioo -h
下表列出了可调参数及说明:
表 4. 可调参数
描述
aio_active
用途
表示是否使用异步 I/O (AIO) 内核扩展并将其固定。
调整
调整值为 1 表示使用了 AIO 内核扩展并将其固定。
aio_maxreqs
用途
指定可以同时处于未完成状态的异步 I/O 请求的最大数目。
调整
指定的数目包括正在进行中的 I/O 请求以及正在队列中等待启动的 I/O 请求。 异步 I/O 请求的最大数量不能少于 /usr/include/sys/limits.h 文件中定义的 AIO_MAX 字段的值,但也可以大于该值。 对于异步 I/O 数量较多的系统,异步 I/O 请求的最大数量最好大于 AIO_MAX 字段的值。
aio_maxservers
用途
指定允许处理慢速路径 I/O 请求的 AIO 服务器(专用于异步 I/O 处理的内核进程)的最大数量。
调整
调整值为每个 CPU 的值。 aio_maxservers 的值不能小于 aio_minservers。 同时进行的异步 I/O 请求绝对不能超过 aio_maxservers 可调参数的值,因此这个数字限制了可能的 I/O 并发。
aio_minservers
用途
指定要保持处于活动状态以便处理低速路径 I/O 请求的 AIO 服务器(专门用于处理异步 I/O 的内核进程)的最小数目。
调整
调整值为每个 CPU 的值。 aio_minservers 的值不能大于 aio_maxservers 的值。 装入内核扩展时,不会创建 AIO 服务器,不管使用当前设置还是缺省设置都是如此。 此值允许在从不使用 AIO 的系统上将 AIO 资源耗用量保持在最低水平。 随着 I/O 请求的发起,AIO 服务器也随之创建,为这些请求提供服务,直到达到 "aio_maxservers允许的最大值。 一旦超过 "aio_minservers值,服务器数量不会少于 "aio_minservers
aio_server_inactivity
用途
指定 AIO 服务器在不处理 I/O 请求时的休眠时间。
调整
超过该时限后,服务器将退出,除非它导致可用服务器的数量少于 "aio_minservers。 在这种情况下,服务器将重新进入休眠状态。 在这种罕见的情况下,服务器的睡眠时间是为 aio_server_inactivity 的当前值和默认值指定的时间中的较大值。 这种情况很罕见,并可能表明可用服务器数与 I/O 量之间不平衡。
aio_delegateiotodriverkth
用途
指定将异步 I/O 委托给虚拟持久内存vPMEM) 驱动程序内核线程的阈值。
调整
lio_listio或 "lio_listio64子程序只需一次调用即可启动一系列异步 I/O 请求。 如果列表中的异步 I/O 请求数大于 aio_delegateiotodriverkth 可调参数值,且底层设备为 vPMEM ,则 vPMEM 驱动程序会将异步 I/O 委托给 vPMEM 驱动程序的内核线程,以提高性能。 值为 0 时,将禁用 aio_delegateiotodriverkth 可调参数。
开始更改aio_queue_enhanced_search结束更改
用途
指定使用现有算法还是增强算法来查找队列中的 AIO 请求。
调整
如果将此可调参数值设为 1 ,则使用增强搜索算法在队列中查找 AIO 请求,否则使用现有算法。 采用增强算法后,AIO 搜索请求的性能得到了提高。 要在两种算法之间切换,请将 aio_queue_enhanced_search 可调参数设置为所需值,然后重新启动系统。 默认情况下, aio_queue_enhanced_search 可调参数值设置为 1 ,并使用增强搜索算法。 将可调参数值设为 0 时,将使用现有算法。
dk_closed_path_recovery
用途
启用或禁用对在 MPIO 磁盘关闭时恢复处于故障状态的多路径 I/O (MPIO) 路径的支持。 在 MPIO 磁盘关闭后,会定期尝试恢复操作,直到 MPIO 路径恢复为止。 如果 MPIO 路径处于故障状态,且 MPIO 磁盘已关闭,则将此可调参数设置为 1 时 ,无法恢复故障的 MPIO 路径。 您可以使用以下命令打开和关闭 MPIO 磁盘,并为已关闭的 MPIO 磁盘恢复 MPIO 路径:
lsmpio -o -l hdiskX
AIX 路径控制模块 (PCM) 默认支持该功能。
调整
调整值为 0 时,将不支持恢复处于故障状态的 MPIO 路径。 缺省值为 0
调整值为 1 时 ,支持恢复处于故障状态的 MPIO 路径。
dk_lbp_enabled
用途
在 AIX® 操作系统中启用或禁用对逻辑块配置(LBP)(也称为精简配置)的支持。 禁用时,AIX不会尝试释放瘦配置磁盘中未使用的块。
调整
调整值为 1 时 ,将启用 LBP 支持。 缺省值为 1
调整值为 0 时,将禁用 LBP 支持。
dk_lbp_num_bufs
用途
定义用于 LBP 支持的预先分配缓冲池的大小。
调整
控制可由磁盘驱动程序在任意给定的时间处理的最大 unmap 请求数。 缓冲池是一个系统范围的资源池。 在任何自动精简配置磁盘上,一次只能有一个 unmap 请求处于活动状态。 该参数的默认值为 64 个缓冲区。 例如,如果您有 64 个缓冲区,那么您就有 32 KB(64 个缓冲区 x 512 字节 = 32 KB)的总固定内存。 可调值范围为 1-1024。
dk_lbp_buf_size
用途
定义 LBP 缓冲池中每一个缓冲区的大小。 缺省值为 512 字节。 该值可更改为 4096(4 KB),在这种情况下,支持 4 KB 块大小的磁盘可以释放块。
调整
该可调参数的调整值必须与 AIX 系统连接的任何磁盘所支持的最大块大小相同。
j2_atimeUpdateSymlink
用途
如果 j2_atimeUpdateSymlink 可调参数设置为 1 , JFS2 文件系统符号链接的访问时间将在 readlink 请求中更新。
调整
值为 0 表示 JFS2 文件系统符号链接的访问时间不会在 readlink 请求中更新。 打开 j2_atimeUpdateSymlink 将导致性能下降,因此,仅当确实需要更改此可调参数时才应进行此更改。 SUSv3 不要求在 请求中更新访问时间。 readlink 不过,JFS 和许多其他平台都会在 readlink 请求时更新访问时间。 提供此可调参数是为了与 JFS 和其他 UNIX 兼容系统兼容。
j2_dynamicBufferPreallocation
用途
指定在 I/O 操作期间用于临时存储数据的文件系统缓冲区(bufstructs )不足时每次分配的 16 K slab 数量。
调整
16 表示 256 K。 文件系统无需重新挂载。 JFS2 文件系统的 bufstructs 现在是动态的。 分页设备上启动的缓冲区数量由 j2_nBufferPerPagerDevice 可调参数控制,但在此初始值之后,缓冲区将动态分配和销毁。 如果外部寻呼机文件系统 I/O 在没有 fsbuf (来自 vmstat -v )的情况下被阻止的次数增加,则必须增加该文件系统的 j2_dynamicBufferPreallocation 可调参数,因为文件系统的 I/O 负载可能超过了预分配的速度。 值为 0 则完全禁用动态缓冲区分配。
j2_inodeCacheSize
用途
控制 JFS2 文件系统用于索引节点(inode)缓存的内存量。
调整
调整值并不明确表示使用量,而是一个比例系数。 j2_inodeCacheSize可调参数的值与主内存大小结合使用,以确定代码缓存的最大内存使用量。 Inode 缓存大小的缩放因子是根据机器内存与 j2_inodeCacheSize 可调参数值的乘积除以 4000 计算得出的。 j2_inodeCacheSize可调参数的默认值为 200,这意味着 inode 缓存大小最多占机器内存的 5%。 添加和除去动态内存并不会自动更改高速缓存的大小。 此可调参数的默认值在AIX 7.1 版中有所更改,但对于主内存容量较小、并发用户或打开文件数量较多的系统,使用旧的默认值 400 可能会有更好的表现。
j2_maxPageReadAhead
用途
在 JFS2 文件系统上处理顺序访问文件时,指定提前读取的最大页数。
调整
minfree 参数和 maxfree 参数之间的差值必须始终等于或大于 j2_maxPageReadAhead 可调参数的值。 如果运行时间随着 j2_maxPageReadAhead 可调参数值的增加而缩短,请确保其他应用程序的性能不会降低。
j2_maxRandomWrite
用途
指定随机写入操作在随机存取内存(RAM)中累积的阈值,之后的页面才会通过 JFS2 文件系统的写入隐藏算法刷新到磁盘。
调整
随机延迟写阈值是基于每个文件的。 如果 syncd 守护进程要刷新大量页面,则该可调整参数非常有用。
j2_metadataCacheSize
用途
控制 JFS2 文件系统用于元数据缓存的内存量。
调整
调整值并不明确表示使用量,而是一个比例系数。 j2_metadataCacheSize可调参数的值与主内存大小相结合,用于确定元数据缓存的最大内存使用量。 元数据缓存大小的缩放系数是根据机器内存与 j2_metadataCacheSize 可调参数值的乘积除以 10000 计算得出的。 j2_metadataCacheSize 可调参数的默认值为 200,这意味着 inode 元数据大小最多占用机器内存的 2%。 添加和除去动态内存并不会自动更改高速缓存的大小。 此可调参数的默认值在AIX 7.1 版中有所更改,但对于主内存容量较小、并发用户或打开文件数量较多的系统,使用旧的默认值 400 可能会有更好的表现。
j2_minPageReadAhead
用途
指定在 JFS2 文件系统上处理顺序访问文件时提前读取的最小页数。
调整
如果有许多大的顺序访问,那么增加该值很有用。 确保其他应用程序的性能不会降低。 如果 I/O 模式是纯随机的, 0 值可能会有用。
j2_nPagesPerWriteBehindCluster
用途
指定 JFS2 文件系统的 "写在后面 "算法处理的每个群集的页数。
调整
在 I/O 模式为顺序的情况下,如果需要先在 RAM 中保留更多页然后再安排它们进行 I/O,那么增大此参数很有用。 如果使用条带式逻辑卷或磁盘阵列,可能需要增加。
j2_nRandomCluster
用途
指定写操作必须超过的距离(以簇为单位),才能被 JFS 的随机写入算法视为随机操作。
调整
当 I/O 模式为随机,且 j2_maxRandomWrite 可调参数启用了随机滞后写时,如果在计划 I/O 之前必须在 RAM 中保留更多页面,则增加该值非常有用。
j2_recoveryMode
用途
设置从 JFS2 文件系统写入错误中恢复的行为。
调整
默认值 1 表示已设置从 JFS2 文件系统写入错误中自动恢复。 值为 0 表示文件系统保持降级模式,直到卸载。
j2_syncByVFS
用途
更改每次对 JFS2 文件系统调用同步处理之间的延迟。
调整
该可调参数允许 JFS2 文件系统以不同于标准 sync 守护进程周期的速率进行同步。 当此可调参数设置为非零值时,它是对每个 JFS2 文件系统进行同步处理的迭代之间要延迟的秒数。 由于 sync 守护进程会同时处理所有文件系统,因此使用此可调参数,同步操作的分散程度可以超过 sync 守护进程的分散程度。 它还允许更改处理文件系统 sync 操作的线程数量。
j2_syncConcurrency
用途
更改运行的线程数,这些线程用来使数据与 JFS2 文件系统同步。 每个线程同时在一个文件系统上运行。
调整
当挂载的文件系统较多时,可能需要增加该值,以便同步操作及时处理所有文件系统。
注: 仅当 j2_syncByVFS 可调参数非零时,此值才有效。
j2_syncDelayReport
用途
如果同步文件系统所需的时间超过指定的秒数,则发出通知。
调整
此可调参数设置一个允许完成文件系统同步处理的秒数。 如果超过该秒数,那么会在 syslog 文件中生成一条消息。 该信息仅供参考,不会改变同步操作的任何其他行为。
j2_syncPageCount
用途
设置 sync 系统调用在单次操作中写入磁盘的文件最大修改页数。
调整
在运行使用文件系统高速缓存并执行大量随机写操作的应用程序时,可能有必要调整此设置以避免同步操作期间长时间延迟。
j2_syncPageLimit
用途
设置 sync 系统调用使用 j2_syncPageCount 可调参数的最大次数。 该可调参数限制在增加 j2_syncPageCount 可调参数值之前写入的页数,以便同步操作取得进展。
调整
该可调参数必须在 j2_syncPageCount 参数设置时设置,如果 j2_syncPageCount 参数变化的效果不充分,则必须增加该参数。
start of changelvm_workQ_enhanced_searchend of change
用途
指定使用现有搜索算法还是增强搜索算法在逻辑卷工作队列中查找重叠的 I/O。
调整
如果 start of changelvm_workQ_enhanced_searchend of change 可调参数值设为 1 ,则使用增强搜索算法在逻辑卷工作队列中查找重叠的 I/O。 否则,将使用现有算法。 增强算法提升了搜索重叠I/O的性能。
要在两种算法之间切换,必须关闭逻辑卷,然后通过将 start of changelvm_workQ_enhanced_searchend of change 可调参数的值更改为所需值来重新打开逻辑卷。 默认情况下,该可调参数值设置为 0 ,并使用现有的搜索算法。
lvm_bufcnt
用途
指定原始物理 I/O 的 LVM 缓冲区数。
调整
对条带式原始逻辑卷进行大量写入的应用程序无法获得所需的吞吐率。 LVM 将大型原始 I/O 分解为多个缓冲区,每个缓冲区 128 KB。 值 9 表示大约可以处理 1 MB I/O,而不需要等待更多缓冲区。 如果将系统配置为包含条纹化原始逻辑卷并且执行大于 1.125 MB 的写操作,那么增大此值可能有助于提高应用程序的吞吐量。 如果系统执行大于 1 MB 的原始 I/O,那么可能最好增大此值。
maxpgahead
用途
指定处理顺序访问的文件时要提前读取的最大页数。
调整
该可调参数值必须是 2 的幂次,且必须大于或等于 minpgahead 可调参数值。 使用 time 命令观察依赖顺序 I/O 的关键应用程序的执行时间。 由于内核的限制,最大值不要超过 512。 minfreemaxfree 参数之间的差值必须始终等于或大于 maxpgahead 可调参数的值。 如果 maxpgahead 可调参数值越大,执行时间越短,则应观察其他应用程序,确保其性能不会下降。
maxrandwrt
用途
指定在 RAM 中要累积的随机写阈值(以 4 KB 页面计),在达到该阈值后,后写算法将后续页面刷新到磁盘。
调整
随机后写阈值是建立在每个文件的基础上的。 最大值指示最大文件大小(以页计)。 如果 vmstat n 命令显示每隔一段时间(通常是在同步守护进程将页面写入磁盘时)就会出现分页和 I/O 等待时间峰值,则可以更改该值。 如果在运行 syncd 命令时出现大量 I/O,则将此值设为 1 或更高非常有用。 如果值为 0 ,则禁用随机写入隐藏功能,表示随机写入保留在 RAM 中,直到发生同步操作。 设置 maxrandwrt 可调参数可确保在同步操作发生前将这些写入内容刷新到磁盘。 不过,这可能会降低性能,因为每次同步操作前都要刷新文件。 调整此选项来基于吞吐量减小交互式响应时间。 达到阈值后,所有后续页面都会刷新到磁盘。 阈值以下的页面会保留在 RAM 中,直到同步操作发生。
numclust
用途
指定 VMM 的顺序写入算法处理的 16 KB 群集的数量。
调整
在 I/O 模式为顺序的情况下,如果需要先在 RAM 中保留更多页然后再安排它们进行 I/O,那么增大此参数很有用。 如果使用条带式逻辑卷或磁盘阵列,则可能需要增加。
numfsbufs
用途
指定文件系统 bufstructs 的数目。
调整
必须重新安装文件系统。 如果 VMM 必须等待空闲的 "bufstruct,则会在发出启动 I/O 之前将进程放入 VMM 等待列表,并在 "bufstruct可用时唤醒进程。 如果使用条带式逻辑卷或磁盘阵列,则可能需要增加"......"。
pd_npages
用途
指定删除文件时必须在一个块中从 RAM 中删除的页数。
调整
最大值指示最大文件大小(以页计)。 在删除文件时,实时应用程序的响应速度会变慢。 调整此选项仅对实时应用程序有用。 如果实时响应至关重要,那么调整此选项可以更均匀地在工作负载中分布从 RAM 中除去文件页这一工作,从而缩短响应时间。
posix_aio_active
用途
指示是否已使用并锁定 AIO 内核扩展。
调整
可调值为 1 表示使用 AIO 内核扩展并将其固定。
posix_aio_maxreqs
用途
指定可以同时处于未完成状态的异步 I/O 请求的最大数目。
调整
指定的数目包括正在进行中的 I/O 请求以及正在队列中等待启动的 I/O 请求。 异步 I/O 请求的最大数目不能小于 /usr/include/sys/limits.h 文件中定义的 AIO_MAX 值,但可以大于该值。 对于异步 I/O 数量较多的系统,异步 I/O 请求的最大数量最好大于 AIO_MAX。
posix_aio_maxservers
用途
指定允许为低速路径 I/O 请求提供服务的 AIO 服务器(专门用于处理异步 I/O 的内核进程)的最大数目。
调整
该可调参数值为每个处理器的值。 posix_aio_maxservers 可调参数的值不能小于 posix_aio_minservers 可调参数的值。 同时进行的异步 I/O 请求绝对不能超过 posix_aio_minservers 可调参数的值,因此这个数字限制了可能的 I/O 并发。
posix_aio_minservers
用途
指定要保持处于活动状态以便处理低速路径 I/O 请求的 AIO 服务器(专门用于处理异步 I/O 的内核进程)的最小数目。
调整
该可调参数值为每个 CPU 的值。 posix_aio_minservers 可调参数的可调值不能大于 posix_aio_maxservers 可调参数的值。 在装入内核扩展时,不会创建任何 AIO 服务器,不管当前设置或缺省设置如何都是如此。 此处理允许在从不使用 AIO 的系统上将 AIO 资源耗用量保持在最低水平。 随着 I/O 请求的发起,会创建 AIO 服务器为其提供服务,直到达到 posix_aio_maxservers 可调参数允许的最大值。 一旦超过 posix_aio_minservers 可调参数值,服务器数量不会少于 posix_aio_minservers 可调参数值。
posix_aio_server_inactivity
用途
指定 AIO 服务器在不处理 I/O 请求时的休眠时间。
调整
超过时限后,服务器将退出,除非它导致可用服务器的数量少于 posix_aio_minservers 可调参数的值。 在这种情况下,服务器将重新进入休眠状态。 在这种罕见情况下,服务器的睡眠时间是为 posix_aio_server_inactivity 可调参数的当前值和默认值指定的时间中较大的时间。 这种情况很罕见,并可能表明可用服务器数与 I/O 量之间不平衡。
posix_aio_delegateiotodriverkth
用途
指定将异步 I/O 委托给 vPMEM 驱动程序内核线程的阈值。
调整
lio_listio或 "lio_listio64子程序只需一次调用即可启动一系列异步 I/O 请求。 如果列表中的异步 I/O 请求数大于 posix_aio_delegateiotodrPivuerproksteh 可调参数的值,且底层设备为 vPMEM ,则 vPMEM 驱动程序会将异步 I/O 委托给 vPMEM 驱动程序的内核线程,以提高性能。 值为 0 时,将禁用 posix_aio_delegateiotodrPivuerproksteh 可调参数。
开始更改posix_ aio_queue_enhanced_search结束更改
用途
指定是使用现有搜索算法还是增强搜索算法来查找队列中的 AIO 请求。
调整
如果将此可调参数值设为 1 ,则会使用增强搜索算法在队列中查找 AIO 请求。 否则,将使用现有算法。 增强型搜索算法提高了 AIO 搜索请求的性能。 要在两种算法之间切换,请将 posix_ aio_queue_enhanced_search 可调参数设置为所需值,然后重新启动系统。 默认情况下, posix_aio_queue_enhanced_search 可调参数值设置为 1 ,并使用增强搜索算法。 将可调参数值设为 0 时,将使用现有算法。

内存使用情况和统计信息

  • 要显示文件系统的内存使用情况,请输入以下命令:
    cat /proc/sys/fs/jfs2/memory_usage

    返回元数据缓存、"inode缓存和总内存使用量(以字节为单位)。

  • 要显示文件系统的统计数据,请输入以下命令:
    cat /proc/sys/fs/jfs2/statistics

    它会返回 icache 命中数、icache 未命中数和 icache 激活次数。

  • 要显示与 LBP 支持有关的系统统计信息,如出现超出缓冲区值的次数和 unmap 操作失败的次数,请输入以下命令:
    cat/proc/sys/disk/lbp/statistics

安全性

RBAC 用户注意: 此命令可以执行特权操作。 只有特权用户才能执行特权限定的操作。 有关授权和权限的更多信息,请参阅安全中的特权命令数据库。 有关该命令的权限和授权列表,请参阅 "lssecattr命令或 "getcmdattr子命令。

示例

  1. 要列出 ioo 命令管理的可调参数的当前值和重启值、范围、单位、类型和依赖关系,请输入以下命令:
    ioo -L 
  2. 要列出 "j2_recoveryMode可调参数的当前值、默认值、重启值、范围、单位和类型,请输入以下命令:
    ioo -L j2_recoveryMode
    结果可能类似以下输出:
    NAME              CUR    DEF    BOOT   MIN    MAX    UNIT          TYPE
    -----------------------------------------------------------------------
    recoveryMode       1      1       1     0      1      n/a            D
    -----------------------------------------------------------------------
  3. 要显示 j2_nPagesPerWriteBehindCluster 可调参数的帮助信息,请输入以下命令:
    ioo -h j2_nPagesPerWriteBehindCluster 
  4. 要在下次重启后将 maxrandwrt 可调参数设置为 4,请输入以下命令:
    ioo -r -o maxrandwrt=4
  5. 要将所有 "ioo可调参数永久重置为默认值,请输入以下命令:
    ioo -p -D 
  6. 要列出所有 ioo 可调参数的重启值,请输入以下命令:
    ioo -r -a
  7. 要以电子表格格式列出 ioo 命令管理的可调参数的当前值和重启值、范围、单位、类型和依赖关系,请输入以下命令:
    ioo -x