View previous topic :: View next topic
|
Author |
Message |
vasanthz
Global Moderator
Joined: 28 Aug 2007 Posts: 1742 Location: Tirupur, India
|
|
|
|
Hi,
I am trying to determine space allocated to migrated datasets using DCOLLECT M record type.
Method 1:
I used UMALLSP(189-192) field from DCOLLECT - M rectype to get the space allocated to a dataset in KB.
Then converted the KB to tracks by
Code: |
Tracks = (KB * 1024)/ 56664
Tracks = 278365 * 1024 / 56664 = 5030.45 Tracks. |
Method 2:
I issued HLIST DSN(xxxx.yyyy.xxxx) MCDS against the migrated dataset and below is the output,
Code: |
DSN=xxxx.yyyy.xxxx MIGVOL=G96597 DSO=VS SDSP=NO
LAST REF=91/10/06 MIG=93/11/18 TRKS=0006004 2K BLKS= ******* TIMES MIG= 001
16K BLKS=014917 LAST MIGVOL=*NONE* |
TRKS=0006004
Method 1 and Method 2 tracks match for most of the datasets, but for some datasets the numbers do not match.
In this example, Method 1 = 5030.45 Tracks
Method 2 = 6004 Tracks.
Below is the SAS program for Method 1:
Code: |
INFILE DCOLLECT;
INPUT @005 DCURCTYP $CHAR2. @;
LENGTH DSN $44;
IF DCURCTYP = 'M ' THEN
INPUT @25 DSN $
@189 DSN_ALLOC_SPACE PIB4. /* Space ALLOCATED IN KB */
@70 MIG_LVL PIB1.; |
Could you please let me know if there Is any other parameter that needs to be considered while getting space allocated from DCOLLECT.
Thanks & Regards, |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10873 Location: italy
|
|
|
|
Your homemade computations are wrong...
the 56664 is a very theoretical track capacity
the real track capacity depends on the blksize
the best fit will be with a blksize of 27998 which at max will give 55996
so until You come up with the right formula You will get mismatching results
see this topic for the links to the appropriate manuals
ibmmainframes.com/viewtopic.php?t=35906&highlight=blocks+track
and a working blocks per track calculator |
|
Back to top |
|
|
Robert Sample
Global Moderator
Joined: 06 Jun 2008 Posts: 8696 Location: Dubuque, Iowa, USA
|
|
|
|
Your formula can be off by a significant amount. 56664 is the track capacity of a 3390 disk drive -- but 55996 is the most that can be used (27998 times 2), and the actual used bytes per track can be much different. For example, if a load library has BLKSIZE of 23200 (which I've seen for vendor software), that is 46400 bytes per track used -- so your dividing by 56664 will be low by about 20%. Multiply UMALLSP by 1024 and then divide by UMBKLNG to get the actual number of blocks used -- then you have to consider the number of blocks per track in calculating tracks to get the two estimates close together. |
|
Back to top |
|
|
vasanthz
Global Moderator
Joined: 28 Aug 2007 Posts: 1742 Location: Tirupur, India
|
|
|
|
Hi,
Thanks for the suggestion and the link to the other thread,
publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/am3u1001/B.1.2 was very useful.
I tried out the modified formula,
Code: |
INPUT @25 DSN $
@189 DSN_ALLOC_SPACE PIB4.
@70 MIG_LVL PIB1.
@183 UMBKLNG PIB2.;
BLOCKS = DSN_ALLOC_SPACE * 1024 / UMBKLNG;
IF 27999 <= UMBKLNG <= 56664 THEN PERTRACK = 1;
.
.
http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/am3u1001/B.1.2
.
.
ELSE IF 1 <= UMBKLNG <= 22 THEN PERTRACK = 86;
TRACKS = BLOCKS / PERTRACK; |
Still the number of tracks were less compared to HLIST command.
DSORG = VS
DSN_ALLOC_SPACE = 278365
UMBKLNG = 4096
BLOCKS = 69591.25
PERTRACK = 12
TRACKS = 5799.27
Whereas the HLIST tracks was TRKS=0006004
Thanks & Regards, |
|
Back to top |
|
|
Robert Sample
Global Moderator
Joined: 06 Jun 2008 Posts: 8696 Location: Dubuque, Iowa, USA
|
|
|
|
Vasanth, I suspect that this is where your problem lies. From the little research I've been able to accomplish, it appears that the DCOLLECT M record allocated space value includes both the data and index components for a KSDS. And it appears that the space allocation figure is based upon the larger CA size between the data and index components -- the other is converted into the larger units.
So a KSDS file allocated with data component of 5 cylinders and 3 tracks for the index component will have M type record space allocation of 75 tracks for data and 15 (1 cylinder since the data component is using cylinder CA size) tracks for the index, or a total of 90 tracks allocated space (4316 k-bytes in the M record). The actual space used would be 78 tracks (3834 k-bytes) if restored.
This tells me you cannot rely upon the allocated space in the type M DCOLLECT records for VSAM files. The actual space required for the restored data set may be more -- or less -- than the calculated value based on the M record allocated k-bytes. |
|
Back to top |
|
|
vasanthz
Global Moderator
Joined: 28 Aug 2007 Posts: 1742 Location: Tirupur, India
|
|
|
|
Robert,
Thanks for the time for research and the example explaining the scenario with VSAM.
I will try to perform the HLIST for all migrated datasets and process the data since the management requires the information in tracks.
Code: |
//PS010 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
HLIST LEVEL(A) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(B) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(C) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(D) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(E) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(F) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(G) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(H) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(I) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(J) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(K) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(L) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(M) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(N) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(O) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(P) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(Q) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(R) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(S) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(T) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(U) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(V) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(W) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(X) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(Y) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL(Z) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
HLIST LEVEL($) MCDS ODS('XXX.YYY.ZZZ'') SELECT(ML2)
/* |
Many Thanks, |
|
Back to top |
|
|
|