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

681
rumtscho

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

Я планирую чистую переустановку и хочу попробовать что-то новое. Среди них я хочу уменьшить нагрузку на запись на SSD, поместив системные каталоги с интенсивной записью в tmpfs. В частности, я хочу поставить /tmp, /var/tampи /var/tmp/cacheв ОЗУ. Очевидно, это увеличит использование моей оперативной памяти, и в какой-то момент мне может понадобиться своп.

В прошлом я не регистрировал размеры временных каталогов и использование оперативной памяти и не хочу устанавливать инструменты ведения журналов и ждать переустановки, пока не соберу достаточное количество данных. Каковы мои лучшие варианты для выбора подходящего размера раздела подкачки? Насколько разумным будет такое предположение? Я только что оставил стрельбу в темноте или полагаюсь на излишние рекомендации типа «1.5x ваш объем оперативной памяти»?

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

2
Моя операционная система (Arch Linux) находится на SSD, и у меня 6 ГБ оперативной памяти. У меня есть раздел подкачки на 2 ГБ, который редко затрагивается. Просто чтобы дать вам точку данных 2017 года. Emanuel Landeholm 6 лет назад 0

2 ответа на вопрос

4
David Schwartz

У вас есть три проблемы, когда дело доходит до места подкачки.

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

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

Наконец, при очень малом объеме подкачки ваше решение перегрузить виртуальную машину или нет может иметь радикальные последствия. Если вы не разрешите системе перегружать виртуальную машину, вы будете отказываться от операций, которые на самом деле не используют много памяти. (Представьте, что большой процесс вызывает fork. Он может быть готов к вызову exec, но если вы не разрешите перегрузку, ОС должна отказаться, forkесли у нее недостаточно ОЗУ + подкачка, чтобы новый процесс мог испортить каждую доступную для записи отображаемую страницу.) Если вы разрешите системе перегружаться, и на самом деле у вас недостаточно оперативной памяти и подкачки для нетипичной рабочей нагрузки, вы можете обнаружить, что процессы нереально прекращаются.

Лично, предполагая типичное использование, я бы выделил 2 ГБ для подкачки и убедился, что допустимо разумное чрезмерное использование .

2
pdvyas

Если вы не выполняете каких-либо задач с интенсивным использованием памяти, то компьютер с 6G RAM может обойтись без подкачки (предупреждение: я сумасшедший).

Монтирование / tmp (его / siblings) как tmpfs - очень хорошая практика. Для моего нетбука с 1G RAM, без подкачки, сохранил 100M / tmp tmpfs и никогда не создавал проблем (если только вы не хотите извлекать такие вещи, как кэши, которые люди обычно не хотят).

Если что-то облажается, все, что вам нужно отредактировать, это / etc / fstab.

Паранойя хороша, но у вас меньше шансов потерять данные, так как в памяти находятся только каталоги tmp / cache, реальные данные все равно записываются на диск.

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