Previous Topic: TuningNext Topic: CICS Resident Programs


How to Change the Size of the SCF Message Cache

The Session Control Facility (SCF) uses an in-core dynamic table called a message cache to maintain the set of most recently accessed messages. SCF-based products use the SCF message facility to reduce the number of I/O events needed to retrieve messages.

When the TP monitor starts up, the SCF message cache is empty. When a message is to be issued, the system first checks the message cache. If the message text is not there, the system must retrieve the message text from ADRLIB, a VLS library that is permanently located on a DASD device. The message is issued and the message text is placed in the SCF message cache. If the cache is full, one message is removed before the new message is loaded into the cache.

Upon installation of CA IPC, the size of the message cache is 1000 bytes, which is the minimum size. Since the amount of core required for messages in the cache is a function of the number of characters in message text, 1000 bytes can hold about 20 messages. The number of I/O events required to retrieve a message from the SCF message cache is much smaller than the number of I/O events required to retrieve a message from ADRLIB. If you can give up additional core, you should increase the initial size of the SCF message cache to reduce I/O activity.

If you have SCF administrator privileges, you can determine the relative message cache activity at your site. From the IPCX or IPCV transaction, issue the following SCF on-line command:

@I$SCF  MSGCACHE

This displays the following message:

n-ICSCCMPR37I - Message cache requests = xxxxxxxx, misses = yyyyyyyy
xxxxxxxx

The total number of messages that were accessed since the TP monitor start-up.

yyyyyyyy

The number of misses, that is, the total number of messages that were not found in the SCF message cache. This value is incremented by one each time message text is retrieved from ADRLIB.

If the number of misses forms a substantial percentage of the number of accesses and if you can afford to give up an additional part of core memory, you can increase the size of the message cache. If the number of misses does not form a substantial percentage of the number of accesses, you can decrease the size of the message cache. Use the following procedure to respecify the size of the SCF message cache:

  1. Retrieve the SC00TRAN source member from the SOURCE library. The first part of the distributed SC00TRAN program is displayed below:
    SC00TRAN SCTRANTB TYPE=INITIAL,                                               X
                   ASTRAN=SAST,                                                   X
                   CACHELN=1000,                                                  X
                   GSLIMIT=1,                                                     X
                   ONTRAN=SCFS,                                                   X
                   RLSVCB=N,                                                      X
                   SCTRAN=SCFD,                                                   X
                   TRMTRAN=NETT,                                                  X
                   USEGS=Y
    
    SCTRANTB TYPE=ENTRY,TRANID=IPCV,PROD=IPC,                                     X
                   OPTIONS=(PS),                                                  X
                   INITMOD=PDIN,                                                  X
                   IDENT='IPC:',                                                  X
                   XFERCMD=IPC
                   SCTRANTB TYPE=ENTRY,TRANID=IPCX,PROD=IPC,                      X
                   OPTIONS=(EX,PS),                                               X
                   INITMOD=PDIN,                                                  X
                   IDENT='IPC:',
                   XFERCMD=IPC
    
    SCTRANTB TYPE=ENTRY,TRANID=IDEA,PROD=IDL,                                     X
                   OPTIONS=(DD,PS),                                               X
                   IDENT='IDEAL:',
                   XFERCMD=IDEAL
                   *
                   *
                   *
    
  2. Re-specify the CACHELN= parameter on the SCTRANTB TYPE=INITIAL statement by specifying a number of bytes from 1000 through 32000.
  3. Retrieve the JCLTRANS member from your SOURCE library and use it as a model to assemble and link-edit the modified SC00TRAN:
    //         JOBCARD
    //*
    //ASM      EXEC PGM=ASMA90,PARM=’DECK,NOOBJ’
    //SYSLIB   DD  DSN=SOURCE.LIBRARY,DISP=SHR
    //SYSPUNCH DD  DSN=OBJECT.LIBRARY(SC00TRAN),DISP=SHR
    //SYSPRINT DD  SYSOUT=*
    //SYSUT1   DD  UNIT=SYSDA,SPACE=(CYL,(1,1))
    //SYSIN    DD  *
      COPY SC00TRAN
             END
    /*
    //LINK     EXEC PGM=IEWL,COND=(0,NE)
               PARM=’XREF,NCAL,REUS(RENT)’
    //SYSPRINT DD  SYSOUT=*
    //SYSUT1   DD  UNIT=SYSDA,SPACE=(CYL,(1,1))
    //SYSLMOD  DD  DSN=LOAD.LIBRARY,DISP=SHR
    //OBJLIB   DD  DSN=OBJECT.LIBRARY,DISP=SHR
    //SYSLIN   DD  *
         INCLUDE OBJLIB (SC00OPTS)
         NAME SC00TRAN (R)
    /*
    //*
    
  4. Reference the new copy for use by your TP monitor.

To monitor SCF message cache activity, use the @I$SCF MSGCACHE command. To display the contents of the message cache, use the @I$SCF DIS=MSGCACHE command.