O conjunto de documentação deste produto faz o possível para usar uma linguagem imparcial. Para os fins deste conjunto de documentação, a imparcialidade é definida como uma linguagem que não implica em discriminação baseada em idade, deficiência, gênero, identidade racial, identidade étnica, orientação sexual, status socioeconômico e interseccionalidade. Pode haver exceções na documentação devido à linguagem codificada nas interfaces de usuário do software do produto, linguagem usada com base na documentação de RFP ou linguagem usada por um produto de terceiros referenciado. Saiba mais sobre como a Cisco está usando a linguagem inclusiva.
A Cisco traduziu este documento com a ajuda de tecnologias de tradução automática e humana para oferecer conteúdo de suporte aos seus usuários no seu próprio idioma, independentemente da localização. Observe que mesmo a melhor tradução automática não será tão precisa quanto as realizadas por um tradutor profissional. A Cisco Systems, Inc. não se responsabiliza pela precisão destas traduções e recomenda que o documento original em inglês (link fornecido) seja sempre consultado.
Este documento fornece uma visão geral do ajuste de buffer com base nas plataformas atuais e fornece informações gerais sobre o comando show buffers.
Não existem requisitos específicos para este documento.
Este documento não se restringe a versões de software e hardware específicas.
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se você estiver trabalhando em uma rede ativa, certifique-se de que entende o impacto potencial de qualquer comando antes de utilizá-lo.
Para obter mais informações sobre convenções de documento, consulte as Convenções de dicas técnicas Cisco.
O ajuste de buffer permite modificar a maneira como um roteador aloca buffers de sua memória disponível e ajuda a evitar quedas de pacotes durante um burst temporário de tráfego.
Para determinar se seu roteador precisa ter seu buffer sintonizado, use os comandos show interfaces e show buffers.
Se você tiver a saída dos comandos show interfaces e show buffers, ou a saída do show technical-support (no modo de ativação) do seu dispositivo Cisco, você pode usar o Cisco CLI Analyzer para exibir problemas e correções potenciais. Para usar o Cisco CLI Analyzer, você deve ser um cliente registrado, estar conectado e com o JavaScript habilitado.
Abaixo encontra-se um exemplo da saída do comando show interfaces:
Output queue 0/40, 1041 drops; input queue 0/75, 765 drops 35252345 packets input, 547082589 bytes, 940 no buffer
As quedas de entrada e de saída são devido à substituição das filas de entrada e de saída por uma intermitência de tráfego. Isso não está relacionado a um problema de buffer, mas a uma limitação de desempenho de switching de processo.
"Sem buffer" representa o número de pacotes descartados porque não há nenhum buffer livre para copiar o pacote.
Usando o comando show buffers, observe o tamanho do buffer correspondente à unidade de transmissão máxima (MTU) da interface:
Middle buffers, 600 bytes (total 150, permanent 25): 147 in free list (10 min, 150 max allowed) 61351931 hits, 137912 misses, 51605 trims, 51730 created 91652 failures (0 no memory)
A tabela a seguir explica a saída:
Palavra-chave | Descrição |
---|---|
total | O número total de buffers no conjunto, incluindo os buffers utilizados e os não utilizados. |
permanente | O número permanente de buffers alocados no conjunto. Esses buffers estão sempre no pool e não podem ser cortados. |
in free list | O número de buffers atualmente disponíveis no conjunto que estão livres para uso. |
min | O número mínimo de buffers que o roteador deve tentar manter "na lista livre". Se o número de buffers na “lista livre” ficar abaixo do valor mínimo, o roteador deverá tentar criar mais buffers para o pool. |
max allowed | O número máximo de buffers permitido "na lista livre". Se o número de buffers em "in free list" for maior que o valor "max allowed", o roteador deverá tentar cortar os buffers do pool. |
hits | O número de buffers alocados com sucesso a partir da lista livre. |
chamadas perdidas | O número de vezes que um buffer foi solicitado, mas nenhum buffer está disponível na lista livre ou quando há menos de "min" buffers na lista livre. |
trims | O número de buffers que foram excluídos do pool quando o número de buffers na lista livre" exceder o número máximo permitido de buffers. |
criado | O número de buffers que foram criados no conjunto quando o número de buffers "in free list" era inferior a "min". |
sem memória | O número de vezes em que o roteador tentou criar novos buffers mas não pôde devido à insuficiência de memória livre no roteador. |
falhas | O número de falhas para conceder um buffer a um solicitante abaixo do tempo de interrupção (lembre-se que o roteador pode criar novos buffers no nível de switching de processo, de modo que a "falha" não ocorre a menos que haja "falta de memória"). O número de "falhas" representa o número de pacotes que caíram devido à falta de buffer. |
Como buffers são gerenciados pelo roteador
O número de buffers "na lista livre" é o número de buffers disponíveis. Quando uma solicitação de buffer chega, um buffer da "lista de disponibilidade" é alocado.
Os buffers do IOS são usados por dois motivos principais:
Para tratar o tráfego que termina no roteador.
Quando os pacotes estão sendo comutados por processo.
Se não houver buffers disponíveis e a comutação rápida estiver ativada, haverá uma falha de buffer e o pacote será descartado. Quando o processo do gerenciador do pool de buffers detecta uma falha de buffer, ele "cria" um novo buffer para evitar falhas futuras.
O roteador não criará um novo buffer se o número "na lista livre" for igual ao valor "máximo permitido". Se não houver memória suficiente no roteador para criar um novo buffer, isso será registrado como "sem memória". Se o número "in free list" for maior que o número "max allowed", o roteador "corta" alguns buffers em excesso.
O número de "falhas" e "sem memória" são as únicas áreas de preocupação. Poderão ocorrer falhas, mas elas ficarão estáveis depois de um certo tempo. O roteador cria ou apara os buffers conforme necessário para estabilizar o número de falhas. Se o número de falhas continuar a aumentar, o ajuste de buffer poderá ser necessário.
Se não houver memória suficiente para criar novos buffers, procure um vazamento de buffer ou um problema de memória mais geral. Os buffers não são criados no caminho de switching rápido, portanto, se o roteador tentar comutar rapidamente um pacote e não houver nenhum buffer disponível, o pacote será descartado e uma falha será relatada. Um novo buffer será criado na próxima vez que o gerenciador do pool de buffers for executado.
Pacotes comutados rápidos e pacotes de processo comutados compartilham os mesmos buffers. Esses buffers ficam na memória compartilhada. A memória compartilhada está localizada na RAM dinâmica (DRAM) nos Cisco 1600 e 2500 Series Routers ou na RAM compartilhada (SRAM) para os Cisco 4000, 4500 e 4700 Series Routers.
As primeiras linhas do comando show memory informam a quantidade de memória compartilhada que você possui, a quantidade que está sendo usada atualmente e o seu ponto mais baixo. Quando um pacote não pode ser comutado rapidamente, é inserido um ponteiro para o pacote na fila de entrada de switching do processo, mas o pacote não é copiado.
Esta é a saída do comando show buffers em uma plataforma de extremidade baixa (Cisco 4500):
router# show buffers Buffer elements: 471 in free list (500 max allowed) 870696495 hits, 0 misses, 0 created Public buffer pools: Small buffers, 104 bytes (total 50, permanent 50): 49 in free list (20 min, 150 max allowed) 27301678 hits, 23 misses, 20 trims, 20 created 0 failures (0 no memory) Middle buffers, 600 bytes (total 150, permanent 25): 147 in free list (10 min, 150 max allowed) 61351931 hits, 137912 misses, 51605 trims, 51730 created 91652 failures (0 no memory) Big buffers, 1524 bytes (total 67, permanent 50): 67 in free list (5 min, 150 max allowed) 46293638 hits, 455 misses, 878 trims, 895 created 0 failures (0 no memory) VeryBig buffers, 4520 bytes (total 96, permanent 10): 79 in free list (0 min, 100 max allowed) 11818351 hits, 246 misses, 98 trims, 184 created 243 failures (0 no memory) Large buffers, 5024 bytes (total 10, permanent 0): 10 in free list (0 min, 10 max allowed) 4504003 hits, 873040 misses, 759543 trims, 759553 created 873040 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) Interface buffer pools: TokenRing0 buffers, 4516 bytes (total 48, permanent 48): 0 in free list (0 min, 48 max allowed) 3099742 hits, 9180771 fallbacks 16 max cache size, 1 in cache TokenRing1 buffers, 4516 bytes (total 48, permanent 48): 0 in free list (0 min, 48 max allowed) 335172 hits, 403668 fallbacks 16 max cache size, 16 in cache Serial1 buffers, 1524 bytes (total 96, permanent 96): 63 in free list (0 min, 96 max allowed) 33 hits, 0 fallbacks 0 max cache size, 0 in cache Serial2 buffers, 1524 bytes (total 96, permanent 96): 63 in free list (0 min, 96 max allowed) 701370936 hits, 268 fallbacks 0 max cache size, 0 in cache Serial3 buffers, 1524 bytes (total 96, permanent 96): 63 in free list (0 min, 96 max allowed) 33 hits, 0 fallbacks 0 max cache size, 0 in cache Serial0 buffers, 4546 bytes (total 96, permanent 96): 28 in free list (0 min, 96 max allowed) 346854 hits, 5377043 fallbacks 32 max cache size, 27 in cache
Os pools do buffer de interface são usados pelas interfaces para entrada/saída (E/S). Quando não há mais buffers na lista de buffers de interface livres, o roteador procura os conjuntos de buffers públicos como recuo. Não há visita de desempenho para um recuo.
Colocar em cache é uma manipulação de software que acelera a disponibilidade de buffers para códigos de drivers de nível de interrupção ignorando alguns overheads.
Observação: normalmente, os buffers de interface não devem ser ajustados.
Esta é a saída do comando show buffers em uma plataforma high-end:
Router# show buffers Buffer elements: 498 in free list (500 max allowed) 326504974 hits, 0 misses, 0 created Public buffer pools: Small buffers, 104 bytes (total 150, permanent 150): 140 in free list (30 min, 250 max allowed) 564556247 hits, 148477066 misses, 16239797 trims, 16239797 created 29356200 failures (0 no memory) Middle buffers, 600 bytes (total 120, permanent 120): 116 in free list (20 min, 200 max allowed) 319750574 hits, 85689239 misses, 9671164 trims, 9671164 created 26050704 failures (0 no memory) Big buffers, 1524 bytes (total 100, permanent 100): 98 in free list (10 min, 300 max allowed) 20130595 hits, 14796572 misses, 251916 trims, 251916 created 11813639 failures (0 no memory) VeryBig buffers, 4520 bytes (total 15, permanent 15): 14 in free list (5 min, 300 max allowed) 22966334 hits, 3477687 misses, 13113 trims, 13113 created 2840089 failures (0 no memory) Large buffers, 5024 bytes (total 12, permanent 12): 12 in free list (0 min, 30 max allowed) 849034 hits, 1979463 misses, 1028 trims, 1028 created 1979456 failures (0 no memory) Huge buffers, 18024 bytes (total 6, permanent 5): 4 in free list (2 min, 13 max allowed) 338440 hits, 1693496 misses, 1582 trims, 1583 created 1640218 failures (0 no memory)
Pools de Cabeçalhos
Os pools de buffer públicos estão localizados na DRAM e são chamados de buffers de sistema. A memória compartilhada no Route/Switch Processor (RSP) é chamada de MEMD (memória de pacote do sistema) e permite 2 MB de memória. No RP (Processador de Rotas) e no SP (Processador de Switch) (ou SSP – Processador de Switch de Silicone), os buffers de sistema estão localizados no RP e o MEMD está localizado no SP (ou SSP).
Quando um pacote chega, ele é salvo no MEMD pelo processador de interface receptor (exceto no caso do Versatile Interface Processor - VIP). Se não puder ser comutado rapidamente, o pacote inteiro será copiado em um buffer de sistema na DRAM. Portanto, os buffers que você vê no comando show buffers são os buffers do sistema localizados na DRAM.
O comando show controllers cbus mostra os buffers de interface no MEMD. Novamente, não é recomendado ajustar os buffers de interface. Quando um pacote não pode ser comutado rapidamente e é copiado para um buffer do sistema, o pacote é descartado e uma falha é contada se não houver nenhum buffer do sistema disponível.
Os Cisco 3600 e 7200 Series Routers usam partículas. Os buffers da interface são buffers atômicos, chamados de partículas, nas quais os pacotes são divididos. Quando um pacote não pode ser comutado rapidamente, o roteador precisa remontá-lo em um buffer de sistema, pois o código de switching de processo não tem capacidade para lidar com partículas.
Abaixo está a saída do comando show buffers em um Cisco 3600:
Router# show buffers Buffer elements: 499 in free list (500 max allowed) 136440 hits, 0 misses, 0 created Public buffer pools: Small buffers, 104 bytes (total 50, permanent 50): 49 in free list (20 min, 150 max allowed) 4069435 hits, 141 misses, 73 trims, 73 created 52 failures (0 no memory) Middle buffers, 600 bytes (total 25, permanent 25): 25 in free list (10 min, 150 max allowed) 628629 hits, 21 misses, 21 trims, 21 created 3 failures (0 no memory) Big buffers, 1524 bytes (total 50, permanent 50): 50 in free list (5 min, 150 max allowed) 9145 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) Interface buffer pools: CD2430 I/O buffers, 1524 bytes (total 0, permanent 0): 0 in free list (0 min, 0 max allowed) 0 hits, 0 fallbacks Header pools: Header buffers, 0 bytes (total 265, permanent 256): 9 in free list (10 min, 512 max allowed) 253 hits, 3 misses, 0 trims, 9 created 0 failures (0 no memory) 256 max cache size, 256 in cache Particle Clones: 1024 clones, 0 hits, 0 misses Public particle pools: F/S buffers, 256 bytes (total 384, permanent 384): 128 in free list (128 min, 1024 max allowed) 256 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) 256 max cache size, 256 in cache Normal buffers, 1548 bytes (total 512, permanent 512): 356 in free list (128 min, 1024 max allowed) 188 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) 128 max cache size, 128 in cache Private particle pools: Ethernet0/0 buffers, 1536 bytes (total 96, permanent 96): 0 in free list (0 min, 96 max allowed) 96 hits, 0 fallbacks 96 max cache size, 64 in cache Serial0/0 buffers, 1548 bytes (total 14, permanent 14): 0 in free list (0 min, 14 max allowed) 14 hits, 0 fallbacks 14 max cache size, 14 in cache BRI0/0 buffers, 1548 bytes (total 14, permanent 14): 0 in free list (0 min, 14 max allowed) 14 hits, 0 fallbacks 14 max cache size, 14 in cache BRI0/0:1 buffers, 1548 bytes (total 14, permanent 14): 0 in free list (0 min, 14 max allowed) 14 hits, 0 fallbacks 14 max cache size, 14 in cache BRI0/0:2 buffers, 1548 bytes (total 14, permanent 14): 0 in free list (0 min, 14 max allowed) 14 hits, 0 fallbacks 14 max cache size, 14 in cache TokenRing0/0 buffers, 1548 bytes (total 64, permanent 64): 0 in free list (0 min, 64 max allowed) 64 hits, 0 fallbacks 64 max cache size, 64 in cache 4 buffer threshold, 0 threshold transitions
Os conjuntos de partícula privada são utilizados pelas interfaces e não devem ser ajustados. Quando nenhum buffer está disponível na lista livre, o roteador volta aos conjuntos de partícula pública.
Os buffers de cabeçalho são usados para registrar uma lista de todas as partículas pertencentes a um pacote.
Observação: os buffers do sistema são usados para a comutação de processos. No Cisco 3600, todos esses buffers estão na memória de E/S, localizada na DRAM. Você pode especificar a quantidade de memória de E/S usando o comando memory-size iomem. No Cisco 7200, os conjuntos de buffer de partícula de interface para os PAs (Adaptadores de porta) de grande largura de banda estão localizados na SRAM.
Abaixo está um exemplo do comando show buffers:
Middle buffers, 600 bytes (total 150, permanent 25): 147 in free list (10 min, 150 max allowed) 61351931 hits, 137912 misses, 51605 trims, 51730 created 91652 failures (0 no memory)
Neste exemplo, os buffers intermediários têm muitas falhas. Este não é um problema sério, pois representa apenas 0,1 % das ocorrências de resultado. Esses números devem ser facilmente melhorados com algum ajuste de buffer.
O ajuste de buffer é feito apenas quando os pacotes não podem ser comutados por CEF.
Dependendo da arquitetura do roteador, os buffers ajustados geralmente pertencem à memória de E/S (low-end) ou à memória principal (high-end). Antes de ajustar os buffers, verifique primeiro se você tem E/S livre ou memória principal suficiente usando as primeiras linhas do comando show memory.
Veja a seguir alguns valores gerais que podem ser usados:
permanente: pegue o número total de buffers em um pool e adicione cerca de 20%.
min-free: defina min-free como aproximadamente 20-30% do número permanente de buffers alocados no pool.
max-free: defina max-free para algo maior que a soma de permanentes e mínimos.
No exemplo de ajuste de buffer acima, poderíamos inserir estes comandos no modo de configuração global:
buffers middle permanent 180 buffers middle min-free 50 buffers middle max-free 230
Normalmente, o software Cisco IOS® cria buffers dinamicamente para que essas configurações sejam corretas. No entanto, no caso de um pico de tráfego, o roteador pode não ter tempo suficiente para criar os novos buffers e o número de falhas pode continuar a aumentar. Use o comando buffers para alterar as configurações do pool de buffers padrão. Certifique-se de que as alterações nos valores do buffer sejam feitas com cuidado, já que configurações inadequadas do buffer podem afetar o desempenho do sistema. Se você quiser limpar os contadores de buffer, o roteador terá que ser recarregado.
Existem dois tipos de intermitência de tráfego:
Burst lento: Nesse caso, o roteador tem tempo suficiente para criar novos buffers. Aumente o número de buffers min-free. Usando buffers livres, você pode atingir o valor de min-free e, em seguida, criar novos buffers.
Intermitência rápida: com intermitências rápidas de tráfego, o roteador não tem tempo suficiente para criar novos buffers; portanto, você deve usar os buffers livres. Para fazer isso, modifique o número de buffers permanentes.
Conclusão: se o contador de criação aumentar após o ajuste inicial, aumente o min-free (intermitência lenta). Se o contador de falhas aumentar, mas não o contador de criação (intermitência rápida), aumente o valor permanente.
Você pode inserir o comando fabric buffer-reserve para melhorar o throughput do sistema e reservar os buffers ASIC.
Este comando é suportado nestes módulos:
WS-X6704-10GE
WS-X6748-SFP
WS-X6748-GE-TX
WS-X6724-SFP
Esse comando não é suportado nos Cisco 7600 Series Routers configurados com um Supervisor Engine 32.
fabric buffer-reserve [high | low | medium | value]
Cuidado: use esse comando somente sob a direção do Cisco TAC.
Estas são circunstâncias comuns em que este comando é útil:
O protocolo de linha fica inativo para várias interfaces
As saturações são vistas em várias interfaces
As portas frequentemente saem e entram no EtherChannel
O teste TestMacNotification falha repetidamente para placas de linha com DFC
Abaixo está um exemplo da saída do comando show buffers:
Big buffers, 1524 bytes (total 1556, permanent 50): 52 in free list (5 min, 150 max allowed) 43670437 hits, 5134 misses, 0 trims, 1506 created 756 failures (0 no memory)
Essa saída indica um vazamento de buffer no pool de buffers grande. Há ao todo 1556 buffers grandes no roteador e apenas 52 estão na lista de livres. Algo está utilizando todos os buffers e não os está liberando. Para obter mais informações sobre vazamentos de buffer, consulte Troubleshooting de Vazamentos de Buffer.
Revisão | Data de publicação | Comentários |
---|---|---|
1.0 |
14-Dec-2001 |
Versão inicial |