Ce document décrit comment vérifier la mémoire système et résoudre les problèmes liés à la mémoire sur les routeurs à services d'agrégation de la gamme Cisco ASR 1000 (ASR1K).
Cisco vous recommande de prendre connaissance des rubriques suivantes :
Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :
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. If your network is live, make sure that you understand the potential impact of any command.
Avec la plupart des plates-formes de routeurs basées sur des logiciels, la majorité des processus logiciels internes sont exécutés dans la mémoire Cisco IOS®. La plate-forme ASR1K introduit une architecture logicielle distribuée qui déplace de nombreuses responsabilités de système d'exploitation (OS) hors du processus IOS. L'IOS dans cette architecture, qui était auparavant responsable de presque toutes les opérations internes, fonctionne maintenant comme l'un des nombreux processus Linux. Cela permet aux autres processus Linux de partager la responsabilité du fonctionnement du routeur.
L'ASR1K exécute IOS-XE, pas l'IOS traditionnel. Dans IOS-XE, un composant Linux exécute le noyau, et l'IOS fonctionne comme un démon, qui est ci-après appelé IOSd (IOS-Daemon). Cela crée une exigence de division de la mémoire entre le noyau Linux et l'instance IOSd.
La mémoire partagée entre IOSd et le reste du système est fixe au démarrage et ne peut pas être modifiée. Pour un système de 4 Go, IOSd est alloué à environ 2 Go et pour un système de 8 Go, IOSd est alloué à environ 4 Go (avec redondance logicielle désactivée).
Comme l'ASR1K possède une architecture 64 bits, tout pointeur qui se trouve dans chaque structure de données du système consomme deux fois plus de mémoire que les plates-formes à processeur unique traditionnelles (8 octets au lieu de 4 octets). L’adressage 64 bits permet à IOS de surmonter la limite de mémoire adressable de 2 Go de l’IOS, ce qui lui permet de passer à des millions de routes.
Le pool de mémoire LSMPI (Linux Shared Memory Punt Interface) est utilisé afin de transférer des paquets du processeur de transfert vers le processeur de routage. Ce pool de mémoire est découpé lors de l'initialisation du routeur en mémoires tampon préallouées, par opposition au pool de processeurs, où IOS-XE alloue des blocs de mémoire de manière dynamique. Sur la plate-forme ASR1K, le pool lsmpi_io a peu de mémoire libre - généralement moins de 1000 octets - ce qui est normal. Cisco recommande que vous désactivez la surveillance de la réserve de LSMPI par les applications d' administration réseau afin d' éviter des alarmes faux.
ASR1000# show memory statistics
Head Total(b) Used(b) Free(b) Lowest(b) Largest(b)
Processor 2C073008 1820510884 173985240 1646525644 1614827804 1646234064
lsmpi_io 996481D0 6295088 6294120 968 968 968
S'il y a des problèmes dans le chemin LSMPI, le compteur d'échec de sortie de périphérique apparaît incrémenté dans cette sortie de commande (certains résultats sont omis) :
ASR1000-1# show platform software infrastructure lsmpi driver
LSMPI Driver stat ver: 3
Packets:
In: 674572
Out: 259861
Rings:
RX: 2047 free 0 in-use 2048 total
TX: 2047 free 0 in-use 2048 total
RXDONE: 2047 free 0 in-use 2048 total
TXDONE: 2047 free 0 in-use 2048 total
Buffers:
RX: 7721 free 473 in-use 8194 total
Reason for RX drops (sticky):
Ring full : 0
Ring put failed : 0
No free buffer : 0
Receive failed : 0
Packet too large : 0
Other inst buf : 0
Consecutive SOPs : 0
No SOP or EOP : 0
EOP but no SOP : 0
Particle overrun : 0
Bad particle ins : 0
Bad buf cond : 0
DS rd req failed : 0
HT rd req failed : 0
Reason for TX drops (sticky):
Bad packet len : 0
Bad buf len : 0
Bad ifindex : 0
No device : 0
No skbuff : 0
Device xmit fail : 0
Device xmit rtry : 0
Tx Done ringfull : 0
Bad u->k xlation : 0
No extra skbuff : 0
<snip>
L'ASR1K comprend les éléments fonctionnels suivants dans son système :
Il est donc nécessaire de surveiller l'utilisation de la mémoire par chacun de ces processeurs dans un environnement de production.
Les processeurs de contrôle exécutent le logiciel Cisco IOS-XE qui se compose d'un noyau Linux et d'un ensemble commun de programmes d'utilitaire au niveau du système d'exploitation, qui inclut Cisco IOS qui s'exécute en tant que processus utilisateur sur la carte RP.
Entrez la commande show platform software status control-processor brief afin de surveiller l'utilisation de la mémoire sur le RP, l'ESP et le SIP. L'état du système doit être identique, en ce qui concerne des aspects tels que la configuration des fonctionnalités et le trafic, tandis que vous comparez l'utilisation de la mémoire.
ASR1K# show platform software status control-processor brief
<snip>
Memory (kB)
Slot Status Total Used (Pct) Free (Pct) Committed (Pct)
RP0 Healthy 3907744 1835628 (47%) 2072116 (53%) 2614788 (67%)
ESP0 Healthy 2042668 789764 (39%) 1252904 (61%) 3108376 (152%)
SIP0 Healthy 482544 341004 (71%) 141540 (29%) 367956 (76%)
SIP1 Healthy 482544 315484 (65%) 167060 (35%) 312216 (65%)
Chaque processeur répertorié dans la sortie précédente peut indiquer l'état Sain, Avertissement ou Critique, qui dépend de la quantité de mémoire disponible. Si l'un des processeurs affiche l'état Avertissement ou Critique, entrez la commande monitor platform software process<slot> afin d'identifier le contributeur principal.
ASR1K# monitor platform software process ?
0 SPA-Inter-Processor slot 0
1 SPA-Inter-Processor slot 1
F0 Embedded-Service-Processor slot 0
F1 Embedded-Service-Processor slot 1
FP Embedded-Service-Processor
R0 Route-Processor slot 0
R1 Route-Processor slot 1
RP Route-Processor
<cr>
Vous pouvez être invité à définir le type de terminal avant de pouvoir exécuter la commande monitor platform software process :
ASR1K# monitor platform software process r0
Terminal type 'network' unsupported for command
Change the terminal type with the 'terminal terminal-type' command.
Le type de terminal est défini sur réseau par défaut. Afin de définir le type de terminal approprié, entrez la commande terminal-type :
ASR1K#terminal terminal-type vt100
Une fois le type de terminal correct configuré, vous pouvez entrer la commande monitor platform software process (certains résultats sont omis) :
ASR1000# monitor platform software process r0
top - 00:34:59 up 5:02, 0 users, load average: 2.43, 1.52, 0.73
Tasks: 136 total, 4 running, 132 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.8%us, 2.3%sy, 0.0%ni, 96.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2009852k total, 1811024k used, 198828k free, 135976k buffers
Swap: 0k total, 0k used, 0k free, 1133544k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25956 root 20 0 928m 441m 152m R 1.2 22.5 4:21.32 linux_iosd-imag
29074 root 20 0 106m 95m 6388 S 0.0 4.9 0:14.86 smand
24027 root 20 0 114m 61m 55m S 0.0 3.1 0:05.07 fman_rp
25227 root 20 0 27096 13m 12m S 0.0 0.7 0:04.35 imand
23174 root 20 0 33760 11m 9152 S 1.0 0.6 1:58.00 cmand
23489 root 20 0 23988 7372 4952 S 0.2 0.4 0:05.28 emd
24755 root 20 0 19708 6820 4472 S 1.0 0.3 3:39.33 hman
28475 root 20 0 20460 6448 4792 S 0.0 0.3 0:00.26 psd
27957 root 20 0 16688 5668 3300 S 0.0 0.3 0:00.18 plogd
14572 root 20 0 4576 2932 1308 S 0.0 0.1 0:02.37 reflector.sh
<snip>
Si vous remarquez que le processus linux_iosd-imag contient une quantité exceptionnellement importante de mémoire dans la sortie de commande du processus logiciel de surveillance rp active, concentrez vos efforts de dépannage sur l'instance IOSd. Il est probable qu'un processus spécifique dans le thread IOSd ne libère pas la mémoire. Dépannez les problèmes de mémoire dans l'instance IOSd de la même manière que vous dépannez les plates-formes de transfert logicielles, telles que les gammes Cisco 2800, 3800 ou 3900.
ASR1K# monitor platform software process rp active
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25794 root 20 0 2929m 1.9g 155m R 99.9 38.9 1415:11 linux_iosd-imag
23038 root 20 0 33848 13m 10m S 5.9 0.4 30:53.87 cmand
9599 root 20 0 2648 1152 884 R 2.0 0.0 0:00.01 top
<snip>
Entrez la commande show process memory sorted afin d'identifier le processus de problème :
ASR1000# show process memory sorted
Processor Pool Total: 1733568032 Used: 1261854564 Free: 471713468
lsmpi_io Pool Total: 6295088 Used: 6294116 Free: 972
PID TTY Allocated Freed Holding Getbufs Retbufs Process
522 0 1587708188 803356800 724777608 54432 0 BGP Router
234 0 3834576340 2644349464 232401568 286163388 15876 IP RIB Update
0 0 263244344 36307492 215384208 0 0 *Init
La classification du trafic est l’une des fonctions les plus élémentaires des routeurs et des commutateurs. De nombreuses applications et fonctionnalités exigent que les périphériques d'infrastructure fournissent ces services différenciés à différents utilisateurs en fonction des exigences de qualité. Le processus de classification du trafic doit être rapide, de sorte que le débit du périphérique ne soit pas considérablement dégradé. La plate-forme ASR1K utilise la 4e génération de mémoire TCAM4 (Ternary Content Addressable Memory) à cette fin.
Afin de déterminer le nombre total de cellules TCAM disponibles sur la plate-forme, ainsi que le nombre d'entrées libres restantes, entrez cette commande :
ASR1000# show platform hardware qfp active tcam resource-manager usage
Total TCAM Cell Usage Information
----------------------------------
Name : TCAM #0 on CPP #0
Total number of regions : 3
Total tcam used cell entries : 65528
Total tcam free cell entries : 30422
Threshold status : below critical limit
Si le processeur de transfert fonctionne à un faible niveau critique sur les cellules TCAM libres, l'ESP peut générer des journaux similaires à ceux présentés ci-dessous et peut se bloquer. S'il n'y a pas de redondance, cela entraîne une interruption du trafic.
%CPPTCAMRM-6-TCAM_RSRC_ERR: SIP0: cpp_sp: Allocation failed because of insufficient
TCAM resources in the system.
%CPPOSLIB-3-ERROR_NOTIFY: SIP0: cpp_sp:cpp_sp encountered an error -
Traceback=1#s7f63914d8ef12b8456826243f3b60d7 errmsg:7EFFC525C000+1175
En plus de la mémoire physique, il y a également de la mémoire attachée à l'ASIC QFP (Quantum Flow Processor) qui est utilisée pour transférer des structures de données, qui incluent des données telles que les stratégies FIB (Forwarding Information Base) et QoS. La quantité de DRAM disponible pour l'ASIC QFP est fixe, avec des plages de 256 Mo, 512 Mo et 1 Go, dépendant du module ESP.
Entrez la commande show platform hardware qfp active infrastructure exmem statistics afin de déterminer l'utilisation de la mémoire exmem. La somme de la mémoire IRAM et DRAM utilisée donne la mémoire QFP totale utilisée.
BGL.I.05-ASR1000-1# show platform hardware qfp active infra exmem statistics user
Type: Name: IRAM, CPP: 0
Allocations Bytes-Alloc Bytes-Total User-Name
------------------------------------------------------
1 115200 115712 CPP_FIA
Type: Name: DRAM, CPP: 0
Allocations Bytes-Alloc Bytes-Total User-Name
-----------------------------------------------------
4 1344 4096 P/I
9 270600 276480 CEF
1 1138256 1138688 QM RM
1 4194304 4194304 TCAM
1 65536 65536 Qm 16
La mémoire IRAM est la mémoire d'instruction du logiciel QFP. En cas d'épuisement de la DRAM, vous pouvez utiliser la mémoire IRAM disponible. Si la mémoire IRAM est extrêmement faible, le message d'erreur suivant s'affiche :
%QFPOOR-4-LOWRSRC_PERCENT: F1: cpp_ha: QFP 0 IRAM resource low - 97 percent depleted
%QFPOOR-4-LOWRSRC_PERCENT: F1: cpp_ha: QFP 0 IRAM resource low - 98 percent depleted
Afin de déterminer le processus qui consomme la plus grande partie de la mémoire, entrez la commande show platform hardware qfp active infra exmem statistics user :
ASR1000# show platform hardware qfp active infra exmem statistics user
Type: Name: IRAM, CPP: 0
Allocations Bytes-Alloc Bytes-Total User-Name
----------------------------------------------------
1 115200 115712 CPP_FIA
Type: Name: DRAM, CPP: 0
Allocations Bytes-Alloc Bytes-Total User-Name
----------------------------------------------------
4 1344 4096 P/I
9 270600 276480 CEF
1 1138256 1138688 QM RM
1 4194304 4194304 TCAM
1 65536 65536 Qm 16
Révision | Date de publication | Commentaires |
---|---|---|
1.0 |
19-Nov-2013 |
Première publication |