Tuesday, March 01, 2005

Use ALLOCATE *YES when Adding Records to a New File

Use ALLOCATE *YES when Adding Records to a New File
Some high-volume batch jobs require considerable processing overhead due to the system overhead required to add records to a database file. This system overhead occurs even in a single job environment, and using ALLOCATE(*YES) may improve the job runtime significantly.
When you’re running multiple concurrent jobs that are all concurrently adding records to the same file, the effect on throughput can be severe. The system’s Auxiliary Storage Management (ASM) space-allocation functions spend considerable time extending a file’s space on disk as records are added to it. While one job is extending a database file, any subsequent requests from other jobs to extend the same file must wait until the request(s) ahead of it finishes (regardless of priority). (The space-extend processing is, by necessity, a single-threaded SLIC function.) As a result, very little (if any) processing parallelism may be possible.
The AS/400 performance tools can’t detect this type of bottleneck explicitly. If multiple concurrent space extension requests are occurring, the Performance Monitor’s sample data shows only that the job encountered higher-than-normal seize wait time. If you run the Performance Monitor trace function, the Lock Report will show the contention as a seize wait on the physical file. Unfortunately, the same type of seize contention can occur for a number of reasons.
Depending on the type of processing you’re doing, you can use one of two procedures to avoid this overhead. In the first case, you’re creating a new database file and you know that it will have a specific number of records in it. When you create the file with CRTPF specify the maximum number of records it will eventually contain and specify (*YES) on the ALLOCATE parameter. This tells the system to allocate the file’s total required disk space when the file is initially created and allows processing jobs to avoid spending time in the file-extend routines during execution.
ALLOCATE (*YES) can help your jobs run much faster; both single and multiple batch jobs can benefit. A recent batch benchmark boosted overall CPU utilization from 7 percent to 50 percent simply by using ALLOCATE (*YES) when database files were created.

No comments:

Post a Comment