Search code examples
storagemainframezos

Compehending fields: ALLOC, FREE and %FR in FDReport product from BMC for mainframe


I cannot find information in the manuals that explains what the fields 'ALLOC' 'FREE' and '%FR' generated on a dataset with FDReport.

On the surface seems pretty straight forward, ALLOC is how much space is allocated, and FREE and %FR are the amount of free space and the same as a %. However I cannot figure out how this value is generated, as the number doesn't seem to match up with any of the information generated by LISTDSI, my best guess is that it is a multiple of the space allocation, but i cant for the life of me work out what it is.

As an example:

If i generate a report with the following:

REPORT FIELD=(DSN,VOL,SIZEINFO)
XS XDSN=(MY.DATA.SET.**)
PRINT ONLINE,PAGEWIDTH=133,SUM=YES

Gives me the following about my dataset:

DATA SET NAME                   VOLSER     ALLOC   FREE  %FR
-------------                   ------     -----   ----  ---
MY.DATA.SET.ONE                 ABCD1234   150     148   98  
MY.DATA.SET.TWO                 EFGH5678   165     160   96
MY.DATA.SET.THREE               IJKL9012   17      14    82

I have no idea where these numbers come from but the info from 3.4 for these datasets is as follows:

DS                 UNIT  ORG RECFM RECL   BLKSZE   1stEXT  2ndEXT  TYPE  ALLOC    ext   MAXDB
--                 ----  --- ----- ----   ------   ------  ------  ----  ------   ---   -----
MY.DATA.SET.ONE    CYLS  PO  FB    80     6160     10      3       PDS   10(cyl)  1     50 
MY.DATA.SET.TWO    CYLS  PO  FB    4096   28672    11      10      PDS   11(cyl)  1     200
MY.DATA.SET.THREE  BLOCK PO  VB    1028   2056     357     2769    PDS   357(blk) 1     100

This is a very niche area of mainframe, i have no experience with FDR and am getting a bit desperate, spent hours in the manuals trying to work it out and cant for the life of me find a solid explination of SIZEINFO or ALLOC, FREE and %FR. any help would be much appreciated!

I have used LISTDSI to get the SYSALLOC information which in about 99% of cases equals the ALLOC field from FDreport when multiplied by 15, not sure whats so special about 15, maybe number of extents, but thats seems like grasping at straws and is not a concrete answer.


Solution

  • 15 is the number of tracks in a cylinder. Its based on the physical geometry of older disk drives. Unit will give you a clue as cylinders = 15 tracks. Tracks is straight forward and blocks are the number of blocks based on blocksize.

    This reference will give you the historical geometries. Today most devices are 3390 of various models that basically are larger numbers of cylinders per device.

    The extents I presume are the primary and seconday allocations specified on the SPACE= parameter when the dataset was originally allocated. See here for more information.

    ALLOC is the number of allocation units currently allocated (CYLS, TRKS or BLKS)

    In your report all datasets only have a primary allocation and not all of that has been used so there is no secondary allocation yet.

    The output for ALLOC is in tracks. Divide the tracks by 15 to get the number of cylinders.

    For the dataset allocated in blocks lets assume your device is a 3390. The number of bytes per track is 56,664. This divided by your block size of 2056 gives you 27 blocks per track or about 14 tracks. Since its VB you may not get full blocks so calculation is more of an art. In your case you have allocated 17 tracks but have only used 3 and 14 are free.

    Also, since the datasets are partitioned (PO) there is some space used for directory blocks in all cases.

    Hope this helps.