Назад | Перейти на главную страницу

связь dd с кешем страницы

Выходные данные бесплатной команды моего сервера в настоящее время выглядят следующим образом:

# free -m
             total       used       free     shared    buffers     cached
Mem:           995        780        205          0         49        599
-/+ buffers/cache:        140        854
Swap:            0          0          0

Мы знаем, что приложение dd обычно использует кеш страницы для ускорения доступа к файлам.

После выдачи команды:

dd if=/dev/zero of=2.txt bs=1M count=10

Следующие выходные данные показывают, что кеш страницы увеличился примерно на 10 МБ.

# free -m
             total       used       free     shared    buffers     cached
Mem:           995        790        215          0         49        599
-/+ buffers/cache:        140        854
Swap:            0          0 

Предыдущий вывод нормальный.

Затем я побежал

sync
command that will sync the content in page cache to hard disk along again with a
free -m
command.

Ничего не изменилось. Связано ли это с механизмом обратной записи? который предусматривает, что кеш страницы не будет освобожден, несмотря на выполнение команды синхронизации, если эта часть кеша страницы не будет изменена.

Или кеш страницы вообще не будет перерабатываться, пока не будет изменен параметр ядра / proc / sys / vm / drop_caches?

# free -m
             total       used       free     shared    buffers     cached
Mem:           995        790        205          0         49        599
-/+ buffers/cache:        140        854
Swap:            0          0          0

Если да, то каков максимальный размер кеша в 'free -m'? Есть ли какие-то параметры ядра, управляющие этим? Спасибо.

dd не использует напрямую кеш страниц, он выполняет ввод-вывод, который автоматически кэшируется.

Удаление кеша просто потому, что что-то было зафиксировано, неэффективно. Следующее чтение должно происходить с нижележащего устройства, которое, вероятно, в сотни или тысячи раз медленнее, чем ОЗУ.

Ожидайте, что кеши будут использовать почти всю неиспользуемую оперативную память. Считайте, что это свободная память, кеши должны быть освобождены в первую очередь, если программы выделяют память.

Не используйте / proc / sys / vm / drop_caches в производственной операции, это не помогает. Из Документация / sysctl / vm.txt

Этот файл не является средством управления ростом различных кешей ядра (inodes, dentries, pagecache и т. Д.). Эти объекты автоматически освобождаются ядром, когда память требуется где-то еще в системе.

Использование этого файла может вызвать проблемы с производительностью. Поскольку он отбрасывает кэшированные объекты, воссоздание отброшенных объектов может потребовать значительных затрат ввода-вывода и ЦП, особенно если они интенсивно использовались. По этой причине использование вне среды тестирования или отладки не рекомендуется.

Документация sysctl для vm действительно перечисляет несколько параметров настройки для управления подсистемой виртуальной памяти, включая поведение грязных страниц и минимальное количество свободных. Я не рекомендую менять их, пока вы подробно не поймете преимущества этого. А пока используйте значения по умолчанию или предварительно определенные tuned профили.