We are monitoring devices using SNMPCollector and for memory the values are shown in negative. Could you please explain as to why these are negative. The devices are snmpV3 devices and are linux devices.
There is a change in the latest release of the agent in how it handles and manages Memory in the MIB data. As a result, all Memory metrics for the UC Davis VC are now resulting in 'bad' data. Most used for the customer is the Memory Utilization metric which is showing negative values.
It would seem a new version of the net-snmp SNMP agent came out for RedHat 7.7 Linux releases. It changed how free memory outputs things.
Here is what happened:
The values in the -/+ buffers/cache were dropped completely, as they were misleading and used for undesirable evaluations and wrong assumptions about the memory layout for years. The whole concept of the evaluations was obsolete and didn't match the latest changes in the kernel memory management. One of the values lost its sense since we introduced a more accurate column called 'available', showing the estimation of available memory (=memory that is free or can be freed if needed in order to avoid swapping) and the second lost its sense as the meaning of the 'used' column is different now (we excluded caches and buffers). Previously it was calculated as 'total'-'free', but as the 'free' column became useless due to watermarks (that means the memory reported as free cannot be considered really free), the informative value of the old 'used' column became as low as the informative value of the 'free' column (=very low).
According to that buffers shouldn't be used in memory calculations anymore. Memory used doesn't include buffers and caches.
UIM : 9.20
SNMPCollector : 4.03 HF3
HUB : 9.20 HF6
robot : 9.20 HF5
Note: This device will be certify to fix the customer's issue as an on demand package only and will not be available in the next DCD (due to the request of this case might affect other devices and customers)
The calculation for Memory Utilization on Linux servers returns a negative number when the buff/cache increases. We see the problem for RHEL (Net-SNMP agent version net-snmp-5.7.2-43.el7.x86_64).
If using RedHat distribution with net-snmp >= 5.7.2-43,
this version: used = memTotalReal - memAvailReal // free = memAvailReal
other versions: used = memTotalReal - memAvailReal - memBuffer - memCached // free = total - used