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. All of the devices used in this document started with a cleared (default) configuration. 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 uma intermitência temporária 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 (do modo enable) do seu dispositivo Cisco, você poderá 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á 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 aparados. |
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 "na lista livre" for maior que o valor "máximo permitido", o roteador deve tentar aparar 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" 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 entra, um buffer da "lista livre" é alocado.
Os buffers do IOS são usados por dois motivos principais:
Para tratar do 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 no buffer e o pacote será descartado. Quando o processo do gerenciador de pool de buffer detecta uma falha de buffer, ele "cria" um novo buffer para evitar falhas futuras.
O roteador não cria 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á gravado como "sem memória". Se o número "na lista livre" for maior que o número "máximo permitido", o roteador "aparenta" 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, talvez seja necessário ajustar o buffer.
Se não houver memória suficiente para criar novos buffers, procure um vazamento de buffer ou um problema mais geral de memória. Os buffers não são criados no caminho de switching rápida, portanto, se o roteador tentar comutar rapidamente um pacote e não houver buffer disponível, o pacote será descartado e uma falha será relatada. Um novo buffer é 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.
Aqui está 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 entra, ele é salvo no MEMD pelo processador da interface de recebimento (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 vistos 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 é aconselhável ajustar os buffers da interface. Quando um pacote não pode ser comutado rapidamente e é copiado para um buffer de sistema, o pacote é descartado e uma falha é contada se não houver um buffer de 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 switching de processo. 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 do meio 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 somente quando os pacotes não podem ser comutados por CEF.
Dependendo da arquitetura do roteador, os buffers configurados 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: use o número total de buffers de um pool e adicione cerca de 20%.
min-free: definir o mínimo livre como aproximadamente 20-30% do número permanente de buffers alocados no pool.
sem máx.: defina max-free com um valor maior que a some de permanentes e mínimos.
No exemplo de ajuste de buffer acima, podemos 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 estejam corretas. No entanto, no caso de uma intermitência 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 padrão do pool de buffer. Certifique-se de que as alterações nos valores de buffer sejam feitas com cuidado, pois configurações de buffer inadequadas 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:
Intermitência lenta: Nesse caso, o roteador tem tempo suficiente para criar novos buffers. Aumente o número de buffers min-free. Usando buffers livres, você pode alcançar o valor min-free e criar novos buffers.
Burst rápido: Com rajadas de tráfego rápidas, o roteador não tem tempo suficiente para criar novos buffers, então 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 (burst lento). Se o contador de falha aumentar, mas não o contador de criação (burst rápido), 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 roteadores Cisco 7600 Series configurados com um Supervisor Engine 32.
fabric buffer-reserve [high | low | medium | value]
Cuidado: use este 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 observadas em várias interfaces
As portas frequentemente saem e se juntam ao EtherChannel
O teste TestMacNotification falha repetidamente em 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.