We maintain many customer systems here at iTech, and one thing that seems to be consistent now across all of our customer environments is that system IFS (Integrated File System) directories are getting very large. Many systems that we manage now have IFS root directories containing over 1 million objects!
Large IFS root directories present a problem from a save perspective in that they can take an inordinate amount of time to save using normal IFS save commands such as SAV, SAVBRM, and GO SAVE option #21. On full system saves of systems with a large population of IFS objects, the save of the IFS can easily take up to 30% or more of the total system save time.
Any save of a large IFS is going to be extremely I/O-intensive, and IBM i has a nifty capability baked-in to reduce the heavy I/O of an IFS save operation and allow it to complete more quickly. There is a critical parameter on the SAV and SAVBRM commands that has been around for years that many IBM i shops are not aware of called “ASYNCBRING”, and the purpose of this parameter is to greatly improve IFS save performance. The default shipped system value is ASYNCBRING(*NO), and specifying ASYNCBRING(*YES) will result in the objects to be saved being brought into main memory asynchronously so the save operation itself will not have to excessively wait for I/O operations to obtain the objects. Enabling this parameter can result in a dramatic 20% or greater performance improvement in IFS save operations.
Figures #1 and #2 show the ASYNCHBRING parameter on both the SAV and SAVBRM commands. Asynchronous brings can be invoked when saving objects from the root (‘/’), QOpenSys, and user-defined file systems.
The only caveat with specifying ASYNCBRING(*YES) on IFS save commands is that in rare cases it may somewhat slow down rather than speed-up the save operation if any of these conditions are present:
- System memory is very constrained
- Large number of objects reside in a single directory
- Few objects in the directory qualify for the save
On your next IFS save try using the ASYNCBRING functionality, you will most likely see some terrific improvements in the performance of the save operation.