The purpose of this article is to explain the ESCA (Extended Shared Common Area) memory allocation in a z/OS logical partition with an active Qlik R4Z component for DB2 CDC.
What drives how much ECSA memory is required by each CDC service?
Qlik Replicate R4Z mechanism (Replicate for zSeries) uses ECSA as follows:
For each defined replicate “service”, there is:
- ANCHOR - 56 bytes
- Maxsessions (default 32) x session control block, using about 260 bytes each
- Each active session will use:
The configured IFI buffer size + (an aux buffer, 260 bytes of miscellaneous info) + (filter list)
Where filter list = 260 bytes + 4 * number of tables
With TRACE level task logging for SOURCE_CAPTURE component, one can find this in two messaged from the UDTF, as follows:
00031324: 2022-06-24T19:18:51:745788 [SOURCE_CAPTURE ]T: R4DB2: Updated EXT buffer length 260 RC 0 (r4z2util.c:1877 (db2z_ifi_api.c:994)
00031324: 2022-06-24T19:18:55:960285 [SOURCE_CAPTURE ]T: R4DB2: Updated EXT buffer length 272 RC 0 (r4z2util.c:1877 (db2z_ifi_api.c:994)
Here the 12 byte increase is from 2 user tables plus SYSIBM.SYSTABLES, which is always included in the list.
The IFI Buffer size is also shown in the following message:
00031324: 2022-06-24T19:18:51:741801 [SOURCE_CAPTURE ]I: R4DB2: IFI Buffer size 256 KB. (r4zudf.c:352 (db2z_ifi_api.c:994)
The number of tables in the task and the IFI buffer size are the two big variable. It’s not recommended to configure for more than a 256 kb IFI buffer, but maximum number of tables could be as high as 50,000 or 200 kb for the filter list. This is a possible maximum of more than 456 kb per active task, Although the experience shows that it is very unlikely that any task would have 50,000 tables and even less likely that more than one task would have that many.'
Environment:
Qlik Replicate