Cisco Embedded Resource Manager (ERM) MIB.

The Embedded Resource Manager (ERM) is a framework which
helps in effectively managing resources such as cpu, memory,
buffers, etc. There are two important scenarios where the ERM
framework would be useful:

1. Resource Depletion
   - how to gracefully handle a situation where the system
     runs out of a finite resource.

2. Resource Separation
   - how to share resources fairly between different entities
     in the system such that activity of one entity does not
     adversely affect others.

The ERM framework has the following entities:

1. Resource Owner

   Resource Owner (RO) provides resources to one or more
   resource users. Example: cpu, memory and buffer.

   The resource owner doesn't mean the physical resource.
   For example, 'memory' resource owner would actually 
   mean the memory manager rather than the physical memory.

2. Resource User Type

   Resource User Type (RUT) is a template which defines
   a set of resource owners from where resources can be
   obtained by any of the resource users instantiated from
   the resource user type. 

3. Resource User

   Resource User (RU) is a logical entity or application
   that consumes one or more resources. Resource users are
   instantiated from the Resource User Type. Resource user
   can also be called as 'instance of a resource user type'.
   A resource user registers with a resource user type and 
   thus it is indirectly registered with all resource owners 
   defined by the resource user type. 

4. Resource User Group

   Resource User Group (RG) is a logical entity which contains
   group of resource users. It would hence forth be referred
   as Resource Group. In some cases (for example, multiple
   users with same name), user may want to set threshold value
   for sum of resource utilized by a group of resource users.
   In such case, those resource users can be grouped/added
   under a resource group. Then, user can apply a resource
   policy to the resource group.

5. Resource Usage Monitor

   This is also called as Resource Monitor (RM). The resource
   monitor is a logical entity or application that monitors
   resource owner, resource user, resource policy and resource
   owner <-> resource user relationship. When any applied
   resource policy is violated, all resource monitors
   monitoring the resource policy will be notified and the 
   resource monitor can take appropriate action based on the 
   resource owner and resource user attributes.

The ERM framework allows three types of thresholding:

1) System Global Thresholding

   When total utilization of a resource exceeds the applied
   global rising threshold value, all resource users which
   consume resources from the concerned resource owner are
   notified to take appropriate action. The notification
   order is determined by priority of the resource users.
   Resource users with a lower priority are notified first,
   so as to enable lower priority resource users to reduce its
   resource consumption prior to any higher priority resource
   users. This order prevents higher priority resource
   users to start freeing up their resource, thereby not
   affecting their performance.

2) User Local Thresholding

   When utilization of a resource by a specific resource user
   exceeds the applied user local rising threshold value,
   a notification is sent *only* to the concerned resource
   user. The user local thresholding method can be used to
   prevent a resource user from monopolizing any available

3) Per User Global Thresholding

   When total utilization of a resource exceeds the applied
   per user global rising threshold value, a notification
   is sent *only* to the concerned resource user. Each
   resource user can have its own per user global threshold
   value (per resource owner). Per User Global Thresholding
   is similar to System Global Thresholding, except that
   notification for Per User Global Threshold violation is
   sent only to the corresponding resource user. The main
   purpose of the Per User Global Thresholding is that a
   resource user can take preventive actions based on the
   global resource utilization of a resource.

The Embedded Resource Manager (ERM) framework allows applying
and monitoring threshold limit for usage of resources such as
cpu, memory, buffer, etc. Exceeding any applied rising
threshold value will trigger an 'up' notification to relevant
resource user(s) and resource monitor(s) based on the type 
of violated resource policy.  After the 'up' notification,
if the utilization goes below the falling threshold value,
a 'down' notification will be sent to the resource user(s)
and resource monitor(s). The 'up' and 'down' notifications
do not mean the SNMP notifications/traps. Rising threshold
value and falling threshold value should be different to
avoid flapping.

The ERM framework enables configuration of resource policy
in which rising/falling threshold values for a set of
resource owners can be specified. There are two types of
resource policies which can be configured.

1) Global Resource Policy
   There can be only one global resource policy applied
   in the system at any point of time, though multiple
   global resource policies can be configured. On violation 
   of a applied global resource policy, all resource users
   (which consume resources from the concerned resource owner)
   and resource monitors (which watch the concerned
   resource owner) will be notified to take appropriate

2) Local Resource Policy
   The local resource policy is configured for a specific
   resource user type. This policy can be applied for a
   resource user (or group) of the same resource user type.
   A local resource policy can be applied for more than one
   resource users (or groups). Both user local thresholding
   and per user global thresholding can be configured under
   a local resource policy. On violation of any local resource
   policy, only those resource users on which the violated
   resource policy was applied, will be notified in order to
   take appropriate action.

Whenever a resource is consumed, current utilization of the
resource will be compared against the applied rising
threshold value. The ERM framework provides a mechanism
to send notifications to resource user(s) and resource
monitor(s) whenever resource utilization exceeds any applied
rising threshold value or falls below any applied falling
threshold value. In such situations, the resource user(s)
can take appropriate corrective action (for example, limiting
or avoiding resource consumption). Thus, the ERM framework
helps in preventing catastrophic system failures caused by
high levels of resource depletion. The ERM framework can be
extended to all kinds of resources (for example, incoming
control plane packets) that need to be managed.

The ERM MIB module facilitates the following operations:

1. Getting information about all the above mentioned
   ERM entities available in a managed system.
2. Creating/modifying/removing a resource policy.
3. Creating/modifying/removing a threshold configuration
   for a particular resource policy.
4. Creating/removing a resource group.
5. Adding/removing a resource user to/from a particular
   resource group.
6. Applying global resource policy.
7. Applying local resource policy for a resource user or
   resource group.

Imported Objects

PhysicalIndex, entPhysicalIndexENTITY-MIB
TEXTUAL-CONVENTION, RowStatus, StorageType, TruthValueSNMPv2-TC
ciscoErmMIBNotifs .
ciscoErmGlobalPolicyViolation .
ciscoErmLocalPolicyViolation .
ciscoErmMIBObjects .
cermScalars .
cermScalarsGlobalPolicyName .
cermStats .
cermResOwnerTable .
cermResOwnerEntry .
cermResOwnerSubEntityId .
cermResOwnerId .
cermResOwnerName .
cermResOwnerMeasurementUnit .
cermResOwnerThreshIsConfigurable .
cermResOwnerResUserCount .
cermResOwnerResGroupCount .
cermResUserTypeResOwnerTable .
cermResUserTypeResOwnerEntry .
cermResUserTypeResOwnerId .
cermResMonitorTable .
cermResMonitorEntry .
cermResMonitorSubEntityId .
cermResMonitorId .
cermResMonitorName .
cermResMonitorResOwnerResUserTable .
cermResMonitorResOwnerResUserEntry .
cermResMonitorResOwnerId .
cermResMonitorResUserTypeId .
cermResMonitorResUserId .
cermResMonitorResPolicyName .
cermResMonitorPolicyTable .
cermResMonitorPolicyEntry .
cermResMonitorPolicyName .
cermResOwnerSubTypeTable .
cermResOwnerSubTypeEntry .
cermResOwnerSubTypeId .
cermResOwnerSubTypeName .
cermResOwnerSubTypeUsagePct .
cermResOwnerSubTypeUsage .
cermResOwnerSubTypeMaxUsage .
cermResOwnerSubTypeGlobNotifSeverity .
cermResOwnerSubTypeThresholdTable .
cermResOwnerSubTypeThresholdEntry .
cermResOwnerSubTypeThreshSeverity .
cermResOwnerSubTypeRisingThresh .
cermResOwnerSubTypeRisingInterval .
cermResOwnerSubTypeFallingThresh .
cermResOwnerSubTypeFallingInterval .
cermResUserTypeTable .
cermResUserTypeEntry .
cermResUserTypeSubEntityId .
cermResUserTypeId .
cermResUserTypeName .
cermResUserTypeResOwnerCount .
cermResUserTypeResUserCount .
cermResUserTypeResGroupCount .
cermResUserTable .
cermResUserEntry .
cermResUserId .
cermResUserName .
cermResUserPriority .
cermResUserResGroupId .
cermResGroupTable .
cermResGroupEntry .
cermResGroupId .
cermResGroupName .
cermResGroupUserInstanceCount .
cermResGroupResUserTable .
cermResGroupResUserEntry .
cermResGroupResUserId .
cermResOwnerResUserOrGroupTable .
cermResOwnerResUserOrGroupEntry .
cermResOwnerResUserTypeId .
cermResOwnerResUserOrGroupId .
cermResUserOrGroupFlag .
cermResUserOrGroupUsagePct .
cermResUserOrGroupUsage .
cermResUserOrGroupMaxUsage .
cermResUserOrGroupNotifSeverity .
cermResUserOrGroupGlobNotifSeverity .
cermResOwnerResUserOrGroupThresholdTable .
cermResOwnerResUserOrGroupThresholdEntry .
cermResUserOrGroupThreshIsUserGlob .
cermResUserOrGroupThreshSeverity .
cermResUserOrGroupThreshFlag .
cermResUserOrGroupRisingThresh .
cermResUserOrGroupRisingInterval .
cermResUserOrGroupFallingThresh .
cermResUserOrGroupFallingInterval .
cermConfig .
cermConfigPolicyTable .
cermConfigPolicyEntry .
cermPolicyName .
cermPolicyIsGlobal .
cermPolicyUserTypeName .
cermPolicyLoggingEnabled .
cermPolicySnmpNotifEnabled .
cermPolicyStorageType .
cermPolicyRowStatus .
cermConfigPolicyResOwnerThreshTable .
cermConfigPolicyResOwnerThreshEntry .
cermPolicyPhysicalIndex .
cermPolicyFallingInterval .
cermPolicyResOwnerThreshStorageType .
cermPolicyResOwnerThreshRowStatus .
cermPolicyResOwnerSubEntityId .
cermPolicyResOwnerId .
cermPolicyResOwnerSubTypeId .
cermPolicyIsUserGlobal .
cermPolicyThresholdSeverity .
cermPolicyRisingThreshold .
cermPolicyRisingInterval .
cermPolicyFallingThreshold .
cermConfigResGroupTable .
cermConfigResGroupEntry .
cermConfigResGroupName .
cermConfigResGroupUserTypeName .
cermConfigResGroupStorageType .
cermConfigResGroupRowStatus .
cermConfigResGroupUserTable .
cermConfigResGroupUserEntry .
cermConfigResGroupUserName .
cermConfigResGroupUserStorageType .
cermConfigResGroupUserRowStatus .
cermConfigPolicyApplyTable .
cermConfigPolicyApplyEntry .
cermPolicyApplyUserOrGroupName .
cermPolicyApplyUserOrGroupFlag .
cermPolicyApplyPolicyName .
cermPolicyApplyStorageType .
cermPolicyApplyRowStatus .
cermNotifObjects .
cermNotifsThresholdSeverity .
cermNotifsThresholdIsUserGlob .
cermNotifsThresholdValue .
cermNotifsDirection .
cermNotifsPolicyName .
cermNotifControlObjects .
cermNotifsEnabled .
ciscoErmMIBConform .
ciscoErmMIBCompliances .
ciscoErmMIBGroups .