LINUX.ORG.RU

Arch занимает слишком много оперативной памяти

 ,


2

1

Вчера захотелось попробовать установить Arch. Подготовил установщик, открыл их Arch Wiki и, в общем-то, где-то за одну ночь удалось развернуть минимальное окружение, чтобы потом можно было загрузиться и залогиниться в какого-нибудь пользователя.

Всё, в общем-то, работает, даже сумел настроить работу с некоторыми маргинальными железками, но пока беспокоит объём занимаемой оперативной памяти. Всего у меня 2 GiB, однако при старте чистой (!) системы Arch отнимает больше половины. Появляется только консоль я предложением ввести логин.

Что могло пойти не так?

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

p.s. Cвап настроил, но он работает на жёстком диске. Это медленная штука.

Толпа илитных спицаолистов лора и ни один не спросил про /tmp в tmpfs. Проблема в том, что в арче зачем-то придумали пихать /tmp в память. Если у тебягигов шестнадцать и ты не используешь ихи наполовину, то совсем не заметно. Но когда памяти мало,то это становится критичным.

Отключи автомонтирование /tmp в tmpfs и половина твоих бед отвалится. Настрой свап. и живи счастливо.

Про то, что винда ест меньше - это не так. она меньше показывает, они умеют хитро считать. Ссылку лень искать.

Deleted
()
Ответ на: комментарий от redgremlin
$ du -h -c -s /tmp
du: cannot read directory '/tmp/systemd-private-c38c1ffe70344ad6962488e6dec72dad-ntpd.service-mV48Cu': Permission denied
422M    /tmp
422M    total
Deleted
()
Ответ на: комментарий от redgremlin

Есть одна загвоздочка. Ты пробовал использовать больше половины памяти? Я на трёх реальных компах проверял и стабильно получал проблемы. И специально проверял, после того как последний раз с фракталом срались: Завёл виртуалку и выделил именно два гига. Поставил голый арч, накатил lxde и стал проверять. В арче /tmp выделяется на половину твоей памяти и, вроде как, размер не прибит жёстко. Тем не менее, когда размер занятой памяти растёт, то по достижении половины начинаются тормоза и сброс на свап,если он есть, а если его нет, то kswapd всё равно отжирает проц, непонятно чем занимаясь. Никаких специальных настроек ничего не делалось, всё по дефолту.

Я тогда уж писать не стал, после драки кулаками не машут, но было бы, кстати, интересно, если бы ктонить подтвердил или опроверг мои наблюдения.

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

Использовал больше половины памяти, система не начала использовать swap.

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           3850        2782         117         355         950        1065
Swap:          2027           0        2027

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

Хм... Озадачил. А ничего не тюнил? А, а как долго стоит система? Я такое поведение только на новых, в этом году заметил.

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

kswapd всё равно отжирает проц, непонятно чем занимаясь.

Пейджингом он занимается, чего ему ещё делать раз свопинг у него отобрали.

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

Да, но, во первых, половина памяти ещё свободна, в /tmp лежат копейки,а во вторых - а развк при недостатке памяти не должно кильнуть чтонить? Тут какое-то несоответствие чего-то чему-то.

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

Не в /sys/fs/cgroup, а в /tmp.

ТС, ищи то, что тебе забивает /tmp. У меня арчбанг с иксами и опенбоксом кушает что-то около 150 мэ.

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

Какое несоответствие? Зачем будить ктулху? Сначала ММ попытается выгрузить все что можно - кэш и код . А вот если выгружать нечего тогда зовёт ЕГО!

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

А, да, я долблюсь в глаза читал пасту с телефона, переносы строк не распарсил правильно.

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

Толпа илитных спицаолистов лора

...и самый илитный спициалист во главе. Ты вообще в курсе, что /tmp в tmpfs — это текущая рекомендация FHS и де-факто стандартное поведение? В /tmp не должно быть ничего объёмного, для таких файлов есть /var/tmp.

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

Ставь MS-DOS. 640 КБ хватит всем.

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

и самый илитный спициалист во главе

intelfx, поттераст

Взоржал.

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

Тюнил параметр swappiness, по умолчанию он выставлен в 60, я выставил его в 10. Системе 4 месяца.

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

Хе-хе, а то как же :)

Я указал на проблему, которую обнаружил. При том, что размер tmpfs, вроде как, не фиксированый, объём памяти почему-то ограничивается половиной. И я проверял, после отключения tmpfs гонка со свапом не наблюдается. Можете назвать меня криворуким, но если такое повторяется и на Манджаре и на самом Арче при дефолтных настройках, то...

А вы обмазались терабайтами памяти и не замечаете, потому что котиков и поней смотреть не мешает :)

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

Я указал на проблему, которую обнаружил.

Ты указал на симптом, а не на проблему. Только и всего. А лечить симптом вместо проблемы (при этом ещё и в стиле «одно лечим, другое калечим») — не очень хорошее дело.

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

Выфсёврёти!!! :)

Если остальные не наблюдают проблем, то я даже не знаю на что и дкмать. У меня ведь стабильно срабатывает. На случай или криворукость не спишешь, на шизу тоже.

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

Проблема в том, что в арче зачем-то придумали пихать /tmp в память.

Вот как... А я специально вздумался использовать /tmp, чтобы хранить там свап-файл - чтобы он не оставался лежать где-то статически, а создавался только при необходимости и удалялся после каждой перезагрузки.

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

Может, в ядрёный драйвер таки завезли запиcь? Впрочем, если сделать как на live-дистрибутивах типа Puppy Linux — система read-only, а все изменяемые данные кладутся в файл-образ, который может храниться хоть на той же NTFS, то должно фурыкать.

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

И /tmp из памяти убрать. Да, медленне, но хоть нормально работать будет.

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

То есть, по сути, любые ядрёны драйвера ФС можно перенести на FUSE и их полноценно можно будет применять уже на момент запуска инита?

bodqhrohro_promo
()

xdm+xorg+twm+xterm - будут занимать 250 мб.

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

Но не любые, а те, что поддерживаются FUSE. Ядерные и так работают. И еще, с FUSE есть нюанс: нужно еще и их зависимости в initrd затолкать. Впрочем, у mount.ntfs-3g их немного. Распаковываем образ initrd, кладем все необходимое по соответствующим путям, чрутимся в будущий initrd, проверяем зависимости и конфиги, проверяем работоспособность, выходим из чрута и собираем образ.

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

А ещё NTFS дополнительные потоки для файлов поддерживает. Если POSIX-права туда затолкать — будет вообще пушка. Правда, оно так может сильно избыточно выйти.

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

Вот как... А я специально вздумался использовать /tmp, чтобы хранить там свап-файл - чтобы он не оставался лежать где-то статически, а создавался только при необходимости и удалялся после каждой перезагрузки.

Брр, что за...? Как будто ты не знал, что /tmp лежит в памяти?

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

Знал. Просто в /tmp быстрее получается запись и ресурс жёсткого диска не расходуется, поэтому захотелось оставить свап-файл там.

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

А это вообще, кстати, бережно использовать свап на SSD? В свап же может много чего писаться.

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

Не знаю, кто такой Спуфинг и почему вас триггерит на расходование жёсткого диска, но... Равзе когда свап в /tmp, на жёсткий диск что-то записывается из той памяти, которая отправляется в свап? Я уже запутался, но по-моему так и есть. Почему бы тогда и не оставить свап в /tmp ?

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

ресурс жёсткого диска не расходуется

Чего?

поэтому захотелось оставить свап-файл там.

Чего?

Ты хоть понимаешь, для чего swap нужен? Размещая swap в озу, ты делаешь полнейшую дичь (zram - отдельная тема). Когда память закончится, система начет сбрасывать данные в swap, который находится у тебя в памяти, которая закончилась. Произойдет полное зависание системы.

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

Окей. Как тогда сделать так, чтобы свап в /tmp заполнялся не сразу в 1 GB, а постепенно? Я понимаю, что он и так сразу не заполняется, но в /tmp файл весит именно 1 GB.

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

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

  • ты знал, что /tmp не на жёстком диске, а в памяти
  • swap-файл — это, очень грубо, «дополнительная оперативная память»

Чем нужно было руководствоваться, принимая такое решение?

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

Окей. Как тогда сделать так, чтобы свап в /tmp заполнялся не сразу в 1 GB, а постепенно?

Зачееем? Общее количество занятой оперативной памяти не изменится!

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

Похоже ты так и не понял. Swap в /tmp - плохая идея, не важно сразу заполняется он на 1 гб или нет.

Swap нужен для увеличения объема озу, грубо говоря. Поэтому он и размещается на жестком диске, а не в памяти. Его категорически нельзя размещать в памяти, если это не zram. Почитай в инете для полного понимания.

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

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

И да, tmpfs это не то же, что /tmp, и если делать своп в памяти, то на отдельной tmpfs, а не в /tmp.

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

Именно. У tmpfs есть параметр «size=размер», так вот, «виртуальный диск» указанный гигабайт и займет, и неважно сколько там в действительности занято.

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

Ну, можно сказать и так :)

$ df -h /tmp
Файловая система Размер Использовано  Дост Использовано% Cмонтировано в
tmpfs              1,0G          36M  989M            4% /tmp

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           7819         676        2070         144        5072        6435
Swap:             0           0           0

yars068 ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.