Как сделать так, чтобы моя система перестала отвечать при сбое (нехватка ОЗУ)?


11

У меня 8 ГБ ОЗУ, но иногда я использую пару виртуальных машин и достаточно процессов Chrome, чтобы использовать большую часть моей памяти. Обычно это нормально, но иногда моя система начинает работать, и мне трудно восстановиться после нее, не дожидаясь улучшения ситуации, поскольку пользовательский интерфейс в основном завис.

Во всех этих случаях программы, использующие большую часть моей оперативной памяти, могут быть депортированы. Если Chrome или виртуальная машина перестали отвечать, но моя графическая среда и терминал все еще реагировали, я мог переключиться на терминал, найти виновника и убить его. Я мог бы представить что-то вроде «приятного» для памяти (чтобы я мог выбрать Chrome и мою ВМ) или что-то, чтобы заставить графическое окружение и мой терминал оставаться в памяти, а не менять местами.

Есть ли способ гарантировать, что пользовательский интерфейс остается отзывчивым, когда моя система работает?

Благодарность!

РЕДАКТИРОВАТЬ: Мне все еще интересно, есть ли что-то вроде хорошего для памяти, но я только что обнаружил, что в моей системе нет места подкачки. Я думаю, что это произошло потому, что я начал использовать зашифрованный дом и зашифрованный своп (см. Раздел «Не работает своп при чистой установке 14.04 с использованием зашифрованного дома» ). Итак, моя система, вероятно, перестает отвечать на запросы, потому что у меня нет места подкачки, поэтому моя система не может выгружать ненужные программы, когда ей не хватает памяти.


Похоже, вы нашли причину своей проблемы (не выделен своп) - теперь вы хотите узнать, как настроить зашифрованный своп? Может быть, вы могли бы отредактировать вопрос или начать новый вопрос.
Томасруттер

1
Я по-прежнему интересуюсь стилем в стиле RAM, поскольку у меня были проблемы, аналогичные описанным в моем вопросе, даже когда у меня был файл подкачки.
Сэм Кинг,

Ответы:


2

Я только что обнаружил, что в моей системе нет места подкачки

Если это правда, то это, вероятно, усугубляет проблему.

При использовании нескольких виртуальных машин с большим выделением памяти объем ОЗУ, которого обычно было бы более чем достаточно для обычного использования (8 ГБ), начинает становиться ограниченным, что означает, что ваша система не сможет использовать столько же кэш-памяти и захочет поменяться местами. , Теперь, если у вас нет свопинга, нагрузка на память будет еще больше, и вы можете даже убить задачи из-за нехватки памяти.

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

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

Также обратите внимание, что виртуальным машинам присуща неэффективность не только потому, что их ОЗУ полностью отделены, они не разделяют кеш или буферы, но они работают на целой отдельной ОС под несколькими уровнями абстракции. Таким образом, вы всегда можете добиться большей эффективности, если решите запустить что-то на хосте, а не на виртуальной машине, хотя если ваша цель использовать виртуальные машины - использовать другие операционные системы, это будет невозможно.

Есть ли способ гарантировать, что пользовательский интерфейс остается отзывчивым, когда моя система работает?

Когда количество ОЗУ у вас есть проблема, все, что вы можете сделать, это только взломать - реальное решение - купить больше ОЗУ (хотя в вашем случае, как я уже говорил, вы можете просто выделить меньше для виртуальных машин).

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

Я мог бы представить что-то вроде «приятно» для памяти (чтобы я мог приятно Chrome и моя виртуальная машина)

Там на самом деле не «хорошо для памяти». Доступ к памяти настолько быстр, что вы можете практически игнорировать его. Когда у вас перебивают, это не память, это диск, это проблема. Из-за этого существует "ионика". Хотя это, вероятно, не то, что я бы порекомендовал для вашей проблемы.

Другим грубым эквивалентом «приятно для памяти» является своп - вы не можете контролировать, насколько свапен каждый процесс в отдельности, но система довольно хорошо определяет, какие процессы вы активно используете, и, следовательно, имеет более высокий приоритет для сохранения ОЗУ.

Но, как я сказал, и как золотое правило, если у вас заканчивается ОЗУ, то покупка большего объема ОЗУ - это решение с наименьшими головными болями и недостатками.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.