In a multi-partition environment, we can use db2pd -fcm to track the number of total FCM buffers and FCM buffer usage. However, it might appear that the number of total fcm buffers reported by db2pd is much bigger than the value of dbm cfg FCM_NUM_BUFFERS. The question is, what's the relationship between FCM_NUM_BUFFERS in dbm cfg and "Total Buffers" in "db2pd -fcm" output?
Here, we take an example where there are 4 logical partitions on one machine,
0 machine 0
1 machine 1
2 machine 2
3 machine 3
- FCM_NUM_BUFFERS is manually set to 2048 pages(4k)
#db2 get dbm cfg show detail|grep -i FCM_NUM_BUFFERS
No. of int. communication buffers(4KB)(FCM_NUM_BUFFERS) = 2048 2048
- "db2pd -fcm" shows "Total Buffers" is 12530 pages(4k)
FCM Usage Statistics
Total Buffers: 12530
Free Buffers : 12530
Buffers LWM : 12526
Given above senario, what's the relationship between the value 2048 of FCM_NUM_BUFFERS and 12530 of "Total Buffers" in db2pd?
As a matter of fact, the "Total Buffers" value in db2pd -fcm output is calculated based on the formula as below:
Total Buffers =(Manual set value for fcm buffers) * (num MLNs + failover nodes) *(Overhead Max range: 1.25)
- "Manual set value for fcm buffers" is the value manually set for the dbm cfg FCM_NUM_BUFFERS;
- num MLNs: The number of logical partitions present on the particular machine;
- failover nodes: value of DB2 registry DB2_NUM_FAILOVER_NODES (If the parameter is not set, default value is 2)
Therefore, in our senario, we will get:
Total Buffers: 2048 * (4 +2) * 1.02(overhead)= 12,533
And this value is close to the one (12500) reported by db2pd -fcm
NOTE: The difference is caused by the different overhead value depending on system.