我正在呼叫一個 shell 腳本,它使用 BPXBATCH 從 JCL 執行一些處理,如下所示:
//STEP2 EXEC PGM=BPXBATCH,
// PARM='SH PATHTOSCRIPT.SH MYARGUMENT'
JCL 具有最高優先級的服務類。但是,shell 腳本會進入等待資源的佇列。有時它運行得很快,有時則需要等待大量時間來獲取資源。JCL 的優先級似乎與 shell 腳本無關。我讀到也許在 Unix 中使用“nice”命令會增加 shell 腳本的優先級。
我首先要確定的是,z/OS 中 JCL 的優先級不會影響通過 BPXBATCH 從該 JCL 呼叫的 Unix 行程的優先級。我找不到任何關于它的檔案。
uj5u.com熱心網友回復:
簡答
首先回答您的問題:BPXBATCH 在一個地址空間中運行,而 shell 在第二個地址空間中運行。shell 發出的命令可能在與 shell 相同的地址空間中運行,或者可能在更多的額外地址空間中運行。
BPXBATCH 地址空間有一個服務類,shell 地址空間有一個服務類,可能是不同的。每個服務類都有自己的性能目標,這告訴系統如何管理該作業。
詳細解答
z/OS 作業負載管理器 (WLM) 負責在呈現新作業時將作業分配給服務類。服務類指定性能目標和重要性級別,而不是優先級。WLM 根據基于目標重要性的性能目標管理系統中的所有作業。
有幾個(作業負載管理)子系統可以開始新的作業。此類子系統的示例是
- JES,管理批處理作業,即批處理作業。
- TSO,它管理互動式 TSO 用戶作業(TSO 登錄)。
- OMVS,管理分叉和非本地衍生的z/OS UNIX 作業。
- STC,管理已啟動的作業作業量。
這份清單并不完整;我只列出了回答問題所需的子系統。
當 JES2/3 收到一個應該在系統上運行的作業時,它向 WLM 提供一些作業屬性,WLM 將作業分配給一個服務類。它使用子系統型別 JES 的 WLM 分類規則和給定的屬性這樣做。
在此作業中運行的所有內容,即在作業的地址空間中運行的所有內容都將朝著分配的服務類的性能目標進行管理。這包括在這個地址空間中運行的z/OS UNIX 作業,即不是通過 UNIX fork() 或非本地 spawn() 啟動的作業。
當 z/OS UNIX 行程通過 fork() 或通過非本地 spawn() 啟動新行程時,這項新作業由 WLM 子系統 OMVS 處理。OMVS 子系統將新行程的一些屬性呈現給 WLM,WLM 將行程分配給一個服務類。它使用子系統型別 OMVS 的 WLM 分類規則和給定的屬性這樣做。這種作業總是在一個單獨的新地址空間中運行。
BPXBATCH使用 fork() 或 spawn()將通過PARM=、 或告知的(第一個)UNIX 命令//STDPARM作為新行程啟動。spawn() 可以是本地 spawn() 或非本地 spawn()。完成哪一個取決于可能的因素,在這里解釋太復雜了。
這里的重點是,當使用 運行BPXBATCH時PARM='SH ...',shell 行程將始終在單獨的新地址空間中運行,并將通過 WLM 子系統OMVS進行分類。
結果是 BPXBATCH 與其服務類一起在一個地址空間中運行,而 shell 與其服務類一起在第二個地址空間中運行。服務類可能相同,但通常它們是具有不同性能目標的不同 WLM 定義。
作為初學者,請查看z/OS MVS 規劃:作業負載管理
z/OS UNIX 上的 nice()
nice() 對 z/OS UNIX 沒有影響,除非系統已設定為支持它。PRIORITYGOAL(...)BPXPRMxx parmlib 成員中有一個引數,用于設定將與 nice() 結合使用的最多 40 個WLM 服務類的串列。我從來沒有聽說過有人設??置過這個引數。
有關 BPXPRMxx 成員的詳細資訊,請參閱z/OS MVS 初始化和調優參考
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/382161.html
上一篇:JVM記憶體結構闡述
