Table Of Contents
Interface Input Queue Memory Reclamation
First Published: February 27, 2006Last Updated: November 1, 2006
Interface Input Queue Memory Reclamation is a minor infrastructure enhancement for resource management. This enhancement provides for leaked Cisco IOS packet memory cleanup and memory reclamation using the Garbage Detection process and the Buffer-Manager Resource-Owner (RO) functionality.
User configuration related to this enhancement would typically only be required in technical support-assisted scenarios.
Feature History for Interface Input Queue Memory Reclamation
This enhancement was introduced (as the "Interface Input Queue Unwedging feature").
Finding Support Information for Platforms and Cisco IOS and Catalyst OS Software Images
Prerequisites for Interface Input Queue Memory Reclamation
•You must be running Cisco IOS Release 12.4(6)T or a later release.
•Additional instructions from a Cisco technical support representative may be required.
Information About Interface Input Queue Memory Reclamation
Before modifying the settings for Interface Input Queue Memory Reclamation, you should understand the following concepts:
Interface Wedging and Packet Memory Leaks
In certain situations, errors in the system accounting of incoming packets can occur, leading to a "memory leak" caused by the input queue. When there is a leak in an interface's input queue, gradually the queue reaches its maximum permitted value, causing the interface to become "wedged." A wedged interface may stop processing incoming packets altogether. Packet memory leaks can cause interface input queue wedges.
This enhancement improves the infrastructure for preventing wedged interface input queues, and it provides a method for changing the defaults of that infrastructure.
Note Additional troubleshooting (debugging) commands were also introduced by this enhancement for use by technical support representatives in specific situations.
The I/O (Input/Output) memory pool is one of the memory types in Cisco IOS software. The input queue buffers use memory from this pool for processing.
Memory Resource Reclamation for Interfaces
Within the Embedded Resource Manager Infrastructure of Cisco IOS software, a Memory Leak Detector process (sometimes referred to as the "garbage detection" or "GD" process) works behind the scenes. As part of the resource reclamation process, packets that the detector finds as leaked can be deallocated and reused. This feature provides a command (critical rising) that can be used to fine-tune the process of evoking memory resource reclamation.
Note Configuration of this feature will typically only be needed as part of a troubleshooting process with a Cisco technical support representative, and additional configuration tasks or special technical support commands may be required before this feature can be effectively used.
In Cisco IOS Release 12.4, the Embedded Resource Manager (ERM) feature was introduced. (See the "Embedded Resource Manager" feature module for details.) As part of the ERM infrastructure (ERMI), configuration commands are available for the configuration of a Memory Resource Owner (memory RO) policy.
Typically, if memory consumption is more that the rising threshold of 75 percent of total I/O memory for more than 5 seconds, a "critical" ERM notification is generated within the system and a call-back is issued. As an action in the call-back, a check is made to see if the memory is hogged by packets (that match Flexible Packet Matching criteria), and, if so, the deallocation procedure is started. In the event that the deallocation procedure does not free up enough memory to bring it below the lower threshold, the deallocation procedure would be periodically reattempted. Once the memory usage falls below the configured threshold, the periodic attempts to deallocate are stopped.
Fine-tuning the Memory Reclamation Processes
The option of configuring this memory policy was implemented to allow you to further balance the system between too many invocations of the Memory Leak Detector (which has the possibility of becoming overly resource intensive) and the need to quickly identify any potential packet memory leaks. As mentioned elsewhere in this document, this optional capability will typically only be needed for edge-case scenarios where troubleshooting is necessary.
The critical rising command allows you to set rising (and falling) threshold values for critical levels as percentages of I/O memory usage and specify a time interval for those values. Changing the critical rising threshold for the global I/O memory pool can change how often the Memory Leak Detector process is triggered (and, if needed, the associated deallocation process).
The deallocation procedure is triggered when the system determines that resources are "critically hogged." By default, interface input memory is considered "critically hogged" if the buffers are using 75 percent or more of I/O memory.If there is a need to change this default, thresholds for the Memory Resource Owner can be configured using the critical rising command while configuring an ERM memory I/O policy, as shown in the "How to Modify the Frequency of Interface Input Queue Memory Checks" section.
How to Modify the Frequency of Interface Input Queue Memory Checks
This section contains the following procedure:
Configuring A Critical Rising Threshold for Global I/O Memory
Perform this task to specify a critical "rising threshold" value for the global I/O memory pool. As explained above, if global I/O memory resource consumption meets or exceeds this value, the Memory Leak Detector process will be automatically triggered. This configuration is only needed if you are experiencing a problem and you want to change (fine tune) how often the automatic process occurs (for example, set the threshold lower so that deallocation check occurs more frequently).
2. configure terminal
3. resource policy
4. policy policy-name [global | type resource-user-type]
6. memory io
7. critical rising rising-threshold-value [interval interval-value] [falling falling-threshold-value [interval interval-value]] [global]
Configuration Examples for Interface Input Queue Unwedging
This section provides the following configuration example:
Example: Configuring a System Global Thresholding Policy for I/O Memory
The following example shows the configuration of a global memory thresholding policy for I/O memory. In this example, the policy is given the name "system-global-io", and the threshold for critical I/O memory usage is defined as being usage of over 90 percent of the globally available I/O memory pool for 12 consecutive seconds.
The critical falling threshold is also defined in this example (less than 20 percent of the globally available I/O memory pool for 10 seconds or more); however, only the critical rising level will affect when the automatic deallocation procedure is triggered.configure terminalresource policypolicy system-global-io globalsystemmemory iocritical rising 90 interval 12 falling 20 interval 10
The following sections provide references related to this enhancement.
MIB MIBs Link
No new or modified MIBs are supported by this feature.
To locate and download MIBs for selected platforms, Cisco IOS releases, and feature sets, use Cisco MIB Locator found at the following URL:
No commands have been introduced or modified by this feature. For documentation of the memory io command and the critical rising command, see the Cisco IOS Network Management Command Reference, Release 12.4T.
Any Internet Protocol (IP) addresses used in this document are not intended to be actual addresses. Any examples, command display output, and figures included in the document are shown for illustrative purposes only. Any use of actual IP addresses in illustrative content is unintentional and coincidental.
© 2006 Cisco Systems, Inc. All rights reserved.