The OpenNET Project / Index page

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



"Выпуск OpenZFS 2.0.1, реализации ZFS для Linux и FreeBSD"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Заметили полезную информацию ? Пожалуйста добавьте в FAQ на WIKI.
. "Выпуск 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 часто не готовы морально

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

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск OpenZFS 2.0.1, реализации ZFS для Linux и FreeBSD, opennews, 07-Янв-21, 09:51  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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