Я заметил следующую разницу в поведении Linux & Solaris pagecache.
1. Когда мы выполняем буферизованные записи на платформе Solaris - свободная память используется pagecache (буферизованные записи), и если нет потребности в памяти других приложений, она использует почти всю свободную память.
Воспроизведение вышеуказанного сценария :
ОС / платформа: Solaris 11 (5.11)
общий объем физической памяти: 116 ГБ
Файловая система: ZFS.
шаги :
-bash-4.4# mkfile 110g file //this will create 'file' filled with 0s size = 110g
Если я проверяю доступную свободную память, используя 'top', она начинает уменьшаться и достигает почти нескольких килобайт.
Начиная с echo "::memstat" | mdb -k
я видел, что большая часть памяти используется столбцом 'pagecache'.
Вышеуказанное поведение кажется нормальным в соответствии с дизайном ОС. Потому что:
1) В то время не было спроса на память от других приложений.
2) Последующее чтение файлов будет быстрее, поскольку данные присутствуют в кэше страниц.
Если я порождаю приложение, которое требует памяти (> чем текущая свободная память), запрос удовлетворяется путем кражи страниц из кэша страниц (страниц, которые сбрасываются на диск).
У меня вопрос - почему такого поведения не наблюдается в Linux, я попробовал описанный выше сценарий с Linux (другие конфиги такие же). Я не видел агрессивного потребления свободной памяти.
Чем страничный кеш Linux отличается от Sol?