Problem:
*Need to monitor CPU and Memory Usage per board on Cisco ASR9000 routers.
*SolarWinds Default poller only polls CPU and Memory utilization from RSP board and it’s not accurate.
Background:
CPU&Memory by SolarWinds poller uses by default OIDs from CISCO-MEMORY-POOL-MIB MIB tree. These OIDs uses Gauge32 type module. This means that it can represent a non-negative integer that can increase or decrease, but it cannot exceed a maximum value. This value cannot be greater than 232-1 (4294967295 decimal), and the minimum value cannot be smaller than 0 (RFC2578). Therefore, this represent a problem when the memory usage exceed 4GB.
This can be confirmed using the SolarWinds Poller Checker Tool. Go to C: > Program Files (x86) > Solarwinds > Orion >PollerCheckerTool.exe. https://support.solarwinds.com/Success_Center/Network_Performance_Monitor_(NPM)/Use_the_Poller_Checker_tool

The OIDs that uses are:
- 1.3.6.1.4.1.9.9.48.1.1.1.6: ciscoMemoryPoolFree
- 1.3.6.1.4.1.9.9.48.1.1.1.5: ciscoMemoryPoolUsed
Solution:
In the CISCO-ENHANCED-MEMPOOL-MIB MIB tree, the OIDs to poll memory usage uses CounterBasedGauge64 type module. The CounterBasedGauge64 type represents a non-negative integer, which may increase or decrease, but shall never exceed a maximum value, nor fall below a minimum value. The maximum value cannot be greater than 2^64-1 (18446744073709551615 decimal), and the minimum value cannot be smaller than 0 (RFC 2578).
In order to poll the accurate value for memory usage, custom pollers must be created using the Universal Device Poller (UnDP) tool. The following OIDs will be used:
*1.3.6.1.2.1.47.1.1.1.1.7: entPhysicalName. The value of this object should be the name of the component as assigned by the local device and should be suitable for use in commands entered at the devices `console.
*1.3.6.1.4.1.9.9.221.1.1.1.1.3: cempMemPoolName. A textual name assigned to the memory pool.
*1.3.6.1.4.1.9.9.221.1.1.1.1.18: cempMemPoolHCUsed. Indicates the number of bytes from the memory pool that are currently in use by applications on the physical entity.
*1.3.6.1.4.1.9.9.221.1.1.1.1.20: cempMemPoolHCFree. Indicates the number of bytes from the memory pool that are currently unused on the physical entity.
Steps:
Identify module's Physical Index
First, it is needed to associate the Physical Index with the textual name of the physical entity.
- Go to: C:\Program Files (x86)\SolarWinds\Orion\SNMPWalk application.
- Enter 1.3.6.1.2.1.47.1.1.1.1.7 in the root OID and click SCAN. This will generate a text file that it can be saved it in the best location that suits.

3. Open the .txt file. It will contain the outcome of the snmpwalk command. The Physical Index is the last series of numbers that follow the 7.
.1.3.6.1.2.1.47.1.1.1.1.7.<PhysicalIndex> = STRING: “ModuleName”

Memory Usage Pollers
Second, it is needed to identify to which module correspond the values of the others OIDs that will be used.
Open SNMPWalk application and enter 1.3.6.1.4.1.9.9.221.1.1.1.1.18 in the root OID field. The series of numbers that appear after the 18. is the Physical Index of the module. From here, it is possible to associate it with the module name as shown in the previous step. In addition, it can be observed that the OID polls three different values for each module, this is due it is polled the values for processor, reserved and image.


The total memory utilization for each board would be the sum of the three value. In the UnDP tool, it should be created a different poller per type of memory; one for the processor, other for reserved and the last one for image. Then you can use the Transform Results to add these three pollers.




Free Memory Pollers
To obtain the available memory per module, the same previous steps must be followed. Enter 1.3.6.1.4.1.9.9.221.1.1.1.1.20 in the root OID field of the SNMPWalk application. The difference is that for reserved and image is 0. This means that the total free value will be the value from the processor only. It is not necessary to create polls for reserved and image. The transform result step could be avoided.
