[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: почему ядро не сбрасывает кэш?





2 декабря 2015 г., 14:23 пользователь Hleb Valoshka <375gnu@gmail.com> написал:
Классическая ситуация: поставил кто-то себе GNU/Linux, узнал о
существовании комманды free и пишет в рассылки/форумы/irc: "а куда
делась вся свободная память?", а ему отвечают: "не парься. кэш видишь?
будет нужна память ядро само почистит кэш, и вернёт память".

А вот сегодня мне пришлось вручную сбрасывать кэш, занимавший около
60% всего объёма ОЗУ, пока этого не сделал, была загрузка процессора
ядром под 90% и в логи валились сообщения типа "[6848409.216723] java:
page allocation failure. order:1, mode:0x20
[6848409.216929] Pid: 17814, comm: java".

Там ещё прозрачные huge pages включены, но это, думаю, не столь важно.

Вопрос, почему ядро не сбрасывает кэш?

Все несколько сложнее чем кажется на первый взгляд, но сообщения о нехватке памяти может быть получено когда память есть, но не та которая нужна приложению - в данном случае java попросила 1 страницу 8к, и их не оказалось, а вот страниц 4к, 16к и т.д. вполне могло быть в достатке. 

Подробнее - Understanding The Linux Virtual Memory Manager - https://www.kernel.org/doc/gorman/pdf/understand.pdf


Reply to: