Разница между солярисом и поведением LinuxC PageCache - PullRequest
0 голосов
/ 28 августа 2018

Я заметил следующую разницу в поведении 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?

...