LINUX.ORG.RU

Лимиты на десктопе для предотвращения зависаний

 ,


2

6

Вопрос фанатам лимитов: как вы решите ситуацию, когда, например, на десктопе я пользуюсь прогами app1, app2, app3. И каждый раз они могут выжирать разное кол-во памяти. И могут запускаться сразу все. А могут по одной. При этом я хочу достичь полной утилизации памяти, при этом надежно предотвращать зависания.

praseodim aidaho WitcherGeralt intelfx

★★★

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

Ответ на: комментарий от hakavlad

Как будто что-то хорошее.

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

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

только гуй перекрашивать умеют

Не только! Ещё и sudo умеют «раком» поставить и делают это на протяжении многих лет.

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

Как будто что-то хорошее.

А с SDDM и ему подобными по-другому как-то можно, чтобы не сильно уродски? Чтобы он юзера впустил, рутовые иксы выгрузил, юзеоские запустил?

Без SDDM, если залогиниться и startx написать, иксы от юзера работают.

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

Чего тогда спрашивал, шлимазл?

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

В Manjaro то же самое. Fedora Rawhide LXDE - то же самое. С SDDM - то же самое - Xorg запускается от рута в system.slice.

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

page cache, я не помню, как себя ведут цгруппы применительно к нему

ИМХО он не должен учитыватьcя, как не учитывается при вычислении Mem Used и RSS. Это ж просто кэш.

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

В Manjaro то же самое. Fedora Rawhide LXDE - то же самое

Это очень забавно.

В любом случае, даже если у тебя Xorg в другой цгруппе относительно пользовательских программ, это всё равно не инвалидирует то, о чём я говорил в самом начале: твоё WM/DE всё равно будет лежать в одной цгруппе вместе с запускаемыми приложениями.

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

Это очень забавно.

Откуда инфа, что это устаревшее поведение? Где прописан новый стандарт? И где он уже применяется, кроме Гнома с вяленым?

WM/DE всё равно будет лежать в одной цгруппе вместе с запускаемыми приложениями

Есть ли смысл разнести из по разным группам? Есть идеи?

Кажется, ulatencyd делал нечто подобное. Думаю неплохо б возродить его возможности в новом демоне, ибо ulatancyd заброшен и не работает с cgroup2 (а на исправление ulatancyd времени у меня нет).

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

ulatancyd заброшен и не работает с cgroup2 (а на исправление ulatancyd времени у меня нет)

«Хороший» проброс. Думаешь, кто-нибудь купится?

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

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

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

Я всегда поражался читаемости исходников Linux и адового «макроассемблера» в freebsd

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

А как юзерспейс скрипт не убивается оом киллером?

1. Этот скрипт сам убивает толстых раньше ядерного киллера.

2. Весит не очень много, 10 - 12 M (в 15 раз меньше вкладки хрома и в два раза меньше, чем процесс lxterminal, и в полтора раза больше, чем процесс bash).

3. Имеет отрицательный oom_score_adj

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

Откуда инфа, что это устаревшее поведение?

Так, мы сейчас про rootless Xorg говорим ведь, так? Инфа от разработчиков собственно Xorg и всего линуксового графического стека, которые положили на это несколько лет (20092013).

Где прописан новый стандарт?

А где прописан старый стандарт?

И где он уже применяется, кроме Гнома с вяленым?

Без понятия.

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

Ниже по треду оказалось, что memory.min и memory.low почему-то не работают (или работают не так, как я себе это представлял). Прочтение доки не помогло, там написано ровно то, что я себе представлял.

Почему – не очень понятно.

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

А чем оно сейчас неадекватно? Главное - оверкоммит есть. Для остального есть система GNU c юзерспейсом.

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

Ну, по-умолчанию низкий swapiness, самый примитивный oom killer...

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

То, что в ядре не обрабатываются возможность исчерпания памяти. В куче мест ядра память выделяется с флагом __GFP_NOFAIL, те «всегда выделяй память, никогда не возвращай ошибку». Всегда выделить память ясен хрен невозможно, и что вынужден делать аллокатор? Он тупо крутит бесконечный цикл, проверяя, а вдруг память появилась из астрала.

Пруф: https://lwn.net/Articles/635354/

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

Всегда выделить память ясен хрен невозможно

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

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

Во-первых, когда что-то реально записываешь в виртуальную память, происходит page fault, обработчик которого в ядре идёт реально выделять память. И тут происходит упс.

Во вторых, для каких-нибудь dma буферов обязательно нужен непрерывный блок реальной памяти, никакой виртуальной.

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

Это не ответ на вопрос «почему нельзя выделить неограниченное количество вирт памяти?».

когда что-то реально записываешь в виртуальную память

для каких-нибудь dma буферов обязательно нужен непрерывный блок реальной памяти

- это не имеет прямого отношения к вопросу

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

Ну кто тебе виноват, что твой вопрос не имеет отношения к изначальной теме. В конце концов нужна реальная память, а не виртуальная.

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

Ты ж начал вскрывать тему невозможности выделения (это не имеет отношения к теме). У меня-то оверкоммит в единице и проблем с выделением нет. А нехватку реальной обрабатывает демон.

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

Я вскрывал тему невозможности выделения в ядре. Именно в ядре в конце концов выделяется реальная память, а не виртуальная.

anonymous
()
6 ноября 2019 г.

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

Демо: https://youtu.be/H6-qfXqzINA

Код поделия еще не опубликован.

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

Убивалка работает в фоне, но это не важно. Новость о том, что появился новый способ сохранять отзывчивость.

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

Так в результате грохнется первая программа, которая попытается выделить память сверх лимита. Ничем не лучше OOM. У него хоть какой-то скоринг есть.

При вызове киллера внутри контрольной группы также действует скоринг - прибъется процесс с максимальным oom_score внутри ограничиваемой контрольной группы.

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

Так, мы сейчас про rootless Xorg говорим ведь, так?

Искы запускаются в сессии пользователя при использовани дисплей менеджера GDM. Остальные - lightdm, sddm - ведут себя классически и запускают иксы от рута. Рут или не рут - зависит от менеджера дмсплеев.

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

В контексте иксов «rootless» означает совсем другое, чем «non-root».

The generic rootless layer allows an X server to be implemented on top of another window server in a cooperative manner.

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

GDM в данном контексте единсвенный современный DM.

Жаль, что он тащит более 100М зависимостей, в том числе гном шелл.

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

«Понимание» уровня папуасов, которым и так норм.

anonymous
()

Посмотрим правде в глаза, Linux просто не настольная операционная система. Это серверная операционная система, и она ожидает, что она будет профессионально администрироваться и жестко контролироваться для предотвращения ситуаций с OOM. То, что ситуации OOM происходят на серверах, тоже не относится к делу. Существуют причины, по которым система памяти Linux работает так, как она работает, поэтому Линус будет на вас кричать, если вы будете жаловаться.

https://news.ycombinator.com/item?id=20622465

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

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

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

не имеют права коммита в ядро

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

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