Как я могу предотвратить сбой или выход из строя моей системы из-за высокой загрузки ОЗУ?

Иногда, когда я использую Lubuntu 17.10 - полностью обновленный, мое использование оперативной памяти достигает 100%, и система становится непригодной для использования, если мне «везет», я могу перемещать мышь примерно на 1 пиксель в 10 секунд ... Это делает это практически невозможно что-либо сделать, даже закрыть приложения. Затем я вынужден использовать кнопку питания на моем ноутбуке.

Я использую MacBook Pro Retina в конце 2013 года с почти новой установкой Lubuntu 17.10.

До сих пор это происходило, когда я открыл spyder3 и загрузил слишком большие файлы. Это также произошло, когда я щелкнул эту ссылку в Firefox (ВНИМАНИЕ: может произойти сбой) http://stats.oecd.org/restsdmx/sdmx.ashx/GetData/SNA_TABLE1 . Я даже закрыл вкладку до 100% использования, но она продолжала работать до 100% и вылетала. Я заметил это только потому, что закрыл вкладку и увидел использование оперативной памяти в spyder3 (я не запускал никаких скриптов python3).

Есть ли способ предотвратить это? Возможно, убедитесь, что конкретный объем оперативной памяти может использоваться только ОС?

7
задан 13 January 2018 в 01:50

4 ответа

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

Если вы хотите, чтобы процессы, использующие слишком много памяти, были уничтожены, а не заставляли всю вашу систему работать медленно, вы можете отключить подкачку. Запуск sudo swapoff -a будет достигать этого до перезагрузки; чтобы навсегда отключить своп, вам нужно отредактировать /etc/fstab, чтобы удалить раздел подкачки / своп, удалив или закомментировав строку с swap в третьем столбце. Например, мой /etc/fstab выглядит примерно так:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/ubuntu--vg-root /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=fdedeca9-dafe-1a05-0866-7502fda1a7ea /boot           ext2    defaults        0       2
/dev/mapper/ubuntu--vg-swap_1 none            swap    sw              0       0

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

Предупреждение: Если вы отключите подкачку и у вас недостаточно физической памяти для базовых системных служб, убийца OOM может решить убить один из них и привести к сбою системы или стать непригодным для использования по иным причинам (что вопрос говорит, что вы хотите избежать).

3
ответ дан 13 January 2018 в 01:50

@Josh ответил:

Я думаю, что описанная проблема («система становится непригодной для использования, если мне« повезет », я могу двигать мышью примерно на 1 пиксель за 10 секунд»), вероятно, вызванный перебоями в системе, пытаясь обменять много страниц одновременно. Отключение подкачки должно привести к уничтожению приложения, требующего памяти, а не к остановке всей системы.

Это решило мою проблему.

У меня был своп, когда я установил Lubuntu, однако он был удален с помощью gparted позже. Я не редактировал / etc / fstab, что и вызвало проблему. Как только обмен был удален должным образом, убийца OOM начал работать как задумано.

0
ответ дан 13 January 2018 в 01:50
  • 1
    я don' t имеют любой из тех 2 файлов. комментарии внутри .profile, обозначенные примеры помогут мне понять это в конечном счете, так спасибо. – vlad-ardelean 4 June 2012 в 20:34
  • 2
    я don' t имеют любой из тех 2 файлов. комментарии внутри .profile, обозначенные примеры помогут мне понять это в конечном счете, так спасибо. – vlad-ardelean 4 June 2012 в 20:34
  • 3
    я don' t имеют любой из тех 2 файлов. комментарии внутри .profile, обозначенные примеры помогут мне понять это в конечном счете, так спасибо. – vlad-ardelean 4 June 2012 в 20:34
  • 4
    я don' t имеют любой из тех 2 файлов. комментарии внутри .profile, обозначенные примеры помогут мне понять это в конечном счете, так спасибо. – vlad-ardelean 4 June 2012 в 20:34
  • 5
    я don' t имеют любой из тех 2 файлов. комментарии внутри .profile, обозначенные примеры помогут мне понять это в конечном счете, так спасибо. – vlad-ardelean 4 June 2012 в 20:34
  • 6
    я don' t имеют любой из тех 2 файлов. комментарии внутри .profile, обозначенные примеры помогут мне понять это в конечном счете, так спасибо. – vlad-ardelean 4 June 2012 в 20:34

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

файл подкачки проще в создании, но он не позволяет переходить в спящий режим на жесткий диск.

файл подкачки: https://www.howtoforge.com/ubuntu-swap-file

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

раздел подкачки: Как добавить раздел подкачки после установки системы?

1
ответ дан 13 January 2018 в 01:50

Если процесс потребляет слишком много памяти, то система должна защищать себя через OOM killer, что является стандартной функцией в любой системе Linux.

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

Если память исчерпана процессами, степень, которая может угрожать стабильности системы, тогда убийца OOM входит в картину.

ПРИМЕЧАНИЕ. Задачей OOM Killer является продолжение процессов уничтожения до тех пор, пока не освободится достаточно памяти для бесперебойного функционирования остальной части процесса, который пытается запустить Ядро.

OOM Killer должен выбрать лучший процесс (ы) для уничтожения. Под «лучшим» здесь понимается тот процесс, который высвободит максимум памяти при убийстве, а также наименее важный для системы.

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

Чтобы облегчить это, ядро ​​поддерживает oom_score для каждого из процессов. Вы можете увидеть oom_score каждого из процессов в файловой системе / proc в каталоге pid.

$ cat /proc/10292/oom_score

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

Если ваша система дает сбой, я бы предложил точную настройку политики OOM, настроив oom_score ваших процессов.

Маловероятно, что OOM killer был отключен, но, чтобы убедиться, что эта команда возвращает 0:

$ sudo sysctl vm.overcommit_memory
vm.overcommit_memory = 0

Ссылки:

  1. http://www.oracle.com/technetwork/articles/servers-storage-dev/oom-killer-1911807.html
  2. https://superuser.com/questions/1150215 / disabling-oom-killer-on-ubuntu-14-04 / 1150229
  3. https://unix.stackexchange.com/questions/153585/how-does-the-oom- киллер решает, какой процесс убить первым
  4. https://www.kernel.org/doc/Documentation/sysctl/vm.txt
6
ответ дан 13 January 2018 в 01:50

Другие вопросы по тегам:

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