Раздел подкачки не используется полностью
У меня громоздкий исходный код на Фортране ( WRF) для компиляции.
Каждый раз, когда я компилирую код, система зависает. Чтобы диагностировать проблему, я увидел производительность памяти в системном мониторе Ubuntu, и компиляция съела всю оперативную память. Тогда это также начинает есть память подкачки. Мой ноутбук имеет 4 ГБ оперативной памяти. Я расширил его до 8 ГБ ОЗУ. Я создал раздел подкачки на 12 ГБ. Но однажды моя загрузка раздела подкачки достигает 4 ГБ. система зависает. Почему весь мой раздел подкачки не используется (см. Ниже)?
2 ответа
Почему вы хотите, чтобы использование свопа было выше?
Чтение / запись в своп в 1000 раз медленнее, чем чтение / запись в ОЗУ.
Система может не зависать, просто она так занята, переставляя вещи назад и вперед, кажется, что она зависла.
@phihag сказал в комментариях:
Скорее всего, когда объем свопа достигает 4 ГБ, это происходит примерно в то время, когда какая-то часть пользовательского интерфейса выгружается. Например, это может быть код для обработки Ctrl+C, обработчик раскладки клавиатуры, код, который отображает вывод в терминале, некоторый буфер данных терминала, некоторый буфер данных X-сервера, который рисует изображения и т. Д. Скорее всего, если вы подождете пару часов, либо ваш своп заполнится, либо все данные и код, необходимые для обработки Ctrl + C на разных уровнях, в конечном итоге приведут к уничтожению вашего процесса на Fortran.
Я хотел бы предложить получить больше оперативной памяти. Это значительно ускорит вашу компиляцию. Это довольно недорого в наши дни, ~ 60 долларов за 16 ГБ.
Используя слишком много swap
это плохо для вашей системы. Чем больше своп, тем больше лаг. Android Dev уже указал, почему вы не хотите больше использовать своп. Однако есть способ настроить частоту использования раздела подкачки в вашей системе. Это управляется настройкой под названием swappiness
, Вы найдете подробное руководство по изменению swapiness по этой ссылке.
Я не рекомендую вам увеличивать swappiness. Вы даже не можете использовать раздел подкачки 12 ГБ. Общее правило заключается в том, что подкачка должна составлять половину вашей основной памяти. Для вас это 2 ГБ.