Introduction
Ce document décrit une fuite de mémoire dans le contexte d'un contrôleur LAN sans fil (WLC) Cisco Catalyst 9800.
Fuite De Mémoire
Lorsqu'un programme ou un processus alloue de la mémoire pour une utilisation temporaire et ne la désalloue pas correctement lorsqu'elle n'est plus nécessaire, cette mémoire reste « en cours d'utilisation » du point de vue du système d'exploitation. Lorsque le processus continue à fonctionner et échoue à plusieurs reprises à libérer la mémoire, la quantité totale de mémoire utilisée par le processus augmente et moins de mémoire est disponible pour d'autres processus et fonctions système. Les fuites de mémoire sont généralement causées par des bogues logiciels ou des problèmes dans le microprogramme du système ou dans les applications qui s'y exécutent.
Dans le cas d'un WLC Cisco Catalyst 9800, une fuite de mémoire peut se manifester comme suit :
- Diminution des performances : à mesure que la mémoire devient de plus en plus rare, le WLC peut ralentir, ce qui entraîne des temps de réponse plus lents pour les fonctions de gestion ou une baisse des performances des périphériques clients connectés au réseau.
- Instabilité du système : les processus critiques peuvent commencer à échouer, ce qui peut entraîner l'interruption des connexions client, l'incapacité à gérer le WLC ou d'autres comportements erratiques.
- Panne du système : dans les cas graves, le WLC peut se bloquer et redémarrer, surtout s'il manque de mémoire pour les opérations essentielles.
Remarque : le WLC 9800 peut connaître un redémarrage/plantage soudain pour récupérer la mémoire perdue et se rétablir. Comme la fuite de mémoire est un comportement bogué, des fuites se produisent même après le redémarrage, à moins que la fuite à l'origine de la configuration/fonctionnalité ne soit désactivée.
Syslog
%PLATFORM-4-ELEMENT_WARNING:R0/0: smand: La valeur de mémoire utilisée RP/0 91% dépasse le niveau d'avertissement 88%
Ce message imprime le nom des 3 principaux processus consommant de la mémoire avec les appels traceky, callsite ID et diff :
%PLATFORM-4-ELEMENT_WARNING : Châssis 1 R0/0 : smand : 1/RP/0 : la valeur de mémoire utilisée 91 % dépasse le niveau d'avertissement 88 %. Les principaux allocateurs de mémoire sont : Process : sessmgrd_rp_0. Clé de suivi : 1#258b8858a63c7998252e96352473c9c6 ID du site d'appel : 11B8F825A8768000 (diff_call: 20941). Processus : fman_fp_image_fp_0. Touche de suivi : 1#36b34d8e636a89f6397a3b12acab9706 ID du site d'appel : 1944E78DF68EC002 (diff_call: 19887). Processus : linux_iosd-imag_rp_0. Tracekey : 1#8ec74901dc8e23a44e060e69d5820ece ID du site d'appel : E2AA338E11594003 (diff_call: 13404).
Comment identifier 9800 WLC ont connu un problème de fuite de mémoire
Il est important de traiter rapidement les fuites de mémoire car elles peuvent compromettre la stabilité et la fiabilité des services réseau fournis par le WLC. Pour diagnostiquer une fuite de mémoire sur un WLC, vous pouvez utiliser diverses commandes sur l'interface de ligne de commande pour surveiller l'utilisation de la mémoire au fil du temps. Ils peuvent rechercher des processus qui utilisent une quantité croissante de mémoire sans la libérer ou des modèles qui indiquent que la mémoire n'est pas récupérée comme prévu.
Vérifiez la quantité totale de mémoire allouée à la plate-forme.
9800WLC#show version | in memory
cisco C9800-L-F-K9 (KATAR) processor (revision KATAR) with 1634914K/6147K bytes of memory.
32768K bytes of non-volatile configuration memory.
16777216K bytes of physical memory.
!! Determines Total platform memory available, Here it is 16GB
Vérifiez la quantité de mémoire allouée à chaque pool.
9800WLC#show processes memory
Processor Pool Total: 1674013452 Used: 823578520 Free: 850434932
reserve P Pool Total: 102404 Used: 88 Free: 102316
lsmpi_io Pool Total: 6295128 Used: 6294296 Free: 832
Vérifiez l'utilisation des ressources, y compris la mémoire. S'il dépasse les niveaux Avertissement ou Critique, il peut indiquer une fuite de mémoire potentielle.
Utilisation de la mémoire sur le WLC 9800
Surveiller l'utilisation globale de la mémoire pour les ressources du plan de contrôle
9800WLC#show platform software status control-processor brief
Slot Status 1-Min 5-Min 15-Min
1-RP0 Healthy 0.52 0.75 0.80
Memory (kB)
Slot Status Total Used (Pct) Free (Pct) Committed (Pct)
1-RP0 Healthy 16327028 4898110(30%) 114218918 (70%) 5387920 (33%)
Surveillez la taille de la mémoire allouée et utilisée pour les processus principaux. Si l'utilisation de la mémoire continue à augmenter alors que la mémoire libre reste fixe ou est trop faible, il y a de fortes chances qu'il y ait une fuite de mémoire au niveau de l'IOSd.
Statistiques de mémoire par processus à partir du processus de mise en attente le plus élevé
Pour les problèmes de fuite de mémoire au niveau de la plate-forme, surveillez les compteurs RSS (Resident Set Size). RSS indique la quantité de mémoire allouée à un processus pendant l'exécution. Si cette valeur augmente rapidement, cela peut signifier une fuite de mémoire potentielle.
La plate-forme traite l'utilisation de la mémoire à partir du processus le plus élevé
Dépannage des fuites de mémoire dans le processus IOS
Dans IOS XE, IOS fonctionne comme un processus (démon) s'exécutant sur le noyau Linux, appelé IOSd. En général, IOSd est alloué entre 35 % et 50 % de la DRAM totale de la plate-forme disponible.
Journaux de base du WLC
Activez l'horodatage pour avoir une référence temporelle pour toutes les commandes.
9800WLC#term exec prompt timestamp
Pour consulter les informations relatives à la configuration et à la mémoire :
9800WLC#show tech-support wireless
9800WLC#show tech-support memory
Collecter le fichier Core Dump ou le rapport système s'il est généré
Via GUI
Naviguer jusqu'à Troubleshooting > Core Dumps and System Report
Rapport sur le vidage et le système principal
Via CLI
9800WLC#show bootflash: | in core/system-report
9800WLC#copy bootflash:system-report/Core_file {tftp: | ftp: | https: ..}
Pour le pool de mémoire du processeur
Vérifier la mémoire par processus en commençant par le processus de mise en attente le plus élevé.
9800WLC#show process memory sorted
Vérifiez l'état total de la mémoire pour le pool concerné. Il affiche également le plus grand bloc libre et la mémoire disponible la plus faible depuis le démarrage.
9800WLC#show memory Statistics
Vérifiez le compteur de programme (PC) qui a alloué une grande quantité de mémoire.
9800WLC#show memory allocation-process totals
Vérifier les blocs et les morceaux qui fuient.
9800WLC#show memory debug leak chunks
!!This is CPU intensive cli and use only if above CLI output is not helping.
Pour pool de mémoire E/S
Vérifiez les principaux allocateurs.
9800WLC#show memory io allocating-process totals
Si l'allocateur supérieur est 'Packet Data ou Pool Manager' , vérifiez quel caller_pc a demandé un grand nombre de tampons
9800WLC#show buffers
9800WLC#show buffers usage
Si l'allocateur supérieur est 'mananged_chunk_process()' ou est un 'Chunk Manager' processus, cela signifie qu'un ou plusieurs blocs allouent une grande quantité de mémoire.
9800WLC#show chunk summary
9800WLC#show chunk brief
Si le processus MallocLite est l'allocateur principal
9800WLC#show memory lite-chunks totals
9800WLC#show memory lite-chunks stats
Dépannage des fuites de mémoire au niveau de la plate-forme Polaris
Vérifiez le % d'utilisation de la mémoire pour connaître les ressources mémoire disponibles sur la plate-forme.
9800WLC#show Platform resources
Vérifiez le snapshot de la mémoire globale du système.
9800WLC#show platform software process slot chassis active R0 Monitor | in Mem
Vérifiez tous les processus de la plate-forme triés en mémoire.
9800WLC#show process memory platform sorted
9800WLC#show platform software process memory chassid active r0 all sorted
Vérifier l'état des sites d'appels à la dernière heure.
9800WLC#show process memory platform accounting
Choisissez le meilleur candidat parmi les deux résultats CLI précédents et activez les débogages pour les processus individuels.
9800WLC#debug platform software memory <process> chassis <1-2/active/standby> R0 alloc callsite stop
9800WLC#debug platform software memory <process> chassis <1-2/active/standby> R0 alloc callsite clear
9800WLC#debug platform software memory <process> chassis <1-2/active/standby> R0 alloc backtrace start <CALL_SITE> depth 10
9800WLC#debug platform software memory <process> chassis <1-2/active/standby> R0 alloc callsite start
!! Running these debugs has no impact to device
Collectez le résultat quelques minutes (15 minutes à une heure) après le lancement des débogages.
9800WLC#show platform software memory <process> chassis <1-2/active/standby> R0 alloc backtrace
!! Capture this output three times, with a 5-10 minutes interval between each capture, to identify the pattern.
Recherchez call_diff, alloue et libère la valeur avec le backtrace respectif pour chaque processus.
9800WLC#show platform software memory <process> chassis <1-2/active/standby> R0 alloc callsite brief
Remarque : call_diff = allocs - frees
Si allocs = free, aucune fuite de mémoire
Si free = 0, fuite de mémoire
Si allocs != libère, peut-être ou peut-être pas une fuite de mémoire (si call_diff est plus, cela indique de fortes chances de fuite de mémoire)
Capturez les données de la mémoire de la base de données pour chaque processus.
9800WLC#show platform software memory <process> chassis <1-2/active/standby>active R0 alloc type data brief
9800WLC#show platform software memory database <process> chassis <1-2/active/standby> chassis active R0 brief
Vérifiez les informations de montage du système pour vérifier l'utilisation de la mémoire pour le système de fichiers virtuel créé temporairement.
9800WLC#show platform software mount
Recommandation
Reportez-vous aux guides de configuration, aux fiches techniques et aux notes de version appropriés pour obtenir des recommandations relatives à la mémoire et aux limites d'évolutivité, et assurez-vous que le WLC est mis à niveau vers la dernière version recommandée.