140 pts.
 IBM Disk Space Report
On the report the total % of disk space is 86% which includes all unused space. Where is the other 14% which totals over 400Gb on our system ? IBM replied that it's because the data is in use at the time and the data gathering should be run in a dedicated system. I find it hard to believe that 400Gb is in use (each week) when the job is run at a quiet period. Since the job has to run in batch it's difficult to run dedicated especially on a production machine. Is there another way of finding out where this 'missing' 400Gb is ?

Software/Hardware used:
i570 running i5/OS V6R1
ASKED: July 5, 2010  11:40 AM
UPDATED: July 13, 2010  2:42 AM
  Help
 Approved Answer - Chosen by ITKE

This code might be a little choppy because I had to do a lot to trim it down and convert it for more of a demo kind of purpose. The SHOLIBSIZ command can be used to call the SHOLIBSIZ program, or the program can be called directly.

The program calls the Retrieve Library Description (QLIRLIBD) API requesting two elements to be returned. The two keys are key 6 for the Library size information structure and key 7 for the Number of objects in library.

The elements are returned in a structure of variable-length "records". The program steps through the structure using an offset to to extract substrings. The substrings are determined by looking at which key is identified in the part of the structure being examined.

After the values are extracted, the size of the *LIB object itself is retrieved by running RTVOBJD. That value is formatted along with all the others into a message that is sent back out to *PRV -- previous call level. That's different from sending to *EXT as can be seen by running the command from the command line of the MAIN system menu, from the QCMD display or from a PDM command line. PDM knows to resend the message to *EXT; but QCMD will ignore it as will a basic system menu.

Also note that the final message is sent as *NOTIFY. That can be important if you have the program run inside of another CLP, whether by running the command or calling the program, and you use MONMSG for MsgID CPF9897.

You can modify the code to send the info out any way you wish. Run it from QCMD and have the detailed messages shown or just run it from PDM; you should see the message easily enough.

Finally note that the CL is from a source file that has 112-byte records. Some lines will probably be truncated if you put it into an older 92-byte QCLSRC file.

The SHOLIBSIZE *CMD:

/* CRTCMD   CMD( MYLIB/SHOLIBSIZ )           +
            PGM( MYLIB/SHOLIBSIZ )           +
            SRCFILE( mylib/QCMDSRC )         +
            SRCMBR( SHOLIBSIZ )              +
            REPLACE( *NO )                   +
*/
 SHOLIBSIZ:  CMD        PROMPT('Show Library Size')

             PARM       KWD(LIBNAM) TYPE(*NAME) LEN(10) MIN(1) +
                          PROMPT('Library name')

The command is simple. Create it wherever you want it and point it at the program. That's all there is for that piece.

The SHOLIBSIZ *PGM:

/*---------------------------------------------------------------------------*/
/* SHOLIBSIZ: Retrieves library size and displays it in a message...         */
/*---------------------------------------------------------------------------*/

pgm    ( +
         &Lib         +
       )

   dcl   &Lib         *char   10


/* QLIRLIBD returns variable records into this field. We'll process the      */
/*   two records returned to extract the data we need...                     */

   dcl   &LibDta      *char  256

/* Each variable record is extracted in turn and various descriptive data     */
/*   is set up...                                                             */

   dcl   &VarRcd      *char   64
   dcl   &VarRcdRtn   *int            /* Number of variable records returned */
   dcl   &VarRcdLen   *int            /* Length of the current VARRCD... */
   dcl   &offsVarRcd  *int            /* Offset into the current VARRCD... */
   dcl   &KeyID       *int            /* Key ID of the current VARRCD... */
   dcl   &SizFld      *int            /* Size of current VARRCD data field... */

/* Loop counter...                                                            */
   dcl   &CNT         *int

/* *dec and binary representations of the *LIB object size and the reported   */
/*   "library size" from QLIRLIBD...                                          */

   dcl   &LO_Size     *dec  ( 15 0 )  /* Size of the LIB object itself... */
   dcl   &LibObjSiz   *char    4      /* Size of the LIB object itself... */

   dcl   &Size        *char    4      /* Size of all objects... */
   dcl   &OB_Mult     *char    4      /* Multiplier of the object sizes... */

   dcl   &InfStat     *char    1      /* Information status...  */

/* Binary representations of number of objects in the library...      */

   dcl   &ObjNbr      *char    4

/* Used for formatting final message...                                       */

   dcl   &msgdta      *char   26      /* Message data to format... */
   dcl   &msg         *char  100      /* Final message text...  */


/* Verify that the requested library exists...                                */

   chkobj      QSYS/&Lib  objtype( *LIB )
   monmsg    ( CPF9801 )  exec( do )
      sndpgmmsg  msgid( CPF9898) msgf( QCPFMSG ) +
                   msgdta( 'Library' *BCAT &Lib *BCAT 'not found' ) +
                   msgtype( *ESCAPE )
      return
   enddo

/* Create a *MSGF and MsgD. This is temporary and used because it's trivial    */
/*   to format variable values this way (much easier than writing my own code) */

   crtmsgf     QTEMP/#SLS
   monmsg    ( cpf2112 )
   addmsgd     SLS0001  msgf( QTEMP/#SLS ) +
                 msg( +
                      'Library &1 size is &2 * &3. (*LIB size: &4 +
                       Count: &5).' +
                    ) +
                 fmt( (*CHAR 10) (*UBIN 4) (*UBIN 4) (*UBIN 4) (*UBIN 4) )

/* Retrieve the size and object count via Retrieve Library Description        */
/*   (QLIRLIBD) API. The API is asked to return two description records.      */
/*   The first is for key ID 6, library size information, and the second is   */
/*   for key ID 7, number of objects in the library...                        */

   call  QLIRLIBD    ( +
                         &libdta                 +
                         x'00000100'             +
                         &lib                    +
                         X'000000020000000600000007' +
                         x'0000000000000000'     +
                       )


/* Because the returned structure contains two variable records, we must      */
/*   parse the structure according to the API documentation. This code sets   */
/*   two fields needed for the parsing: the number of variable records        */
/*   actually returned is a *bin(4) value beginning at position 9 of the      */
/*   returned structure. Although this should always = 2 for the call here,   */
/*   we extract it anyway. We might have future uses and need to change       */
/*   the code in this program. The offset to the first variable length        */
/*   record will always be 16 (i.e., position 17)...                          */

   chgvar            &VarRcdRtn    %bin( &LibDta 9 4 )
   chgvar            &offsVarRcd       ( 17 )


/* Loop through the structure and extract the variable records. Handle each   */
/*   record according to the key ID...                                        */

   dofor  &CNT  from( 1 ) to( &VarRcdRtn )

      chgvar         &VarRcdLen    %bin( &LibDta &offsVarRcd 4 )

   /* Extract a variable record according to the length returned...              */

      chgvar         &VarRcd       %sst( &LibDta &offsVarRcd &VarRcdLen )

   /* Extract key ID and data length from this  variable record...               */

      chgvar         &KeyID        %bin( &VarRcd 5 4 )
      chgvar         &SizFld       %bin( &VarRcd 9 4 )

   /* Bump our offset to the next variable record. We must account for the       */
   /*   three *bin(4) fields at the start of each record (12) and the length     */
   /*   of the data field (&SizFld)...                                           */

      chgvar         &offsVarRcd        ( &offsVarRcd + 12 + &SizFld )


   /* Process key ID 6...                                                        */

      if ( &KeyID *EQ 6 )  do

    /* Extract library size fields. This includes a base plus a multiplier...     */
         chgvar      &Size          %sst( &VarRcd 13 4 )
         chgvar      &OB_Mult       %sst( &VarRcd 17 4 )
         chgvar      &InfStat       %sst( &VarRcd 21 1 )

      /* Check if the library size includes all objects in the library. */

         if ( &InfStat *eq '0' )  do
            sndpgmmsg msg('Some objects locked or not authorized.') +
                        topgmq( *PRV )
            sndpgmmsg msg('Library objects size does not include all objects.') +
                        topgmq( *PRV )
         enddo

      enddo


   /* Process key ID 7...                                                        */

      else  if ( &KeyID *EQ 7 )  do

   /* Extract number of objects...                                               */
         chgvar      &ObjNbr        %sst( &VarRcd 13 4 )

      enddo

   enddo


/* We also retrieve the size of the *LIB object itself. This is displayed     */
/*   in the message because the 'library size information' value includes     */
/*   the size of the *LIB object. The user is supplied this value so that     */
/*   it can be subtracted if desired...                                       */

   rtvobjd     &Lib  objtype( *LIB ) size( &LO_Size )

/* Convert to *char to satisfy the CHGVAR command...                          */

   chgvar      %bin( &LibObjSiz )         &LO_Size


/* Display the message with the info...                                       */

/* We could have extracted the &Size and other fields as *INT variables,  */
/*   but *CHAR variables are easy to string together into a &msgdta       */
/*   variable. The MsgD doesn't know they aren't *INTs...                 */

   chgvar            &msgdta     (       &Lib         *cat  +
                                         &Size        *cat  +
                                         &OB_Mult     *cat  +
                                         &LibObjSiz   *cat  +
                                         &ObjNbr            +
                                 )
   rtvmsg      msgid( SLS0001 ) msgf( QTEMP/#SLS ) +
                          msgdta( &msgdta ) msg( &msg )
   dltmsgf     QTEMP/#SLS

/* We retrieve the msg text rather than send msg SLS0001 because the MsgF */
/*   is going to be deleted. We'd have trouble viewing SLS0001 if the     */
/*   format no longer existed. The system wouldn't be able to display it. */

   sndpgmmsg   msgid( CPF9897 ) msgf( QCPFMSG ) +
                msgdta( &msg ) +
                topgmq( *PRV ) +
                msgtype( *NOTIFY )


/* ...and get out of this program...                                          */

   return

endpgm

That can be compiled as OPM or ILE CL. It could have more error handling, but there isn't much point to it. It needs to be at Least V5R3, though it can be changed fairly easily to run at any earlier release.

It could also be changed to take advantage of V5R4 by declaring a few structures and basing them on *PTRs. Advance the structures through the variable-record space by adding offsets to the *PTRs.

Paste the code into a streamfile in your IFS. Use CPYFRMSTMF to copy into a source member. I have PDM options that run either CPYTOSTMF or CPYFRMSTMF depending on which way I'm going. I use either iNav or Windows Explorer to access the streamfile depending on how networking is set up.

Be aware that even the API can take a few minutes to process a large, complex library. The library might have many objects or a few objects such as source files with many members. The library directory structure needs to be processed by the API to get the detail needed to supply the totals.

Run the command against a few libraries to get a feel for it. Let me know if there are questions.

Tom

ANSWERED:  Jul 11, 2010  8:40 PM (GMT)  by ITKE

 
Other Answers:
Last Wiki Answer Submitted:  June 27, 2012  2:28 am  by    0 pts.
Latest Answer Wiki Contributors: 
To see other answers submitted to the Answer Wiki: View Answer History.


Discuss This Question:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _


 

Without seeing the space report along with your DASD configuration, there is no way we can guess the answer. We might guess that you have a particular RAID configuration, for example; but it would be only a guess.

Without information, we can’t know anything. Show us what you’re asking about.

Tom

 107,935 pts.

 

Total disk space on system in 1,000,000
bytes . . . . . . . . . . . . . . . . : 3034294
% of Size in
Description Disk 1,000,000 bytes
User libraries 68.07 2065541.59
User directories 1.99 60441.55
Folders and documents .00 .41
QSYS .32 9622.75
Other IBM libraries .23 6935.09
Licensed Internal Code .18 5430.17
Temporary space .31 9379.77
Unused space 14.99 454836.69
System internal objects .04 1308.89
Objects not in a library .00 3.90
TOTAL 86.13 2613500.81

Serial Resource
ASP Unit Number Type Model Name Status
1 Unprotected
1 68-0D0FDF2 4327 070 DD005 RAID 5/Active
2 68-0D0E864 4327 070 DD004 RAID 5/Active
3 68-0D10AD5 4327 074 DD001 RAID 5/Active
4 68-0D0F5B4 4327 074 DD003 RAID 5/Active
5 68-0D109C3 4327 074 DD002 RAID 5/Active
6 68-0CFC3F5 4327 074 DD006 RAID 5/Active
7 68-0D0FBF6 4327 074 DD007 RAID 5/Active
8 68-0CFC906 4327 070 DD012 RAID 5/Active
9 68-0D0F6F2 4327 074 DD008 RAID 5/Active
10 68-0CFC777 4327 074 DD011 RAID 5/Active
11 68-0D0FC17 4327 074 DD010 RAID 5/Active
12 68-0D101A7 4327 070 DD013 RAID 5/Active
13 68-0CFDEE3 4327 070 DD009 RAID 5/Active
14 68-0CFC36E 4327 072 DD025 RAID 5/Active
15 68-0D071F5 4327 072 DD019 RAID 5/Active
16 68-0D079AD 4327 072 DD020 RAID 5/Active
17 68-0D13022 4327 072 DD022 RAID 5/Active
19 68-0CE84DB 4327 072 DD023 RAID 5/Active
21 68-0EB8FC5 4327 070 DD048 RAID 5/Active
22 68-0D0F5C5 4327 072 DD018 RAID 5/Active
23 68-0D1098A 4327 072 DD021 RAID 5/Active
24 68-0EB5A79 4327 072 DD026 RAID 5/Active
25 68-0D1152B 4327 072 DD024 RAID 5/Active
26 68-0E9630C 4327 074 DD034 RAID 5/Active
27 68-0EC1862 4327 074 DD029 RAID 5/Active
28 68-0EB8043 4327 074 DD031 RAID 5/Active
29 68-0EBC5BA 4327 072 DD033 RAID 5/Active
30 68-0EC2B10 4327 072 DD030 RAID 5/Active
31 68-0EB6E06 4327 072 DD049 RAID 5/Active
32 68-0EC6091 4327 072 DD035 RAID 5/Active
33 68-0EC308B 4327 072 DD032 RAID 5/Active
34 68-0EC58D9 4327 072 DD028 RAID 5/Active
35 68-0EC1F52 4327 072 DD027 RAID 5/Active
36 68-0EC16AB 4327 072 DD036 RAID 5/Active
37 68-0EC1FA7 4327 072 DD043 RAID 5/Active
38 68-0EBF1BE 4327 072 DD037 RAID 5/Active
39 68-0E962F5 4327 072 DD046 RAID 5/Active
40 68-0EC3E26 4327 072 DD040 RAID 5/Active
41 68-0EA038B 4327 072 DD041 RAID 5/Active
42 68-0EF205F 4327 074 DD044 RAID 5/Active
43 68-0EC20AE 4327 074 DD038 RAID 5/Active
44 68-0EC20A3 4327 072 DD047 RAID 5/Active
45 68-0EB50B9 4327 074 DD042 RAID 5/Active
46 68-0EB926D 4327 072 DD039 RAID 5/Active
47 68-0EC210D 4327 074 DD045 RAID 5/Active
48 68-0EC2122 4327 074 DD050 RAID 5/Active
2 Mirrored
18 68-0D07908 4327 050 DD014 Active
18 68-0C55B49 4327 050 DD017 Active
20 68-0D1E20D 4327 050 DD016 Active
20 68-0D0744C 4327 050 DD015 Active
49 68-0EB1B9A 4327 050 DD051 Active
49 68-0EB6F18 4327 050 DD052 Active
50 68-0EB7DC1 4327 050 DD053 Active
50 68-0E6D284 4327 050 DD054 Active

Is that enough info ?
Basically we run SAP and its journal receivers are all in ASP2

I did wonder if RAID was the answer but the report shows 3034Gb which excludes the amount lost to RAID doesn’t it ?

 140 pts.

 

…the report shows 3034Gb which excludes the amount lost to RAID doesn’t it ?

AFAIK, it usually does.

Please run WRKDSKSTS OUTPUT(*PRINT). Paste the report detail like:

              Size      %    I/O   Request   Read  Write   Read  Write     %       --Protection--             
Unit  Type    (M)    Used    Rqs  Size (K)    Rqs    Rqs    (K)    (K)  Busy  ASP  Type  Status    Compression
   1  4327    70564  84.4    2.8       6.4    1.0    1.8    6.1    6.6     1    1                             
   2  4327    70564  84.4    3.2       7.0     .6    2.5    4.9    7.6     1    1                             
   3  4327    70564  84.4    3.9       6.2     .5    3.3    5.2    6.3     2    1                             
   4  6718    17548  98.0     .7       5.8     .2     .5    4.0    6.7     0    1                             
   5  6718    17548  97.8    2.8       4.6     .0    2.8    4.3    4.6     0    1                             
   6  6718    17548  97.7     .7       5.6     .2     .5    4.0    6.2     0    1                             
4003  6718    17548           .0        .0     .0     .0     .0     .0     0   33                             
4004  6718    17548           .0        .0     .0     .0     .0     .0     0   34                             
4005  6718    17548           .0        .0     .0     .0     .0     .0     0   35                             
4006  6718    17548           .0        .0     .0     .0     .0     .0     0   36

(I clicked the {code} button before and after the paste so that formatting was preserved. You might use iNav to drag the spooled file into a PC text file for easy copying.)

This section from DSPSYSSTS might also be useful:

Auxiliary storage:                   
  System ASP . . . . . . :    264.3 G
  % system ASP used  . . :    87.1377
  Total  . . . . . . . . :    264.3 G
  Current unprotect used :     9373 M
  Maximum unprotect  . . :     9631 M

If the system can’t be quiesced when the reports are run, I might not be surprised if 400GB is in use on a system of your size. Even the system itself will need to get locks on objects to gather data. Regardless, if it was one of my systems, I would definitely want a true baseline to work from as well as a series of reports for trending. The baseline would come during some planned downtime. (I’d probably keep a couple of them — the latest two.)

Also, I’m submitting RTVDSKINF on one system during the day just to see what differences show up. If it’s significant, I’ll post what I find.

Tom

 107,935 pts.

 

Thanks Tom

 5761SS1 V6R1M0 080215                  Work with Disk Status                                    7/07/10 14:15:53        Page    1
 Elapsed time . . . . . . . :   03:25:39                                       System name . . . . . . . :   JGBERPHA
               Size      %    I/O   Request   Read  Write   Read  Write     %       --Protection--
 Unit  Type    (M)    Used    Rqs  Size (K)    Rqs    Rqs    (K)    (K)  Busy  ASP  Type  Status    Compression
    1  4327    70564  91.2   15.4      49.5    7.6    7.8   93.7    6.5     4    1  DPY   ACTIVE
    2  4327    70564  91.1   16.2      61.6   10.2    6.0   92.2    9.4     4    1  DPY   ACTIVE
    3  4327    52923  91.2   15.0      50.0    7.1    7.8   94.8    8.9     2    1  DPY   ACTIVE
    4  4327    52923  91.2   13.5      56.9    7.5    5.9   93.6   10.5     4    1  DPY   ACTIVE
    5  4327    52923  91.2   13.0      55.4    7.2    5.7   89.5   12.2     4    1  DPY   ACTIVE
    6  4327    52923  91.2   13.3      54.7    7.0    6.3   95.5    9.0     2    1  DPY   ACTIVE
    7  4327    52923  91.2   12.4      59.0    7.1    5.3   95.0   10.1     3    1  DPY   ACTIVE
    8  4327    70564  91.1   17.3      55.9    9.5    7.8   94.2    8.9     4    1  DPY   ACTIVE
    9  4327    52923  91.2   12.3      58.3    7.0    5.2   93.7   10.8     3    1  DPY   ACTIVE
   10  4327    52923  91.2   14.8      49.3    7.1    7.7   93.6    8.6     3    1  DPY   ACTIVE
   11  4327    52923  91.2   14.7      50.6    7.1    7.5   94.8    8.7     3    1  DPY   ACTIVE
   12  4327    70564  91.3   18.2      55.0   10.0    8.1   93.2    7.8     4    1  DPY   ACTIVE
   13  4327    70564  91.2   17.9      56.0    9.8    8.1   95.8    8.2     4    1  DPY   ACTIVE
   14  4327    61744  91.1   13.9      60.4    8.2    5.6   94.5   10.5     3    1  DPY   ACTIVE
   15  4327    61744  91.1   15.3      55.7    8.5    6.7   92.1    9.3     3    1  DPY   ACTIVE
   16  4327    61744  91.2   14.9      58.5    8.6    6.2   93.8    9.4     3    1  DPY   ACTIVE
   17  4327    61744  91.2   15.7      54.7    8.6    7.0   91.8    8.8     3    1  DPY   ACTIVE
   19  4327    61744  91.3   15.8      55.2    8.7    7.0   91.9    9.4     3    1  DPY   ACTIVE
   21  4327    70564  91.3   16.1      61.8   10.2    5.9   91.9   10.1     4    1  DPY   ACTIVE
   22  4327    61744  91.2   17.3      49.0    8.2    9.0   93.8    8.0     3    1  DPY   ACTIVE
   23  4327    61744  91.1   16.2      52.2    8.2    8.0   94.2    9.1     3    1  DPY   ACTIVE
   24  4327    61744  91.2   14.5      59.9    8.8    5.6   91.7   10.3     3    1  DPY   ACTIVE
   25  4327    61744  91.2   18.8      46.5    8.7   10.0   90.4    8.1     3    1  DPY   ACTIVE
   26  4327    52923  91.2   13.3      55.6    7.3    5.9   91.8   10.4     3    1  DPY   ACTIVE
   27  4327    52923  91.3   13.5      58.4    8.1    5.4   91.1   10.0     3    1  DPY   ACTIVE
   28  4327    52923  91.2   12.9      58.0    7.4    5.4   93.6    9.9     3    1  DPY   ACTIVE
   29  4327    61744  91.1   33.3      29.2    8.8   24.4   94.5    5.6     4    1  DPY   ACTIVE
   30  4327    61744  91.2   14.5      60.8    8.8    5.6   92.4   11.6     3    1  DPY   ACTIVE
   31  4327    61744  91.2   15.1      57.5    8.6    6.5   92.6   11.1     3    1  DPY   ACTIVE
   32  4327    61744  91.2   15.2      58.9    9.1    6.1   91.1   10.3     3    1  DPY   ACTIVE
   33  4327    61744  91.2   15.8      55.0    8.7    7.1   92.5    9.2     3    1  DPY   ACTIVE
   34  4327    61744  91.2   15.1      55.8    8.4    6.7   92.4    9.7     3    1  DPY   ACTIVE
   35  4327    61744  91.1   14.3      60.6    8.7    5.6   92.8   10.5     3    1  DPY   ACTIVE
   36  4327    61744  91.1   14.3      60.4    8.6    5.7   92.9   11.6     3    1  DPY   ACTIVE
   37  4327    61744  91.2   16.4      52.3    8.5    7.8   91.7    8.9     3    1  DPY   ACTIVE
   38  4327    61744  91.2   15.8      55.6    9.0    6.8   91.0    9.4     4    1  DPY   ACTIVE
   39  4327    61744  91.2   15.6      57.1    8.8    6.7   93.2    9.8     4    1  DPY   ACTIVE
   40  4327    61744  91.2   14.4      63.6    9.2    5.1   93.0   10.6     4    1  DPY   ACTIVE
   41  4327    61744  91.2   15.3      58.1    8.9    6.4   93.3    9.3     3    1  DPY   ACTIVE
   42  4327    52923  91.1   12.2      63.4    7.8    4.4   93.1   10.9     3    1  DPY   ACTIVE
   43  4327    52923  91.2   11.8      61.6    7.1    4.6   93.5   12.4     3    1  DPY   ACTIVE
   44  4327    61744  91.2   14.7      62.2    9.1    5.5   93.7   10.9     3    1  DPY   ACTIVE
   45  4327    52923  91.2   13.7      57.7    7.9    5.7   92.6    9.9     3    1  DPY   ACTIVE
   46  4327    61744  91.2   15.7      59.4    9.4    6.3   93.1    9.4     4    1  DPY   ACTIVE
   47  4327    52923  91.2   14.0      54.4    7.6    6.4   92.3    9.1     3    1  DPY   ACTIVE
   48  4327    52923  91.1   13.3      57.2    7.6    5.6   92.6    9.3     3    1  DPY   ACTIVE
   18  4327    70564  22.1   39.5       6.1     .0   39.5    4.0    6.1     1    2  MRR   ACTIVE
   18  4327    70564  22.1   39.5       6.2     .0   39.4    5.3    6.2     1    2  MRR   ACTIVE
   20  4327    70564  22.1   40.0       6.9     .0   40.0    4.0    6.9     2    2  MRR   ACTIVE
   20  4327    70564  22.1   39.9       6.9     .0   39.9    5.5    6.9     2    2  MRR   ACTIVE
   49  4327    70564  22.2   38.7       5.5     .0   38.7    4.0    5.5     1    2  MRR   ACTIVE
 5761SS1 V6R1M0 080215                  Work with Disk Status                                    7/07/10 14:15:53        Page    2
               Size      %    I/O   Request   Read  Write   Read  Write     %       --Protection--
 Unit  Type    (M)    Used    Rqs  Size (K)    Rqs    Rqs    (K)    (K)  Busy  ASP  Type  Status    Compression
   49  4327    70564  22.2   38.6       5.5     .0   38.6    9.0    5.5     1    2  MRR   ACTIVE
   50  4327    70564  22.1   39.3       6.2     .0   39.3    4.0    6.2     1    2  MRR   ACTIVE
   50  4327    70564  22.1   39.2       6.2     .0   39.2    9.5    6.2     1    2  MRR   ACTIVE
                          * * * * *  E N D  O F  L I S T I N G  * * * * *

Auxiliary storage:
System ASP . . . . . . : 2752 G
% system ASP used . . : 91.2452
Total . . . . . . . . : 3034 G
Current unprotect used : 48387 M
Maximum unprotect . . : 53949 M

 140 pts.

 

So far, you look pretty normal, though perhaps getting crowded. I ran RTVDSKINF on one system and came up about .16% higher than when run in the middle of the night on a weekend. On a second system, I got a TOTAL of 100.11% reported.

There are obviously rounding errors in the reports on top of variances due to what can counted while in use.

You might use the Retrieve Library Description (QLIRLIBD) API against a few of your larger libraries to get a feel for how locks might interfere on an active system. Retrieve results from the API and compare against a total that you build by querying one object description at a time from the same libraries and also by running DSPLIB OUTPUT(*PRINT).

I don’t know what techniques are used by RTVDSKINF. I’m still looking to see if clear info can be extracted from the system itself.

Tom

 107,935 pts.

 

Thanks again Tom

How did you run the report on the system that gave 100% ?

How do I run an API (I’m not a programmer but can do CL) ?

 140 pts.

 

How did you run the report on the system that gave 100% ?

100.11% — I simply submitted RTVDSKINF, then ran PRTDSKINF *SYS after collection finished.

How do I run an API (I’m not a programmer but can do CL) ?

I have ILE CL code that does it, but I’ll need to pare it down some first. It has too many extras in it that would drastically obscure its function. I should post it here before Monday arrives.

Tom

 107,935 pts.

 

Thanks Tom

Is it possible that the unaccounted for disk space could be deleted records ?

I reorganise the larger gains but there are tens of thousands of smaller ones which I haven’t done because they would have to be specified one-by-one.

 140 pts.

 

That’s great Tom

It might take me a while to do this but I’m very grateful for all your advice and help on this matter.

 140 pts.

 

The code could look similar in RPG, but you said you knew CL. If anything needs clarification, just post back.

Keep in mind that this still doesn’t answer your question. It is only one of the various ways of totalling up space used by objects in a library. You might or might not see the messages that can come from locks encountered by the API; if you do, you won’t know which objects are excluded. The most that this might do is show cases of different totals from different methods.

I haven’t seen evidence that the program can’t be run any time of day. That might be the most useful aspect since you’re stuck running RTVDSKINF on an active system.

Tom

 107,935 pts.