IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

ACS routines


IBM Mainframe Forums -> JCL & VSAM
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
Apoorva

New User


Joined: 28 Jan 2020
Posts: 49
Location: India

PostPosted: Tue Feb 25, 2020 10:42 am
Reply with quote

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
View user's profile Send private message
Joerg.Findeisen

Active User


Joined: 15 Aug 2015
Posts: 388
Location: Bamberg, Germany

PostPosted: Tue Feb 25, 2020 10:46 am
Reply with quote

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
View user's profile Send private message
Apoorva

New User


Joined: 28 Jan 2020
Posts: 49
Location: India

PostPosted: Tue Feb 25, 2020 10:53 am
Reply with quote

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
View user's profile Send private message
Joerg.Findeisen

Active User


Joined: 15 Aug 2015
Posts: 388
Location: Bamberg, Germany

PostPosted: Tue Feb 25, 2020 11:06 am
Reply with quote

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
View user's profile Send private message
Apoorva

New User


Joined: 28 Jan 2020
Posts: 49
Location: India

PostPosted: Tue Feb 25, 2020 11:12 am
Reply with quote

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
View user's profile Send private message
Joerg.Findeisen

Active User


Joined: 15 Aug 2015
Posts: 388
Location: Bamberg, Germany

PostPosted: Tue Feb 25, 2020 11:28 am
Reply with quote

Optimize the ACS to save some storage. It's the only conclusion I can see.
Back to top
View user's profile Send private message
Pete Wilson

Active User


Joined: 31 Dec 2009
Posts: 490
Location: London

PostPosted: Tue Jun 23, 2020 8:07 pm
Reply with quote

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
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> JCL & VSAM

 


Similar Topics
Topic Forum Replies
No new posts ACS Routines Management class issue All Other Mainframe Topics 5
No new posts Using multiple routines at exit 6 in ... All Other Mainframe Topics 2
No new posts &MAXSIZE parameter value calculat... JCL & VSAM 12
No new posts ACS-routines and absent RACF-profiles JCL & VSAM 4
No new posts Exit routines in ICETOOL DFSORT/ICETOOL 10
Search our Forums:

Back to Top