vmo 命令
用途
管理虚拟内存管理器可调参数。
语法
维莫 [ -p| - [-K]] [ -y ] { -o 可调参数 [= 新值] }
维莫 [ -p |- [-K]] [ -y ] { -d 可调参数 }
vmo -h [ 可调 ]
描述
使用 vmo 命令来配置虚拟内存管理器调整参数。 此命令设置或显示所有虚拟内存管理器调整参数的当前值或下一个引导值。 还可以用此命令进行永久性更改,或将更改推迟到下一次重新引导之后生效。 此命令是设置参数还是显示参数,要由所带标志来决定。 -o 标志同时指定这两项操作。 它或者显示参数的值或者为参数设置一个新值。
虚拟内存管理器(VMM)维护一个空闲实内存页帧的列表。 这些页帧可用来存放满足缺页故障所需要的虚拟内存页面。 当空闲列表上的页数低于 minfree 参数指定的值时, VMM 将窃取要添加到空闲列表中的页数。 VMM 继续窃取页面,直到空闲列表至少具有 maxfree 参数指定的页面数为止。
如果内存中的文件页面数 (永久页面数) 小于 minperm% 参数指定的数量,那么 VMM 将从计算页面或文件页面窃取帧,而不考虑重新页面速率。 如果文件页的数目大于 maxperm% 参数指定的数目,那么 VMM 仅从文件页窃取帧。 在这两种情况下,VMM 通常仅窃取文件页面,但是如果文件页面的重新调页率高于计算页面的重新调页率,那么也会窃取计算页面。
也可以修改用于判断何时系统耗尽调页空间的阈值。 npswarn 参数指定可用的调页空间页面数,在该页面上,系统开始警告进程调页空间不足。 npskill 参数指定系统开始停止进程以释放调页空间的可用调页数。
了解更改可调参数的效果
误用此命令会导致性能下降或操作系统故障。 在使用 vmo 命令进行试验之前,请先熟悉 虚拟内存管理器的性能概述 和 使用 maxclient 参数增强的 JFS 文件系统高速缓存限制。
在修改任何可调参数之前,必须首先仔细阅读 可调参数 部分中有关其所有特征的信息,以充分了解其用途。
然后必须确保此参数的“诊断”部分和“调整”部分真的适用于您的情况,且更改此参数的值可以有助于提高系统性能。
如果 "诊断 "和 "调整 "部分都只包含 "不适用",除非AIX开发人员指示,否则不得更改此参数。
标志
| 项 | 描述 |
|---|---|
| -a | 显示当前值,重新引导值 (与 -r 选项配合使用时) ,实时更新值 (与 -K 选项配合使用时) 或所有可调参数的永久值 (与 -p 选项配合使用时) ,每行对应一个值 Tunable = 值。 对于持久选项,仅当一个参数的重新引导值和当前值相等时,才会显示该参数的值。 否则,NONE 显示为该值。 |
| -d 无法 | 将 Tunable 参数重置为其缺省值。 如果 Tunable 参数满足下列一组或多组条件(必须更改该参数,因为它未设置为其缺省值),那么会显示警告消息,并且不会对该参数进行更改:
|
| -D | 将所有 Tunable 参数重置为其缺省值。 如果因为未设置为其缺省值而需要更改的 Tunable 满足下列一组或多组条件,那么会显示警告消息,并且不会进行更改:
|
| -f | 当在命令行中单独指定 -a、-L 或 -x 选项来列出所有可调参数时,将强制显示受限制的可调参数。 如果未指定 -F标志,则不会显示受限可调变量,除非这些受限可调变量的名称带有显示选项。 |
| -h [无法] | 显示有关 Tunable 参数的帮助 (如果已指定)。 否则,显示 vmo 命令的用法语句。 |
| -K | 在 /etc/tunables/nextboot 和 /etc/tunables/nextliveupdate 文件中设置可调参数值。 -K 标志只能与 -r 标志一起使用。 当您将 -K 标志与 -r 和 -d (或 -D) 标志一起指定时,可调参数值将设置为其在 /etc/tunables/nextboot 和 /etc/tunables/nextliveupdate 文件中的缺省值,以便在下一次引导或实时更新操作期间使用。 当您使用 -L 或 -x 标志指定 -K 标志时, vmo 命令将显示实时更新值。 |
| - L [ 可调谐 ] | 按以下格式列出一个或所有可调参数的特征 (每行一个)。 如果使用 -L 标志指定 -K 标志,那么还会显示 "实时更新" 值。
|
| -o 无法[=Newvalue] | 显示可调参数的值或将其设置为新值。 每当使用 -o 标志更改动态可调参数的值时, /etc/tunables/usermodified 文件都会用新的可调参数值更新。 如果要更改的可调参数符合以下一组或多组标准,则会显示警告信息,并且不会对该参数进行更改:
当指定带有 -o 标志的 -r 标志而不指定新值时,将显示可调参数的下一个引导值。 当您使用 -o 标志指定 -K 标志而不指定新值时,将显示可调参数的下一个 "实时更新" 值。 当使用 -o 标志指定 -p 标志而不指定新值时,仅当可调参数的当前引导值和下一个引导值相同时,才会显示值。 否则, |
| -p | 当与 -o、-d 或 -D 组合使用时,将更改应用到当前值和重新引导值,也就是说,除了打开当前值的更新,还打开 /etc/tunables/nextboot 文件的更新。 这些组合无法用于 Reboot 和 Bosboot 类型参数,因为它们的当前值无法更改。 当与 -a 或 -o 组合使用而没有指定新值时,那么只有在一个参数的当前值与下一个引导值相同时才会显示参数值。 否则,显示其值为 |
| -r | 当您将 -r 标志与 -a 或 -o 选项配合使用,但是没有指定新值时,仅当参数的当前值与下一个引导值相同时,才会显示值。 否则,会显示 NONE 作为值。 -r 标志与 -o、-d 或 -D 标志配合使用时,-r 标志将更改重新引导值。 例如,可以在使用 -r 标志时更新 /etc/tunables/nextboot 文件。 如果更改了类型为 Bosboot 的任何参数,那么将提示用户运行 bosboot 命令。 当与 -a 或 -o 标志一起使用而不指定新值时,将显示可调参数的下一个引导值而不是当前值。 当与 -K 标志一起使用时,类型为 Reboot 的可调参数中的更改将同时应用于 /etc/tunables/nextboot 和 /etc/tunables/nextliveupdate 文件。 |
| -x [无法] | 使用以下 (电子表格) 格式列出一个或所有可调参数的特征 (每行一个)。 如果使用 -x 标志指定 -K 标志,那么还会显示 "实时更新" 值。 |
| -y | 在运行 bosboot 命令之前,禁止显示确认提示。 |
如果更改了受限制的 tunable 参数,那么会显示警告消息,指出已修改受限制使用类型的 tunable 参数。 如果指定了 -r 或者 -p 选项,那么系统会提示您确认更改。 此外,在系统重新引导时,显示在 /etc/tunables/nextboot 文件中并且(使用指定了 -r 或 -p 选项的命令行)更改为不同于其缺省值的值的受限制 tunable 参数会导致错误日志条目,该条目标识这些已更改的 tunable 的列表。
- K=210
- M=220
- G=230
- T=240
- P=250
- E=260
任何对 Mount 类型的参数的更改(带 -o、-d 或 -D)将产生一个显示消息,警告用户该更改仅对将来的安装有效。
任何对 Connect 类型的参数的更改(带 -o、-d 或 -D 标志)将导致重新启动 inetd,并显示一个消息,警告用户更改仅对将来的套接字连接有效。
任何试图在不使用 -r 的情况下对 Bosboot 或 Reboot 类型的参数的更改(带 -o、-d 或 -D),都会导致错误消息。
任何试图将 Incremental 类型参数的当前值更改为比它小的新值(带 -o、-d 或 -D,但不带 -r)都会导致错误消息。
可调参数类型
| 项 | 描述 |
|---|---|
| 动态 | 如果该参数可在任何时间更改 |
| 静态 | 如果该参数决不可更改 |
| 重新引导 | 如果该参数仅可在重新引导期间更改 |
| Bosboot | 如果该参数仅可通过运行 bosboot 并重新引导机器来更改 |
| 安装 | 如果参数的更改仅对将来文件系统或目录安装有效 |
| 增量 | 如果该参数仅可增量(除了引导时间之外) |
| 连接(C) | 如果参数的更改仅对将来的套接字连接有效 |
| 不推荐 | 如果当前发行版的 AIX不再支持更改此参数。 |
注意由 vmo 命令管理的当前参数集合仅包含 Static、Dynamic 和 Bosboot 类型。
兼容性方式
在兼容性方式下运行 (由 sys0 的 pre520tune 属性控制) 时,请重新引导参数值 (类型为 Bosboot的参数除外)。 没有意义,因为在此方式下,它们不会在引导时应用。 有关更多信息,请参阅 Performance Management。
在兼容性方式下,您可以通过在引导序列期间调用的脚本中嵌入对调整命令的调用,将重新引导值设置为调整参数。 可以不使用 -r 标志来设置类型为 Reboot 的参数,以便现有脚本继续起作用。
可调参数
vmo -h <tunable_parameter_name>| 可调参数 | 描述 |
|---|---|
| ame_cpus_per_pool | 用途 确定每个压缩内存池的 CPU 比率。 对于每个 ame_cpus_per_pool CPU,将至少创建一个压缩内存池。 调整 比率越低,对压缩内存池的争用也越少。 此比率并不是用于确定压缩内存池数的唯一因素(还将考虑内存量和布局),因此,对此比率进行的某些更改可能不会导致对压缩内存池数进行任何更改。 此可调参数在整个 "实时更新" 操作中受支持。 |
| 最大可用内存 (ame_maxfree_mem) | 用途 指定压缩内存池空闲列表中的平均可用内存量,达到此内存量后,VMM 将使压缩池收缩。 调整 如果压缩内存池大小倾向显著更改,那么可发生过度缩减和增长操作。 在工作负载工作集大小频繁更改时,就会发生这种情况。 增大这个可调参数将提高 VMM 使压缩内存池收缩的阈值条件,从而减少整体收缩和扩张操作。 |
| ame_min_ucpool_size | 用途 定义未压缩池的最小大小。 调整 如果压缩内存池增长过大,那么内存中可能没有足够的空间来容纳由于过度使用压缩内存池而导致应用程序性能下降的解压缩内存。 增大此值以限制压缩内存池的大小并使更多已解压缩的页面可用。 |
| ame_minfree_mem | 用途 指定压缩内存池空闲列表中的可用内存量,达到此内存量后,VMM 将使压缩池扩张。 调整 如果进程由于等待可用的压缩内存而延迟,那么增大 ame_minfree_mem 可缩短响应时间。 注意,此参数必须比 ame_maxfree_mem 小 64 KB。 |
| ame_mpsize_support | 用途 在基于 POWER8 处理器的服务器或更高版本 (支持 64 KB 加速器) 的 Active Memory Expansion (AME) 环境中启用所有受支持的页面大小。 调整 值为-1时,AIX®操作系统会为 AME 环境选择最佳模式。 值 0 仅支持 4 KB 和 16 MB 的页面大小。 如果值为 1,那么将在 AME 环境中启用所有受支持的页大小。 只有支持 64 KB 加速器的基于POWER8处理器或更高版本的服务器才能更改此可调参数。 |
| 贷款政策 | 用途 这个可调参数在共享内存方式处于启用状态时切换借用行为。 调整 当可调项设置为 0 时,会禁用借贷。 设置为 1 时,会启用文件高速缓存的借贷。 设置为 2 时,会启用任何类型数据的借贷。 在响应 AMS 池内存不足这一情况时,VMM 将释放内存并将其借给系统管理程序使用。 |
| dr_lmb_meta | 用途 将内存动态添加到逻辑分区时,必须隔离某些物理内存并分配给 VMM 数据结构,以支持新添加的内存。 此可调参数指定是从现有内存分配物理内存还是从新添加的内存分配物理内存。 调整 值 0 允许系统确定是必须从现有内存还是新添加的内存中隔离物理内存并将其分配给 VMM 数据结构。 值 1 将尽可能实施与现有物理内存的隔离和分配。 值 2 强制从新添加的物理内存中隔离和分配内存。 缺省值为 0。 |
| dr_multi_lmb | 用途 将内存动态添加到逻辑分区时,系统会同时处理多个 LMB 以提高性能。 此可调参数一次强制处理单个 LMB。 调整 值 0 强制系统一次处理单个 LMB。 值 1 允许系统同时处理多个 LMB。 缺省值为 1。 |
| force_relalias_lite | 用途 如果此可调参数设置为 0,那么在卸下 mmap 区域时,将使用试探性方法来确定何时避免锁定源 mmapped 段。 调整 这是一种由 relalias_percentage 控制的可伸缩性权衡,并有可能增加所耗用的计算时间。 如果此可调参数设置为 1,那么将尽可能避免锁定源段,而不考虑 relalias_percentage 的值。 |
| ipc_msgmnb |
|
| 内核堆大小 | 用途 指定内核堆的缺省页大小。 调整 这是建议设置。 对 64 KB 页面的支持由 POWER5+ 和更高版本的机器提供,并在启用 vmm_mpsize_support 时使用。 POWER4 和更高版本的机器提供的 16 MB 页面仅应用于高性能环境下的内核堆。 值为 0 表示,如果支持首选的缺省 64 KB 页大小,那么内核将使用此页大小,否则将使用 4 KB 页。 此可调参数在整个 "实时更新" 操作中受支持。 |
| lgpg_regions | 用途 指定要保留的大页数(通过带有 SHM_LGPAGE 标志的 shmget() 系统调用来实现)。 调整 除了使用此选项之外,还必须使用 lgpg_size 参数。 必须修改应用程序以在调用 shmget ()时指定 SHM_LGPAGE 标志。 在存在许多 TLB 未命中且正在访问大量内存的情况下,这将提高性能。 虽然此参数在支持 DLPAR 的系统上是动态参数,但在运行 bosboot 命令时,将把 nextboot 值写入引导映像以便在重新引导时快速复原此设置。 |
| lgpg_size | 用途 指定由硬件支持的大页的大小(以字节计),这些大页由带有 SHM_LGPAGE 标志的 shmget() 系统调用实现。 调整 在 Power4 以上版本的系统上受支持。 虽然此参数在支持 DLPAR 的系统上是动态参数,但在发出 bosboot 命令时,将把 nextboot 值写入引导映像以便在重新引导时快速复原此设置。 除了此参数外,还必须将 lgpg_regions 参数设置为非零值。 必须将应用程序修改为,在调用 shmget() 子例程时指定 SHM_LGPAGE 标志。 这将提高存在许多 TLB 不命中情况并要访问大量内存时的性能。 |
| 低ps处理 | 用途 指定该操作以在调页空间很低的情况下更改与进程终端相关的系统行为。 调整 值为 1 指示页面调度空间较低时当前行为是进程终止。 值为 2 指示新行为,即,如果先前未找到其他可从调页空间不足情况恢复的进程,那么杀死带有 SIGDANGER 处理程序的进程。 |
| maxfree | 用途 指定可用列表中的帧数,达到该数时将停止页面窃取。 调整 请使用 vmstat -n 命令来观察空闲列表大小更改。 如果 vmstat -n 命令显示应用程序需求经常导致空闲列表大小低于 minfree,请增大 maxfree 值以减少调用,从而补充空闲列表。 将该值设置得太高会导致页面置换运行较长时间。 maxfree 与 minfree 之差应该具有 maxpgahead 的量级并且不小于 8。 |
| maxpin% | 用途 指定可以固定的实内存的最大百分比。 调整 在不能固定内存时更改,尽管有可用内存可用。 如果更改此值,那么新值应该确保至少 4 MB 实内存将保留为未固定,以供内核使用。 vmo 命令将 maxpin% 转换为相应的 maxpin 绝对值,即内核所使用的值。 您只应该在极端情况下(例如在进行最大负载基准测试时)更改此参数。 发出 bosboot 命令时,这个动态参数会将其下次引导值写入引导映像。 |
| memory_frames | 用途 有效内存帧的数目。 调整 不适用 |
| memplace_data | 用途 指定数据的缺省内存放置策略。 调整 这是指主可执行文件的数据(已初始化的数据和 BSS)、堆、共享库以及在运行时装入的对象模块。 可以将数据布置设置为首次接触(值为 1)、跨系统循环(值为 2)或自动(值为 0),最佳的内存布置由系统确定。 |
| memplace_mapped_file | 用途 指定映射到进程地址空间(例如通过 shmat() 和 mmap() 进行映射)的文件的缺省内存布置策略。 调整 可以将映射到内存的文件的缺省布置设置为首次接触(值为 1)、跨系统循环(值为 2)或自动(值为 0),最佳的内存布置由系统确定。 |
| memplace_shm_anonymous | 用途 指定匿名共享内存的缺省内存放置策略。 调整 匿名共享内存是指通过 shmget() 或 mmap() 创建的工作存储器内存,此内存只能由创建进程或其子进程访问。 此内存与名称(或键)无关。 可以将匿名共享内存的缺省布置设置为初次接触(值为 1)、跨系统循环(值为 2)或自动(值为 0),系统将确定内存的最佳布置。 |
| memplace_shm_named | 用途 指定命名共享内存的缺省内存放置策略。 调整 命名共享内存是指通过 shmget() 或 shm_open() 创建的工作存储器内存,此内存与一个名称(或键)相关联,该名称(或键)允许多个进程同时访问该内存。 可以将命名共享内存的缺省布置设置为首次接触(值为 1)、跨系统循环(值为 2)或自动(值为 0),最佳的内存布置由系统确定。 |
| memplace_stack | 用途 指定程序堆栈的缺省内存放置策略。 调整 可以将堆栈布置设置为首次接触(值为 1)、跨系统循环(值为 2)或自动(值为 0),最佳的内存布置由系统确定。 |
| memplace_text | 用途 指定应用程序文本的缺省内存布置策略。 调整 此参数仅适用于主可执行文件的文本,而不适用于其依赖项的文本。 可以将文本布置设置为首次接触(值为 1)、跨系统循环(值为 2)或自动(值为 0),最佳的内存布置由系统确定。 |
| memplace_unmapped_file | 用途 指定未映射的文件访问(例如通过 read()/write() 进行的访问)的缺省内存布置策略。 调整 可以将未映射的文件访问的缺省布置设置为首次接触(值为 1)、跨系统循环(值为 2)或自动(值为 0),最佳的内存布置由系统确定。 |
| minfree | 用途 指定可用列表中的帧数,达到该数时 VMM 开始窃取页面来补充可用列表。 调整 当可用帧数达到 minfree 时,将发生页替换。 如果进程由于页窃用而延迟,那么增大 minfree 可缩短响应时间。 maxfree 与 minfree 之差应该具有 maxpgahead 的量级并且不小于 8。 |
| minperm% | 用途 指定一个点,在该点之下页面窃取者将窃取文件或计算的页面,而不管重新调页速率是多少。 调整 如果内存中的大量文件页导致工作存储器页被替换,那么您可以减小此参数。 另一方面,如果已知要重复读取某些文件,并且 I/O 率在启动后并未随时间推移而下降,那么表明 minperm 可能太小。 |
| nokilluid | 用途 小于此值的用户标识的进程将不会由于页面空间不足情况而被杀死。 调整 值为 0 指示关闭。 在由于系统的调页空间不足而杀死系统管理进程时,此属性非常有用。 请将此可调参数设置为 1 以确保保护特定用户标识的进程不会由于页面空间不足而被杀死,或者确保有足够的调页空间可用。 |
| npsassert | 用途 当系统耗尽调页空间时,断言 LPAR。 调整
|
| npskill | 用途 指定操作系统开始终止进程的可用调页空间页面数。 调整 缺省值为最大值 64 和 (页面调度空间页数)/128。 npskill 值必须大于零并小于系统上的调页空间页面总数。 |
| npswarn | 用途 指定可用调页空间页面数,操作系统从此页面数开始将 SIGDANGER 信号发送至进程。 调整 缺省值为 512 与 (4*npskill) 之间的较大者。 npswarn 值必须大于零并小于系统上的调页空间页面总数。 如果您遇到进程由于调页空间不足而被杀死的情况,请增大此值。 |
| numpsblks | 用途 调页空间块的总数。 调整 不适用 |
| pinnable_frame | 用途 可供锁定的页数。 调整 不适用 |
| 关系百分比 (relalias_percentage) | 用途 如果 force_relalias_lite 设置为 0,那么此参数指定为了确定是否避免锁定源 mmapped 段而进行的试探中使用的因子。 调整 此参数在卸下 mmapped 区域时使用并且是可伸缩性声明;避免锁定有助于提高系统吞吐量,但在某些情况下会导致计算时间延长。 如果未映射的页数小于此值除以 100 并乘以源 mmapped 段中的内存中的总页数,那么将避免锁定源。 如果 relalias_percentage 和 force_relalias_lite 都设置为 0,那么将导致始终锁定源段。 relalias_percentage 的有效值随工作负载不同而有所变化,但是,建议的值是 200。 |
| 清除 | 用途 从内存中的页面为“延迟页面空间分配策略”页面“启用”或“禁用”释放调页空间磁盘块。 调整 值为 0 则完全禁用擦除。 值为 1 表示,当系统可用调页空间块数低于 npsscrubmin 时,允许擦除内存中的调页空间磁盘块,并持续到高于 npsscrubmax 为止。 |
| v_pinshm | 用途 如果设置为 1,将允许固定共享内存段。 调整 值为 0 指示关闭。 当开销较高,并且正在锁定或取消锁定共享内存段中的 AIO 缓冲区时,请更改此值。 仅当应用程序在执行 shmget() 调用时也设置了 SHM_PIN 标志,并且正在从共享内存继执行异步 I/O 时,此参数才有用。 |
| vmm_default_pspa | 用途 此可调项控制页大小提升的缺省违反情况。 此值是抽象的主动性权重,操作系统将此值视为页面提升阈值的反数。 调整 vmm_default_pspa 设置值为 0 相当于页面提升阈值 100%,即,内存范围必须占用了 100% 实内存才能提升。 vmm_default_pspa 设置值为 100 相当于页面提升阈值 0%,即,在第一次引用内存范围内的内存时,立即提升该范围。 vmm_default_pspa 设置值为 -1 相当于页面提升阈值 -1,即,永远不为内存范围执行页面提升。 仅在创建段时考虑页大小提升阈值。 因此,更改 vmm_default_pspa 只影响在调整此可调参数后创建的段的页面大小提升阈值。 |
| wlm_memlimit_nonpg | 用途 选择是否将不可分页的页面大小(16M 和 16G)包括在 WLM 的 realmem 和 virtmem 计数中。 如果选择 1,那么将不可分页的页面大小包括在 realmem 和 virtmem 极限计数中。 如果选择 0,那么只将可分页的页面大小(4K 和 64K)包括在 realmem 和 virtmem 计数中。 仅当“WLM 内存记帐”处于关闭状态时才能更改此值,否则此更改将失败。 调整 当此可调项设置为 0 时,WLM 虚拟和实内存限制将仅适用于 WLM 类使用的可分页的页面。 必须大量使用可分页的页面才能在系统上进行页面调度,因此在使用不可分页的页面时,值 0 可以提供更强的粒度来控制 WLM 类的分页程度。 仅当在配置了不可分页的页面的系统上使用 WLM 实内存或虚拟内存限制时,才应调整此可调参数。 |
安全性
示例
- 要列出 vmo 命令管理的所有可调参数的当前和重新引导值,范围,单元,类型和依赖关系,请输入以下命令:
vmo -L - 要在 POWER4 系统上开启并预留 16 MB 大页面,请输入以下命令:
vmo -o lgpg_regions=10 -o lgpg_size=16777216此命令将向用户提示 bosboot ,并警告需要重新引导才能使更改生效。
- 要显示有关 nokilluid 可调参数的帮助,请输入以下命令:
vmo -h nokilluid - 要在下一次重新引导后开启 v_pinshm 可调参数,请输入以下命令:
vmo -r -o v_pinshm=1 - 要将所有 vmo 可调参数永久重置为缺省值,请输入以下命令:
vmo -p -D - 要列出所有虚拟内存管理器调整参数的重新引导值,请输入以下命令:
vmo -r -a - 要列示 (电子表格格式) vmo 命令管理的所有可调参数的当前和重新引导值,范围,单元,类型和依赖关系,请输入以下命令:
vmo -x - 要对下一个 "实时更新" 操作开启 msem_nlocks 可调参数,请输入以下命令:
vmo -r -K -o msem_nlocks=1M