欢迎留言: | Guestbook |

vmo 命令

 

vmo 命令

用途

管理虚拟内存管理器可调参数。

语法

vmo [ -p | -r ] { -o Tunable [= Newvalue]}

vmo [ -p | -r ] {-d Tunable }

vmo [ -p | -r ] -D

vmo [ -p | -r ] -a

vmo -?

vmo -h [ Tunable ]

vmo -L [ Tunable ]

vmo -x [ Tunable ]

注:
允许多个 -o-d-x-L

描述

注:
vmo 命令只能由 root 用户执行。

使用 vmo 命令来配置虚拟内存管理器调整参数。此命令设置 或显示所有虚拟内存管理器调整参数的当前值或下一个引导值。还可以用此命令进行永久性更改,或将更改推迟到下一次重新引导之后生效。 此命令是设置参数还是显示参数,要由所带标志来决定。 带 -o 标志的话,两个操作都执行。它既可以显示参数的值,也可以为参数设置新值。

虚拟内存管理器(VMM)维护一个空闲实存页面帧的列表。这些页面帧可用于维持满足一个缺页故障 所需的虚拟内存页。当空闲列表上的页面数低于 minfree 参数所指定的数值时, VMM 开始取走页面以加入空闲列表。VMM 继续取走页面直到空闲列表至少 达到 maxfree 参数所指定的页面数。

如果内存中的文件页面(永久页面)数少于 minperm% 参数 所指定的数值,VMM 就会从计算页面或者文件页面取走帧,而不管重调页率。如果文件页面数 大于 maxperm% 参数所指定的数值,VMM 就只从文件页面中取走帧。如果介于二者之间,正常情况下 VMM 只取走文件页面, 但是如果文件页面的重调页率大于计算页面的重调页率,计算页面也会被取走。

也可以修改用于判断何时系统耗尽调页空间的阈值。npswarn 参数指定调页空间可用页数值, 从该数值系统开始警告进程调页空间不足。npskill 参数指定调页空间可用页 面数,从该数值系统开始杀死进程以释放调页空间。

注意: 误用此命令会导致性能下降或操作系统故障。在试验操作 vmo 前,应该充分 熟悉 Performance Overview of the Virtual Memory Manager (VMM)Tuning VMM Page Replacement

标志

-h [Tunable] 如果指定了一个,则显示关于 Tunable 参数的帮助。否则,显示 vmo 命令 用法语句。
-a 显示所有可调参数的当前、重新引导(当与 -r 一起使用时)或永久(当与 -p 一起使用时)值,每行一个,按 Tunable = Value 成对显示。仅当一个参数的重新引导值和当前值相等时,才会显示其永久选项值,否则,显示其值为 NONE
-d Tunable Tunable 复位为缺省值。如果 Tunable 需要更改(也就是说,它当前不是设置为缺省值),并且它属于类型 BosbootReboot,或者如果它属于类型 Incremental 并且已经更改其缺省值,而且没有与 -r 一起使用,那么它将不会被更改而是显示警告。
-D 将所有的可调参数复位为缺省值。如果需要更改的可调参数属于类型 BosbootReboot,或者如果它属于类型 Incremental 并且已经更改其缺省值,而且没有与 -r 一起使用,那么它将不会被更改而是显示警告。
-o Tunable[=Newvalue] 显示值或将可调参数设置为新值。如果一个可调参数需要更改(指定值与当前值不同),并且它属于类型 BosbootReboot,或者如果它属于类型 Incremental 并且其当前值比指定值大,而且没有与 -r 一起使用,那么它将不会被更改而是显示警告。

当与 -r 一起使用而没有指定新值时,则显示可调参数的下一个引导值。当与 -p 一起使用而没有指定新值时,则只有在可调参数的当前值和下一个引导值相同时,才显示值。否则,显示其值为 NONE

-p 当与 -o-d-D 组合使用时,将更改应用到当前值和重新引导值,也就是说,除了打开当前值的更新,还打开 /etc/tunables/nextboot 文件的更新。这些组合不能用于 RebootBosboot 类型参数,因为它们的当前值不能更改。

当与 -a-o 组合使用而没有指定新值时,则只有在一个参数的当前值与下一个引导值相同时才会显示参数值。否则,显示其值为 NONE

-r 当与 -o-d-D 组合使用时,将更改应用到重新引导值,例如,打开 /etc/tunables/nextboot 文件的更新。如果对类型 Bosboot 的任何参数做了更改,则提示用户运行 bosboot。

当与 -a-o 一起使用而不指定新值时,则显示可调参数的下一个引导值而不是当前值。

-L [ Tunable ] 列出一个或所有可调参数的特征,每个一行,使用以下格式:
NAME                      CUR    DEF    BOOT   MIN    MAX    UNIT           TYPE     DEPENDENCIES--------------------------------------------------------------------------------memory_frames             128K          128K                 4KB pages         S-------------------------------------------------------------------------------- maxfree                   128    128    130    16     200K   4KB pages         D     minfree     memory_frames-------------------------------------------------------------------------------- minfree                   120    120    122    8      200K   4KB pages         D     maxfree     memory_frames-------------------------------------------------------------------------------- ... 其中:    CUR = 当前值    DEF = 缺省值    BOOT = 重新引导值    MIN = 最小值    MAX = 最大值    UNIT = 可调计量单位    TYPE = 参数类型:D(指 Dynamic)、S(指 Static)、R(指 Reboot)、           B(指 Bosboot)、M(指 Mount)、I(指 Incremental)和 C(指 Connect)    DEPENDENCIES = 从属可调参数的列表,每个一行
-x [Tunable] 列出一个或所有可调参数的特征,每个一行,使用以下(电子表格)格式:
tunable,current,default,reboot,min,max,unit,type,{dtunable } 其中:    current = 当前值    default = 缺省值    reboot = 重新引导值    min = 最小值    max = 最大值    unit = 可调计量单位    type = 类型参数:D(指 Dynamic)、S(指 Static)、R(指 Reboot)、                B(指 Bosboot)、M(指 Mount)、I(指 Incremental)和 C(指 Connect)    dtunable = 从属可调参数的列表
-? 显示 vmo 命令用法语句。

任何对 Mount 类型的参数的更改(带 -o-d-D)将产生一个显示信息,警告用户该更改仅对将来的安装有效。

任何对 Connect 类型的参数的更改(带 -o-d-D 标识)将导致重新启动 inetd,并显示一个信息,警告用户更改仅对将来的套接字连接有效。

任何试图在不使用 -r 的情况下对 BosbootReboot 类型的参数的更改(带 -o-d-D),都会导致错误消息。

任何试图将 Incremental 类型参数的当前值更改为比它小的新值(带 -o -d-D,但不带 -r)都会导致错误消息。

可调参数类型

所有通过调整命令(nonfsovmoiooschedo)操纵的可调参数已经被分为这些类别:

Dynamic 如果该参数可在任何时间更改
Static 如果该参数决不可更改
Reboot 如果该参数仅可在重新引导期间更改
Bosboot 如果该参数仅可通过运行 bosboot 并重新引导机器来更改
Mount 如果参数的更改仅对将来文件系统或目录安装有效
Incremental 如果该参数仅可增量(除了引导时间之外)
Connect 如果参数的更改仅对将来的套接字连接有效

对于 Bosboot 类型的参数,无论何时执行更改,调整命令会自动提示用户,问他们是否想执行 bosboot 命令。对于 Connect 类型的参数,调整命令会自动重新启动 inetd 守护进程。

注意由 vmo 命令管理的当前参数集合仅包含 Static、Dynamic 和 Bosboot 类型。

兼容性方式

当在 AIX 5.2 以前版本的兼容性方式(由 sys0 的 pre520tune 属性控制)中运行时,参数的重新引导值(除了那些 Bosboot 类型)并不真正有意义,因为在该方式下不会在引导时间应用这些参数。有关更多信息,请参阅《AIX 5L V5.2 性能管理指南》中的『AIX 5.2 调整增强』

在 AIX 5.2 以前版本的兼容性方式中,通过在引导序列期间在所调用的脚本中嵌入调用调整命令,来继续完成对调整参数的重新引导值的设置。所以 Reboot 类型的参数可以不使用 -r 标志来设置,这样现有的脚本也可以继续工作。

当机器迁移到 AIX 5L V5.2 时,该方式自动打开。对于完全安装,该方式关闭且参数的重新引导值通过在重新引导序列过程中应用 /etc/tunables/nextboot 文件的内容设置。只有在该方式下,-r-p 标志才能完全发挥作用。 有关更多信息,请参阅 AIX 5L Version 5.2 Performance Tools Guide and Reference 中的 Kernel Tuning

可调参数

data_stagger_interval
用途:
此可调参数指定可使用 LDR_CNTRL=DATA_START_STAGGER=Y 执行的大页面数据的数据段将采用的偏差。这意味着在给定 MCM 上执行的第 n 个大页面数据进程使其数据段以偏移量(n * data_stagger_interval * PageSize)% LargePageSize 开始。此选项仅适用于 64 位内核。
值:
缺省值:0xA1

范围:0 至(LargePageSize/PageSize)-1。

类型:Dynamic

诊断:
不适用
defps
用途:
打开/关闭延迟调页空间分配(DPSA)策略。
值:
缺省值:1

范围:0 或 1(DPSA 已打开)

类型:Dynamic

诊断:
不适用
调整
如果担心调页空间过量使用,那么关闭 DPSA 策略可能有用。获取关于减少调页空间需求的值。
请参阅:
用 vmtune 命令在 LPAS 和 DPSA 之间选择
framesets
用途:
指定每个内存池的实内存页集合数。在 UP 内核中该参数不存在。
值:
  • 缺省值:2
  • 范围:1 到 10
  • 类型:Bosboot
诊断:
不适用
调整
不适用
kernel_heap_psize
用途:
如果将 kernel_heap_psize 设置为 16777216(16M),则大页面将支持至少 large_page_heap_size 个字节的内核堆。内核将以某个段的倍数为内核堆分配大页面。此选项仅适用于 64 位内核。
值:
  • 缺省值:4096
  • 范围:4096 或 16777216
  • 类型:Bosboot
诊断:
不适用
large_page_heap_size
用途:
如果将 kernel_heap_psize 设置为 16777216(16M),则大页面将支持至少 large_page_heap_size 个字节的内核堆。内核将以某个段的倍数为内核堆分配大页面。此选项仅适用于 64 位内核。
值:
  • 缺省值:0
  • 范围:0 至 MAXINT64
  • 类型:Bosboot
诊断:
不适用
lgpg_regions
用途:
指定保留用以执行带有 SHM_LGPAGE 标志的 shmget( ) 系统调用的大型页面的数目。在运行在基于非 Power4 机器上的 64 位内核中该参数不存在。
值:
  • 缺省值:0
  • 范围:0 - 页数。
  • 类型:Bosboot
诊断:
不适用
调整
除了此选项外还必须使用 lpgpg_size。必须修改应用程序以便调用 shmget() 时指定 SHM_LGPAGE 标志。在有许多 TLB 不命中和大量内存被访问的情况下,这将会提高性能。
请参阅:
文件系统缓冲区调整
lgpg_size
用途:
指定用于实现带 SHM_LGPAGE 标志的 shmget() 系统调用的、硬件支持的大型页面的大小(用字节表示)。在运行在基于非 Power4 机器上的 64 位内核中该参数不存在。
值:
  • 缺省值:0
  • 范围:0 或 268435456(在非 POWER4 上),或者是 0 或 16777216(在 POWER4 上)。
  • 类型:Bosboot
诊断:
不适用
调整
除了本参数之外,lgpg_region 必须设置成非零值。必须修改应用程序以便调用 shmget() 时指定 SHM_LGPAGE 标志。在有许多 TLB 不命中和大量内存被访问的情况下,这将会提高性能。
请参阅:
文件系统缓冲区调整
low_ps_handling
用途:
在调页空间不足的环境下,指定该操作更改关于处理终止的系统工作情况。
值:
  • 缺省值:1
  • Range: 1 or 2
  • 类型:Dynamic
诊断:
不适用
调整
系统缺乏调页空间,并且没有足够的进程被杀死。 缺省值(值为 1)工作情况是不用 SIGDANGER 处理程序杀死进程。 如果不使用 SIGDANGER 处理程序的情况下找不到要杀死的进程,则另一个工作情况(值为 2)会允许系统用 SIGDANGER 处理程序杀死最新的进程。
lrubucket
用途:
指定每个存储区的内存帧数。页替换算法将实存划分为帧存储区。在有多个内存池的系统上,lrubucket 参数是每个内存池帧数。
值:
  • 缺省值:131072 帧
  • 范围:65536 到内存帧的总数目
  • 类型:Dynamic
诊断:
不适用
调整
大多数的系统上不推荐调整此参数。页替换算法不是扫描系统中的每一个帧来搜索可用帧,而是扫描整个存储区内容,并且在继续进行到第二个存储区之前对同一存储区扫描第二遍。
请参阅:
调整 lrubucket 以减少内存扫描开销
maxclient%
用途:
指定可以用于对客户机页面进行高速缓存的 RAM 最大百分比。与 maxperm% 类似,但是不能大于 maxperm%。
值:
  • 缺省值:80
  • 范围:1% 到 100%。
  • 类型:Dynamic
诊断:
如果 J2 文件页面或 NFS 页面正在促使工作的存储页面被调出,那么可以减少 maxclient。
调整
如果由于太多的 J2 客户机页面或 NFS 客户机页面在内存中,产生调出到调页空间的情况,则减少 maxclient 的值。增加值会允许更多的 J2 或 NFS 客户机页面在页替换启动之前放入内存。
请参阅:
文件系统缓冲区调整
maxfree
用途:
指定页面取走停止时的空闲列表上的帧数。
值:
  • 缺省值:128
  • 范围:16 到 204800
  • 类型:Dynamic
诊断:
vmstat n 观察空闲列表大小的更改。
调整
如果 vmstat n 显示应用程序的要求频繁导致空闲列表大小低于 minfree,则增加 maxfree 以减少补充空闲列表的调用。通常,使 maxfree - minfree 等于或小于 100。将该值设置太高会使页替换运行更长时间。该值必须比 minfree 至少大 8。
请参阅:
用 vmtune 命令调整 VMM 页替换
maxperm%
用途:
指定页面取走算法只取走文件页面的临界点。
值:
  • 缺省值:内存帧的总数目 * 0.8
  • 范围:1 到 100
  • 类型:Dynamic
诊断:
iostat n 监视磁盘 I/O。
调整
此值表示为系统中全部实存页面帧的一个百分比。减小此值可以减少或消除因大量文件页面访问所造成的工作存储页的页替换。增加此值对基本上只读的 NFS 服务器可能有帮助。如果已知有些文件是反复读取的,而从启动开始 I/O 率不随时间减少,则 maxperm 可能太低。
请参阅:
用 vmtune 命令调整 VMM 页替换
maxpin%
用途:
指定能被固定的实存的最大百分比。
值:
  • 缺省值:80%
  • 范围:1 到 99
  • 类型:Dynamic
诊断:
不能固定内存,尽管自由内存可用。
调整
如果更改该值,新值应该确保至少 4 MB 实内存没有被固定,以供内核使用。maxpin 值必须大于 1 小于 100。仅在极端情况下更改此参数,比如最大负载性能测试时。
memory_affinity
用途:
该参数可用来指示 VMM(如果可能的话)在正在运行执行线程的同一个 MCM 中分配内存帧。此参数只能启用内存亲缘关系,然后可通过将进程的 MEMORY_AFFINITY 环境变量设置为 MCM,可以为一个给定的进程打开这种内存亲缘。仅在基于 Power4 的机器上支持该参数。
值:
  • 缺省值:1(启用)
  • 范围:0 或 1(禁用或启用)
  • 类型:Bosboot
诊断:
不适用
调整
如果受控且可重复的性能测试在执行时显示出意外的变化,启用 memory_affinity 可能对性能有益。
请参阅:
使用 AIX 内存亲缘支持
mempools
用途:
更改内存池的数目(将在系统引导时配置)。在 UP 内核中该参数不存在。
值:
  • 缺省值:CPU 的数目/8
  • 范围:1 到 CPU 的数目
  • 类型:Bosboot
诊断:
不适用
调整
值 0 恢复内存池的缺省数目。不允许对 UP 内核进行更改,并且不推荐用于其它的内核。
请参阅:
调整内存池
minfree
用途:
指定空闲列表中 VMM 开始取走页面来补充空闲列表的最小帧数目。
值:
  • 缺省值:maxfree - 8
  • 范围:8 到 204800
  • 类型:Dynamic
诊断:
vmstat n
调整
当空闲帧的数目达到 minfree 时,发生页替换。如果进程由于页面被取走而被延迟,则增加 minfree 来改进响应时间。minfree 和 maxfree 之差应该始终等于或大于 maxpgahead。
请参阅:
用 vmtune 命令调整 VMM 页替换
minperm%
用途:
按内存帧总数的百分比指定一个点,在该点之下,页面调度程序将会取走文件或者计算页面而不管重调页率为多少。
值:
  • 缺省值:20%
  • 范围:1 到 100。
  • 类型:Dynamic
诊断:
iostat n 监视磁盘 I/O。
调整
如果内存中的大量文件页面造成工作存储页面被替换,则减少此参数可能有用。如果已知有些文件是反复读取的,而从启动开始 I/O 率不随时间减少,则 minperm 可能太低。
请参阅:
用 vmtune 命令调整 VMM 页替换
nokilluid
用途:
在缺乏调页空间的情况下不杀死低于此值的用户标识。
值:
  • 缺省值:0(关闭)
  • 范围:任何正整数。
  • 类型:Dynamic
诊断:
不适用
调整
缺乏调页空间的系统和系统管理员进程将会被杀死。设置为 1 以防止由于缺乏调页空间或为确保有足够的调页空间可用而杀死特殊用户标识进程。
请参阅:
选择 npswarn 和 npskill 设置
npskill
用途:
指定空闲调页空间页数,据此操作系统开始杀死进程。
值:
  • 缺省值:MAX(64,调页空间页面的数目/128)
  • 范围:0 到系统上调页空间页面总数
  • 类型:Dynamic
诊断:
不适用
调整
如果发现由于缺乏调页空间导致进程被杀死,请增大该值。
请参阅:
选择 npswarn 和 npskill 设置
npswarn
用途:
指定空闲调页空间页数,当达到该数字时操作系统开始发送 SIGDANGER 信号到进程。
值:
  • 缺省值:MAX(512,4*npskill)
  • 范围:0 到系统中调页空间页面的总数。
  • 类型:Dynamic
诊断:
不适用
调整
如果发现由于缺乏调页空间导致进程被杀死,请增大该值。
请参阅:
选择 npswarn 和 npskill 设置
num_spec_dataseg
用途:
保留特殊数据段标识供与环境变量 DATA_SEG_SPECIAL=Y 一起执行的进程使用。分配这些数据段以便这些段中的硬件页表条目在高速缓存中分布更好以减少高速缓存冲突。特殊数据段会被尽可能多的保留,最大达到所请求的数字。重新引导后运行 vmo -a 将显示保留的实际数字。此参数仅在运行于基于 Power4 机器的 64 位内核中得到支持。
值:
  • 缺省值:0
  • 范围:0 或正数
  • 类型:Bosboot
诊断:
不适用
调整
要保留的正确数目取决于与 DATA_SEG_SPECIAL=Y 同时运行的进程数目和每个进程所使用的数据段数。
pagecoloring
用途:
打开或关闭 VMM 中的页面着色。在 64 位内核中不支持该参数。
值:
  • 缺省值:0(关闭)
  • 范围: 0 或 1。
  • 类型:Bosboot
诊断:
不适用
调整
此参数对于在有直接映射高速缓存的机器上运行的一些应用程序有用。
pta_balance_threshold
用途:
指定一个点,新的 pta 段将分配在该点。在 64 位内核中该参数不存在。
值:
  • 缺省值:pta 段大小 * 0.5
  • 范围:1 到 99。
  • 类型:Dynamic
诊断:
系统将从 dsi 崩溃(异常结束代码 300),带有类似以下的堆栈:
  findsrval64()  shmforkws64()  shmforkws()  procdup()  kforkx()  kfork()
转储调查将会显示生成缺页故障页面的 pta 段已满。
调整
将 pat 平衡阈值调低将促使新的 pta 段提前分配,因此减少了 pta 段填满并使得系统崩溃的机会。如果可能,更好的解决方案是移至没有此潜在问题的 64 位内核。
soft_min_lgpgs_vmpool
用途:
如果 soft_min_lgpgs_vmpool 非零,将不从低于其空闲大页面的 soft_min_lgpgs_vmpool % 的 vmpool 分配大页面。如果所有 vmpool 的空闲大页面都小于这些空闲大页面的 soft_min_lgpgs_vmpool %,将按正常情况进行分配。此选项仅适用于 64 位内核。
值:
  • 缺省值:0
  • 范围:0 至 90
  • 类型:Dynamic
诊断:
不适用
spec_dataseg_int
用途:
修改使用 num_spec_dataseg 保留的特殊数据段标识之间的间隔。此参数仅在运行于基于 Power4 机器的 64 位内核中得到支持。
值:
  • 缺省值:512
  • 范围:1 到任何正整数
  • 类型:Bosboot
诊断:
不适用
调整
通常,对于带 DATA_SEG_SPECIAL=Y 执行的进程, 要优化性能,所有进程都访问的数据段页面越多,则该值应当越高。然而,过高的值会限制可以保留的特殊段标识的数目。性能影响高度依赖于硬件体系结构和应用 程序行为,而且对于不同体系结构和不同应用程序最佳值可能不同。
strict_maxperm
用途:
如果设置为 1,maxperm 值对于可用作持久文件高速缓存的 RAM 的数量是一个硬性限制。
值:
  • 缺省值:0(关闭)
  • 范围: 0 或 1。
  • 类型:Dynamic
诊断:
RAM 中文件页面太多导致过多的页面调出调页空间。
调整
设置为 1 以使 maxperm 值成为一个硬性限制(和 masperm 参数的调整一起使用)。
请参阅:
用 strict_maxperm 对持久文件高速缓存设置硬性限制
v_pinshm
用途:
如果设置为 1,将允许对共享内存段的固定。
值:
  • 缺省值:0(关闭)
  • 范围: 0 或 1。
  • 类型:Dynamic
诊断:
从共享内存段固定或解除对 AIO 缓冲区固定的开销太大时更改此值。
调整
仅当进行 shmget 调用时应用程序也设置 SHM_PIN 标志,或当从共享内存段进行 I/O 同步时,此选项才有用。
请参阅:
文件系统缓冲区调整

示例

  1. 要列出由 vmo 命令管理的所有可调参数的当前和重新引导值、范围、单元、类型和相关性,请输入:
    vmo -L
  2. 要在 POWER4 系统中打开并保留 16MB 大页面,请输入:
    vmo -r -o lgpg_regions=10 -o lgpg_size=16777216

    此命令将向用户建议 bosboot, 并警告在更改生效之前必须重新引导。

  3. 要显示 nokilluid 的帮助,请输入:
    vmo -h nokilluid
  4. 要在下一次重新引导后打开 v_pinshm,请输入:
    vmo -r -o v_pinshm=1
  5. 要将所有 vmo 可调参数永久复位为缺省值,请输入:
    vmo -p -D
  6. 要列出所有虚拟内存管理器可调参数的重新引导值,请输入:
    vmo -r -a
  7. 要列出(电子表格格式)由 vmo 命令管理的所有可调参数的当前和重新引导值、范围、单元、类型和相关性,请输入:
    vmo -x

相关文章:

One Response to “vmo 命令”

Leave a Reply

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。