LINUX.ORG.RU

Линукс и жор памяти

 ,


0

3

Данная тема создана по следам этого: 750 мб занятой оперативы на старте дистрибутива с XFCE - это норма?

Люди так удивляются, что 4 ГБ – это мало для работы, будто то ли на на дворе 2005, то ли Linux может магически превратить 4 ГБ в 16, и еще пару ядер накинуть на сдачу.

Но тем не менее, вопрос, сколько ест максимально голая система – интересный. У меня Арч, и я решил посмотреть, что у меня с потреблением памяти. А тему эту я решил создать, чтобы ссылаться на неё при необходимости.

Вот картина потребления оперативной памяти без логина в графический сеанс:

https://ibb.co/BNrCWMk

Я отключил все службы, которые нужны лично мне, такие как docker, оставил только системные штуки. Видно, что запущен systemd с базовыми сервисами, NetworkManager, а также lightdm с графическим сеансом, через который отображается окно ввода логина-пароля. Не запущены также штуки, которые часто суют в дистрибутивы по дефолту – cups, wsdd и т.п. (У меня их на этой машине и нет.)

Опускать потребление ниже этой базовой линии возможно только если отказываться от systemd, а также накладывать на систему какие-нибудь кастомные патчи. Это уже получится не линукс мейнстримного вида образца 2024-го года, а специализированная сборка.

А вот после входа в графический сеанс пользователя:

https://ibb.co/m5WCWvP

Опять-таки, я закрыл все штуки, которые лично мне нужны, такие как syncthing или автозапускаемый сеанс в terminator.

Если вместо графической оболочки из нескольких отдельных программ использовать компактный WM типа icewm, то можно подсократить эти числа, чтобы они были ближе к числам на 1-м скриншоте. Но не вижу в этом большого смысла.

Короче говоря, если сравнивать с виндами, то Linux в 2024-м может базово потреблять ОЗУ где-то на уровне Vista. Всё в ваших руках: хотите потребление как у Висты и запуск на старом лаптопе – это возможно, хотите ни в чём себе не отказывать на системе с 64 гигами – это тоже возможно.

На практике после входа в графический сеанс, автозапуска всех нужных служб и приложений и открытия тестового редактора с кучей вкладок потребление памяти у меня составляет 800-900 МБ.

★★

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

Ну и не надо их сопоставлять. Всего у меня использовано 2,05Гб +580М памяти и это система + 2 браузера. Причём я не представляю какое там было пиковое потребление потому что своп прожевал и не заметил. Обычно я вообще ничего не замечаю до 150% оперативки + лежащий в свопе tmpfs с этими самыми кешами миниатюр. И это даёт мне потолок порядка 5-6Гб при текущем потреблении в 2,5.

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

systemd слишком удобен, чтобы от него отказываться ради экономии условных 25 (или 50) мегабайт.

А не надо отказываться от всего системд, просто выкини бесполезный журналд.

У него RSS на скрине 14 метров.

Извиняюсь, не туда посмотрел.

будут завершены после того как юзер введёт пароль

Разве? Ну ладно, допустим. Не замечал за ним такого поведения.

поскольку процессы используют общие страницы памяти.

Дедупликация? На ДЕ это практически не работает, а в агресивном варианте роняет производительность и даёт проблемы. Экономия в виртуалках или возможно браузере или каком нибудь андродиософте.

А разделяемая память не столько про экономию, сколько про общие данные для нескольких процессов. Видеодрайвер - Х11 - композитор например или QT-софт такое любит. Но здесь про разделяемую можно не вспоминать.

Так что я уверен, что если завершить те процессы, то высвободится более 90% от их памяти.

И легко можно предположить, что в разных запусках он использует не «от 1.8 до 4+», а всегда одинаковое число, тк как алгоритм и входные данные всеггда строго одинаковые. А числа в htop будут разные.

Я бы скорее предоложил, что ядро по каким то своим соображениям разбрасывает этот фиксированный код и данные по разному числу страниц. А так как оно мелкое и некативное - никто оптимизацией не занимался.

это даже не реальный рабочий набор, а очень очень условное число.

Да, но из всего доступного именно этот параметр наиболее приближен к рабочему набору процесса.

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

/зокат глаз…/

Видимо, придётся наглядно:

$ cat 1.sh
for x in {1..5} ; do
    echo $x
    free -m
    calculator &
    sleep 1
done
$ sh 1.sh
1
               total        used        free      shared  buff/cache   available
Mem:           15907        1218       12195         101        2925       14688
Swap:          10191         337        9854
2
               total        used        free      shared  buff/cache   available
Mem:           15907        1217       12196         101        2925       14689
Swap:          10191         337        9854
3
               total        used        free      shared  buff/cache   available
Mem:           15907        1220       12192         101        2925       14686
Swap:          10191         337        9854
4
               total        used        free      shared  buff/cache   available
Mem:           15907        1223       12190         101        2925       14683
Swap:          10191         337        9854
5
               total        used        free      shared  buff/cache   available
Mem:           15907        1225       12188         101        2925       14681
Swap:          10191         337        9854
$ ps -o rss -p `pgrep calculator`
  RSS
21132
21148
21144
21160
21044

RSS – 21 мегабайт.

Фактический прирост потребления ОЗУ при запуске – меньше погрешности измерения.

wandrien ★★
() автор топика
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от wandrien
rrr@raspberrypi:~/.komic $ test.bash 
               total        used        free      shared  buff/cache   available
Mem:            3794         807        1629         360        1357        2551
Swap:          38145           0       38145
1
               total        used        free      shared  buff/cache   available
Mem:            3794         807        1629         360        1357        2551
Swap:          38145           0       38145
2
               total        used        free      shared  buff/cache   available
Mem:            3794         816        1648         329        1329        2572
Swap:          38145           0       38145
3
               total        used        free      shared  buff/cache   available
Mem:            3794         826        1639         328        1327        2563
Swap:          38145           0       38145
4
               total        used        free      shared  buff/cache   available
Mem:            3794         831        1627         335        1334        2552
Swap:          38145           0       38145
5
               total        used        free      shared  buff/cache   available
Mem:            3794         847        1605         342        1341        2529
Swap:          38145           0       38145
rrr@raspberrypi:~/.komic $ ps -o rss -p `pgrep xterm`
  RSS
12308
12192
12296
12228
12272
rrr@raspberrypi:~/.komic $

Заменяю калькулятор на хтерм а ожидание с 1 до 5 секунд и выясняю что:

а) ты измерял потребеление памяти ДО запуска копии.

б) Копия хтерм занимает ~10М физической памяти, но за счёт разделяемой (вероятно с Х11) полная сичтается как 12М.

в) На самом деле 12М хтерм + 4,6М баш, но их разделяемая память 7М+3,1М.

г) 40М весь пакет всё же отожрал и после завершения высвободит.

Повторюсь - лучшего показателя всё равно нет! Да, надо помнить про разделяемую, но при запуске орентироваться что тебе понадобится весь RES, а то мало ли оптимизации не сыграют.

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

Заменяю калькулятор на хтерм а ожидание с 1 до 5 секунд и выясняю что:

а) ты измерял потребеление памяти ДО запуска копии.

Ага, ну ты угадал, я же на 80286 запускаю тест в 1983-м году, и машине секунды не хватает, чтобы запустить и инициализировать программу.

Дальше не читал, этого бреда достаточно.

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

Ага, ну ты угадал, я же на 80286 запускаю тест в 1983-м году, и машине секунды не хватает, чтобы запустить и инициализировать программу.

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

Посмотри у меня разницу между 0 и 1 результатами. Хтерм ещё не успел выделить себе ни 1М памяти! Он даже с диска не прочитался, а free был прокеширован.

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

Если ты считаешь, что 3-гигагерцовому CPU не хватает секунды, чтобы из кэша в ОЗУ прочитать бинарники и инициализировать простейшую оконную программу, я в этом не виноват.

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

Можно например поделить её на 8 роутеров, им хватит. Или подцепить ~20 клиентов по ssh если им какую нибудь мелочь. Или запустить NAS и ещё торренты нанего повешать.

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

Увеличение слипа не ухудшит теста, а вот уменьшение - да. У меня кстати не 3000Мгц, а 400-800 в данный момент.

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

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

А вот технически такая же Win 7 на реальной рабочей машине с кучей продуктового софта после логина жрёт больше двух гигов.

Пишу с реальной рабочей машины с кучей продуктового софта и встройкой HD 630. После логина 807. На Семерке больше 2 гигов после логина это звиздеж поехавшего.

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

Лол. А ты знаешь, какой там софт установлен? Нет? Вот и получается, что звиздишь здесь ты)

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

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

От балаболки слышу)) Проверь настройки своих фильтров реальности, тебе их слишком сильно перекрутили.

Может выложу, если не забуду. Когда доберусь. Я щас сижу дома с простудой.

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

Он ждёт 1с после запуска обоих процессов. Который практически одновременный, и даже frre ты поставил первым. Думаю надо:

free -m

for x in {1..5} ; do
    echo $x
    xterm &
    sleep 1
    free -m

done
rrr@raspberrypi:~/.komic $ test.bash 
               total        used        free      shared  buff/cache   available
Mem:            3794         877        1384         391        1532        2450
Swap:          38145           0       38145
1
               total        used        free      shared  buff/cache   available
Mem:            3794         879        1363         409        1551        2429
Swap:          38145           0       38145
2
               total        used        free      shared  buff/cache   available
Mem:            3794         887        1364         400        1542        2430
Swap:          38145           0       38145
3
               total        used        free      shared  buff/cache   available
Mem:            3794         895        1349         407        1549        2415
Swap:          38145           0       38145
4
               total        used        free      shared  buff/cache   available
Mem:            3794         901        1336         414        1556        2402
Swap:          38145           0       38145
5
               total        used        free      shared  buff/cache   available
Mem:            3794         912        1317         423        1565        2383
Swap:          38145           0       38145
rrr@raspberrypi:~/.komic $ ps -o rss -p `pgrep xterm`
  RSS
12244
12256
12432
12280
12328
rrr@raspberrypi:~/.komic $

Avaliable сократился на 67М, или 13,4М на копию.

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

Так для сравнения, проделай все тоже самое но на дистрибутиве 2010 года.

Да там даже системды не будет)

Вот например Rosa 2012-го года. Тоже 64-битная, как и Арч в ОП:

https://ibb.co/k46HYhf

Чтобы было похоже, я вырубил кеды и большинство служб, + установил и запустил lightdm, так же как в сабже.

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

пара сотен мегабайт

Так это без прикладного софта вообще. Голая система с systemd и минимальным списком служб.

Вот в виртуалке ROSA с KDE4 на платформе 2012-го года: https://ibb.co/6vzTPdq

Всего 600 МБ занимает DE и куча служб, которые туда засунули разработчики. (Вряд ли они думали о том, чтобы экономить память. Скорее о том, чтобы не забыть включить всё важное.)

На реальном железе самая свежая ROSA, которая пару месяцев назад релизнулась, с KDE5 потребляет 850 МБ на старте. А с LXQT – около 450, если правильно помню.

В общем, за 12 лет не так уж сильно изменилась нагрузка на память со стороны базовых компонент системы.

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

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

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

вот смотри, относительно недавно была новость типа нашли мега дыру в webp. ну и все короче поскакали апдейтится. А фиг вам а не апдейтится и просто отключил wepb как компонент. И о чудо! потребление памяти сразу стало намного более вменяемым. Но время шло и че ты думаешь, он снова начал жрать как конь.

antech
()
Ответ на: комментарий от wandrien

281,747,456 B (100.0%) – heap-committed ├──254,869,880 B (90.46%) ── allocated └───26,877,576 B (09.54%) ── overhead

Main Process (pid 5818) Explicit Allocations

387,055,934 B (100.0%) – explicit ├──176,402,245 B (45.58%) ── heap-unclassified web (pid 6126) Explicit Allocations

396,742,624 B (100.0%) – explicit web (pid 5907) Explicit Allocations

79,511,520 B (100.0%) – explicit extension (pid 5976) Explicit Allocations

64,749,552 B (100.0%) – explicit 12,926,960 B (100.0%) – explicit prealloc (pid 6179) Explicit Allocations

7,954,416 B (100.0%) – explicit RDD (pid 6209) Explicit Allocations

1,605,632 B (100.0%) – explicit Socket (pid 5886) Explicit Allocations

1,511,424 B (100.0%) – explicit ├────578,968 B (38.31%) – heap-overhead │ ├──283,736 B (18.77%) – bin-unused │ │ ├───47,104 B (03.12%) ── bin-2048 │ │ ├───43,008 B (02.85%) ── bin-1024 │ │ ├───19,968 B (01.32%) ── bin-512 │ │ ├───19,840 B (01.31%) ── bin-496 │ │ ├───16,000 B (01.06%) ── bin-64 │ │ ├───15,776 B (01.04%) ── bin-464 │ │ ├───14,336 B (00.95%) ── bin-256 │ │ ├───11,856 B (00.78%) ── bin-304 │ │ ├───10,560 B (00.70%) ── bin-320 │ │ ├───10,368 B (00.69%) ── bin-432 │ │ ├────7,744 B (00.51%) ── bin-352 │ │ ├────7,696 B (00.51%) ── bin-208 │ │ ├────7,200 B (00.48%) ── bin-480 │ │ ├────6,960 B (00.46%) ── bin-240 │ │ ├────6,144 B (00.41%) ── bin-384 │ │ ├────5,984 B (00.40%) ── bin-272 │ │ ├────5,280 B (00.35%) ── bin-160 │ │ ├────3,744 B (00.25%) ── bin-144 │ │ ├────3,264 B (00.22%) ── bin-96 │ │ ├────2,856 B (00.19%) ── bin-8 │ │ ├────2,560 B (00.17%) ── bin-128 │ │ ├────2,128 B (00.14%) ── bin-112 │ │ ├────2,112 B (00.14%) ── bin-32 │ │ ├────2,016 B (00.13%) ── bin-288 │ │ ├────1,840 B (00.12%) ── bin-80 │ │ ├────1,792 B (00.12%) ── bin-224 │ │ ├────1,632 B (00.11%) ── bin-48 │ │ ├────1,408 B (00.09%) ── bin-176 │ │ ├────1,344 B (00.09%) ── bin-192 │ │ ├──────672 B (00.04%) ── bin-336 │ │ ├──────544 B (00.04%) ── bin-16 │ │ ├────────0 B (00.00%) ── bin-368 │ │ ├────────0 B (00.00%) ── bin-400 │ │ ├────────0 B (00.00%) ── bin-416

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

браузер. это прямо чернобыльская катастрофа. я уже не знаю че с этим делать

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

haydudogni
()
Ответ на: комментарий от wandrien

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

antech
()

Короче говоря, если сравнивать с виндами, то Linux в 2024-м может базово потреблять ОЗУ где-то на уровне Vista. Всё в ваших руках: хотите потребление как у Висты и запуск на старом лаптопе – это возможно, хотите ни в чём себе не отказывать на системе с 64 гигами – это тоже возможно.

Слегка допиленная Windows 10 Enterprise LTSB 1607 с актуальными обновлениями:

https://ibb.co/6B25r01

По дефолту где-то под 1 Гб.

anonymous
()