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

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





2 декабря 2015 г., 17:33 пользователь Hleb Valoshka <375gnu@gmail.com> написал:
On 12/2/15, Aleksandr Sytar <sytar.alex@gmail.com> wrote:
>> А вот сегодня мне пришлось вручную сбрасывать кэш, занимавший около
>> 60% всего объёма ОЗУ, пока этого не сделал, была загрузка процессора
>> ядром под 90% и в логи валились сообщения типа "[6848409.216723] java:
>> page allocation failure. order:1, mode:0x20
>> [6848409.216929] Pid: 17814, comm: java".
>>
>> Там ещё прозрачные huge pages включены, но это, думаю, не столь важно.
>>
>> Вопрос, почему ядро не сбрасывает кэш?
>>
>
> Все несколько сложнее чем кажется на первый взгляд, но сообщения о нехватке
> памяти может быть получено когда память есть, но не та которая нужна
> приложению - в данном случае java попросила 1 страницу 8к, и их не

Это вы к примеру сказали, или из сообщения определили (order:1, mode:0x20)?

(2^order)*page_size - количество нехвативших страниц


> оказалось, а вот страниц 4к, 16к и т.д. вполне могло быть в достатке.

И при этом 250 ГБ заняты под кэш, почему бы не почистить его?

Почистить можно то что свободно, то что занято можно выдавить в свап, но не сразу, а только через dirty_background_ratio и подобным ручкам.

Но при этом нужно понимать - если система будет перекладывать страницы в свап, она будет дольше из него доставать (поищи страницы в памяти, получи ошибку, что она в свапе, загрузи в память, отдай приложению), что скажется на скорости работы. Поэтому разумнее ограничить аппетиты нового приложения с учетом текущих реалий по кешу.


Reply to: