Table des matières

Introduction

Conditions préalables

Exigences

Composants utilisés

Conventions

Qu'est-ce que la défaillance d'allocation de mémoire ?

Symptômes

Erreur « Unable to Create EXEC » ou lorsque la console ne répond pas

Comprendre le message d'erreur

Causes possibles

Dans la mémoire du processeur (« Pool Processor » sur toutes les plates-formes)

Dans la mémoire de paquets (« I/O » ou « processeur » sur les routeurs haute gamme, « PCI » sur la gamme 7200 et cartes VIP)

Dépannage

Problème lié à la sécurité

La taille de la mémoire ne prend pas en charge l'image logicielle de Cisco IOS

Bogue de fuite de mémoire

Processus *Dead*

Grande quantité de mémoire utilisée pour des processus normaux ou anormaux

Problème ou bogue de fragmentation de mémoire

Défaillance d'allocation de mémoire en cours = niveau de priorité d'interruption

Mémoire insuffisante en raison du téléchargement par liste d'accès utilisateur

Problèmes identifiés

Problème 70x0 connu lors du chargement d'un logiciel Cisco IOS volumineux à partir de Flash ou de Netboot

Entrée d'IP et découverte CiscoWorks UT

Pas assez de mémoire partagée pour les interfaces

Bogue de fuite de la mémoire tampon

Le routeur manque de mémoire rapide

IPFAST-4-RADIXDELETE : erreur lors de la tentative de suppression de l'entrée de préfixe [adresse_IP]/[déc] ([hex] attendu, [hex] obtenu)

%SYS-2-CHUNKEXPANDFAIL : impossible d'étendre le pool de blocs pour le bitmap TACL. No memory available

Résumé

Défaillances d'allocation de mémoire pour le pool « Processeur »

Défaillances d'allocation de mémoire pour le pool « I/O » (« Processeur » sur les routeurs haute gamme, « PCI » sur la gamme 7200)

Informations connexes

Introduction

Ce document décrit les symptômes et les causes possibles de l'échec de l'allocation de mémoire (MALLOCFAIL) et les détails sur la façon de résoudre ces problèmes.

Conditions préalables

Exigences

Aucune exigence spécifique n'est associée à ce document.

Composants utilisés

Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :

- Toutes les versions du logiciel Cisco IOS®

- Tous les routeurs Cisco

Remarque : ce document ne s'applique pas aux commutateurs Cisco Catalyst qui utilisent des plates-formes CatOS ou MGX.

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si votre réseau est en ligne, assurez-vous de bien comprendre l’incidence possible des commandes.

Conventions

Pour plus d'informations sur les conventions utilisées dans ce document, reportez-vous à Conventions relatives aux conseils techniques Cisco.

Qu'est-ce que la défaillance d'allocation de mémoire ?

La défaillance d'allocation de mémoire peut signifier que :

- le routeur a utilisé toute la mémoire disponible (temporairement ou de manière permanente), ou

- la mémoire a été fragmentée en parties si petites que le routeur ne peut pas trouver de bloc disponible utilisable. Cela peut se produire avec la mémoire du processeur (utilisée par Cisco Internet Operating System [Cisco IOS]) ou avec la mémoire des paquets (utilisée par les paquets entrants et sortants).

Symptômes

Les symptômes de la défaillance d'allocation de mémoire incluent, mais ne se limitent pas à :

- Message de console ou de journal : « %SYS-2-MALLOCFAIL : échec de l'allocation de mémoire de 1 028 octets à partir de 0x6015EC84, processeur de pool, alignement 0 »

- Sessions Telnet refusées

- La commande show processor memory est affichée quelle que soit la commande que vous saisissez sur une console

- Aucune sortie de certaines commandes show

- Messages « Low on memory »

- Le message de la console « Unable to create EXEC - no memory or too many processes »

- Le routeur se fige et la console ne répond plus

Erreur « Unable to Create EXEC » ou lorsque la console ne répond pas

Lorsqu'un routeur commence à manquer de mémoire, parfois il n'est pas possible de connecter en Telnet au routeur. Dans ce cas, il est important d'obtenir un accès au port de la console pour collecter des données pour le dépannage. Cependant, lorsque vous vous connectez au port de console, vous pouvez voir ceci :

%% Unable to create EXEC - no memory or too many processes

Si vous voyez le message précédent, il n'y a même pas assez de mémoire disponible pour permettre une connexion console. Il existe des étapes que vous pouvez suivre pour permettre la capture de données par la console. Si vous aidez le routeur à libérer de la mémoire, la console peut répondre, puis vous pouvez capturer les données nécessaires à partir du routeur pour le dépannage.

Remarque : si le protocole BGP (Border Gateway Protocol) est configuré sur le routeur, vous pouvez vous référer à Atteindre un routage optimal et réduire la consommation de mémoire BGP pour réduire la consommation de mémoire liée à ce processus.

Voici les étapes à essayer afin de capturer des données lorsque le port de console est dans des conditions de mémoire très faible :

1. Déconnectez les câbles LAN et WAN des interfaces du routeur. Cela peut entraîner l’arrêt du passage des paquets par le routeur.

2. Revérifiez la console. Pouvez-vous obtenir une réponse et exécuter des commandes ? Au bout de quelques instants, la mémoire disponible doit être suffisante pour permettre à la console de répondre.

3. Collectez les informations nécessaires du mode EXEC privilégié (Routeur#). Au minimum, vous voulez collecter la sortie complète de ces commandes : show memory allocate-process totals (ou show memory summary si show memory allocate-process totals n'est pas disponible), show logging , et si possible, show technical-support .

4. Après que vous avez collecté les données nécessaires, rebranchez tous les liens LAN et WAN et continuez la surveillance de l'utilisation de la mémoire du routeur.

Comprendre le message d'erreur

Lorsque vous exécutez une commande show logging, vous devez voir quelque chose comme ceci :

%SYS-2-MALLOCFAIL: Memory allocation of [X] bytes failed from

0x6015EC84, pool [Pool], alignment 0 -Process=

"[Process]" ipl= 6, pid=5

[X] = nombre d'octets que le routeur a tenté d'attribuer sans y parvenir car il n'a pas trouvé suffisamment de mémoire libre

[Pool] indique si la mémoire du processeur (' Pool Processor ') ou la mémoire de paquets (' pool I/O ') est affectée. Les routeurs haut de gamme (7000, 7500) ont leurs tampons dans la mémoire DRAM (Dynamic Random-Access Memory) principale, de sorte qu'un manque de mémoire de paquets peut être signalé comme « processeur de pool ». Les cartes de la gamme 7200 et VIP (Versatile Interface Processor) peuvent également signaler des erreurs dans les informations de contrôle de protocole de pool (« pool PCI ») pour la mémoire de paquets.

[Process] est le processus qui a été affecté par le manque de mémoire.

Causes possibles

Dans la mémoire du processeur (« Pool Processor » sur toutes les plates-formes)

La taille de la mémoire ne prend pas en charge l'image logicielle de Cisco IOS

Bogue de fuite de mémoire

Grande quantité de mémoire utilisée pour des processus normaux ou anormaux

Problème ou bogue de fragmentation de mémoire

Défaillance d'allocation de mémoire en cours = <niveau de priorité d'interruption>

Problèmes identifiés

Problème 70x0 identifié lors du chargement du logiciel Cisco IOS de grande taille depuis de la mémoire Flash ou Netboot

Entrée d'IP et découverte CiscoWorks UT

Dans la mémoire de paquets (« I/O » ou « processeur » sur les routeurs haute gamme, « PCI » sur la gamme 7200 et cartes VIP)

Pas assez de mémoire partagée pour les interfaces

Bogue de fuite de la mémoire tampon

Le routeur commence à manquer de mémoire rapide

Dépannage

Problème lié à la sécurité

Généralement, les erreurs MALLOCFAIL sont causées par un problème de sécurité, tel qu'un ver ou un virus qui fonctionne sur votre réseau. Cette cause est fort probable s'il n'y a pas eu de changements récents sur le réseau, comme une mise à niveau du routeur Cisco IOS. En général, une modification de la configuration, par exemple si vous ajoutez des lignes supplémentaires à vos listes de contrôle d’accès, peut atténuer les effets de ce problème. La page Notifications et conseils de sécurité au sujet des produits Cisco contient des informations sur la détection des causes le plus probables et des solutions spécifiques.

Pour des informations supplémentaires, référez-vous à :

- 100 questions et réponses au sujet des menaces d'Internet

- Contrôle des menaces de Cisco

La taille de la mémoire ne prend pas en charge l'image logicielle de Cisco IOS

Tout d'abord, vérifiez la zone de téléchargement de logiciel pour la taille de mémoire minimale pour l'ensemble de fonctionnalités et la version que vous exécutez. Assurez-vous que la quantité de mémoire est suffisante. Les besoins en mémoire sur Cisco.com sont les tailles minimales recommandées pour le bon fonctionnement du routeur dans la plupart des réseaux d'entreprise. Les besoins réels en mémoire varient en fonction des protocoles, des tables de routage et des modèles de trafic.

Remarque : seuls les utilisateurs Cisco enregistrés ont accès aux informations et aux outils internes de Cisco.

Bogue de fuite de mémoire

Si vous disposez de la sortie d'une commande show memory allocate-process totaux, d'une commande show memory summary , ou d'une commande show technical-support (en mode enable) de votre périphérique Cisco, vous pouvez utiliser l'interpréteur de sortie pour afficher les problèmes potentiels et les correctifs.

Remarque : seuls les utilisateurs Cisco enregistrés ont accès aux informations et aux outils internes de Cisco.

Une fuite de mémoire se produit lorsqu'un processus demande ou alloue de la mémoire, puis oublie de libérer (d'annuler l'allocation) de la mémoire lorsqu'il a terminé cette tâche. En conséquence, le bloc mémoire est réservé jusqu'à ce que le routeur soit rechargé. Avec le temps, de plus en plus des blocs mémoire sont alloués par ce processus jusqu'à ce qu'il n'y ait plus de mémoire disponible. En fonction de la gravité de la situation de mémoire insuffisante à ce stade, la seule option que vous avez est de recharger le routeur pour le rendre opérationnel à nouveau.

Il s'agit d'un bogue de Cisco Internet Operating System (Cisco IOS). Pour vous en débarrasser, effectuez une mise à niveau vers la dernière version de votre train de versions, par exemple, si vous exécutez le logiciel Cisco IOS version 11.2(14), effectuez une mise à niveau vers la dernière image 11.2(x).

Si cela ne résout pas le problème, ou si vous ne voulez pas mettre à niveau le routeur, entrez la commande show processes memory à intervalles réguliers sur une période de temps (par exemple, toutes les quelques heures ou jours selon que vous avez une fuite rapide ou lente). Vérifiez si la mémoire libre continue à diminuer et n'est jamais restituée. La vitesse à laquelle la mémoire libre disparaît dépend de la fréquence de l'occurrence de l'événement à l'origine de la fuite. Comme la mémoire n'est jamais libérée, vous pouvez suivre le processus qui utilise la mémoire si vous prenez des instantanés de la mémoire au fil du temps. Gardez à l'esprit que différents processus allouent et désallouent de la mémoire selon les besoins, afin que vous puissiez voir les différences, mais à mesure que la fuite se poursuit, vous devez voir un processus qui consomme continuellement plus de mémoire.

Remarque : il est normal que certains processus, tels que le protocole BGP (Border Gateway Protocol) ou le routeur OSPF (Open Shortest Path First), utilisent plus d'un mégaoctet de mémoire ; cela ne signifie pas qu'ils fuient.

Pour identifier le processus qui consomme plus de mémoire, comparez la colonne Holding de la commande show processes memory sur l'intervalle de temps. Parfois, vous pouvez voir très clairement qu'un processus retient plusieurs méga-octets de mémoire. Parfois plusieurs instantanés sont nécessaires pour trouver le coupable. Lorsqu'une importante quantité de mémoire a été perdue, exécutez une commande show memory allocating-process totals ou la commande show memory summary pour obtenir des informations de dépannage supplémentaires. Contactez ensuite Cisco Technical Assistance Center (TAC) et fournissez les informations que vous avez collectées, ainsi qu'un résumé show technical-support du routeur.

L'outil Output Interpreter vous permet de recevoir une analyse de la sortie de la commande show memory allocating-process totals ou de la commande show memory summary.

Remarque : seuls les utilisateurs Cisco enregistrés ont accès aux informations et aux outils internes de Cisco.

Ce tableau donne les trois premières lignes de la sortie de la commande show memory summary :

Router>show memory summary

Head       Total (b)   Used (b)  Free (b)   Lowest (b)  Largest (b)

Processor   60AB4ED0   5550384     2082996   3467388    3464996     3454608

I/O         40000000   16777216    1937280   14839936   14839936    14838908

Total = quantité totale de mémoire disponible après que l'image du système est chargée et a établi ses structures de données.

Used = quantité de mémoire actuellement allouée.

Free = quantité de mémoire actuellement libre.

Lowest = la plus basse quantité de mémoire libre enregistrée par le routeur depuis la dernière fois qu'il a été amorcé.

Largest = le plus grand bloc mémoire libre actuellement disponible.

La commande show memory allocating-process totals contient les mêmes informations que les trois premières lignes de la commande show memory summary.

Voici ce que vous pouvez apprendre de la sortie de la commande show processes memory :

Router>show processes memory

Total: 3149760, Used: 2334300, Free: 815460

PID   TTY   Allocated    Freed      Holding    Getbufs    Retbufs   Process

0     0     226548       1252       1804376    0          0         *Initialization*

0     0     320          5422288    320        0          0         *Scheduler*

0     0     5663692      2173356    0          1856100    0         *Dead*

1     0     264          264        3784       0          0         Load Meter

2     2     5700         5372       13124      0          0         Virtual Exec

3     0     0            0          6784       0          0         Check heaps

4     0     96           0          6880       0          0         Pool Manager

5     0     264          264        6784       0          0         Timers

6     0     2028         672        8812       0          0         ARP Input

7     0     96           0          6880       0          0         SERIAL A' detect

8     0     504          264        7024       0          0         ATM ILMI Input

9     0     0            0          6784       0          0         ILMI Process

10    0     136          0          6920       0          0         M32_runts pring

11    0     136          0          6920       0          0         Call drop procs

12    0     340          340        12784      0          0         ATMSIG Timer

13    0     445664       442936     13904      0          0         IP Input

14    0     2365804      2357152    17992      0          0         CDP Protocol

15    0     528          264        7048       0          0         MOP Protocols

16    0     188          0          9972       0          0         IP Background

17    0     0            1608       6784       0          0         TCP Timer

18    0     5852116      0          14236      0          0         TCP Protocols

Allocated = nombre total d'octets alloués par le processus depuis l'amorçage du routeur.

Freed = nombre total d'octets libérés par ce processus.

Holding = nombre total d'octets retenus par ce processus. C'est la colonne la plus importante pour le dépannage car elle montre la quantité de mémoire réelle attribuée à ce processus. La colonne Holding n'es pas forcément égale à Allocated moins Freed, car certains processus allouent un bloc mémoire qui est ensuite renvoyé au pool libre par un autre processus.

Processus *Dead*

Le processus *dead* n'est pas un processus réel. Il est là pour rendre compte de la mémoire allouée dans le cadre d'un autre processus qui s'est terminé. La mémoire allouée à ce processus est reprise par le noyau et renvoyée au pool de mémoire par le routeur lors cela est nécessaire. C'est la façon dont Cisco IOS gère la mémoire. Un bloc mémoire est considéré comme mort si le processus qui a créé le bloc se termine (n'est plus en cours d'exécution). Chaque bloc garde une trace de l'adresse et du PID du processus qui l'a créé. Pendant le comptage périodique de la mémoire, si le processus que le planificateur découvre à partir d'un ID de bloc ne correspond pas au processus que le bloc a mémorisé, le bloc est marqué comme étant mort.

Par conséquent, la mémoire marquée comme appartenant au processus *Dead* a été allouée sous le contrôle d'un processus qui n'est plus en cours d'exécution. Il est normal d'avoir une quantité importante de mémoire dans un tel état. Voici un exemple :

La mémoire est allouée lorsque la traduction d'adresses de réseau (NAT) est configurée tout au long d'une session Telnet. Cette mémoire est justifiée sous le processus Telnet (« Virtual Exec »). Une fois que ce processus est terminé, la mémoire pour la configuration NAT est toujours utilisée. Ceci s'affiche avec le processus *dead*.

Vous pouvez voir dans quel contexte la mémoire a été allouée avec le show memory dead dans la colonne « Quoi » :

Router#show memory dead

Head   Total(b)    Used(b)    Free(b)  Lowest(b) Largest(b)

I/O    600000    2097152     461024    1636128    1635224    1635960

Processor memory

Address  Bytes Prev.    Next     Ref  PrevF   NextF   Alloc PC  What

1D8310       60 1D82C8   1D8378     1                  3281FFE   Router Init

2CA964       36 2CA914   2CA9B4     1                  3281FFE   Router Init

2CAA04      112 2CA9B4   2CAAA0     1                  3A42144   OSPF Stub LSA RBTree

2CAAA0       68 2CAA04   2CAB10     1                  3A420D4   Router Init

2ED714       52 2ED668   2ED774     1                  3381C84   Router Init

2F12AC       44 2F124C   2F1304     1                  3A50234   Router Init

2F1304       24 2F12AC   2F1348     1                  3A420D4   Router Init

2F1348       68 2F1304   2F13B8     1                  3381C84   Router Init

300C28      340 300A14   300DA8     1                  3381B42   Router Init

Si une fuite de mémoire est détectée et que le processus *Dead* semble être celui qui consomme la mémoire, incluez un show memory dead dans les informations fournies au centre d'assistance technique Cisco.

Grande quantité de mémoire utilisée pour des processus normaux ou anormaux

C'est l'une des causes les plus difficiles à vérifier. Le problème se caractérise par une grande quantité de mémoire libre, mais une valeur faible dans la colonne« Lowest ». Dans ce cas, un événement normal ou anormal (par exemple, une grande instabilité de routage) fait que le routeur utilise une quantité exceptionnellement importante de mémoire de processeur pendant une courte période, pendant laquelle la mémoire s'est épuisée. Au cours de cette période, le routeur rapporte le message MALLOCFAIL. Il peut arriver que peu de temps après, la mémoire soit libérée et le problème disparaisse (par exemple, le réseau se stabilise). Le manque de mémoire peut également être dû à une combinaison de facteurs, tels que :

- Une fuite de mémoire qui a consommé une grande quantité de mémoire, puis une instabilité du réseau qui consomme toute la mémoire libre.

- Le routeur n'a pas assez de mémoire dès le départ, mais le problème est découvert seulement pendant un événement réseau exceptionnel.

Si le routeur n'a pas été redémarré, entrez la commande show memory allocating-process totals (ou la commande show memory summary si show memory allocating-process totals  n'est pas disponible) et examinez les trois premières lignes. Les messages du journal peuvent fournir des indices sur le processus qui a consommé beaucoup de mémoire :

Si une grande utilisation de la mémoire était due à un :

- événement normal, la solution est d'installer plus de mémoire.

- événement rare ou anormal, réglez le problème qui y est lié. Vous pouvez alors décider d'acheter de la mémoire supplémentaire pour une future « assurance ».

Problème ou bogue de fragmentation de mémoire

Cette situation signifie qu'un processus a consommé une grande quantité de mémoire processeur, puis l'a libérée en totalité ou en grande partie, laissant des fragments de mémoire encore alloués soit par ce processus, soit par d'autres processus qui ont alloué de la mémoire tout au long du problème. Si le même événement se produit plusieurs fois, la mémoire peut se fragmenter en très petits blocs, au point où tous les processus qui nécessitent un bloc de mémoire plus important ne peuvent pas obtenir la quantité de mémoire dont ils ont besoin. Cela peut affecter le fonctionnement du routeur dans la mesure où vous ne pouvez pas vous connecter au routeur et obtenir une invite si la mémoire est mal fragmentée.

Ce problème se caractérise par une valeur faible dans la colonne « Largest » (inférieure à 20 000 octets) de la show memory , mais une valeur suffisante dans la colonne "Libéré" (1 Mo ou plus), ou une autre grande disparité entre les deux colonnes. Cela peut se produire lorsque la mémoire du routeur est très faible, car il n'y a pas de routine de fragmentation dans Cisco IOS.

Si vous suspectez une fragmentation de la mémoire, fermez certaines interfaces. Cela permet de libérer les blocs fragmentés. Si cela fonctionne, la mémoire se comporte normalement, et tout ce que vous avez à faire est d'ajouter plus de mémoire. Si lorsque vous arrêtez des interfaces, cela n'aide pas, cela peut être un bogue. La meilleure ligne de conduite consiste à contacter votre représentant de l'assistance technique Cisco et à lui fournir les informations que vous avez collectées.

Défaillance d'allocation de mémoire en cours = niveau de priorité d'interruption

Cette situation peut être identifiée par le processus dans le message d'erreur. Si le processus est répertorié comme <niveau d'interruption>, comme dans l'exemple suivant, l'échec de l'allocation de mémoire est causé par un problème logiciel.

"%SYS-2-MALLOCFAIL: Memory allocation of 68 bytes failed from 0x604CEF48,

pool Processor, alignment 0-Process=

, ipl= 3"

Il s'agit d'un bogue de Cisco Internet Operating System (Cisco IOS). Vous pouvez utiliser le Bug Toolkit pour rechercher un ID de bogue logiciel correspondant à ce problème. Une fois le bogue logiciel identifié, mettez à niveau vers la version du logiciel Cisco IOS qui contient le correctif pour résoudre le problème.

Remarque : seuls les utilisateurs Cisco enregistrés ont accès aux informations et aux outils internes de Cisco.

Mémoire insuffisante en raison du téléchargement par liste d'accès utilisateur

Les listes d'accès peuvent consommer beaucoup de mémoire lorsqu'elles sont utilisées par les utilisateurs individuels. Les listes d'accès sont trop grandes pour être classifiées comme mini listes de contrôle d'accès (ACL) et sont maintenant compilées comme listes de contrôle d'accès turbo. Chaque fois que cela se produit, le processus TACL doit se déclencher et traiter la nouvelle ACL. Cela peut entraîner un trafic autorisé ou refusé en fonction du temps de compilation et du temps de processus disponible.

Les ACL compilées doivent être envoyées à XCM. Lorsque l'espace disponible est limité et une fois que la mémoire en est dépourvue, les messages sur la console apparaissent et la défragmentation de la mémoire démarre.

Voici la solution de contournement :

- Utilisation de listes de contrôle d'accès concises, moins de ACE (Application Control Engines) pouvant être compilées en tant que mini-ACL et pouvant réduire la consommation de mémoire et la puissance de traitement pour la compilation.

- Utilisation d'ACL prédéfinies sur le routeur qui sont référencées par l'intermédiaire du filtre ID d'attribut RADIUS.

Problèmes identifiés

Problème 70x0 connu lors du chargement d'un logiciel Cisco IOS volumineux à partir de Flash ou de Netboot

Lorsqu'un processeur de routage 7000 (RP) amorce une image depuis de la mémoire Flash, il charge d'abord l'image ROM, puis l'image Flash dans la mémoire. L'ancien RP dispose uniquement de 16 Mo de mémoire, et les versions Enterprise de la version du logiciel Cisco IOS ultérieures à la version 11.0 dépassent 8 Mo non compressées. Par conséquent, lorsque vous chargez l'image à partir de la mémoire ROM puis de la mémoire Flash, le RP 7000 peut manquer de mémoire ou la mémoire peut devenir fragmentée pendant le processus de démarrage de sorte que le routeur a des messages d'erreur liés à la mémoire.

La solution est d'activer le démarrage rapide à partir du registre de configuration de sorte que le RP charge uniquement un sous-ensemble minimum de l'image logicielle de Cisco IOS dans la ROM, puis charge le logiciel Cisco IOS complet depuis la mémoire Flash. Pour activer le démarrage rapide, réglez le registre de configuration sur 0x2112. Cela peut également accélérer le processus de démarrage.

Entrée d'IP et découverte CiscoWorks UT

Grâce à la fonction UT Discovery de CiscoWorks, la quantité de mémoire disponible peut devenir très faible sur certains de vos routeurs. La commande show proc memory peut indiquer une grande quantité de mémoire bloquée par le processus « IP input ». C'est un cas particulier du problème Grande quantité de mémoire utilisée pour des processus normaux ou anormaux pour le processus « IP input »qui peut aussi causer un problème de Fragmentation de la mémoire si la faible quantité de mémoire disponible entraîne une fragmentation de la mémoire.

La fonction de découverte UT fait que la station d'administration de réseau envoie une série de pings pour toutes les adresses IP de chaque sous-réseau découvert. Les problèmes de mémoire sont causés par la taille accrue du cache à commutation rapide IP sur le routeur, car de nouvelles entrées de cache sont créées pour chaque nouvelle destination. Puisque le masque utilisé pour les entrées dans le cache dépend de la façon dont il est divisé en sous-réseaux, la présence d'une adresse avec un masque de 32 bits (par exemple, une adresse de bouclage) dans un réseau principal entraîne l'utilisation d'un masque de 32 bits par toutes les entrées de ce réseau. Cela entraîne la création d'un grand nombre d'entrées de cache et l'utilisation d'une grande quantité de mémoire.

La meilleure solution est de désactiver la découverte UT. Pour ce faire, procédez comme suit :

1. Accédez à C:\Program Files\CSCOpx\etc\cwsi\ANIServer.properties.

2. Ajoutez « UTPingSweep=0 ».

3. Redémarrez ANI.

Cela peut entraîner l'absence de certains serveurs finaux dans la table de suivi des utilisateurs ou l'obsolescence de la table (il peut s'agir d'un problème avec une autre application Cisco appelée User Registration Tool, qui s'appuie sur UT), mais cela n'affecte pas la détection de campus qui utilise uniquement le trafic SNMP. La commutation CEF peut également améliorer cette situation (avec CEF, le cache IP est créé à partir de la table de routage au démarrage). Référez-vous à Comment choisir le meilleur chemin de commutation de routeur pour le votre réseau pour plus d'informations sur CEF et d'autres chemins de commutation disponibles.

Il existe beaucoup d'autres applications qui peuvent entraîner des situations de mémoire basse semblables à celle-ci. Dans la plupart des cas, la cause d'origine du problème n'est pas le routeur, mais l'application elle-même. Normalement, vous devez être capable d'empêcher ces tempêtes de paquets en vérifiant la configuration de l'application.

Pas assez de mémoire partagée pour les interfaces

Certains routeurs (par exemple la gamme 2600, 3600, et 4000) exigent un minimum de mémoire I/O pour prendre en charge certains processeurs d'interface.

Si le routeur manque de mémoire partagée, même après un rechargement, vous pouvez supprimer physiquement les interfaces pour résoudre ce problème.

Sur les routeurs de la gamme 3600, la commande de configuration globale  memory-size iomem i/o-memory-percentage peut être utilisé pour réallouer le pourcentage de mémoire DRAM à utiliser pour la mémoire E/S et la mémoire du processeur. Les valeurs permises pour i/o-memory-percentage sont 10, 15, 20, 25 (par défaut), 30, 40 et 50. Un minimum de 4 Mo de mémoire est requis pour la mémoire I/O.

Afin de résoudre ce problème, référez-vous à :

- Mémoire partagée requise pour les routeurs 4000/4500/4700.

Bogue de fuite de la mémoire tampon

Si vous disposez de la sortie d'un  show buffers  commande ou  show technical-support  (en mode enable) à partir de votre périphérique Cisco, vous pouvez utiliser Output Interpreter pour afficher les problèmes potentiels et les correctifs.

Remarque : seuls les utilisateurs Cisco enregistrés ont accès aux informations et aux outils internes de Cisco.

Lorsqu'un processus a terminé avec une mémoire tampon, il doit la libérer. Une fuite de tampon se produit lorsque le code oublie de traiter un tampon ou oublie de le libérer une fois qu'il a fini avec le paquet. En conséquence, le pool de mémoire tampon continue de se développer, car de plus en plus paquets sont coincés dans les mémoires tampon. Vous pouvez identifier une fuite de mémoire tampon à l'aide de show buffers erasecat4000_flash:. Certains des pools de mémoires tampons publiques doivent être anormalement grands avec peu de mémoires tampons libres. Après un rechargement, vous pouvez voir que le nombre de mémoires tampon libres ne s'approche jamais du nombre total de mémoires tampon.

L'outil Output Interpreter vous permet de recevoir une analyse de la show buffers sortie.

Dans l'exemple ci-dessous, les mémoire tampon centrales du milieu sont affectées. Les show buffers  indique que près de 8094 tampons sont utilisés et non libérés (8122 au total moins 28 libres) :

Public buffer pools: Small buffers, 104 bytes (total 50, permanent 50):

50 in free list (20 min, 150 max allowed)

403134 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

Middle buffers, 600 bytes (total 8122, permanent 200):

28 in free list (10 min, 300 max allowed)

154459 hits, 41422 misses, 574 trims, 8496 created

Big buffers, 1524 bytes (total 50, permanent 50):

50 in free list (5 min, 150 max allowed)

58471 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

VeryBig buffers, 4520 bytes (total 10, permanent 10):

10 in free list (0 min, 100 max allowed)

0 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

Large buffers, 5024 bytes (total 0, permanent 0)

0 in free list (0 min, 10 max allowed)

0 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

Huge buffers, 18024 bytes (total 0, permanent 0):

0 in free list (0 min, 4 max allowed)

0 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

c'est un bogue du logiciel Cisco IOS. Mettez à niveau vers la dernière version de votre série pour corriger des bogues de fuite de mémoire tampon identifiées (par exemple, si vous exécutez le Logiciel Cisco IOS Version 11.2(14), mettez à niveau vers la dernière image 11.2(x). Si cela n'aide pas, ou s'il n'est pas possible de mettre à niveau le routeur, émettez ces commandes suivantes pour le pool de problèmes lorsque la mémoire du routeur est insuffisante. Ces commandes peuvent afficher des informations supplémentaires sur le contenu des mémoires tampon :

- show buffer old  indique les mémoires tampon allouées depuis plus d'une minute

- show buffer pool   (small - middle - big - verybig - large - huge)    donne un résumé des mémoires tampon pour le pool spécifié

- show buffer pool (small - middle - big - verybig - large - huge) dump   montre un vidage hex/ASCII de toutes les mémoires tampon en service d'un pool donné.

Référez-vous à Dépanner les fuites de mémoire tampon pour plus de détails.

Le routeur manque de mémoire rapide

Ce problème est spécifique à la gamme 7500. Si le routeur manque de mémoire « rapide », il peut utiliser sa mémoire vive dynamique (DRAM) principale à la place. Aucune action n'est requise.

IPFAST-4-RADIXDELETE : erreur  trying  pour supprimer l'entrée de préfixe [adresse_IP]/[déc] (attendu [hex], obtenu [hex])

Le message d'erreur IPFAST-4-RADIXDELETE : Error attempts to delete prefix entry [adresse_IP]/[déc] (required [hex], got [hex]) indique que la table du cache de commutation rapide des routeurs en mémoire est endommagée. Lorsque le routeur tente d'effacer la table de cache selon le processus normal ou clear ip cache est entrée, le système ne parvient pas à supprimer les entrées en raison de la corruption de la mémoire. Lorsque le routeur ne parvient pas à effacer une telle entrée, le message IPFAST-4-RADIXDELETE est rapporté.

Afin de résoudre un problème de corruption de la table de cache, il est nécessaire d'effectuer un redémarrage du routeur. Un redémarrage peut graver à nouveau les structures de mémoire système et permettre au cache rapide de reconstruire sans corruption.

%SYS-2-CHUNKEXPANDFAIL : impossible d'étendre le pool de blocs pour le bitmap TACL. No memory available

Raison de la %SYS-2-CHUNKEXPANDFAIL : impossible d'étendre le pool de blocs pour le bitmap TACL. No memory available signifie qu'il ne reste pas assez de mémoire processeur pour augmenter la taille du pool de blocs spécifié. Il est probablement provoqué par un processus qui se comporte anormalement.

La solution de contournement consiste à capturer périodiquement (en fonction de la fréquence du problème) le résultat de ces commandes afin de surveiller l'utilisation de la mémoire du routeur :

- show processes memory sorted

- show memory statistics

- show memory allocating-process totals

Résumé

Défaillances d'allocation de mémoire pour le pool « Processeur »

Procédez comme suit :

1. Vérifiez les configurations requises pour votre version du logiciel Cisco IOS ou de l'ensemble de fonctionnalités.

2. Si possible, mettez à niveau vers la dernière version du logiciel Cisco IOS de votre série de versions.

3. Recherchez une grande quantité de mémoire utilisée pour des processus normaux ou anormaux. S'il y a lieu, ajoutez plus de mémoire.

4. Vérifiez s'il s'agit d'une fuite ou d'une fragmentation (fuite de mémoire tampon sur les routeurs haute gamme).

5. Collectez les informations appropriées et entrez en contact avec le TAC.

Défaillances d'allocation de mémoire pour le pool « I/O » (« Processeur » sur les routeurs haute gamme, « PCI » sur la gamme 7200)

Procédez comme suit :

1. Vérifiez les configurations requises en matière de mémoire partagée (voir Mémoire partagée insuffisante pour les interfaces).

2. Si possible, mettez à niveau vers la dernière version du logiciel Cisco IOS de votre série de versions.

3. Déterminez quel pool de mémoires tampon est affecté, collectez les informations appropriées, et entrez en contact avec le TAC Cisco.

Informations connexes

- Dépannage des fuites de mémoire tampon

- Dépannage des figeages de routeur

- Assistance technique et téléchargements Cisco