Я только что обнаружил, что в моей системе нет места подкачки
Если это правда, то это, вероятно, усугубляет проблему.
При использовании нескольких виртуальных машин с большим выделением памяти объем ОЗУ, которого обычно было бы более чем достаточно для обычного использования (8 ГБ), начинает становиться ограниченным, что означает, что ваша система не сможет использовать столько же кэш-памяти и захочет поменяться местами. , Теперь, если у вас нет свопинга, нагрузка на память будет еще больше, и вы можете даже убить задачи из-за нехватки памяти.
Swap пытается улучшить общую стабильность и производительность в ситуациях, подобных описанной вами, путем перераспределения некоторых выделенных, но редко используемых данных в памяти на диск, освобождая память для данных, которые вы используете. Добавление свопа, если у вас его действительно нет, поможет. Однако с точки зрения производительности вы добьетесь гораздо большего улучшения, если также купите больше оперативной памяти или будете использовать ее меньше.
В системе, где вы используете виртуальные машины, но также используете обычный рабочий стол на хосте виртуальных машин, вы не хотите, чтобы ваши виртуальные машины занимали всю вашу оперативную память, фактически я бы сэкономил половину вашей оперативной памяти (до 4 ГБ) ) для хоста, если вы используете программное обеспечение на хосте и хотите, чтобы оно было отзывчивым.
Также обратите внимание, что виртуальным машинам присуща неэффективность не только потому, что их ОЗУ полностью отделены, они не разделяют кеш или буферы, но они работают на целой отдельной ОС под несколькими уровнями абстракции. Таким образом, вы всегда можете добиться большей эффективности, если решите запустить что-то на хосте, а не на виртуальной машине, хотя если ваша цель использовать виртуальные машины - использовать другие операционные системы, это будет невозможно.
Есть ли способ гарантировать, что пользовательский интерфейс остается отзывчивым, когда моя система работает?
Когда количество ОЗУ у вас есть проблема, все, что вы можете сделать, это только взломать - реальное решение - купить больше ОЗУ (хотя в вашем случае, как я уже говорил, вы можете просто выделить меньше для виртуальных машин).
Ваш вопрос изложен в простых терминах - вы хотите, чтобы пользовательский интерфейс продолжал работать бесперебойно, даже если IO перегружен. Однако ответить сложно. Ваша система уже будет делать это в меру своих возможностей: операции, не требующие доступа к диску, не будут задерживаться. Если ваш «пользовательский интерфейс заикается», то это потому, что конкретному процессу, ответственному за этот пользовательский интерфейс, необходим доступ к диску. В ситуации нехватки памяти, когда диск трескается, даже что-то, что обычно бывает тривиально - например, чтение некоторой конфигурации из вашего домашнего каталога, чтобы выяснить, каковы ваши настройки отображения - может быть медленным из-за истощения дискового кэша.
Я мог бы представить что-то вроде «приятно» для памяти (чтобы я мог приятно Chrome и моя виртуальная машина)
Там на самом деле не «хорошо для памяти». Доступ к памяти настолько быстр, что вы можете практически игнорировать его. Когда у вас перебивают, это не память, это диск, это проблема. Из-за этого существует "ионика". Хотя это, вероятно, не то, что я бы порекомендовал для вашей проблемы.
Другим грубым эквивалентом «приятно для памяти» является своп - вы не можете контролировать, насколько свапен каждый процесс в отдельности, но система довольно хорошо определяет, какие процессы вы активно используете, и, следовательно, имеет более высокий приоритет для сохранения ОЗУ.
Но, как я сказал, и как золотое правило, если у вас заканчивается ОЗУ, то покупка большего объема ОЗУ - это решение с наименьшими головными болями и недостатками.