Операционная система Linux использует эффективный механизм управления памятью, в котором буфер и кеш являются двумя ключевыми компонентами управления памятью. Понимание функций и механизмов работы этих двух систем имеет решающее значение для оптимизации производительности системы и устранения неполадок.
Буфер — это временная область памяти, используемая для хранения блоков данных, в основном используемая для кэширования операций ввода-вывода. Когда данные считываются в память с диска или других устройств, они сначала сохраняются в буфере, чтобы обеспечить быстрый доступ к данным. Буфер можно рассматривать как промежуточный уровень, который помогает оптимизировать производительность чтения и записи.
Кэш также является своего рода временным хранилищем, но его целью является кэширование блоков данных файловой системы. В отличие от Buffer, Cache в основном используется для хранения метаданных файловой системы и данных файлов. Он ускоряет операции чтения файловой системы за счет предварительной загрузки содержимого часто используемых файлов, что ускоряет доступ к ним.
Когда приложение запрашивает чтение данных с диска, ядро сначала проверяет, существует ли уже соответствующий блок данных в буфере. Если он существует, ядро вернет данные непосредственно из Буфера, избегая чтения с физического диска. Если данных нет в буфере, ядро прочитает блок данных с диска в буфер и вернет его приложению. Таким образом, Buffer в определенной степени сокращает количество обращений к диску и повышает производительность ввода-вывода.
dirty_ratio
echo 20 > /proc/sys/vm/dirty_ratio
или
sysctl -w vm.dirty_ratio=20
dirty_ratio
Параметр определяет максимальную долю грязных страниц (измененных, но еще не записанных на диск) в системе. Когда доля грязных страниц достигает приезжатьили и превышает это значение,Система инициирует операцию синхронной записи.,Запишите грязные страницы на диск.dirty_background_ratio
echo 10 > /proc/sys/vm/dirty_background_ratio
или
sysctl -w vm.dirty_background_ratio=10
dirty_background_ratio
Параметр определяет, что когда доля грязных страниц превышает это значение, система запускает операцию фоновой записи. Фоновая запись означает асинхронную запись грязных страниц на диск без блокировки процесса./proc/sys/vm/dirty_background_ratio
файл или использовать sysctl
команда для настройки. (Единица измерения параметра — проценты)Напишите проблемы с производительностью:
если dirty_ratio
Установите слишком высокое значение, и система может преждевременно запустить операции записи, что приведет к снижению производительности записи.Как работает кэш похож на Buffer, но больше ориентирован на файлы. системаизданные。когдафайловая Когда системе необходимо прочитать файл, ядро сначала проверяет, есть ли соответствующий блок данных в кэше. Если он существует, ядро вернет данные непосредственно из кэша. Если данных нет в Кэше, ядро загрузит их из файлов. Считайте данные в системе и сохраните копию в кеше для будущих запросов на чтение. Этот механизм улучшает файловую Система скорости чтения, особенно для файлов, к которым часто обращаются.
vfs_cache_pressure
echo 100 > /proc/sys/vm/vfs_cache_pressure
или
sysctl -w vm.vfs_cache_pressure=100
vfs_cache_pressure
Параметры, используемые для настройки пары ядер dentry и inode Тенденция к кэшированию. Большие значения заставляют ядро предпочитать переработку dentry, а меньшие значения заставляют ядро перерабатывать inode。/proc/sys/vm/vfs_cache_pressure
файл или использовать sysctl
команда для настройки. Например:swappiness
echo 10 > /proc/sys/vm/swappiness
или
sysctl -w vm.swappiness=10
swappiness
Этот параметр используется для настройки тенденции ядра перемещать данные в пространство подкачки, когда Память недостаточно. Диапазон значений 0 приезжать 100,0 Указывает, что пространство подкачки должно использоваться как можно меньше, 100 Указывает, что пространство подкачки следует использовать как можно больше./proc/sys/vm/swappiness
файл или использовать sysctl
команда для настройки.Памятьпроблема использования
: Слишком высоко swappiness
Значения могут привести к чрезмерному использованию системой пространства подкачки, что приведет к снижению производительности. В некоторых случаях меньшее значение может быть более подходящим.free -h
Эта команда отобразит использование памяти системы, включая использование буфера и кэша.
vmstat 1
vmstat
Команда можетк Предоставьте более подробную информациюиз Память Статистика,В том числе и меняющиеся тенденции BufferиCache.
Буфер и кэш являются незаменимыми компонентами управления памятью Linux. Они значительно повышают производительность и скорость отклика системы за счет кэширования операций ввода-вывода и данных файловой системы. Глубокое понимание того, как они работают, а также того, как отслеживать и оптимизировать использование памяти, имеет решающее значение для SRE. Правильно настроив и управляя памятью, вы сможете обеспечить отличную производительность системы при высокой нагрузке.