Sistema de rede SONiC: Uso da memória do sistema no SONiC - "buff/available"
Summary: Este artigo explica o significado dos campos "buff/cache" e "avail Mem" na saída "top" na CLI nativa do Dell Networking SONiC.
Instructions
-
Pergunta 1: O que é buff/cache?
"buff/cache" é a quantidade de memória usada para buffers e cache do file system. Esse uso de memória é uma parte crucial de como o Linux gerencia e otimiza o desempenho do sistema. Vamos detalhar o que significa "buff/cache":
Buffers:
Nesse contexto, os buffers indicam uma parte da memória do sistema (RAM) usada para armazenar temporariamente os dados que estão sendo lidos ou gravados no disco. Quando um programa lê dados de um arquivo, por exemplo, os dados são carregados primeiro em um buffer na memória. Os buffers ajudam a melhorar o desempenho de E/S do disco, pois a leitura ou gravação na RAM é mais rápida do que acessar o disco físico. Os buffers também podem garantir que os dados sejam gravados no disco com mais eficiência, reduzindo o número de operações de E/S de disco.Cache:
Cache, nesse contexto, indica a porção da memória usada para armazenar dados acessados com frequência de arquivos e diretórios. O Linux usa um mecanismo chamado "cache de página" para armazenar em cache os dados de arquivos e diretórios que foram lidos ou gravados recentemente. Esses dados armazenados em cache são mantidos na memória para que, se os mesmos dados forem necessários novamente, possam ser recuperados rapidamente da RAM em vez de lê-los do armazenamento em disco mais lento. Esse cache pode melhorar significativamente o desempenho do sistema reduzindo a necessidade de acessar o disco para dados usados com freqüência.Quando os aplicativos ou o sistema operacional precisam de mais memória para processos ativos, a memória cache/buffer pode ser liberada rapidamente para acomodar essas necessidades.
O comando "top" exibe esse valor. Ele também exibe o status atual do sistema, uso da CPU e uso da memória.
Nota: O comando "top" só funciona na CLI nativa do SONiC, e não na MF-CLI da Dell (MF-CLI é a CLI da "estrutura de gerenciamento" personalizada da Dell). A CLI nativa é a interface de linha de comando que aparece quando você inicializa pela primeira vez um switch SONiC. A MF-CLI é alcançada depois de digitar "sonic-cli" na CLI nativa inicial.admin@sonic:~$ top top - 16:43:51 up 8 days, 18:15, 1 user, load average: 1.54, 1.50, 1.51 Tasks: 365 total, 2 running, 363 sleeping, 0 stopped, 0 zombie %Cpu(s): 2.8 us, 4.2 sy, 0.0 ni, 93.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 15482.2 total, 11292.8 free, 2299.6 used, 1889.8 buff/cache MiB Swap: 0.0 total, 0.0 free, 0.0 used. 12965.1 avail Mem
-
Pergunta 2: Qual é o limite para alta utilização de memória cache/buffer?
A memória buffer/cache é usada como um cache para armazenar dados acessados com frequência. Portanto, é possível que uma parcela significativa da RAM disponível acabe alocada para essa finalidade. O que deve ser observado é que o uso de buffer/memória cache é altamente dinâmico e muda constantemente com base na demanda do sistema. Portanto, é mais valioso monitorar o uso geral da memória (ou o "mem disponível" correspondente) e garantir que o sistema tenha memória livre suficiente para executar aplicativos e processos.
top - 14:17:13 up 207 days, 1:59, 1 user, load average: 2.66, 2.19, 2.03 Tasks: 386 total, 2 running, 384 sleeping, 0 stopped, 0 zombie %Cpu(s): 12.5 us, 9.7 sy, 0.0 ni, 77.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 15482.6 total, 8571.4 free, 2692.5 used, 4218.8 buff/cache MiB Swap: 0.0 total, 0.0 free, 0.0 used. 12773.1 avail Mem <--- system's total available RAM
Um comando útil para expressar a porcentagem de RAM do sistema disponível para uso em um switch Dell Enterprise SONiC:
free | grep Mem | awk '{print $7/$2 * 100 }'Este comando divide "avail Mem" por "MiB Mem total".
Aqui está outro exemplo comparando os comandos acima e indicando suas relações para sua referência:
admin@Leaf3B:~$ top top - 21:49:49 up 1:25, 1 user, load average: 0.59, 0.60, 0.64 Tasks: 329 total, 1 running, 328 sleeping, 0 stopped, 0 zombie %Cpu(s): 7.9 us, 4.2 sy, 0.0 ni, 87.5 id, 0.0 wa, 0.0 hi, 0.4 si, 0.0 st KiB Mem : 15928852 total, 12074024 free, 2439884 used, 1414944 buff/cache KiB Swap: 0 total, 0 free, 0 used. 13120520 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 21685 root 20 0 172992 33116 8436 S 52.9 0.2 3:16.11 python3.6 1278 root 20 0 92872 15116 3264 S 17.6 0.1 2:24.49 redis-serv+ 5366 admin 20 0 43540 3812 3020 R 17.6 0.0 0:00.03 top 18469 root 20 0 1643080 451968 78276 S 11.8 2.8 8:17.32 syncd 1097 root 20 0 136440 15188 5912 S 5.9 0.1 0:07.75 watchdogd 19856 admin 20 0 334880 61900 35296 S 5.9 0.4 0:00.44 docker 20985 root 20 0 159488 18616 5036 S 5.9 0.1 0:19.22 xcvrd 1 root 20 0 57768 7820 5544 S 0.0 0.0 0:32.58 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.91 ksoftirqd/0 4 root 20 0 0 0 0 S 0.0 0.0 0:01.90 kworker/0:0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:+ 7 root 20 0 0 0 0 S 0.0 0.0 0:06.93 rcu_sched 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root rt 0 0 0 0 S 0.0 0.0 0:00.39 migration/0 10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-dr+ 11 root rt 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 admin@Leaf3B:~$ free total used free shared buff/cache available Mem: 15928852 2438836 12074940 36060 1415076 13121528 Swap: 0 0 0 admin@Leaf3B:~$ free | grep Mem | awk '{print $7/$2 * 100 }' 82.3662 admin@Leaf3B:~$