Выходные данные бесплатной команды моего сервера в настоящее время выглядят следующим образом:
# 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
Предыдущий вывод нормальный.
Затем я побежал
synccommand that will sync the content in page cache to hard disk along again with a
free -mcommand.
Ничего не изменилось. Связано ли это с механизмом обратной записи? который предусматривает, что кеш страницы не будет освобожден, несмотря на выполнение команды синхронизации, если эта часть кеша страницы не будет изменена.
Или кеш страницы вообще не будет перерабатываться, пока не будет изменен параметр ядра / 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
профили.