View previous topic :: View next topic
|
Author |
Message |
Apoorva
New User
Joined: 28 Jan 2020 Posts: 49 Location: India
|
|
|
|
Hello Experts,
Many of our shops have many GDGs getting allocated each day, and each of those GDGs will be getting allocated by same job (and in the same system), and going through same set of ACS routines to get SMS constructs assigned. Since ACS routines don't get changed often, constructs assigned to those new GDGs will be same everyday. My question is "Is there a way to specify SMS constructs, for these GDGs, in JCL, and tell SMS to skip ACS routine processing by simply honoring the constructs specified in the JCL?".
ACS routine processing could involve some overhead like below, and I would like to know if there is a way to avoid it for same repetitive allocations,
1. Allocate Storage for various ACS related control blocks, and build them.
2. Allocate storage for ACS routine object code, and copy the active ACS object code from SMS address space. |
|
Back to top |
|
|
Joerg.Findeisen
Senior Member
Joined: 15 Aug 2015 Posts: 1249 Location: Bamberg, Germany
|
|
|
|
The ACS routines are called anyway. You can put a clause in there to leave early but that changes nothing. I assume your routines are grown in a certain way? |
|
Back to top |
|
|
Apoorva
New User
Joined: 28 Jan 2020 Posts: 49 Location: India
|
|
|
|
Thanks for the reply!
"You can put a clause in there to leave early but that changes nothing"
Could you please elaborate more on this? |
|
Back to top |
|
|
Joerg.Findeisen
Senior Member
Joined: 15 Aug 2015 Posts: 1249 Location: Bamberg, Germany
|
|
|
|
First check if the input is valid (see for MCLS):
Code: |
/**********************************************************************/
/* CHECK FOR VALID MC */
/**********************************************************************/
IF (&MGMTCLAS ^= &VALID_MC) THEN
SET &MGMTCLAS = '' |
next assign what has been specified via JCL etc.
Code: |
/**********************************************************************/
/* IF MANAGEMENT CLASS EXISTS, THEN ASSIGN IT */
/**********************************************************************/
WHEN (&MGMTCLAS ^='')
SET &MGMTCLAS = &MGMTCLAS |
|
|
Back to top |
|
|
Apoorva
New User
Joined: 28 Jan 2020 Posts: 49 Location: India
|
|
|
|
oh ok! I see your point now which is to let ACS routine handle it. But ACS routines get called anyway, and this can't avoid the overhead that I highlighted earlier,
1. Allocate virtual Storage for various ACS related control blocks, and build them.
2. Allocate virtual storage for ACS routine object code, and copy the active ACS object code from SMS address space. |
|
Back to top |
|
|
Joerg.Findeisen
Senior Member
Joined: 15 Aug 2015 Posts: 1249 Location: Bamberg, Germany
|
|
|
|
Optimize the ACS to save some storage. It's the only conclusion I can see. |
|
Back to top |
|
|
Pete Wilson
Active Member
Joined: 31 Dec 2009 Posts: 580 Location: London
|
|
|
|
If &ACSENVIR=ALLOC then ALL datasets have to go through all four ACS routines, Dataclas, Storclas, Mgmtclas and Storgrp in that order with very few exceptions. (See 'Writing ACS Routines' which is now in the DFSMS Storage Admin Ref now I think). Back in the 80's when I first set up DFSMS there was a figure of 17% suggested by IBM as the overhead. It's impossible to find any figure on this now, but it may be higher given how much more function has been added to DFSMS. As Joerg suggests the best mitigation is to write efficient routines.
It does help to order things in the routines to deal with the most frequent type of allocations first and exit the routine as soon as feasible. And if you have large filtlists (should be avoided) the entries in these should also be ordered with most frequent first. There's some debate over using IF vs SELECT>WHEN groups but I don't think it's worth wasting energy on that.
For GDG's, if they're all to be managed ed the same way you could assign a specific MGMTCLAS based on DSTYPE as early as possible in the routine then exit the routine.
e.g.
WHEN(&DSTYPE EQ 'GDS') DO
SET &MGMTCLAS = 'GDG'
EXIT
END |
|
Back to top |
|
|
|