I believe that the largest memory segment for Informix on AIX is 64 GB. In 11.70, we would normally expect the bufferpools to be created in the resident segment. Based on your first post showing the memory segments, it looks like the "resident" segment has been maxed out, and then the first 2 "virtual" segments are to accommodate the remainder of the 190 GB for your bufferpools. I expect that these are the ovrfl-buff0 memory segments that you see.
Original Message:
Sent: Mon August 19, 2024 08:53 AM
From: Dennis Melnikov
Subject: Large memory segment vs smaller ones
Mike,
BUFFERPOOL default,buffers=3500000,lrus=500,lru_min_dirty=0.20,lru_max_dirty=0.50
BUFFERPOOL size=4K,buffers=45000000,lrus=500,lru_min_dirty=0.06,lru_max_dirty=0.14
BUFFERPOOL size=16K,buffers=625000,lrus=500,lru_min_dirty=2.00,lru_max_dirty=5.00
All dbspaces are 4K or 16K.
------------------------------
Sincerely,
Dennis
------------------------------
Original Message:
Sent: Mon August 19, 2024 08:31 AM
From: Mike Walker
Subject: Large memory segment vs smaller ones
Dennis -
Have you configured your BUFFERPOOLs to extend automatically, i.e. are you using the "extendable" keyword in the BUFFERPOOL parameter? I am not sure if this was available in 11.70.
Do you have dbspaces defined with page sizes for which there is no BUFFERPOOL entry and you are using the "default" bufferpool?
------------------------------
Mike Walker
xDB Systems, Inc
www.xdbsystems.com
Original Message:
Sent: Mon August 19, 2024 05:02 AM
From: Dennis Melnikov
Subject: Large memory segment vs smaller ones
`onstat -g mem` shows two "ovrfl-buff0" the biggest segments.
name class addr totalsize freesize #allocfrag #freefrag
ovrfl-buff0 V 700001040001040 67913740288 4864 2 2
ovrfl-buff0 V 700001040002040 63615004672 4864 2 2
res-buff0 R 7000003625de040 52791328768 4864 2 2
resident R 70000004006a040 13461045248 4864 2 2
ovrfl-buff3 V 700001f0fc01040 10240024576 4864 2 2
mt V 700001f0fc25a58 1072594944 8056
rsam V 700001f0fe3a040 965901864 12394168 959051 4448
global V 700001f0fc02040 798392320 2968104 3211921 5160
mt V 700001f0fc23040 634150912 21905768 3244389 211923
aio V 700001f18b2c040 219742208 1103752 18281 3014
What are those segments?
How can 67,913,740,288 bytes of the 1st ovrfl-buff0 take place between addresses 700001040001040 and 700001040002040?
------------------------------
Sincerely,
Dennis
Original Message:
Sent: Fri August 16, 2024 06:51 AM
From: Doug Lawry
Subject: Large memory segment vs smaller ones
Probably! Will message you privately for that.
------------------------------
Doug Lawry
Oninit Consulting
Original Message:
Sent: Fri August 16, 2024 06:43 AM
From: Dennis Melnikov
Subject: Large memory segment vs smaller ones
Doug,
Do you need the whole 1G AF file?
------------------------------
Sincerely,
Dennis
Original Message:
Sent: Fri August 16, 2024 06:16 AM
From: Doug Lawry
Subject: Large memory segment vs smaller ones
Hi Dennis.
- Yes: "vmo -p -o v_pinshm=1".
- You must have RESIDENT 2 or more for large pages as they must be pinned.
- The "rsam" pool is in the dynamic segment. You need RESIDENT 2 or more.
- It doesn't sound like the problem is with the buffer pool but the "rsam" pool. Your BTR is fine anyway.
- I will leave Art to answer that!
I wasn't sure whether large pages were supported by IDS 11.70 on AIX, but this old forum thread implies they are:
http://old.iiug.org/forums/ids/index.cgi/noframes/read/26661
Can you share an example assert file?
------------------------------
Doug Lawry
Oninit Consulting
Original Message:
Sent: Fri August 16, 2024 05:13 AM
From: Dennis Melnikov
Subject: Large memory segment vs smaller ones
Unfortunately, LDR_CNTRL with 64K pages did not bring our prod server desired stability, so now I'm going to move forward to 16M pages.
- Do I need setting v_pinshm=1 for Informix?
- Provided AIX doesn't page out large pages, why still use RESIDENT to lock segments in memory?
- We are suffering RSAM pool memory buffer header corruptions. As buffer-header table resides in resident segment of shared memory, does it make sense to allocate large pages for that segment only and thus set RESIDENT=1?
- While we have Buffer Turnover Rate 5.75/hr, should I enlarge BUFFERPOOL to lower the BTR and buffer-header table access rate as well?
- BTW, how to lower Bufwaits Ratio for 16K cache?
BUFFERPOOL default,buffers=3500000,lrus=500,lru_min_dirty=0.20,lru_max_dirty=0.50
BUFFERPOOL size=4K,buffers=45000000,lrus=500,lru_min_dirty=0.06,lru_max_dirty=0.14
BUFFERPOOL size=16K,buffers=625000,lrus=500,lru_min_dirty=2.00,lru_max_dirty=5.00
Art Kagel's newratios.ksh output:
Metric Ratio Report For 4K Cache
Bufwaits Ratio: 1.120000%
Buffer Turnover Rate: 5.81/hr
Used Buffer Turnover Rate: 5.81/hr
Experimental BTR #2: 1.04/hr
Experimental BTR #3: 1.86/hr
Metric Ratio Report For 16K Cache
Bufwaits Ratio: 7.350000%
Buffer Turnover Rate: 1.63/hr
Used Buffer Turnover Rate: 1.63/hr
Experimental BTR #2: 1.08/hr
Experimental BTR #3: 1.90/hr
Metric Ratio Report Summary For All Caches
ReadAhead Utilization: 43.200000%
Bufwaits Ratio: 4.030000%
Buffer Turnover Rate: 5.75/hr
Used Buffer Turnover Rate: 5.75/hr
Experimental BTR #2: 1.04/hr
Experimental BTR #3: 1.86/hr
Lock Wait Ratio: 0.00000%
Sequential Scan Ratio: 1.24000%
------------------------------
Sincerely,
Dennis
Original Message:
Sent: Fri August 09, 2024 03:44 AM
From: Doug Lawry
Subject: Large memory segment vs smaller ones
https://www.ibm.com/docs/en/informix-servers/14.10?topic=products-ifx-large-pages-environment-variable
https://www.ibm.com/docs/en/aix/7.3?topic=performance-large-pages
You will need RESIDENT 2 or -1 as large pages are pinned.
There is another approach on AIX (not as effective but easier):
export LDR_CNTRL=DATAPSIZE=64K@TEXTPSIZE=64K@STACKPSIZE=64K@SHMPSIZE=64K
The default is only 4K.
------------------------------
Doug Lawry
Oninit Consulting
Original Message:
Sent: Fri August 09, 2024 03:20 AM
From: Dennis Melnikov
Subject: Large memory segment vs smaller ones
Doug,
Could you please give more details on AIX's large pages?
------------------------------
Sincerely,
Dennis
Original Message:
Sent: Fri August 09, 2024 03:07 AM
From: Doug Lawry
Subject: Large memory segment vs smaller ones
Hi Dennis.
Also, have you allocated huge pages on Linux or enabled large pages on AIX? That might help with your rsam memory block header corruptions.
------------------------------
Doug Lawry
Oninit Consulting
Original Message:
Sent: Thu August 08, 2024 06:12 AM
From: Art Kagel
Subject: Large memory segment vs smaller ones
Dennis:
One segment is better than many, so whenever you see several virtual segments it is best to increase SHMVIRTSIZE to incorporate all of that into a single initial segment unless you know that the increase was caused by an unusual event such as a large session that runs say once a quarter.
Art
------------------------------
Art S. Kagel, President and Principal Consultant
ASK Database Management Corp.
www.askdbmgt.com