How much memory is required for the cluster caching facility (CF) server host?
The size needed by the cluster caching facility (CF) host/LPAR (assuming the host/LPAR is dedicated to the CF) is a simple function of the size of each member's local buffer pool, the number of expected databases to be run concurrently, and the number of members in the cluster.
The most important aspect in the calculation is to understand what drives the memory requirement in Db2® pureScale®. This means finding out what is the biggest memory consumer in the CF server process and its relationship to the memory consumed by members.
As in a single instance of Db2, Db2 pureScale memory requirements are largely driven by buffer pool memory. This applies to the CF as well as the members. Within the CF process, memory usage is dominated by the Group Buffer Pool (GBP). The size of the GBP is generally determined based on how much Local Buffer Pool (LBP) memory is in use among all members across the cluster. In short, start with sizing the LBPs, then size the GBP, and finally derive the memory for the CF server as a whole.
- Either use IBM Techline to assist on the size of the local buffer pool size for a member, or go with existing single instance configuration for your workload.
- Use the LBP size for a member and the number of members required to come up with the GBP size. The rule of thumb is estimated at 35-40% of the total LBPs across all members. In some very write-intensive cases, this estimation may be too small. On the other hand, it may be too large in other very read-intensive cases. For example, if the typical workload has roughly 95% selects, you can cut the GBP size. But the recommendation is to have no lower than 25% of total LBP size.
- While GBP consumes the bulk of the CF memory in the CF server, it is not the only consumer. There are two other CF structures - Global Lock Manager (GLM) and Shared Communication Area (SCA) in the CF server. Together, they make up the total CF memory size (CF_DB_MEM_SZ) for a database. The rule of thumb is to add another 25% to the GBP size. The CF_DB_MEM_SZ is the amount of memory the CF needs for one active database.
- With the memory estimated for 1 active database from the previous step, the next step is to determine or estimate the number of concurrent active databases. The CF_MEM_SZ is the total memory to be consumed by the CF server process. In a simple, one-database configuration, the CF_DB_MEM_SZ is essentially the same as CF_MEM_SZ. If more than one active databases are expected, the CF_MEM_SZ will be the sum of all the individual CF_DB_MEM_SZ of the databases being considered.
- Account for non-CF process' requirements – such as IBM® Spectrum Scale, TSA, the operating system, etc. In general, add 10% to 20% to the value from step 4 for the memory to be sufficient.