The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск обработчика нехватки памяти earlyoom 1.4, opennews (ok), 02-Мрт-20, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


196. "Выпуск обработчика нехватки памяти earlyoom 1.4"  +/
Сообщение от Аноним (-), 05-Мрт-20, 02:21 
См. сюда - https://www.opennet.ru/openforum/vsluhforumID3/119943.html#193
> 0) запустилось/не запустилось/прибилось

Запустилось, сожрало память, прибито oom_killer. С -O2 то только грузило проц, но не жрало RAM.

> 1) дистрибутив

Deb 10; кернел собственный (full preempt aka "realtime"; no_hz_full aka "tickless"; примерно 5.5).

> 2) swap включён или нет

ZRAM.

> 3) полный фриз/притормаживает/вообще не заметил

Даже плеер не икнул.

> 4) диск: hdd или ssd

SSD. Но HDD в _этом_ случае не должен был бы сильно испортить.

> 5) настройки "из коробки" или что-то сами настраивали

Осмысленный тюниг с задействованием головы. Цель - быстрая система, которую не клинит. Судя по тесту, получилось отлично. Кернель собран по вкусу, интересного в данном случае full preempt, это полезно от клинов.

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

210. "Выпуск обработчика нехватки памяти earlyoom 1.4"  +/
Сообщение от yaya (?), 05-Мрт-20, 15:59 
Спасибо за отзыв!

Видимо, oom_killer спас в этой ситуации.

Почему у меня, интересно, не сработал oom_killer? Запускаю ulimit у себя и вижу unlimited. Может в этом всё дело...

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

225. "Выпуск обработчика нехватки памяти earlyoom 1.4"  +/
Сообщение от Аноним (-), 07-Мрт-20, 07:38 
> Видимо, oom_killer спас в этой ситуации.

А не должен был? В системе кончилась память - он и возбух.

> Почему у меня, интересно, не сработал oom_killer?

А кернель сильно древний? Если системный диск механический и много всего запущено, бинари могут подрабатывать readonly свопами. Ну и его вручную можно попросить alt-sysrq-f.

> Запускаю ulimit у себя и вижу unlimited. Может в этом всё дело...

Ulimit и oom_killer несколько ортогональны. Если ulimit или подобный лимит сработает, до oom_killer дело скорее всего не дойдет - прога получит фигу до того как в системе память кончится "глобально". И кстати там вон подсказывают что ошибки выделения памяти нехило бы ловить.

Я кстати не полностью понял что оно делает с -O2. VSZ конский, RSS натикал до гига и угомонился, после этого оно только проц грузит. Дизассемблить/профайлить все же несколько впадлу, я и так пару мистических штук разрулил, еще столько же осталось.

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

226. "Выпуск обработчика нехватки памяти earlyoom 1.4"  +/
Сообщение от yaya (?), 10-Мрт-20, 12:50 
> А не должен был? В системе кончилась память - он и возбух.

Я не много знаю про OOM killer, но он там как-то определяет, что убить, а что оставить. Теоретически, он мог прибить не тест, а что-то полезное.

Да и то, пока не будет swap'а - тест не особо интересен. Именно из-за наличия swap'а, можно словить тормоза.

> А кернель сильно древний?

Не знаю, но версия такая: 3.10.0-1062.9.1.el7.x86_64

> Ну и его вручную можно попросить alt-sysrq-f.

Вот что-что, а хоткеи в линуксе/ОС - это ещё одна больная тема, с которой я сталкиваюсь (хотя тут, наверное, X'ы уже виноваты, а не ядро). Элементарно не работают комбинации ctrl-shift-<some-key> (по ctrl-shift у меня переключение языка) (хотя в той же винде в той же программе (kicad, например) всё работает), а вы говорите про alt-sysrq-f, которые я жму - ничего не происходит. То ли оно работает, но не подаёт виду, то ли что-то опять не так с хотекеями... Но запускать свой тот тест и проверять alt-sysrq-f - не хочу рисковать опять жёстко вырубать комп :)

> Я кстати не полностью понял что оно делает с -O2.

0000000000400440 <main>:
  400440:       48 83 ec 08             sub    rsp,0x8
  400444:       0f 1f 40 00             nop    DWORD PTR [rax+0x0]
цикл 1: вызываем malloc(1 GB):
  400448:       bf 00 00 00 40          mov    edi,0x40000000
  40044d:       e8 de ff ff ff          call   400430 <malloc@plt>
делаем "цикл 1", пока он возвращает указатели:
  400452:       48 85 c0                test   rax,rax
  400455:       74 f1                   je     400448 <main+0x8>
цикл 2: заводим счётчик на 1 GB / 8:
  400457:       b8 00 00 04 00          mov    eax,0x40000
  40045c:       0f 1f 40 00             nop    DWORD PTR [rax+0x0]
делаем "цикл 2", пока счётчик не 0:
  400460:       83 e8 01                sub    eax,0x1
  400463:       75 fb                   jne    400460 <main+0x20>
повторяем "цикл 1"
  400465:       eb e1                   jmp    400448 <main+0x8>

Итого: компилятор выпилил запись в память. Мы впустую типа запросим память и впустую прокрутимся в пустых циклах.

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

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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