>> ARC — это адаптивный кэш. Изменяет свой размер как в сторону увеличения
>> (когда идёт кэширование), так и в сторону уменьшения (когда запускаются новые
>> приложения и им нужна память).
> Спасибо, кэп. Вот только делает это сам, по своей внутренней логике, не
> пересекающейся с логикой ядра. Ядерный же кеш отдает память, как только
> её запросила система. Немедленно. В пределах работы подсистемы распределения памяти.
>> Начинаю копировать большой файл, размер которого больше, чем размер оперативной памяти:
>> Запускаю приложения: RSSOwl, Deluge, Firefox, Thunderbird:
> Дооооолго. Надо сразу запустить приложение, которое сразу захочет приличный объем памяти.Да, наверно. Но такого приложения кроме Java (которую можно настроить на захват максимального объёма памяти сразу) у меня пока нет. Надо будет OpenOffice собрать.
> Оно либо получит no memory, если свопа нет, либо сразу залезет
> в своп, и будет там ждать, пока распрекраснейший ARC отдаст память.
> В случае систем, где >70% памяти свободно - это более-менее приемлемо.
> В случае нагруженных серверов - в баню.
Как видишь, SWAP оставался незадействованным на всём протяжении эксперимента. Хотя свободной памяти оставалось относительно немного — ARC возвращал системе затребованную вновь запускаемыми приложениями память НЕМЕДЛЕННО.
>> Как видишь, ARC всё-таки изменяет размер не только в большую сторону, но
>> и способен уменьшаться, когда у запускаемых приложений возникает потребность в свободной
>> памяти.
> Еще раз спасибо, кэп. Только вот то, что память не освобождается кешем
> по первому требованию - делает его пригодным исключительно для файлопомоек. На
> остальных применениях - либо ограничивать ручками, либо слишком рискованно.
ARC всё же отдаёт память. Уже запущенные приложения и вновь запускаемые не сваливаются в SWAP "до лучших времён". Так что твои выводы беспочвенны.
Кстати, поведение ARC можно легко подстроить через sysctl-переменные для более гибкого управления памятью кэша, чтобы снизить латентность выделения памяти (которую лично я не заметил на своём десктопе), когда часто создаются и завершаются процессы, которым нужна свободная память, а также в ситуации, когда необходимо работать с сотнями-тысячами короткоживущих процессов.