Dans le cadre de la documentation associée à ce produit, nous nous efforçons d’utiliser un langage exempt de préjugés. Dans cet ensemble de documents, le langage exempt de discrimination renvoie à une langue qui exclut la discrimination en fonction de l’âge, des handicaps, du genre, de l’appartenance raciale de l’identité ethnique, de l’orientation sexuelle, de la situation socio-économique et de l’intersectionnalité. Des exceptions peuvent s’appliquer dans les documents si le langage est codé en dur dans les interfaces utilisateurs du produit logiciel, si le langage utilisé est basé sur la documentation RFP ou si le langage utilisé provient d’un produit tiers référencé. Découvrez comment Cisco utilise le langage inclusif.
Cisco a traduit ce document en traduction automatisée vérifiée par une personne dans le cadre d’un service mondial permettant à nos utilisateurs d’obtenir le contenu d’assistance dans leur propre langue. Il convient cependant de noter que même la meilleure traduction automatisée ne sera pas aussi précise que celle fournie par un traducteur professionnel.
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.
Aucune exigence spécifique n'est associée à ce document.
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.
Pour plus d'informations sur les conventions utilisées dans ce document, reportez-vous à Conventions relatives aux conseils techniques Cisco.
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).
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
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 :
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.
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.
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 .
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.
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.
La taille de la mémoire ne prend pas en charge l'image logicielle de Cisco IOS
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
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 commence à manquer de mémoire rapide
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 à :
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.
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.
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.
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 ».
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.
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.
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.
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.
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 :
Accédez à C:\Program Files\CSCOpx\etc\cwsi\ANIServer.properties.
Ajoutez « UTPingSweep=0 ».
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.
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.
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.
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.
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.
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
Procédez comme suit :
Vérifiez les configurations requises pour votre version du logiciel Cisco IOS ou de l'ensemble de fonctionnalités.
Si possible, mettez à niveau vers la dernière version du logiciel Cisco IOS de votre série de versions.
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.
Vérifiez s'il s'agit d'une fuite ou d'une fragmentation (fuite de mémoire tampon sur les routeurs haute gamme).
Collectez les informations appropriées et entrez en contact avec le TAC.
Procédez comme suit :
Vérifiez les configurations requises en matière de mémoire partagée (voir Mémoire partagée insuffisante pour les interfaces).
Si possible, mettez à niveau vers la dernière version du logiciel Cisco IOS de votre série de versions.
Déterminez quel pool de mémoires tampon est affecté, collectez les informations appropriées, et entrez en contact avec le TAC Cisco.
Révision | Date de publication | Commentaires |
---|---|---|
2.0 |
19-Jan-2023 |
Format mis à jour, alertes CCW corrigées. Recertification. |
1.0 |
02-Nov-2001 |
Première publication |