The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск OpenZFS 2.0.1, реализации ZFS для Linux и FreeBSD"
Отправлено пох., 10-Янв-21 10:37 
> Тут ключевой вопрос - а может ли кернел это быстро забрать взад когда сие потребуется программам?

Быстро - не может, чудес не бывает.
Вот тебе старый линукс, с еще человекочитаемым free:
             total       used       free     shared    buffers     cached
Mem:       3085136    2863632     221504          0     415804    1005072
-/+ buffers/cache:    1442756    1642380
Swap:      4194300      52244    4142056

Чего бы он в swap залез, когда оно "free"? И зачем-то держит зазор, пусть и 5%, хотя весь тот своп бы поместился и еще осталось.

Причина вполне банальная - быстро отдать это cached не получится. Чтобы оттуда отдать - надо перебрать табличку структурок, состоящую, на минутку, у нас 4k pages, из 251268 (блжад!) айтимов - желательно не первые попавшиеся оттуда выбрасывать, а хотя бы те к которым долго не было обращений (лучшее, что умеет линукс).
Кстати, для этого потребуется память, нужна ж нам табличка кандидатов из той таблички на вынос ;-) Добавь сюда что системы у нас дохреллион-процессорные и все это через локи.

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

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

Кстати, никто не обещал тебе, что это единственное место в системе, где есть динамически расходуемая память, и что ее вообще надо сейчас трогать (представь систему с основными дисками на nfs, или, того хуже, ceph). К сожалению, в линуксе нет никакого общедоступного способа ее посмотреть, и даже понять, относится ли она к "buffers" или показывается просто как занятая ядром.

> Не говоря о том что нынче прогеры размякли и к mem alloc failure часто не готовы морально

они часто еще более неготовы к подождать, пока освободится (ты в линку в бравзере ткнул - и у тебя повисло все вообще - потому что понадобилась память отобразить инвалидо-френдли индикатор бурной деятельности, и система пошла поискать - пупсики ж не поймут такого)

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру