LINUX.ORG.RU

Слишком много free памяти

 , ,


0

2

Raspberry Pi 4 4Gb, Raspbian, ядро 6.1

Наконец то нагрузил его более-менее серьёзно и заметил странную вещь: система очень упорно держит абсурдно много памяти свободной.

rrr@raspberrypi:/media/files $ free -m
               total        used        free      shared  buff/cache   available
Mem:            3794        1969         671         788        1152         431
Swap:          38145        2898       35247

Тюнинг памяти:

echo z3fold > /sys/module/zswap/parameters/zpool
echo 25 > /sys/module/zswap/parameters/max_pool_percent
echo 1 > /sys/module/zswap/parameters/enabled
echo 64 > /proc/sys/vm/page-cluster
echo 100 > /proc/sys/vm/swappiness
echo 500 > /proc/sys/vm/watermark_scale_factor
echo 32768 > /proc/sys/vm/min_free_kbytes

Также подключена tmpfs в /tmp и туда вынесены временные файлы пользователя, как минимум кеш браузера, миниатюр и qml.

Насколько я знаю, free-память это не всякие кеши и буферы, не tmpfs, не zswap. До сих пр я не встречался с ситуациями, когда +-15-20% памяти простаивает в холостую во время дефицита - кроме одного раза, когда cgrops_mem позволял пользователю использовать в сеансе не более 50%, но даже там память использовалась под дисковый кеш. При открытии новых вкладок браузера система удерживает свободными от 480М до 800М. При создании крупного файла в /tmp показатель free кратковременно снижается, но затем память откачивается до того же уровня.

Ядро 6.1 перешло на cgrops v2, и я вроде как не вижу там управления памятью (для v1 я его всегда отключал), но возможно я просто не знаю куда смотреть. Но вообще по ощущениям похоже на какой то лимит со стороны cgrops.

Что это мжет быть? Свопинг конечно мягкий, но он чувствуется и кажется могло бы работать ещё лучше на эти самые 300-500М.

★★★★★

Последнее исправление: kirill_rrr (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx

А вообще всё сводится к тому, что мне нужно ждать ядра 6.8++ и уже там перепроверять поведение всех опций по новой. Этот новый планировщик памяти ещё глюкодром, а в 6.1 - особенно.

kirill_rrr ★★★★★
() автор топика
Последнее исправление: kirill_rrr (всего исправлений: 1)

дофига свободной памяти и при этом используется свап - вот так настоил, я не настраивал ничего - свапиться начинает только когда свободная память кончилась.

anonymous
()
28 января 2025 г.
Ответ на: комментарий от kirill_rrr

z3fold

Прочитал статью и она мне совершенно не нравится. Он провёл непонятный тест

Все, капец ‘котенку’, теперь официально Распределитель Z3fold Планируется удалить из ядра Linux.

Поскольку Z3fold был признан устаревшим в течение двух циклов работы ядра без жалоб, в настоящее время ожидаются исправления для удаления Z3fold из ядра Linux.

Ожидается, что устаревание/удаление Zbud также произойдет в ближайшее время

krasnh ★★★★
()
Ответ на: комментарий от krasnh

Они вроде как устранили ключевой недостаток zsmalloc. Он не мог выгружать память! А по плотности упаковки изначально был круче двух других. Хотя кажется ты и сам это знаешь.

kirill_rrr ★★★★★
() автор топика
Последнее исправление: kirill_rrr (всего исправлений: 1)
Ответ на: комментарий от LamerOk
rrr@raspberrypi:/tmp/yt $ free -m
               total        used        free      shared  buff/cache   available
Mem:            3794        2502         233         700        1057         460
Swap:          38145        2610       35535
rrr@raspberrypi:/tmp/yt $ uptime
 00:58:47 up 11 days, 13:51,  7 users,  load average: 1,20, 1,30, 1,66
rrr@raspberrypi:/tmp/yt $

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

kirill_rrr ★★★★★
() автор топика
Последнее исправление: kirill_rrr (всего исправлений: 1)
Ответ на: комментарий от greenman

commit

Которое ссылается на zen-kernel/issues, где предложили, как вариант, временно отключить ZSWAP, но у тамошнего ТС не хватило времени на проверку, но все всё равно решили убрать из ядра дефолтное включение zswap`а.

Да уж, не разобравшись толком, сразу резать. Причем, там вроде как раздался тихий голос "Кто-нибудь обращался к сопровождающим ядра zswap по поводу такого поведения? ", но ‘деструктивный’ процесс уже было не остановить.

krasnh ★★★★
()
Ответ на: комментарий от krasnh

На самом деле неплохое решение. zram/zswap нормально работают только когда пользователь сам их настраиват адекватно своему железу и задачам. В автомате могут получиться тупые косяки.

Не, условно-хороший дефолт это например zswap+zsmalloc на 10% памяти, но тут надо убедиться что zswap с ним не конкурирует, а физический своп подключен...

kirill_rrr ★★★★★
() автор топика
Последнее исправление: kirill_rrr (всего исправлений: 1)