Introduction
Ce document décrit des conseils de dépannage généraux pour la collecte d'informations supplémentaires pour un problème de fuite de mémoire.
Conditions préalables
Exigences
Cisco vous recommande de prendre connaissance des rubriques suivantes :
- Connaissances de base de Cisco IOS® XE
- Connaissances de base dans Embedded Event Manager (EEM)
Composants utilisés
Ce document n'est pas limité à des versions de matériel et de logiciel spécifiques. Elle s'applique à toutes les plates-formes de routage Cisco IOS XE telles que ASR1000, ISR4000, ISR1000, Cat8000 ou Cat8000v.
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.
Informations générales
Dans ce document, vous pouvez trouver des journaux communs que le périphérique génère en cas d'utilisation élevée de la mémoire.
Vous pouvez également voir comment vous pouvez tirer parti de la fonctionnalité Embedded Event Manager pour aider le TAC à surveiller et obtenir des données sur les situations où le routeur IOS XE manque fréquemment de mémoire.
L'objectif de ce document n'est pas d'expliquer en détail les procédures de dépannage, le cas échéant, mais uniquement de fournir des références à des guides de dépannage plus approfondis.
Symptômes d'un manque de mémoire pour les routeurs IOS XE
En cas de problème d'utilisation élevée de la mémoire, un message de journal s'affiche généralement pour indiquer que la limite d'avertissement de 85 % a été atteinte. Cette valeur varie en fonction de la version. Différents journaux sont générés en fonction de l'endroit où le système a détecté le problème :
Problèmes TCAM :
CPP_FM-3-CPP_FM_TCAM_WARNING
IOSd (plan de contrôle) :
SYS-2-MALLOCFAIL
SYS-2-CHUNKEXPANDFAIL
SYS-4-CHUNKSIBLINGSEXCEED
QFP (plan de données) :
QFPOOR-4-LOWRSRC_PERCENT_WARN
QFPOOR-4-TOP_EXMEM_USER
CPPEXMEM-3-NOMEM
CPPEXMEM-3-TOPUSER
Système de fichiers temporel (TMPFS) :
PLATFORM-3- ELEMENT_TMPFS_WARNING
Journal système général (besoin d'isolation) :
PLATFORM-4-ELEMENT_WARNING
PLATE-FORME-3-ELEMENT_CRITICAL
Remarque : Des améliorations des journaux sont disponibles à partir de la version 16.12 et ultérieure.
Information Besoins du TAC pour le triage initial
show clock
show version
show platform resources
show platform software status control-processor brief
show process memory sorted
show memory statistics
show memory allocating-process totals
show process memory platform tri
show logging
- En cas de rechargement inattendu dû à une mémoire insuffisante :
rapport sur le système/fichier principal
- Graphique de l'utilisation de la mémoire dans le temps.
Il est souhaitable d'associer un technicien de démonstration, c'est utile pour le centre d'assistance technique, et vous pouvez bénéficier de l'automatisation que le centre d'assistance technique a développée pour vous aider à trouver les problèmes plus rapidement.
Les conditions conduisant à une utilisation élevée de la mémoire sont toujours liées au logiciel. Cependant, toutes les instances d'utilisation élevée de la mémoire ne sont pas inattendues. Il est important de tenir compte de la mémoire DRAM disponible et de la combinaison de fonctions exécutées sur le périphérique.
Le dépannage d'une utilisation élevée de la mémoire est plus fluide, plus efficace et avec une meilleure interaction TAC si vous utilisez Radkit. Cet outil, développé par Cisco, offre au centre d'assistance technique un moyen simple et hautement sécurisé d'accéder aux périphériques que vous sélectionnez dans votre réseau. Pour plus d'informations, consultez : Cisco RADKit
Remarque : Assurez-vous que vous utilisez une version prise en charge. Recherchez le document relatif à la fin de commercialisation et à la fin de vie de la version. Si nécessaire, passez à une version qui est actuellement sous Software Maintenance Releases. Sinon, le TAC peut être limité aux options de dépannage et de résolution.
Pour obtenir un document complet sur le dépannage de la mémoire, reportez-vous aux guides suivants :
Sur ISR4K : Memory Troubleshooting Guide for Cisco 4000 Series ISRs.
Sur ASR1K : Guide de dépannage de la mémoire du routeur ASR 1000.
Présentation de l'utilisation élevée de mémoire
Dans les routeurs Cisco IOS XE, la mémoire DRAM est l'une des ressources les plus importantes qui prennent en charge les fonctionnalités de base. La mémoire DRAM est utilisée pour stocker différents types de données et des informations de processus/caractéristiques qui sont essentielles pour les opérations du plan de contrôle et du plan de données.
Les principales utilisations de la mémoire DRAM dans les routeurs IOS XE sont les suivantes :
Mémoire IOSd (structures du plan de contrôle) : Stocke les informations relatives aux processus et au plan de contrôle du périphérique, telles que : les informations/protocoles de routage, les structures de gestion du réseau, les configurations système et les informations sur les fonctionnalités.
Mémoire QFP (structures de plan de données) : Stocke tout ce qui concerne les opérations QFP gérées par le microcode, telles que les structures clés des fonctions stockées dans le QFP, les instructions de microcode et les instructions de transfert.
Système de fichiers temporaires (TMPFS) : Monté en DRAM et géré par IOSd, TMPFS sert de zone de stockage à accès rapide pour les fichiers requis par les processus. Si ces fichiers sont persistants, ils sont déplacés vers un disque dur/bootflash. Il améliore les performances du système en réduisant les temps de lecture/écriture des données temporaires.
Processus généraux exécutés sur le noyau Linux : Comme IOS XE fonctionne sur un noyau Linux, la DRAM prend également en charge divers processus système qui s'exécutent sur ce noyau.
Une utilisation élevée de la mémoire supérieure à 85 % indique généralement une consommation de mémoire DRAM importante, ce qui peut avoir un impact sur les performances du routeur. Cette utilisation élevée peut être le résultat de demandes légitimes, telles que le stockage de tables de routage étendues ou l'activation de fonctionnalités gourmandes en ressources. Cependant, il peut également signaler des problèmes tels qu'une gestion inefficace de la mémoire par certaines fonctions ou des fuites de mémoire, où la mémoire n'est pas correctement libérée dans le système après utilisation.
En surveillant l'utilisation de la mémoire sur la mémoire IOSd, la mémoire QFP, TMPFS et les processus Linux généraux, vous et le TAC pouvez identifier les problèmes potentiels de manière précoce.
EEM pour surveiller l'utilisation de la mémoire
Pour le dépannage de la mémoire, le TAC doit collecter un ensemble de commandes sur une période donnée afin d'identifier le processus incriminé. Parfois, une fois le processus responsable identifié, des commandes spécifiques supplémentaires sont nécessaires, ce qui fait du dépannage de la mémoire l'un des types de dépannage les plus longs.
Afin de faciliter ce dépannage, vous pouvez utiliser la fonctionnalité EEM pour surveiller et collecter automatiquement des informations. Deux considérations principales sont à prendre en compte lors de la rédaction du script EEM : déclencheur et commandes à collecter.
Déclencheurs
Modèle. Vous pouvez utiliser le modèle de section Symptômes des routeurs Cisco IOS XE à court de mémoire. Le format est le suivant :
event syslog pattern <pattern> ratelimit 300 maxrun 180
Lors de l'utilisation d'un modèle comme déclencheur, l'un des points à prendre en compte est que le journal est généré une fois le seuil d'avertissement atteint, en fonction du taux de consommation de mémoire, en essayant de le faire manuellement, vous ou le TAC n'avez pas assez de temps pour un dépannage plus détaillé.
Minuteur cron. Exemple de minuteur cron à activer toutes les 30 minutes :
event timer cron name HalfHour cron-entry "*\30 * * * *"
Un des avantages d'un chronomètre cron par rapport à un modèle est que vous n'avez pas besoin d'attendre que le périphérique soit presque à court de ressources mémoire pour collecter des informations. En fonction du taux de consommation de mémoire, avec une surveillance et des informations appropriées, le TAC peut identifier le processus incriminé avant d'atteindre le seuil d'avertissement.
Remarque : Les options Ratelimit et maxrun sont utilisées pour garantir que l'ensemble des sorties est collecté. Ils permettent également d'éviter tout bruit supplémentaire ou l'activation d'un ESEE dans les situations où plusieurs journaux apparaissent en peu de temps.
Exemples d'EEM avec des commandes générales pour le triage initial :
configure terminal
event manager applet TAC_EEM authorization bypass
event syslog pattern " PLATFORM-4-ELEMENT_WARNING" ratelimit 300 maxrun 180
action 0.1 cli command "enable"
action 0.2 cli command "term exec prompt timestamp"
action 0.3 cli command "term length 0"
action 0.4 cli command "show process memory platform sorted | append bootflash:TAC_EEM.txt"
action 0.5 cli command "show processes memory platform sorted location chassis 1 R0 | append bootflash:TAC_EEM.txt"
action 0.9 cli command "show platform resources | append bootflash:TAC_EEM.txt"
action 1.0 cli command "show platform software status control-processor brief | append bootflash:TAC_EEM.txt"
action 1.1 cli command "show clock | append bootflash:TAC_EEM.txt"
action 1.3 cli command "show platform software process memory chassis active r0 all sorted | append bootflash:TAC_EEM.txt"
action 1.5 cli command "show process memory platform accounting | append bootflash:TAC_EEM.txt"
Surveillez quotidiennement avec un chronomètre cron :
configure terminal
event manager applet TAC_EEM2 authorization bypass
event timer cron name DAYLY cron-entry "0 0 * * *"
action 0.1 cli command "enable"
action 0.2 cli command "term exec prompt timestamp"
action 0.3 cli command "term length 0"
action 0.4 cli command "show process memory platform sorted | append bootflash:TAC_EEM2.txt"
action 0.5 cli command "show processes memory platform sorted location chassis 1 R0 | append bootflash:TAC_EEM2.txt"
action 0.6 cli command "show processes memory platform sorted location chassis 2 R0 | append bootflash:TAC_EEM2.txt"
action 0.9 cli command "show platform resources | append bootflash:TAC_EEM2.txt"
action 1.0 cli command "show platform software status control-processor brief | append bootflash:TAC_EEM2.txt"
action 1.1 cli command "show log | append bootflash:TAC_EEM2.txt"
action 1.2 cli command "show clock | append bootflash:TAC_EEM2.txt"
action 1.3 cli command "show platform software process memory chassis active r0 all sorted | append bootflash:TAC_EEM2.txt"
action 1.5 cli command "show process memory platform accounting | append bootflash:TAC_EEM2.txt"
Pour obtenir une liste plus complète des commandes, reportez-vous aux guides de la section Informations sur les besoins du TAC en matière de triage initial.
Fichier principal
Lorsque l'utilisation de la mémoire atteint un niveau critique, il est probable que le système d'exploitation force une panne afin de récupérer de cette condition, en générant un rapport système qui contient un fichier de base.
Le fichier de base est le vidage complet de la mémoire d'un processus particulier qui s'est bloqué à un moment donné. Ce fichier de base est essentiel pour que le centre d'assistance technique inspecte la mémoire et analyse le code source afin de comprendre les conditions et les raisons potentielles du rechargement/plantage inattendu du processus.
Le fichier principal aide le centre d'assistance technique et les développeurs à trouver la cause première du problème, à le déboguer et à le résoudre.
Remarque : Même si le TAC et les développeurs s'efforcent d'en trouver la cause première, il arrive que la panne soit la conséquence d'un événement réseau ou d'un problème de synchronisation qui rend pratiquement impossible sa reproduction en laboratoire.
Pour plus d'informations sur les rechargements inattendus et la façon de récupérer un fichier de base, consultez Dépannage des rechargements inattendus dans les plates-formes Cisco IOS® avec TAC.