Важность раздела подкачки


34
  • Какова цель раздела подкачки?
  • Как узнать, что у меня достаточно раздела подкачки? Не слишком много / мало.

Мой Ubuntu PC используется для типичных вещей:

  • Интернет (электронная почта, Facebook и т. Д.)
  • Некоторые фильмы
  • игры редки

Судя по тому, что было опубликовано, похоже, что у меня слишком много свопов. 3 ГБ ОЗУ, 300 ГБ HD и 8 ГБ раздел для подкачки.
Lamcro

2
Дополнительный обмен, который не используется, не повредит вам, и восстановление 1,7% вашего диска, чтобы сделать его меньше, вероятно, не стоит усилий. Да, он намного больше, чем вы, возможно, когда-либо будете использовать, я бы об этом не беспокоился.
MSS

1
Вы также можете рассматривать его как раздел подкачки «на будущее», если вы когда-нибудь добавите дополнительную память в свою систему, вам не придется увеличивать своп… :)
JanC

Ответы:


15

Раздел подкачки служит нескольким целям.

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

  • Используется, когда компьютер спит. Гибернация включает в себя получение образа ОЗУ в его текущем состоянии (подобно тому, как ISO представляет образ) и сохранение его в области подкачки. Затем он перезагружает это изображение при перезагрузке компьютера.

  • Чтобы быть наиболее полезным, область подкачки должна быть как минимум (RAM * 1.5), хотя рекомендуется больше. Например, в моей системе с 3 ГБ ОЗУ область подкачки составляет 7,2 ГБ.


Если вы что-то не используете , идеально подойдет для его замены на диск и использования оперативной памяти для вещей, которые вы используете (например, для перемещения CUPS или других демонов, которые вы не часто используете для обмена, вы получаете больше памяти для кэширования диска данные, которые на самом деле очень часто используются
JanC

-1; «(RAM * 1.5), хотя рекомендуется больше» - на настольном ПК? Вы повторяете традиционную мудрость, которая была ложной в течение многих лет.

@ user280493 Стоит отметить, что ответ был лет ... лет назад, когда вы прокомментировали.
Crisfole

7

Это очень похоже на вопрос о «правильном» размере для раздела подкачки. Здесь применима большая часть той же информации из моего ответа - в основном, если вы хотите перейти в спящий режим, вы, как правило, хотите, чтобы пространство подкачки было, по крайней мере, таким же большим, как и объем ОЗУ, а в остальном достаточно просто круглое число, например 1 или 2 ГБ. Поскольку подкачка намного медленнее, чем ОЗУ, если вы заполняете несколько гигабайт подкачки, ваш компьютер почти наверняка стал слишком медленным.

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


4

здесь очень глубокая информация о свопе

некоторые люди говорят, что двойник вашего барана, но лично я рекомендую это:

swap = 1.5 X Total Ram

Пример :

если у вас есть 2 Гб оперативной памяти -> своп = 1,5 х 2 = 3

PD: Ubuntu Desktop использует Swap to Hibernate (ПК выключен, питание не требуется, состояния программ сохранены). Если для вас важен спящий режим, выделите больше пространства подкачки, чем переполнение ram + swap.


2

Команда freeможет сказать вам, сколько свопа вы используете. Например на этой машине:

$ free -m
             total       used       free     buffers     cached
Mem:          1947       1863         84         312        758
-/+ buffers/cache:        792       1154
Swap:         4000          3       3997

показывает, что у меня 2 ГБ (1947 м) ОЗУ и что система использовала большую часть этого объема. Однако 312m используется для буферов ввода / вывода, а оставшуюся часть (758m) система решила заполнить дисковым кешем.

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

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

Третья строка показывает, что у меня слишком большой раздел подкачки (он был там и ничего не делал), из которых было использовано 3 миллиона. Это то, что ядро ​​действительно не собирается использовать в ближайшее время, поэтому оно застряло на «заднем крыльце».

В то время как freeдает вам снимок сейчас, vmstatможет дать вам бегущую картину:

$ vmstat 10
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0   3588  86236 316524 769132    0    0    14    13  126   81  4  1 95  0
 0  0   3588  83872 316532 770512    0    0     0    20  264 1229  3  1 96  0

Там много информации, но интересен тот факт, что нет трафика подкачки (si) или выгрузки (so). Это означает, что я не использую своп в течение последних 10 секунд.


0
  • Область подкачки - это часть пространства жесткого диска, используемая для поддержки оперативной памяти ограниченного пространства. Объем оперативной памяти ограничен, поэтому некоторым приложениям требуется больше оперативной памяти, чем доступно. В этом случае это пространство подкачки также называется виртуальной памятью, используемой для поддержки оперативной памяти.
  • Это медленнее по сравнению со скоростью ОЗУ. Когда мы запускаем большое приложение, то наименее недавно использованная часть этого приложения переставляется в область подкачки на жестком диске, когда это необходимо, она перекладывается обратно из области подкачки. Это дает операционной системе ощущение, что у нее больше оперативной памяти, чем на самом деле.
  • Это выделенный раздел на жестком диске, созданный при установке операционной системы.
  • Это хорошо, если создать Swap Area of ​​Double размером оперативной памяти.
  • Вы можете проверить используемую и доступную область обмена с помощью следующей команды:

    $ cat /proc/swaps 
    Filename                Type        Size    Used    Priority
    /dev/sda10              partition   7812092  16      -1
    

0

У меня ноутбук с медленным жестким диском, но относительно большим объемом оперативной памяти (8 ГБ). В этой настройке диск подкачки оказывается контрпродуктивным по следующим причинам:

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

  2. Если бы мне нужна была возможность перехода в спящий режим, это означало бы запись большого количества данных на диск. Это было бы постоянным расходом заряда батареи, если бы это было сделано постоянно (стандартное поведение подкачки 60), или если это было сделано только во время гибернации (путем уменьшения подкачки), тогда для перехода в спящий режим потребовалось бы много времени. Я обнаружил, что приостановка для оперативной памяти вместо приостановки на диск вполне удовлетворительна. Он может оставаться в подвешенном состоянии в течение нескольких дней, и он будет приостановлен гораздо быстрее, чем полная спячка.

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

Когда этот совет не применим?

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

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

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

Предостережение:

  • Некоторое программное обеспечение, которое мы оставляем запущенным в течение длительного времени (особенно ОС и окружение рабочего стола), загружает код в память, которая больше никогда не будет использоваться. Эти страницы могут быть перемещены для замены, и их больше не нужно будет извлекать, что позволит избежать недостатков, о которых я упоминал ранее. По этой причине я иногда создаю небольшой файл подкачки объемом 512 МБ или 1 ГБ и позволяю выгружать неиспользуемые страницы памяти. Это просто оставляет мне немного больше оперативной памяти для приложений. (Необходим: метод измерения откачки, чтобы помочь настроить размер этого файла подкачки.)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.