How much memory does the health check feature use and where is the data kept?
The check driver health job takes a snapshot of the event data every xxx minutes (xxx minutes determined by a setting in the check driver health configuration). We keep historical data in memory for every driver for which health check is configured. If the check driver health job is stopped you lose the data.
Samples = ((duration * duration units) / (polling interval * polling units)) + 1;
This is the number of samples per driver per server. If you have 4 drivers with health check configured that run on one server. You would have 4*721=2884 samples.
This can be found using the following command on Linux.
XXXX:~ # jmap -F -histo `pgrep ndsd` | grep HistoricalData
Each sample stores data from 5 points in the publisher and 5 points in the subscriber channels. (same as dxcmd - Get driver cache statistics)
For each, there is a byte to store ids and int to store counts. ids corresponds to operations like query, status, instance, add-association, etc.
I have 10 int and 10 byte with average size 1 that makes it 20*32 = 640 bytes.
Each sample consumes ~700 bytes and we have 721 samples. We have ~ 500 KB per driver.
For 4 drivers, I see that 2 MB is consumed by Historical Data objects.