Skip to Content

Increasing the size of the 128K memory pool


Dear Team

My requirement: To increase 128K memory pool

I want to know, inorder to increase this parameter, do we need to increase max memory and then increase 128K memory pool?

Or

Can we shift the 16K memory pool's size ti 128K memory pool?

Cache: default data cache,   Status: Active,   Type: Default

      Config Size: 8294.40 Mb,   Run Size: 8294.40 Mb

      Config Replacement: strict LRU,   Run Replacement: strict LRU

      Config Partition:            8,   Run Partition:            8

IO Size  Wash Size     Config Size  Run Size     APF Percent

-------- ------------- ------------ ------------ -----------

    16 Kb     663552 Kb   6634.50 Mb   6634.50 Mb     10

   128 Kb     165888 Kb   1658.88 Mb   1659.00 Mb     10

==========================================================================

Cache: log cache,   Status: Active,   Type: Log Only

      Config Size: 512.00 Mb,   Run Size: 512.00 Mb

      Config Replacement: strict LRU,   Run Replacement: strict LRU

      Config Partition:            1,   Run Partition:            1

IO Size  Wash Size     Config Size  Run Size     APF Percent

-------- ------------- ------------ ------------ -----------

    16 Kb       2448 Kb     12.00 Mb     12.00 Mb     10

    32 Kb      61440 Kb    500.00 Mb    500.00 Mb     10

Regards,

Rajesh

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

1 Answer

  • Best Answer
    Dec 24, 2014 at 02:05 PM

    Some background to make sure everyone's on the same sheet of music ...

    - a data cache can have up to 4 separate pools; the pool sizes are 1x, 2x, 4x and 8x, where 'x' is the dataserver's page size (@@maxpagesize); in your case 'x' is 16K so the cache can have pools of 16K, 32K, 64K and 128K in size

    - when adding memory to a data cache a) the memory is taken from the dataserver's available/free memory (available memory is listed at the end of the output from running 'sp_configure memory') and b) the memory is allocated to the 1x pool of the data cache (the 16K pool in your case)

    - when allocating memory to a 2x/4x/8x pool said memory is taken from the 1x pool (ie, the 1x pool's size is decreased)

    Now, for your questions ...

    Yes, you can 'shift' memory from the 16K (1x) pool to the 128K (8x) pool.  If you do this the size of the 16K (1x) pool will obviously be decreased.

    If you wish to keep the 16K (1x) pool at its current size but also increase the size of the 128K (8x) pool, then you will have to first allocate more memory to the data cache (adding memory to the cache will obviously increase the size of the 16K (1x) pool).  If you don't have enough available/free memory in the dataserver (to add to the data cache) then yes, you will need to increase the 'max memory' setting (which in turn will be based on the availability of shared memory at the OS level).

    As for which operation you should perform (shift memory from 16K pool to 128K pool ... vs ... increase 'max memory' and then allocate memory to the cache and then the 128K pool) ... *shrug* ... that's going to depend on what you're trying to accomplish as well as the availability of 'free' memory (at the dataserver and/or OS level).

    Add comment
    10|10000 characters needed characters exceeded

    • Rajesh

      CIO (concurrent IO) actually is when a multiple threads want to write to the same FILE at the same time and has nothing to do with GPFS (although GPFS may support CIO).  CIO is a superset of DIRECTIO - and we have found that on some versions of AIX, CIO is required to be enabled on the filesystem mount options or else there is very poor IO rates.    See the AIX & ASE tuning whitepaper "Optimizing SAP Sybase Adaptive Server Enterprise (ASE) for IBM AIX" from October 2013 for specific info - including tuning vio servers.

      ** IF you have NOT mounted the ASE devices with CIO - you need to stop everything, shutdown ASE, do so and then take another look at things **

      You then need to read the paper as it regards to network tuning and follow the advice wrt to tcp settings - both for reads and writes (latter configures the interface)

      However, I am not sure whether you are doing a client copy from the system you want to tune the 128K buffer pool or from that system.   Either way, you need to take a step back from the minutia for a second and think about it.   If you are trying to copy large amounts of data from one system to another system, if bulk operations are being used, the target system likely needs to be tuned more towards the tuning used for the initial migration configuration (see the Best Practices SAPNote

      1680803) - e.g. 50% of the memory in 128K pool and wash marker at 50%.   After the client copy is done, you would reconfigure the target server for a runtime configuration similar to what is in the SAPNote.

      If you are trying to configure the source system, you need to consider how you are going to balance normal workload during the client copy.   Keep in mind that spooling all of that data off of disk and into data cache to be read once is almost a worthless exercise as that data will likely not ever get hit again - so it isn't the size of the 128K pool so much as making sure that the 128K pool is big enough to sustain the APF rate and the APF rate is set high enough (e.g. APF should be 50% or higher in the source system).    That means likely the 128K pool needs to be ~30% of the default data cache.

      To find slow devices, install the *latest* copy of DBACockpit somewhere (even if you have to find a separate host to install a later NW stack than app is using) and look at the Performance tab and the disk IO section.   Measuring from the SAN is almost useless as it will either verify the IO is driven by IO architecture (e.g. the 20-30ms/IO response time of RAID 6) - when most of the slow down takes place in the OS due to OS tuning considerations (or HBA adapter tuning configs).    DBACockpit will show device speeds end-to-end from an ASE perspective (if you want to look at the raw data, you will need to poll monDeviceIO and do some math).   Alternatively, you can use iostat at the OS level.   But, all of this *needs* to wait until you have enabled CIO.    That isn't really a 'suggestion' - but more a 'very very very very strong recommendation' - and would be the *first* question engineering would ask.