Increasing key store memory (STOREOPTS MEMORY)


The STOREOPTS MEMORY keyword and the KSMEMORY installation option determine how much memory BMC AMI Log Master allocates for internal temporary working storage areas called key stores.

You can adjust this amount of memory to respond to changing needs in your environment, as shown in the example in this section.

For this example, assume that:

  • A daily BMC AMI Log Master ongoing job captures changes to a large table
  • The table is not defined with the Data Capture Changes (DCC) attribute
  • One user makes a global change that updates one million rows in the table

When it runs, the daily ongoing job appears to loop. The job’s output contains key store spill messages, such as the following:

BMC097324I KEYED STORAGE SPILLED TO ABOVE THE BAR STORAGE FOR BC
BMC097324I KEYED STORAGE SPILLED TO ABOVE THE BAR STORAGE FOR LR 

 In resource-constrained environments, when above the bar memory is not available or exhausted, a job like this might terminate with an out-of-space abend:

BMC097739I THE PRODUCT ESTAE HAS BEEN INVOKED DUE TO ABEND S0DC2 DURING EXECUTION

BMC AMI Log Master

 performs row completion processing for the update log records. The job’s key store memory cannot store one million updates, so 

BMC AMI Log Master

 spills and performance might degrade. Specifically, the job spills the backward completion (BC) and log record (LR) key stores.Two characters in message BMC097324 represent a specific key store, as follows:

  • UR for URID
  • BC for backward completion
  • FC for forward completion
  • LR for log record
  • AN for anomaly

To estimate the optimal amount of key store memory

Tip

For convenience, convert all estimate values to kilobytes (KB, represented as K).

  1. Determine the current key store memory allocation:
    1. Determine the value of the KSMEMORY installation option by examining the output messages of an existing BMC AMI Log Master job.The following is a sample BMC097799 message showing the KSMEMORY value:
      BMC097799I KSMEMORY = (40960K,10240K)      (IN MEMORY KEYED STORAGE SIZE)
    2. Examine the SYSIN syntax of the job, checking for the MEMORY keyword on the STOREOPTS statement, as in the following sample:
      STOREOPTS MEMORY (80M, 10M)
    3.  If the syntax includes the STOREOPTS MEMORY keyword, use that value. Otherwise, use the value of the KSMEMORY installation option.
  2. Locate the BMC097064 message, which lists the available REGION and MEMLIMIT, as in the following sample:

    BMC097064I AVAILABLE REGION BELOW 16M = 9184K, AVAILABLE REGION ABOVE 16M = 1306024K, NUMBER OF CPUS = 5, MEMLIMIT = 10M (86513M)  
  3. Locate the key store termination messages that begin with message BMC097396, as in the following sample:

    BMC097396I KEYSTOR TERM: NUMREC=3, HIGHNUMREC=124219
    BMC097397I      GARCOLLCNT=0, SQUEEZECNT=0, UNSQUEEZE=0
    BMC097398I      INSCOUNT=124261, DELCOUNT=124258, RETCOUNT=0
    BMC097399I      GTNXTCOUNT=124216, POSCOUNT=269917, DUPINSCOUNT=0
    BMC097400I      PUTDASDCOUNT=72616, GETDASDCOUNT=71890
    BMC097401I      BLKCOUNT=73145, BLKINMEM=529
    BMC097402I      BLKINITCOUNT=1255, PAGECINITOUNT=1255
    BMC097403I      DATAMEM=39133184, AVERECLEN=733
    BMC097404I      TOTBYTES=  91083313,CURBYTES=      2199,TOTRECS=    124261
    BMC097405I      NUMMAPS=1
    BMC097406I      CLUSTNM=USDB2.BK.CLUST.C05052.BC
    BMC097407I      TOTAL TIME IN KEYSTOR=00:39:05, I/O TIME=00:38:15
  4. Multiply the HIGHNUMREC value by the AVERECLEN value (the values represent bytes).The result is an estimate of the memory required by one key store.
  5. Repeat Step 4 for all key store memory areas.If the product does not use a key store for a given job, the HIGHNUMREC value is zero. BMC AMI Log Master displays key store termination messages for the anomaly (AN) key store only when your output includes a Backout Integrity report.
  6. For a total estimate, add the required memory estimates for all key stores.
  7. If necessary, divide the total estimate by 1024 to obtain the value in kilobytes.
  8. Compare the total estimate (Step 7) to the maximum amount of memory available to your job (Step 2) and proceed as follows:
    • If the total estimate is less than the memory available, you can allocate more key store memory. Proceed to Step 9.
    • If the total estimate is greater than the memory available, you can
  9. Edit the SYSIN syntax of the job to add the STOREOPTS statement, as shown in the following sample, using your total estimate from Step 7.

    OPTION
       FILTERREL AND EXECUTION MODE CURRENT

    STOREOPTS MEMORY (200M,60M)

    WORKID MIS.CLMEXTRACT
    DESC 'LOG EXTRACT FOR REPLICATION TO MIS'

    This example uses the STOREOPTS MEMORY keyword because the poor performance results from a one-time circumstance. However, when many jobs experience performance difficulties that are related to key store memory, you can change the value of the KSMEMORY installation option and reassemble your installation options module. This action provides more key store memory to all jobs.

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*