Este documento descreve como verificar a memória do sistema e solucionar problemas relacionados à memória nos Cisco ASR 1000 Series Aggregation Services Routers (ASR1K).
A Cisco recomenda que você tenha conhecimento básico sobre estes tópicos:
As informações neste documento são baseadas nestas versões de software e hardware:
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.
Com a maioria das plataformas de roteadores baseadas em software, a maioria dos processos de software internos é executada na memória do Cisco IOS®. A plataforma ASR1K introduz uma arquitetura de software distribuído que move muitas responsabilidades do sistema operacional (SO) do processo do IOS. O IOS nessa arquitetura, anteriormente responsável por quase todas as operações internas, agora é executado como um dos muitos processos Linux. Isso permite que outros processos Linux compartilhem a responsabilidade pela operação do roteador.
O ASR1K executa o IOS-XE, não o IOS tradicional. No IOS-XE, um componente Linux executa o kernel e o IOS é executado como um daemon, que em seguida é conhecido como IOSd (IOS-Daemon). Isso cria um requisito para que a memória seja dividida entre o kernel do Linux e a instância do IOSd.
A memória dividida entre IOSd e o resto do sistema é fixa na inicialização e não pode ser modificada. Para um sistema de 4 GB, o IOSd é alocado em aproximadamente 2 GB e, para um sistema de 8 GB, o IOSd é alocado em aproximadamente 4 GB (com redundância de software desabilitada).
Como o ASR1K tem uma arquitetura de 64 bits, qualquer ponteiro que esteja em cada estrutura de dados no sistema consome o dobro da quantidade de memória quando comparado às plataformas tradicionais de CPU única (8 bytes em vez de 4 bytes). O endereçamento de 64 bits permite que o IOS supere a limitação de memória endereçável de 2 GB do IOS, o que permite que ele escale para milhões de rotas.
O pool de memória LSMPI (Shared Memory Punt Interface) do Linux é usado para transferir pacotes do processador de encaminhamento para o processador de roteamento. Esse pool de memória é gravado na inicialização do roteador em buffers pré-alocados, ao contrário do pool de processadores, onde o IOS-XE aloca blocos de memória dinamicamente. Na plataforma ASR1K, o pool lsmpi_io tem pouca memória livre geralmente menos de 1000 bytes â , o que é normal. A Cisco recomenda que você desative o monitoramento do pool de LSMPI pelos aplicativos de gerenciamento de redes para evitar alarmes falsos.
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
Se houver algum problema no caminho LSMPI, o contador de falha de saída de dispositivo parece incrementar nesta saída de comando (alguma saída omitida):
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>
O ASR1K inclui estes elementos funcionais em seu sistema:
Como tal, é necessário monitorar a utilização da memória por cada um desses processadores em um ambiente de produção.
Os processadores de controle executam o software Cisco IOS-XE que consiste em um kernel baseado em Linux e um conjunto comum de programas utilitários no nível do SO, que inclui o Cisco IOS executado como um processo do usuário na placa RP.
Insira o comando show platform software status control-processor brief para monitorar o uso da memória no RP, no ESP e no SIP. O estado do sistema deve ser idêntico, em relação a aspectos como a configuração e o tráfego do recurso, enquanto você compara o uso da memória.
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%)
Cada processador listado na saída anterior pode relatar o status como Saudável, Aviso ou Crítico, que depende da quantidade de memória livre. Se algum dos processadores exibir o status de Aviso ou Crítico, insira o comando monitor platform software process<slot> para identificar o contribuinte 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>
Você pode ser solicitado a definir o tipo de terminal antes de executar o comando 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.
O tipo de terminal é definido como rede por padrão. Para definir o tipo de terminal apropriado, insira o comando terminal terminal-type:
ASR1K#terminal-type vt100
Depois que o tipo de terminal correto for configurado, você poderá inserir o comando monitor platform software process (alguma saída omitida):
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>
Se você observar que o processo linux_iosd-imag contém uma quantidade invulgarmente grande de memória na saída do comando rp ative do software da plataforma de monitor, concentre seus esforços de solução de problemas na instância do IOSd. É provável que um processo específico no thread IOSd não liberte a memória. Solucione problemas relacionados à memória na instância do IOSd da mesma forma que você soluciona problemas em qualquer plataforma de encaminhamento baseada em software, como a série 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>
Insira o comando show process memory sorted para identificar o processo do problema:
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
A classificação de tráfego é uma das funções mais básicas encontradas em roteadores e switches. Muitos aplicativos e recursos exigem que os dispositivos de infraestrutura ofereçam esses serviços diferenciados para diferentes usuários com base em requisitos de qualidade. O processo de classificação de tráfego deve ser rápido, para que o throughput do dispositivo não seja muito degradado. A plataforma ASR1K usa a 4ª geração de memória endereçável de conteúdo ternário (TCAM4) para essa finalidade.
Para determinar o número total de células TCAM disponíveis na plataforma e o número de entradas livres restantes, insira este comando:
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
Se o processador de encaminhamento for executado com um valor criticamente baixo em células TCAM livres, o ESP poderá gerar registros semelhantes aos mostrados abaixo e poderá travar. Se não houver redundância, isso resulta em interrupção de tráfego.
%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
Além da memória física, também há memória anexada ao ASIC do Quantum Flow Processor (QFP) que é usado para encaminhar estruturas de dados, que inclui dados como FIB (Forwarding Information Base) e políticas de QoS. A quantidade de DRAM disponível para o QFP ASIC é fixa, com intervalos de 256 MB, 512 MB e 1 GB, dependendo do módulo ESP.
Insira o comando show platform hardware qfp ative infrastructure exmem statistics para determinar o uso da memória exmem. A soma da memória para IRAM e DRAM usada dá a memória QFP total que está em uso.
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
O IRAM é a memória de instrução do software QFP. Caso a DRAM seja esgotada, a IRAM disponível pode ser usada. Se o IRAM estiver com memória muito baixa, você poderá ver esta mensagem de erro:
%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
Para determinar o processo que consome a maior parte da memória, insira o comando show platform hardware qfp ative 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
Revisão | Data de publicação | Comentários |
---|---|---|
1.0 |
19-Nov-2013 |
Versão inicial |