The static tuning performed above falls apart as the file grows. As the file grows, the number of index records increases along with the increase in data. The specification of 10 index buffers no longer optimizes the buffering for this file because of the growth. Performance gradually degrades as applications require more and more index I/Os to randomly retrieve logical records. Performance with BUFNI=10 is better than with the default buffer space. These extra buffers are put to good use, but performance is no longer optimum.
To optimize performance after such changes occur, you must recalculate the number of index set records and update all of the DD statements in all of the job streams to include the new optimum BUFNI value. This procedure takes some time, but the result is good performance.
Similar performance problems occur when an application is modified to perform skip sequential or purely sequential processing instead of just random processing. You must monitor and adjust buffers to keep up with the changes that occur to both files and applications.
For sequentially processed files, extra data buffers are beneficial, and extra index buffers generally do little to improve performance. For sequential applications that add a significant number of logical records to a file, extra index buffers may improve performance. As records are added sequentially to the file, VSAM must update the index as CIs are added or split. Since changing one level of the index can require changes to other higher levels, VSAM may require access to several index CIs to keep the index updated. In this case, I/Os can be reduced by adding extra index buffers.
You can decide to set BUFND to a value that allows VSAM to perform full track I/O, thus reducing the number of I/Os and the elapsed time required to process this file sequentially.
What happens if the cluster is moved to another device type or, again, if the application is modified and now performs skip sequential (or maybe even truly random) processing? The answer is simple: recalculate the BUFND, and possibly BUFNI, and modify every job stream (yet again) to specify the new values.
Static buffering, while better than default buffering, is a far from perfect solution in a dynamic, real world environment.
|
Copyright © 2011 CA.
All rights reserved.
|
|