"The system is slow" is among the most frequent complaints Basis receives, and the first task is establishing what exactly is slow.
Components of response time
| Component | Meaning | Suspect if high |
|---|---|---|
| Wait time | Waiting for a free work process | Too few processes, long runners |
| Roll time | Swapping user context | Memory pressure |
| Load time | Loading programs | Program buffer too small |
| CPU time | ABAP execution | Inefficient loops, large volumes |
| Database time | Database access | Missing indexes, poor SQL |
| Enqueue time | Waiting for locks | Lock contention |
| GUI time | Screen transfer | Network or GUI settings |
The analysis tools
| Code | Purpose |
|---|---|
| ST03 / ST03N | Workload analysis; the starting point |
| ST05 | SQL trace |
| ST02 | Buffer hit rates and swaps |
| ST06 | Operating system CPU, memory and disk |
| SM50 / SM66 | Work process state |
| SAT | ABAP runtime analysis |
| DB02 | Database space and objects |
Reading ST03
Look for transactions that are both frequent and slow. Something taking two seconds five thousand times a day matters more than something taking ten seconds three times.
Buffers
| Buffer | Content | Target |
|---|---|---|
| Program | Compiled ABAP | Above 98% |
| Generic key | Table data by partial key | Above 95% |
| Single record | Individual rows | Above 95% |
| CUA | Menus and screen definitions | Above 98% |
| Screen | Dynpro definitions | Above 98% |
Memory
| Order | Area | Content |
|---|---|---|
| 1 | Roll area | Used first, per process |
| 2 | Extended memory | Shared; the main working area |
| 3 | Heap | After extended memory is exhausted; private, causing PRIV mode |
What to fix first
- SQL: add indexes, remove SELECTs from loops โ by far the largest effect
- Program logic: eliminate nested loops and unnecessary work
- Archiving: reduce table sizes by removing or offloading old data
- Buffers and memory: parameter tuning
- Hardware: the last resort, and never a root-cause fix