Determines the number of free cylinders below which the File System will perform a MiniCylPack operation. MiniCylPack attempts to free additional cylinders by packing cylinders that are currently in use.
0 through 65,535 free cylinders
|0||MiniCylPack does not run until a task needs a cylinder and none are available. In these cases, the requesting task is forced to wait until MiniCylPack has completed. When MiniCylPack runs while a task is waiting, the number of cylinders that can be scanned is unlimited. If necessary, MiniCylPack scans the entire disk in an attempt to free a cylinder.|
|a nonzero value||MiniCylPack runs in the background. When running in this mode, each MiniCylPack scan packs a maximum of 20 cylinders.
If MiniCylPack cannot free a cylinder, but free cylinders still exist, it does not run until another cylinder allocation request notices that the number of free cylinders has fallen below MiniCylPackLowCylProd.
Setting this field to a low value reduces the impact of MiniCylPack on performance. However, there is a risk that free cylinders will not be available for tasks that require them. This would cause MiniCylPack to run while tasks are waiting, seriously impacting the response time of such tasks.
10 free cylinders
Set this value to no more than 20 free cylinders.
Changes Take Effect
After the DBS Control Record has been written.
MiniCylPack is a background task that runs when the available number of free cylinders is low, as determined by the value of MiniCylPackLowCylProd. Because it runs before free cylinders are completely exhausted, MiniCylPack attempts to free cylinders before they are actually needed. MiniCylPack continues to work until the number of free cylinders defined by MiniCylPackLowCylProd is achieved, or until it can free no more cylinders.
Because MiniCylPack runs proactively, before the system is completely out of free cylinders, requests by foreground tasks for new cylinders can continue to be satisfied, and the work of freeing up new cylinders is spread evenly across the active transactions as background work. No individual transaction needs to halt and wait for free cylinders, if needed.
MiniCylPack operates in the background as follows:
- MiniCylPack scans the Master Index, a memory-resident structure with one entry per cylinder, looking for the best candidate set of logically adjacent cylinders where a good amount of free space exists.
To determine the best candidate, MiniCylPack considers such factors as how much free space is currently available on the cylinders, and how much free space would be left after they are packed. MiniCylPack attempts to keep cylinders that were allocated with specific Free Space Percent (FSP) values in compliance with those values.
- MiniCylPack packs these logically adjacent cylinders to use one cylinder less than is currently being used. For example, MiniCylPack packs four cylinders with an FSP of 0% that are each 75% full into three cylinders that are 100% full.
- If MiniCylPack cannot free up a permanent storage cylinder by honoring the applicable FSPs, it decreases the FSP uniformly across the set of cylinders, allowing less free space to be preserved on each, until it can free a cylinder, or until it reaches an FSP of 0%.
If MiniCylPack was initiated due to a request for spool cylinders, it only decreases the FSP to a minimum of 10%.
- The process continues until either:
- The number of free cylinders reaches the value in MiniCylPackLowCylProd, either because MiniCylPack freed them, or because other data was deleted.
- A complete pass of all the cylinders in the Master Index was made using an FSP value of 0%, and no additional cylinders were freed.
Over time, MiniCylPack may not be able to keep up with demand, due to insufficient free CPU and I/O bandwidth, or to the increasing cost of freeing up cylinders as the demand for free cylinders continues.