Q. I am probing a Linux server with the Host Resources probe. InterMapper reports the CPU Utilization is 100%, but also reports 0% load for the individual processors.

A. The average CPU load percentage (as opposed to that for individual CPUs), can be derived in two ways:

First, if the UCD-SNMP-MIB is supported, we calculate it from values in that MIB. If not, then InterMapper does a simple average of the CPU load percentages in the hrProcessor table from the Host Resources MIB. Note that until very recently, most Mac and Unix machines did not support the hrProcessor table, at least not through net-snmp, and many implementations still will not give any values for that table.

When calculating it from the UCD-SNMP-MIB, we use:

raw CPU total = ssCpuRawUser + ssCpuRawNice + ssCpuRawSystem + ssCpuRawIdle;
raw idle = ssCpuRawIdle
percent utilization = (100 - (raw idle - previous raw idle) / (raw CPU total -
previous raw CPU total)) * 100)

An SNMPWALK using a startOID of reveals that the value of ssCpuRawIdle is 4,294,967,295, which is the largest unsigned number that can be represented in 32 bits. Most likely rather than wrapping as it should, this number simply isn't changing. Thus, if you plug this into the equation we use, you will get 100 - 0 / raw CPU total * 100, which will always be 100, or 100%.

Rebooting the machine will reset the counters, but that might not be desirable. This is a known problem with some older versions of net-snmp. It may be resolved by installing version 5.3.1 or later of net-snmp on the target of the Host Resources probe.