从 JCL 调用 BPXBATCH 是使用批处理作业的优先级还是独立于 OMVS 的优先级?
Does a call to BPXBATCH from JCL use the priority of the batch job or is priority in OMVS independent?
我正在调用一个 shell 脚本,该脚本使用 BPXBATCH 从 JCL 进行一些处理,如下所示:
//STEP2 EXEC PGM=BPXBATCH,
// PARM='SH PATHTOSCRIPT.SH MYARGUMENT'
JCL 具有最高优先级的服务 class。但是,shell 脚本进入队列等待资源。有时它运行得很快,而其他时候等待资源的时间很长。 JCL 的优先级似乎与shell 脚本无关。我读到也许在 Unix 中使用“nice”命令会增加 shell 脚本的优先级。
我首先要确定,来自 z/OS 的 JCL 的优先级不会影响通过 BPXBATCH 从该 JCL 调用的 Unix 进程的优先级。我找不到任何关于它的文档。
简答
首先回答您的问题:BPXBATCH 运行s 在一个地址 space 中,shell 运行s 在第二个地址 space 中。 shell 发出的命令可能 运行 在与 shell 相同的地址 space 中,或者可能 运行 在更多地址 space 中。
BPXBATCH地址space获得了服务class,shell地址space(s)获得了服务class,大概一个不同的。每个服务 class 都有自己的性能目标,这会告诉系统如何管理该工作。
详细解答
z/OS 工作负载管理器 (WLM) 负责在呈现新工作时将工作分配给服务 classes。服务 classes 指定 性能目标 和 重要性级别 s,而不是优先级。 WLM 根据目标的重要性 性能目标 管理系统中的所有工作。
有几个(工作负载管理)子系统可能会开始新的工作。此类子系统的示例是
- JES,管理批处理工作,即批处理作业。
- TSO,管理交互式 TSO 用户工作(TSO 登录)。
- OMVS,管理 forked 和 non-locally spawned z/OS UNIX 工作。
- STC,管理启动的作业工作量。
此列表不完整;我只列出了我需要回答问题的子系统。
当 JES2/3 收到系统上应 运行 的作业时,它会向 WLM 提供一些作业属性,WLM 将作业分配给 服务 class。它使用 WLM class子系统类型 JES 的化规则和给定的属性来做到这一点。
此工作中 运行 的所有内容,即在工作地址 space 中的所有内容都将按照服务 [=92] 的 绩效目标 进行管理=] 分配。这包括 z/OS UNIX 工作 即 运行 在这个地址 space 中,即不是通过 UNIX fork() 启动的工作,或非-local spawn().
当 z/OS UNIX 进程通过 fork() 或通过非本地 spawn() 启动新进程时,这项新工作由 WLM 子系统 OMVS 处理。 OMVS 子系统将新进程的一些属性呈现给 WLM,WLM 将进程分配给 服务 class。它使用 WLM class 子系统类型 OMVS 的化规则和给定的属性来做到这一点。这种工作总是 运行s 在一个单独的新地址 space。
BPXBATCH 启动通过 PARM=
或 //STDPARM
告知的(第一个)UNIX 命令,作为使用 fork() 或 spawn() 的新进程。 spawn() 可以是本地 spawn() 或非本地 spawn()。做哪一个取决于很多因素,太复杂了,这里就不一一解释了。
这里的重点是,当 运行 宁 BPXBATCH
与 PARM='SH ...'
时,shell 过程将始终 运行 在一个单独的新地址space 并将通过 WLM 子系统 OMVS.class 化。
结果是 BPXBATCH 在一个地址 space 中 运行ning 及其服务 class,而 shell 在第二个地址中 运行 space 及其服务 class。服务 classes 可能相同,但通常它们是具有不同性能目标的不同 WLM 定义。
作为初学者,看看z/OS MVS Planning: Workload Management
nice() 在 z/OS UNIX
上
nice() 对 z/OS UNIX 没有影响,除非系统已设置为支持它。 BPXPRMxx parmlib 成员中有一个参数 PRIORITYGOAL(...)
来设置最多 40 个 WLM 服务 classes 的列表,这些服务将与 nice() 结合使用。我从来没有听说过有人设置过这个参数。
有关 BPXPRMxx 成员的详细信息,请参阅 z/OS MVS Initialization & Tuning Reference
我正在调用一个 shell 脚本,该脚本使用 BPXBATCH 从 JCL 进行一些处理,如下所示:
//STEP2 EXEC PGM=BPXBATCH,
// PARM='SH PATHTOSCRIPT.SH MYARGUMENT'
JCL 具有最高优先级的服务 class。但是,shell 脚本进入队列等待资源。有时它运行得很快,而其他时候等待资源的时间很长。 JCL 的优先级似乎与shell 脚本无关。我读到也许在 Unix 中使用“nice”命令会增加 shell 脚本的优先级。
我首先要确定,来自 z/OS 的 JCL 的优先级不会影响通过 BPXBATCH 从该 JCL 调用的 Unix 进程的优先级。我找不到任何关于它的文档。
简答
首先回答您的问题:BPXBATCH 运行s 在一个地址 space 中,shell 运行s 在第二个地址 space 中。 shell 发出的命令可能 运行 在与 shell 相同的地址 space 中,或者可能 运行 在更多地址 space 中。
BPXBATCH地址space获得了服务class,shell地址space(s)获得了服务class,大概一个不同的。每个服务 class 都有自己的性能目标,这会告诉系统如何管理该工作。
详细解答
z/OS 工作负载管理器 (WLM) 负责在呈现新工作时将工作分配给服务 classes。服务 classes 指定 性能目标 和 重要性级别 s,而不是优先级。 WLM 根据目标的重要性 性能目标 管理系统中的所有工作。
有几个(工作负载管理)子系统可能会开始新的工作。此类子系统的示例是
- JES,管理批处理工作,即批处理作业。
- TSO,管理交互式 TSO 用户工作(TSO 登录)。
- OMVS,管理 forked 和 non-locally spawned z/OS UNIX 工作。
- STC,管理启动的作业工作量。
此列表不完整;我只列出了我需要回答问题的子系统。
当 JES2/3 收到系统上应 运行 的作业时,它会向 WLM 提供一些作业属性,WLM 将作业分配给 服务 class。它使用 WLM class子系统类型 JES 的化规则和给定的属性来做到这一点。
此工作中 运行 的所有内容,即在工作地址 space 中的所有内容都将按照服务 [=92] 的 绩效目标 进行管理=] 分配。这包括 z/OS UNIX 工作 即 运行 在这个地址 space 中,即不是通过 UNIX fork() 启动的工作,或非-local spawn().
当 z/OS UNIX 进程通过 fork() 或通过非本地 spawn() 启动新进程时,这项新工作由 WLM 子系统 OMVS 处理。 OMVS 子系统将新进程的一些属性呈现给 WLM,WLM 将进程分配给 服务 class。它使用 WLM class 子系统类型 OMVS 的化规则和给定的属性来做到这一点。这种工作总是 运行s 在一个单独的新地址 space。
BPXBATCH 启动通过 PARM=
或 //STDPARM
告知的(第一个)UNIX 命令,作为使用 fork() 或 spawn() 的新进程。 spawn() 可以是本地 spawn() 或非本地 spawn()。做哪一个取决于很多因素,太复杂了,这里就不一一解释了。
这里的重点是,当 运行 宁 BPXBATCH
与 PARM='SH ...'
时,shell 过程将始终 运行 在一个单独的新地址space 并将通过 WLM 子系统 OMVS.class 化。
结果是 BPXBATCH 在一个地址 space 中 运行ning 及其服务 class,而 shell 在第二个地址中 运行 space 及其服务 class。服务 classes 可能相同,但通常它们是具有不同性能目标的不同 WLM 定义。
作为初学者,看看z/OS MVS Planning: Workload Management
nice() 在 z/OS UNIX
上nice() 对 z/OS UNIX 没有影响,除非系统已设置为支持它。 BPXPRMxx parmlib 成员中有一个参数 PRIORITYGOAL(...)
来设置最多 40 个 WLM 服务 classes 的列表,这些服务将与 nice() 结合使用。我从来没有听说过有人设置过这个参数。
有关 BPXPRMxx 成员的详细信息,请参阅 z/OS MVS Initialization & Tuning Reference