schedo 命令

用途

管理处理器的调度程序调整参数。

语法

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

schedo[-p|-r][-y] {-d Tunable}

schedo[-p|-r][-y]-D

schedo[-p|-r] [ -F]-a

schedo -h[Tunable]

schedo[-F]-L[Tunable]

schedo[-F]-x[Tunable]

注意:允许使用多个-o-d-x-L标志

描述

注意: schedo命令只能由 root 执行。

使用 schedo 命令来配置调度程序的微调参数。 此命令设置或显示所有调度程序的微调参数的当前值或下一个引导值。 还可以用此命令进行永久性更改,或将更改推迟到下一次重新引导之后生效。 此命令是设置参数还是显示参数,要由所带标志来决定。 -o 标志执行这两个操作。 它或者显示参数的值或者为参数设置一个新值。

了解更改可调参数的效果

误用此命令会导致性能下降或操作系统故障。 在使用schedo命令更改系统参数之前,请确保已学习过性能管理中的相应调整章节。

在修改任何可调参数之前,您必须首先仔细阅读下面可调参数部分中有关其所有特性的内容,并按照任何参考指针进行操作,以便充分了解其用途。

然后必须确保此参数的“诊断”部分和“调整”部分真的适用于您的情况,且更改此参数的值可以有助于提高系统性能。

如果 "诊断 "和 "调整 "部分都只包含 "不适用",除非AIX®开发人员特别指示,否则绝对不能更改此参数。

优先级计算参数
大多数用户进程的优先级随进程最近使用的处理器时间量而不同。 处理器调度程序的优先级计算基于 schedosched_Rsched_D 所设置的两个参数。 。sched_Rsched_D 的值以 30 秒(1/32)为单位;即,调度程序使用下式计算作为对最近处理器使用的损失而加入到进程优先级值中的数量:
CPU penalty = (recently used CPU value of the process) * (r/32)
而对每个进程最近使用的处理器值进行每秒一次重新计算的公式是:
new recently used CPU value = (old recently used CPU value of the process) * (d/32)

r(sched_R 参数)和 d(sched_D 参数)的缺省值都是 16。 这将保持操作系统以前版本的处理器调度行为。 在尝试这些值之前,您必须熟悉《性能管理指南》中的『调整处理器调度程序』。

Memory-load-control 参数
当内存过量使用时,操作系统调度程序通过暂挂进程来进行内存装入控制。 系统并不将进程换出;而是页,因为需要它们来实现当前内存要求。 通常,从暂挂进程偷页。 当满足下列条件时,认为内存使用过量:
描述
p * 小时 其中:
p是上一秒写入分页空间的页数
h是由 v_repage_hi 参数指定的整数
s是上一秒发生的页面窃取次数
当内存使用过度,且满足下列条件时,将暂挂进程:
描述
r * p f 其中:
r r 是进程在最后一秒累积的重新页数
p 是由 v_repage_proc 参数
f 指定的整数,是该进程在最后一秒经历的缺页故障数

此外,免除固定优先级进程和内核进程的暂挂。

术语重新调页是指属于某个进程的页由该进程管理后不久就重新引用页数。

用户还可以使用 "v_min_process参数指定最低多重编程级别。 这样做可以在整个进程暂挂期间确保有最少的进程数正在运行。 活动进程是可运行且正在等待页面 I/O 的进程。 正在等待事件的进程和已暂挂的进程不会被视为处于活动状态,等待进程也不会被视为处于活动状态。

当系统在 n 秒内保持低于过度落实阈值时,可以将暂挂的进程重新添加到混合中,其中 n 由 v_sec_wait 参数指定。 首先根据进程的优先级,其次根据进程暂挂时间的长短来将进程加回到系统中。

在尝试这些值之前,您应该非常熟悉《性能管理指南》中的『通过 schedo 命令调整 VMM 内存装入控制』。

时间片增量参数

schedo 命令也可以用来改变在调用分派器以选择运行另一个进程运行之前,操作系统允许某个给定进程运行的时间量(时间片)。 这个时间间隔的缺省值为一个时钟周期(10 毫秒)。 时间片微调参数允许用户指定时间片长度要增加的钟信号量。

AIX V 4中,此参数仅适用于具有 SCHED_RR 调度策略的线程。 请参阅《线程调度策略》。

fork () 重试时间间隔参数

如果因为没有足够的调页空间用于创建新的进程而使 fork() 子例程调用失败,那么系统将在等待一段指定的时间后重试该调用。 时间间隔由步速子进程微调参数来设置。

对称多线程的特殊术语

支持多个运行队列。 在此方式下,每个处理器都具有自己的运行队列。 POWER5 处理器支持对称多线程,其中每个物理处理器都有两个执行引擎,称为硬件线程。 每个硬件线程本质上等价于单个处理器。 缺省情况下启用对称多线程,但是也可以动态地禁用(或者重新启用)对称多线程。 如果启用了对称多线程,那么每个硬件线程为单独的运行队列服务。 例如,在一个 4 路系统上,如果对称多线程被禁用或者当前无法使用,那么除全局运行队列之外还有 4 个运行队列。 如果启动了对称多线程,那么除全局运行队列之外还有 8 个运行队列。

属于同一个物理处理器的硬件线程称为兄弟线程主兄弟线程是指物理处理器的第一个硬件线程。 辅助同代线程是指物理处理器的第二个硬件线程。

虚拟处理器管理
可以定义比处理分区中工作所需的虚拟处理器更多的虚拟处理器。 可以不在降低整体处理器使用率或导致缺少虚拟处理器的情况下通过使用较少的虚拟处理器来减少分派虚拟处理器的开销。 虚拟处理器并不是动态地从分区中除去的,而是不再使用,只在提供了更多工作时才再次可用。 每个虚拟处理器最多使用一个物理处理器。 所需的虚拟处理器数是通过对物理处理器使用情况与可调整的 vpm_xvcpus 的和进行上舍入来确定的:
number = ceiling( p_util + vpm_xvcpus)
其中 number 是所需的虚拟处理器数,p_util 是物理处理器使用情况,而 vpm_xvcpus 是可调节的(它指定要启用的更多虚拟处理器数)。 如果 number 小于当前已启用的虚拟处理器数,那么将禁用某个虚拟处理器。 如果 number 大于当前已启用的虚拟处理器数,将启用已禁用的虚拟处理器。 连接到已禁用的虚拟处理器的线程仍然可以在已禁用的虚拟处理器上运行。
节点装入

节点装入,或者简称装入,是指所有运行队列(包括全局运行队列)的平均运行队列深度乘以 256,随着时间将大幅度地变得平滑。 例如,装入为 256 意味着,如果我们有 16 个处理器(包括对称多线程处理器),那么在过去几毫秒内,在系统中大约有 16 个可运行作业。

开始更改 Power10的 VPM 吞吐量模式更改结束更改VPM 吞吐量模式更改
开始更改

当 Power10 系统以共享处理器方式运行时,虚拟处理器管理 (VPM) 的吞吐量方式的缺省值为 2。 当您将系统迁移到 Power10 系统或从 系统迁移到 AIX 之后, 操作系统会自动更改 VPM 吞吐量模式的默认值。 在引导操作期间, AIX 操作系统根据运行 LPAR 的服务器类型选择 schedo 命令的 vpm_throughput_mode 可调参数的缺省值。 AIX 操作系统选择的 vpm_throughput_mode 可调参数的值将保留并在目标服务器上使用。 在 Power10 系统上,可以使用以下命令切换到 vpm_throughput_mode 可调参数的建议值 2:

schedo -d vpm_throughput_mode
注: 在迁移到 Power10 系统或从其迁移到更高版本时,建议将操作系统级别移至 7300-00 , 7200-05-03-2147 , 7200-04-05-2148 , 7100-05-09-2148 或更高版本。 如果没有此功能使您能够使用 schedo 命令来更改 vpm_throughput_mode 可调参数,那么将操作系统级别更新为 7200-05-00-2037 , 7200-04-03-2038 和 7100-05-07-2037 可能会覆盖为 vpm_throughput_mode 可调参数设置的值。
结束更改

标志

描述
-a 显示所有可调参数的当前值、重新引导值(当与 -r 一起使用时)或永久值(当与 -p一起使用时),每行一对 Tunable = Value。 对于永久选项,如果参数的重新引导和当前值相等,那么对于一个参数只显示一个值。 否则,该值显示为 NONE
-d 无法 Tunable 重新设置为缺省值。 如果可调参数值(即,它当前的值不是缺省值)需要更改,但在该组合中未使用 -r,那么不对它做更改,而是显示一个警告。
-D 将所有的可调参数重新设置为缺省值。 如果需要更改的可调参数为 Bosboot 或“重新引导”类型或“增量”类型,并是从其缺省值更改的,而且组合中未使用 -r,那么不做更改,而是显示一个警告。
-f 当您在命令行指定 -a-L-x 选项时,强制显示受限可调参数,以列出所有可调参数。 如果您没有指定 -F 标志,那么不包含受限可调参数,除非它们特别命名为与显示选项关联。
-h [无法] 如果指定了一个可调参数,那么显示关于 Tunable 参数的帮助。 否则,显示 schedo 命令用法说明。
- L [ 可调谐 ] 列出一个或所有可调参数的特征,每个一行,使用以下格式:
NAME                      CUR    DEF    BOOT   MIN    MAX    UNIT           TYPE  
     DEPENDENCIES  
--------------------------------------------------------------------------------  
v_repage_hi               0      0      0      0      2047M                    D
--------------------------------------------------------------------------------
v_repage_proc             4      4      4      0      2047M                    D
--------------------------------------------------------------------------------
v_sec_wait                1      1      1      0      2047M  seconds           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
-o 无法 [=Newvalue] 显示值或将 Tunable 设置为 Newvalue。 如果需要更改一个可调参数(所指定的值与当前值不同),而且它是 Bosboot 或 Reboot 类型,或者是 Incremental 类型,并且当前值比指定值要大,在组合中未使用 -r,那么不做更改,而是显示一个警告。

当在组合中使用 -r 却没有指定新值时,显示可调参数的下一个引导值。 当在组合中使用 -p 却没有指定新值时,仅当可调参数的当前值和下一个引导值相同时才显示值。 否则,该值显示为 NONE

-p 当与 -o, -d-D 组合使用时,将所做的更改应用到当前值和重新引导值中,即打开更新 /etc/tunables/nextboot 文件并更新当前值。 这些组合无法用在 Reboot 和 Bosboot 类型参数上,因为它们的当前值不能更改。

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

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

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

-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
-y 在执行 bosboot 命令之前,禁止显示确认提示。
注: 选项 -o-d, 在 工作负载分区 中不支持 -D ,因为它们尝试更改调度程序可调参数的值。

如果您对一个受限可调参数做了任何更改(用 -o-d-D 选项),将会有消息提示受限使用类型的可调参数已被修改。 如果您还在命令行指定了 -r-p 选项,您将被提示确认更改。 另外,在系统重新引导时, /etc/tunables/nextboot 文件中显示的被修改为与缺省值不同的受限可调参数(使用命令行指定 -r-p 选项修改)将导致一个错误日志条目,显示这些被修改的可调参数的列表。

修改可调参数时,可使用各种单位的缩写(例如:K、M、G、T、P 及 E)指定可调参数值。 请参阅单位。 下表显示了与数字缩写关联的前缀和值:
缩写 2 的乘幂
K 1024
M 1 048 576
G 1 073 741 824
1 099 511 627 776
1 125 899 906 842 624
:NONE. 1 152 921 504 606 846 976
因而,可以将可调值 1024 指定为 1K。

对 Mount(安装)类型参数的任何更改(使用 -o-d-D)将显示一条消息,警告您该更改仅对以后的安装有效。

对 Connect(连接)类型参数的任何更改(使用 -o-d-D 标志)都会导致重新引导 inetd,并显示一条消息,警告用户该更改仅对以后套接字连接有效。

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

在不使用 -r 的情况下,任何试图用比 Incremental(增量)类型参数当前值小的新值来更改它的值(使用 -o -d-D)都会导致一个错误消息。

可调参数类型

由调整命令 (nonfsovmoioorasoschedo) 处理的所有可调参数都已分类为以下类别:
描述
动态 如果该参数可在任何时间更改
静态 如果该参数决不可更改
重新引导 如果该参数仅可在重新引导期间更改
Bosboot 如果该参数仅可通过运行 bosboot 并重新引导机器来更改
安装 如果参数的更改仅对将来文件系统或目录安装有效
增量 如果该参数仅可增量(除了引导时间之外)
连接(C) 如果参数的更改仅对将来的套接字连接有效
不推荐 如果当前发行版的 AIX不再支持更改此参数。
对于 Bosboot 类型的参数,无论何时执行更改,调整命令会自动提示用户,问他们是否想执行 bosboot 命令。 对于 Connect 类型的参数,调整命令会自动重新启动 inetd 守护程序。

请注意,受管于 schedo 命令的当前参数集仅包括 Dynamic 和 Reboot 类型。

兼容性方式

在 5.2 之前的兼容性方式下运行 (由 sys0 的 pre520tune 属性控制,请参阅 Performance management中的 AIX 5.2 兼容性方式 ) 时,参数的重新引导值 (类型为 Bosboot 的参数除外) 没有真正意义,因为在此方式下,不会在引导时应用这些参数。

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

当机器迁移到 AIX 5.2时,将自动开启此方式。 对于完全安装,它是“关闭”的,而参数的重新引导值是通过在重新引导序列期间应用 /etc/tunables/nextboot 文件的内容来设置的。 只有在该方式下,-r-p 标志才可以完全起作用。 有关更多信息,请参阅 Performance Tools Guide and Reference 中的 内核调整

可调参数

For default values and range of values for tunables, refer 谢多 command help (- <tunable_parameter_name>).
描述
亲缘关系 (affinity_lim)
用途:
设置干预分派数,在该数之后 SCHED_FIFO2 策略不再支持线程。
调整:
一旦线程正在使用 SCHED_FIFO2 策略运行,调整此变量对该线程和工作负载的性能可能有影响也可能没有影响。 您必须通过反复试验来确定理想的值。
大步长
用途:
设置物理节拍时间间隔并在 CPU 之间对节拍进行同步。
调整:
big_tick_size 值乘以 10 毫秒作为节拍时间间隔,并且必须能被 100 整除。 使用此参数将导致系统统计信息的准确度下降。
ded_cpu_捐赠阈值
用途:
指定专用处理器提供资源的利用率阈值。
调整:
在为提供资源而启用的专用处理器分区中,可为共享处理器池提供空闲处理器容量以供共享处理器分区使用。 如果专用处理器的利用率小于此阈值,那么在处理器空闲时,会提供专用处理器资源以供其他分区使用。 如果专用处理器的利用率等于或大于此阈值,那么不会在该专用处理器处于空闲状态时将其贡献给其他分区使用。
全球固定优先权
用途:
保持全局运行队列中的固定优先级线程。
调整:
如果设置为 1,那么将把固定优先级线程放在全局运行队列中。
强制 (force_grq)
用途:
在全局运行队列中保留非 MPI 线程。
调整:
如果设置为 1,那么只有 MPI 和绑定的线程才会使用局部运行队列。
最大旋转
用途:
设置转至休眠前在内核锁定上运转的次数。
调整:
在 MP 系统上增大此值可以缩短空闲时间;但是,在某些情况下也会浪费 CPU 时间。 建议您不要在单处理器系统上增大此值。
pacefork
用途:
在重试由于缺少调页空间而失败的派生调用之前要等待的时钟信号数。
调整:
当系统用完调页空间且无法派生进程时使用。 系统将重试 5 次失败的派生。 例如,如果因为没有足够的调页空间可用于创建新进程而导致 fork() 子例程调用失败,那么系统将在等待指定数目的时钟节拍后重试该调用。
磁盘统计程序
用途:
值 1 启用进程作用域磁盘统计信息,值 0 禁用进程作用域磁盘统计信息。 缺省值为 1,范围为 0 到 1。
调整:
在不需要进程作用域磁盘统计信息时,禁用此统计信息可提高性能。
调度_D
用途:
设置短期 CPU 使用衰减率。
调整:
缺省值为按每秒 1/2 (16/32) 衰减短期 CPU 使用。 减小此值将使前台进程能够避免较长时间与后台进程竞争。
调度_R
用途:
设置优先级计算中短期 CPU 使用的权重因子。
调整:
运行命令 ps al。 如果发现 PRI 列具有高于某些后台进程的 PRI 值 (NI 值> 20) 的前台进程 (NI 值为 20 的前台进程) 的优先级值,那么可以减小 r 值。 缺省值为在优先级计算中包含短期 CPU 使用的 1/2 (16/32)。 减小此值将便于前台进程竞争。
tb_balance_S0
用途:
控制 SMT 核心忙碌均衡。
调整:
值为 0 表示禁用平衡功能。 值为 1 表示只在 MCM(S2 组)中启用平衡功能。 值为 2 表示完全启用。
tb_balance_S1
用途:
控制处理器忙平衡功能。
调整:
值为 0 表示禁用平衡功能。 值为 1 表示只在 MCM(S2 组)中启用平衡功能。 值为 2 表示完全启用。
阈值
用途:
视线程为忙(以便为 thread_busy 负载均衡进行优化)所必须考虑的节拍数。
调整:
值 100 对应于 1 秒。 值 10 和 1000 分别与 0.1 和 10 秒相对应。
时间片
用途:
在将线程放置回运行队列之前线程可以运行的时钟信号数。
调整:
增大时间片值可以降低分派线程的开销。 此值是指时间片中的时钟节拍总数,并且只影响固定优先级进程。
vpm_折叠策略
用途:
控制分区中的处理器折叠的虚拟处理器管理功能的应用。
调整:
可以根据分区是共享处理器分区还是专用处理器分区来启用或禁用“处理器折叠”这一虚拟处理器管理功能。 另外,当分区处于静态省电方式时,将对共享处理器分区或专用处理器分区自动启用处理器折叠功能。

启用处理器折叠功能后,可以使用 vpm_vxcpus 可调参数来控制处理器折叠功能。

vpm_fold_policy 中,共有 3 个用于控制处理器折叠功能的位:
  • 位 0 (0x1):设置为 1 时,此位表明启用处理器折叠功能(如果分区正在使用共享处理器)。
  • 位 1 (0x2):设置为 1 时,此位表明启用处理器折叠功能(如果分区正在使用专用处理器)。
  • 位 2 (0x4):设置为 1 时,如果分区处于静态省电方式,那么此位将禁止自动设置处理器折叠功能。

可以对位 0、位 1 和位 2 的值执行 OR 运算以构造期望的值。

注: 如果在 "高级系统管理界面" (ASMI) 中将 空闲省电 选项设置为 已启用 ,并且如果处理器利用率低于指定的阈值,那么可以将处理器设置为低频率或低电压状态。 您还可以在运行时将 vpm_fold_policy 可调参数设置为 0x3。
vpm_quickput_core_threshold

指定在采用 vpm_throughput_mode 参数之前必须展开的核心数目。 达到阈值之后,系统行为和 vpm_throughput_mode 参数值设为 1 一样。

vpm_quickput_mode

为缩放吞吐量方式指定需要的 SMT 利用级别。 值 0 指示缺省行为(原始吞吐量方式)。 值 124 选择缩放吞吐量方式及需要的 SMT 利用级别。

开始更改在 Power10 及更高版本的系统上,当系统以共享处理器模式运行时,VPM 吞吐量模式的默认值为 2 (按比例吞吐量模式)。 在专用处理器模式和以共享处理器模式运行的POWER9及更早版本系统中,VPM 吞吐量模式的默认值为0(原始吞吐量模式)。结束更改

vpm_xvcpus
用途:
将此可调项设置为大于 -1 的值会允许调度程序根据分区的 CPU 利用率启用和禁用虚拟处理器。
调整:
指定的值表示除满足工作负载所需的虚拟处理器数之外需要启用的虚拟处理器数。

示例

  1. 要列出由 schedo 命令管理的全部可调参数的当前和重新引导的值、范围、单位、类型以及相关性,请输入:
    schedo -L  
  2. 要列出(电子表格格式)由 schedo 命令管理的全部可调参数的当前和重新引导的值、范围、单元、类型以及相关性,请输入:
    schedo -x
  3. 要将 v_sec_wait 重新设置为缺省值,请输入:
    schedo -d v_sec_wait 
  4. 要显示有关 sched_R 的帮助,请输入:
    schedo -h sched_R
  5. 要在下一次重新引导之后将 v_min_process 设置为 4,请输入:
    schedo -r -o v_min_process=4 
  6. 要将全部的 schedo 可调参数永久重新设置为缺省值,请输入:
    schedo -p -D 
  7. 要列出所有 schedo 参数的重新引导值,请输入:
    schedo -r -a