PC_POOLSIZE?
Posted in 2019
Topics: Server Administration, Versions, Editions & End-of-Life
IDS 12.10.FC12
Solaris 10 1/13
How does PC_POOLSIZE get changed?
In our ONCONFIG file, the PC_POOLSIZE parameter is entered as:
PC_POOLSIZE 127
The first few lines of 'onstat -g prc' are as follows:
informix@ifmx-prod-anc>onstat -g prc|more
IBM Informix Dynamic Server Version 12.10.FC12 -- On-Line -- Up 22 days
08:15:40 -- 19693568 Kbytes
UDR Cache:
Number of lists : 31
PC_POOLSIZE : 566
How did PC_POOLSIZE get to be 566?
I do have AUTO_TUNE set to 1, but I don't seem to see anything in the
documentation for "AUTO_TUNE" that would lead me to believe that PC_POOLSIZE
is one of the parameters that AUTO_TUNE adjusts dynmaically. Maybe I am just
not understanding the documentation.
I welcome an explanation.
Thank you.
DG
Original post:
IDS 12.10.FC12
Solaris 10 1/13
How does PC_POOLSIZE get changed?
In our ONCONFIG file, the PC_POOLSIZE parameter is entered as:
PC_POOLSIZE 127
The first few lines of 'onstat -g prc' are as follows:
informix@ifmx-prod-anc>onstat -g prc|more
IBM Informix Dynamic Server Version 12.10.FC12 -- On-Line -- Up 22 days
08:15:40 -- 19693568 Kbytes
UDR Cache:
Number of lists : 31
PC_POOLSIZE : 566
How did PC_POOLSIZE get to be 566?
I do have AUTO_TUNE set to 1, but I don't seem to see anything in the
documentation for "AUTO_TUNE" that would lead me to believe that PC_POOLSIZE
is one of the parameters that AUTO_TUNE adjusts dynmaically. Maybe I am just
not understanding the documentation.
I welcome an explanation.
Thank you.
DG
Response:
So a couple thoughts. First is would there be any chance you have PC_POOLSIZE
in your onconfig more then 1 time? If that is the case, it would take the last
entry it found for the value. Second, it does appear that you could use onmode
-wm to modify this parameter dynamically as long as you are increasing the
size. You should be able to run onstat -g cfg full (will probably want to
redirect the value to a file), then search the file for PC_POOLSIZE and it
will show default, current, and onconfig values. So I would guess if the first
idea isn't happening, then onconfig setting will be 127 and current I believe
would show 566. That could happen via onmode -wm (so it was ran and only
changed memory, not file). Lastly, a quick look at code does seem to show that
for certain conditions while processing a cache misses, the server would
increase the size of the cache by 10% of it's current size (whether this
happens or does not appear to be controlled by AUTO_TUNE, it looks like the
server has been coded to just increase the size to reduce certain types of
cache misses...so not every cache miss would trigger the increase in size).
I'm not 100% certain of this because I believe the server has 2 different
implementations of caches and a quick look it wasn't easy to tell if the
procedure cache is implemented in this manner or not. I would infer that it is
using this method of caching if idea's 1 and 2 are not true, as then that
would explain the increase in the cache size. A quick look at this code also
didn't seem to show a way to limit growth in this case. Also, in this
automatic growth case, the onstat -g cfg full would also show the current
value as 566, so from just that output it wouldn't be possible to distinguish
option 2 from option 3, as option 3 also ends up setting the "current" size
displayed in the onstat -g cfg full.
Jacques Renaut
HCL Informix Advanced Support
Thank you, Jacques, for your thorough and helpful response.
First, I checked, and PC_POOLSIZE is defined only once in ONCONFIG.
Second, I have not changed PC_POOLSIZE via 'onmode -wm'.
Third, 'onstat -g cfg full' shows default: 126; onconfig: 127; and current:
566.
I conclude that Informix has made adjustments automatically. It would be
helpful if that were in the documentation. (Maybe it is, but I just didn't see
it.)
But, I would also offer the thought that, if Informix automatically adjusts
the PC_POOLSIZE, maybe it should also adjust the PC_HASHSIZE. In this
instance, although PC_POOLSIZE has increased to 566, PC_HASHSIZE remains at 31.
There is a very high disparity in the "hits" column-- from 2 to about
100,000,000.
I think I should manually increase PC_HASHSIZE. I'll try 127, and see if that
that "spreads out" the distribution a little more.
DG
Oops. Informix won't let me do this.
That is, one cannot use 'onmode -wm' or 'onmode -wf' to change the value of
PC_HASHSIZE.
(At least the documentation would seem not to offer this as an option-- see
https://www.ibm.com/support/knowledgecenter/en/SSGU8G_12.1.0/com.ibm.adref.doc/i
ds_adr_0131.htm )
I'll have to wait for our next maintenance period, as this is a production
instance.
DG
Original post:
Oops. Informix won't let me do this.
That is, one cannot use 'onmode -wm' or 'onmode -wf' to change the value of
PC_HASHSIZE.
(At least the documentation would seem not to offer this as an option-- see
https://www.ibm.com/support/knowledgecenter/en/SSGU8G_12.1.0/com.ibm.adref.doc/i
ds_adr_0131.htm )
I'll have to wait for our next maintenance period, as this is a production
instance.
DG
Response:
Yeah, going with your previous post as well, the server doesn't allow the
value of PC_HASHSIZE to be changed on the fly, as it's used as part of hashing
into the cache. If you allowed that to change, you would potentially be moving
the location of lots (?) of items in the cache. So the server would probably
have to just rebuild the entire cache, which I'm guessing the complexities of
doing that while online was not worth the risk so it's not allowed.
Jacques Renaut
HCL Informix Advanced Support
Related threads
- Posting from the Informix-list
- Migrating from IDS 9.40.UC6 to 11.50.UC3
- Ip for a network session
- questions onstat -g