oom уничтожитель это экранирует меня

реверс ssh туннель должен сделать то, что Вы хотите.

более подробная информация: http://www.howtoforge.com/reverse-ssh-tunneling

7
24.07.2012, 05:53
2 ответа

Править: Этот ответ является неправильным. Хотя все еще возможная причина для oom-уничтожителя, который будет вызван, это не причина в этом конкретном случае.


Похоже, что это происходит из-за фрагментации памяти.

От вывода Вы, если, самый высокий порядок непрерывный блок памяти Вы имеете, являетесь блоком 32 КБ в normal зона. Это означает, что, если что-нибудь пытается выделить блок памяти, больше, чем 32 КБ, она перестанет работать.
Обычно это не обязательно означает, что oom-уничтожитель будет вызван (иначе, приложение могло запросить огромный блок памяти и таким образом инициировать OOM), однако это - ядро, которое пытается выделить память, и таким образом, это немного более серьезно. В этом точном случае похоже, что выделение было инициировано путем запуска нового процесса, и ядро пыталось выделить память для того процесса.

Ядро автоматически пытается уплотнить (дефрагментируют) память и получают большие блоки непрерывной доступной памяти, но некоторые страницы не могут быть перемещены. И чем дольше система работает, тем более рассеянными эти 'неперемещаемые' страницы становятся.

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


Что касается того, что, в котором выше вывода указывает на фрагментацию памяти, это - следующие строки
 DMA: 2358*4kB 912*8kB 25*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB 0*8192kB 0*16384kB = 17128kB 
 Normal: 4266*4kB 657*8kB 32*16kB 1*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB 0*8192kB 0*16384kB = 22864kB

Запись как 32*16kb средства там составляют 32 16 КБ непрерывные блоки свободной памяти.

6
27.01.2020, 20:18
  • 1
    Но, от журналов я пытаюсь выделить порядок 2 страницы. И существует достаточно порядка доступные 3 страницы. Почему oom уничтожитель все еще вызывает? "gfp_mask=0xd0, order=2" –  Ankur Agarwal 24.07.2012, 07:50
  • 2
    @abc Вы правы, я полностью, пропустил это. Я пошел, скользя через код ядра (не 2.6.31 хотя, но близкая версия), и я не вижу, что что-нибудь выскакивает во мне :-( –  Patrick 24.07.2012, 15:49

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


Я думаю, что Patrick корректен - существует недостаточный непрерывный DMA, чтобы смочь позволить процессу работать. Это могло быть для следующих возможных причин:

  1. Встроенная система может иметь пользовательскую реализацию подкачки страниц
  2. Встроенная система не могла бы иметь MMU
  3. Сценарий мог вызов драйвер IO, который получает доступ к DMA точно
  4. Сценарий мог содержать сторонние программы, которые требуют непрерывной памяти

и т.д...

Я полагаю, что при сокращении фрагментации памяти DMA уничтожитель OOM не перешел бы. Самый легкий способ быстро протестировать, который должен перезапустить встроенное устройство и видеть, называют ли OOM-уничтожителя все еще.

Я теперь продолжу наталкиваться вокруг Интернета, ища легкий вес, встроенный дружественный способ дефрагментировать память, не сбрасывая их устройство.

Эта ссылка может представлять интерес: http://bl0rg.krunch.be/oom-frag.html

1
27.01.2020, 20:18

Теги

Похожие вопросы