WLM — Workload Manager & Resource Balancing Guide
In this tutorial, you'll learn about WLM. We cover key concepts, practical examples, and best practices to help you understand and apply this topic effectively.
WLM (Workload Manager) is the intelligent resource allocation engine on IBM z/OS that automatically prioritizes and balances computing resources — CPU, memory, I/O — across thousands of concurrent workloads, ensuring critical transactions meet their response time goals while batch jobs use leftover capacity.
What You'll Learn
WLM concepts including service classes, classification rules, resource groups, goal-oriented policies, period management, and WLM integration with CICS, DB2, and JES.
Why It Matters
Without WLM, a runaway batch job could starve a CEO's online Transaction. WLM ensures that the right workload gets the right resources at the right time — automatically. It is the reason mainframes can run mixed workloads without contention.
Doda Browser uses WLM-inspired prioritization for active vs background tabs. Durga Antivirus Pro applies WLM-style resource balancing for concurrent scan and update operations.
Real-World Use
A Mainframe runs 5000 CICS transactions per second alongside 20 batch jobs. WLM prioritizes online transactions with a response time goal of under 500 milliseconds. If CPU utilization hits 90%, WLM reduces the batch job's CPU access to protect the online service level.
Learning Path
flowchart LR A["Mainframe Basics"] --> B["z/OS Overview"] B --> C["WLM Workload Manager
You are here"] C --> D["Parallel Sysplex"] D --> E["JES2/JES3"] style C fill:#f90,color:#fff
What Is WLM?
WLM manages system resources based on business goals rather than technical parameters. Instead of setting "batch jobs get 30% CPU", you tell WLM: "online transactions should complete in under 0.5 seconds 95% of the time."
WLM Architecture
flowchart LR
subgraph "WLM Policy"
A[Service Class A]
B[Service Class B]
C[Service Class C]
end
subgraph "Classification"
D[Classification Rules]
E[Resource Groups]
end
subgraph "System Resources"
F[CPU]
G[Memory]
H[I/O]
end
subgraph "Workloads"
I[CICS Transactions]
J[DB2 Queries]
K[Batch Jobs]
end
I --> D
J --> D
K --> D
D --> A
D --> B
D --> C
A --> F
A --> G
A --> H
B --> F
B --> G
C --> F
C --> H
E --> F
E --> G
style A fill:#f90,color:#fff
Service Classes
A service class defines performance goals for a group of workloads:
//SERVICECLASS NAME(ONLINE) GOAL(80% < 0.5 SEC) +
// SC(IMPORTANT) MP(TRUE)
//SERVICECLASS NAME(BATCH) GOAL(80% < 30 SEC) +
// SC(LOW) MP(FALSE)
//SERVICECLASS NAME(DB2QUERY) GOAL(85% < 2 SEC) +
// SC(MEDIUM) MP(TRUE)
Importance Levels
WLM uses importance (1-5) to indicate business priority:
| Level | Meaning | Example |
|---|---|---|
| 1 | Most critical | CEO Transaction |
| 2 | High priority | Customer-facing, online |
| 3 | Medium | Internal reports |
| 4 | Low priority | Batch processing |
| 5 | Discretionary | Background utilities |
Classification Rules
Classification rules assign incoming work to service classes:
/* WLM classification rules */
IF TRANCODE = 'BALQ' THEN SERVICE = 'ONLINE'
IF TRANCODE = 'TRFR' THEN SERVICE = 'ONLINE'
IF JOBNAME = 'PAY*' THEN SERVICE = 'BATCH'
IF SUBSYSTEM = 'DB2' AND PLAN = 'QREPORT' THEN
SERVICE = 'DB2QUERY'
Resource Groups
Resource groups limit total resource consumption:
//RESOURCE GROUP NAME(DEVELOPMENT) +
// MIN(50) MAX(200) CPU
//RESOURCE GROUP NAME(PRODUCTION) +
// MIN(500) MAX(2000) CPU
Period Management
Workloads with changing resource needs use periods:
//SERVICECLASS NAME(COMPILE) +
// PERIOD 1 GOAL(80% < 10 SEC) +
// PERIOD 2 GOAL(80% < 60 SEC) +
// PERIOD 3 GOAL(NONE)
A compile job gets 10 seconds at high priority, then 60 seconds at medium, then runs with no goal (lowest priority).
WLM Monitoring
Monitor WLM performance with these commands:
D WLM,STATUS Display WLM status
D WLM,SERVICE=ONLINE Display ONLINE service class performance
D WLM,POLICY Display active WLM policy
D WLM,RESOURCE Display resource group utilization
Common Errors
1. Goals that are too aggressive
Setting 99% of transactions under 0.1 seconds forces WLM to over-allocate resources to low-value work.
2. Not defining catch-all classification
Work without classification goes to a default class. Always define a catch-all with appropriate goals.
3. Forgetting about period transitions
Work entering period 3 (no goal) can be delayed indefinitely. Set realistic period durations.
4. Too many service classes
More than 10 service classes create management complexity without proportional benefit.
5. Ignoring I/O goals
Most bottlenecks are I/O, not CPU. Include I/O response time in goals.
Practice Questions
What does WLM stand for? Workload Manager — z/OS's resource allocation and prioritization system.
What is a service class in WLM? A named category with performance goals that WLM uses to allocate resources.
What is the importance level in WLM? A number from 1 (most important) to 5 (least) indicating relative business priority.
How does WLM handle mixed workloads? It classifies each Unit of Work, assigns it to a service class, and allocates resources based on goals and importance.
What is a resource group? A WLM object that limits the total CPU or memory consumption for a set of workloads.
Challenge: Design a WLM policy for a bank with three tiers: online transactions (0.5 sec goal, importance 2), period-end reporting (5 min goal, importance 4), and development compiles (no goal, discretionary).
FAQ
What's Next
| Tutorial | What You'll Learn |
|---|---|
| Parallel Sysplex Guide | Clustering across multiple systems |
| JES2 & JES3 Guide | Batch job scheduling with WLM |
Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro. Updated 2026-06-24.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro