Networking SONiC. Использование системной памяти в SONiC — «buff/available»
Summary: В этой статье объясняется значение полей «buff/cache» и «avail Mem» в выводе «top» в встроенном интерфейсе командной строки Dell Networking SONiC.
Instructions
-
Вопрос 1: Что такое бафф/кэш?
«buff/cache» — это объем памяти, используемый для буферов и кэша файловой системы. Такое использование памяти является важнейшей частью того, как Linux управляет и оптимизирует производительность системы. Давайте разберемся, что означает «бафф/кэш»:
Буферов:
Буферы в данном контексте обозначают часть системной памяти (ОЗУ), которая используется для временного хранения данных, считываемых с диска или записываемых на диск. Например, когда программа считывает данные из файла, эти данные сначала загружаются в буфер в памяти. Буферы помогают повысить производительность операций ввода-вывода диска, поскольку чтение или запись в ОЗУ выполняются быстрее, чем доступ к физическому диску. Кроме того, буферы обеспечивают более эффективную запись данных на диск, сокращая количество дисковых операций ввода-вывода.Тайник:
Под кэшем в данном контексте понимается часть памяти, используемая для хранения часто используемых данных из файлов и каталогов. Linux использует механизм, называемый "страничным кэшем", для кэширования данных из файлов и каталогов, которые были недавно прочитаны или записаны. Эти кэшированные данные хранятся в памяти, так что, если те же данные понадобятся снова, их можно быстро извлечь из ОЗУ, а не считывать из более медленного дискового хранилища. Эта кэш-память может значительно повысить производительность системы, снизив потребность в доступе к диску для часто используемых данных.Когда приложениям или операционной системе требуется больше памяти для активных процессов, буферная/кэш-память может быть быстро освобождена для удовлетворения этих потребностей.
Это значение отображается в команде «top». Также отображается текущее состояние системы, загрузка ЦП и памяти.
ПРИМЕЧАНИЕ. Команда «top» работает только в встроенном интерфейсе командной строки SONiC, а не в интерфейсе командной строки Dell MF-CLI (MF-CLI — это пользовательский интерфейс командной строки платформы управления Dell). Встроенный интерфейс командной строки — это интерфейс командной строки, который появляется при первой загрузке коммутатора SONiC. MF-CLI можно запустить после ввода «sonic-cli» в исходный собственный интерфейс командной строки.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
-
Вопрос 2: Каково пороговое значение для высокого использования буфера/кэш-памяти?
Буферная память используется в качестве кэша для хранения часто используемых данных. Следовательно, не исключено, что значительная часть доступной оперативной памяти в конечном итоге будет выделена для этой цели. Следует отметить, что использование буферной/кэш-памяти очень динамично и постоянно меняется в зависимости от потребностей системы. Поэтому более важно следить за общим использованием памяти (или соответствующей "avail Mem") и следить за тем, чтобы в системе было достаточно свободной памяти для запуска приложений и процессов.
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
Полезная команда для выражения процента системной ОЗУ, доступной для использования на коммутаторе Dell Enterprise SONiC:
free | grep Mem | awk '{print $7/$2 * 100 }'Эта команда делит «avail Mem» на «MiB Mem total».
Вот еще один пример сравнения приведенных выше команд и указания их связей для справки:
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:~$