Что конкретно может сделать подкачка, чего не может ОЗУ?

Вы пытались загрузить его с параметром nomodesetв настройках grub? GPU часто является причиной.

43
13.12.2019, 09:17
14 ответов

Спящий режим (или приостановка на диск ). Настоящий спящий режим полностью отключает систему, поэтому содержимое ОЗУ теряется, и вам приходится сохранять состояние в каком-либо постоянном хранилище. АКА Обмен. В отличие от Windows с hiberfil.sysи pagefile.sys, Linux использует пространство подкачки как для более -выделенной памяти, так и для гибернации.

С другой стороны, режим гибернации кажется немного привередливым, чтобы заставить его хорошо работать в Linux. Другое дело, можете ли вы на самом деле впасть в спящий режим. ¯\ _(ツ )_/¯

64
27.01.2020, 19:34

What can be done with swap which would not also be done by adding RAM?

На самом деле этот вопрос можно было бы переформулировать в Что можно сделать с энергонезависимой -оперативной памятью, чего нельзя было бы сделать, добавив больше энергозависимой памяти? . Тот факт, что вы выделили раздел для подкачки (как специальный способ взаимодействия с энергозависимой оперативной памятью ), не меняет того факта, что он по-прежнему является частью постоянного вторичного носителя данных. Раздел подкачки также не является обязательным для перевода системы в спящий режим, также можно использовать «файл подкачки», созданный на уже существующем разделе.

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

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


Что касается упомянутого вами встроенного устройства, флэш-память, являющаяся типом энергонезависимой -энергонезависимой ОЗУ (NVRAM или EEPROM ), изнашивается из-за своей способности принимать запросы ввода-вывода (. ] Выносливость ячейки флэш-памяти, представленная в виде количества циклов программирования/стирания ), бледнеет по сравнению с энергозависимой оперативной памятью. Вы буквально сбриваете слой оксида каждый раз, когда выполняете запись в это место, и в конечном итоге оксида просто не остается для постоянного хранения заряда, и он буквально вытекает перед его последующим чтением.

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

16
27.01.2020, 19:34

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

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

2
27.01.2020, 19:34

32GB RAM and no swap vs. 16GB ram with 16GB swap.

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


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

Конечно, многое зависит от нагрузки (типа нагрузки ), и идея подкачки может даже иметь неприятные последствия. Поэтому и есть параметр "подкачка", кроме самого swapon/swapoff, и дискуссия о правильном размере.

Из википедии я получил это утверждение о «подкачке» в Linux (в статье «пейджинг»)

The Linux kernel supports a virtually unlimited number of swap backends (devices or files ...

If multiple swap backends are assigned the same priority, they are used in a round-robin fashion (which is somewhat similar to RAID 0 storage layouts),...

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


В соответствии с «новым» правилом размера (квадратный корень из Гига ),ваш пример должен сравнить:

16 GB RAM+0 GB Swap+1000 GB Disk

16 GB RAM+4 GB Swap+ 996 GB Disk

Потому что на самом деле не имеет смысла:

16 GB RAM+0 GB Swap+1000 GB Disk

12 GB RAM+4 GB Swap+1000 GB Disk

Это был бы раздел подкачки на tmpfs ("ramdisk" )-, может быть, даже не слишком вредный, но я не вижу здесь никакой пользы. Ты даже не можешь впасть в спячку.

(см. ниже для zram и zswap, однако, когда вы добавляете сжатие к этому)


Чтобы понять своп, нужно рассмотреть всю систему и среднюю нагрузку. А поскольку vm/mm (управление виртуальной памятью )— это сложная система, трудно назвать явное преимущество. Мне нравится идея "плавного" перехода в перегруженную систему.

У меня 8 ГБ ОЗУ и без свопа. Но все же я защищаю концепцию, АФА я могу понять:-)


Я нашел эту цитату в RedHat в одной из ссылок ОП. Сценарий - постоянно растущий спрос на память, на 2 ГБ ОЗУ + 2 ГБ подкачки, если я помню:

... In our case [just illustrated], quite a lot of swap is available, so the time of poor performance is long.

Но альтернатива OOMеще раньше!

«Время низкой производительности» долгое, да, но производительность ухудшается только пропорционально нагрузке. Я не знаю контекста, возможно, они просто хотят предостеречь от слишком большого раздела подкачки. Это звучит как анти-своп, но на второй взгляд это не так.

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


Я посмотрел это zram , а потом zswap вещь :очень интересная...:

In comparison, zswap acts as a RAM-based cache for swap devices. This provides zswap with an eviction mechanism for less used swapped pages, which zram lacks.

С другой стороны, zramработает без какого-либо устройства подкачки. Возможно, то, что я сказал, не имеет смысла, но я не учел компрессию.

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

16
27.01.2020, 19:34

Для данного общего количества всегда лучше иметь его в качестве ОЗУ, чем подкачивать.

Существует разница в поведении между системой noswap и системой свопинга, которая может быть полезной, а может и бесполезной :переборке. По мере того как в системе подкачки начинает заканчиваться общая доступная виртуальная память, она становится все более и более заблокированной при перемещении страниц туда и обратно между подкачкой и ОЗУ. Это замедляет работу системы. В некоторых случаях это может позволить ручное или автоматизированное вмешательство для снижения нагрузки и восстановления системы.

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

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

15
27.01.2020, 19:34

What specifically can Linux do when it has swap that it can't without swap?

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

Любые приложения, страницы или изображения, с которыми вы на самом деле взаимодействуете, полностью заменяются. Те, которые вы сократили до вкладок или просто оставили бездействующими и скрытыми другим окном, можно заменить, если для этого недостаточно оперативной памяти. держать все в оперативной памяти сразу. Также возможно, что если вы открываете приложение, ему не нужно менять все, а только представление страницы на экране, пока вы не начнете с ним взаимодействовать.

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

-2
27.01.2020, 19:34

Я думаю, вы упускаете момент обмена. Большинство материнских плат имеют фиксированное количество слотов памяти и могут работать только с модулями памяти ограниченного размера. (Которые в любом случае бывают только фиксированных размеров. )Итак, если на вашем компьютере установлено 16 ГБ памяти, и вам вдруг нужно запустить программу, которая занимает 17 ГБ, что вы делаете?

Если у вас есть свободный слот памяти и лишние деньги, вы можете заказать дополнительную память, но даже доставка в ночное время требует времени. А если у вас нет свободного слота, вы заказываете новую материнскую плату? Или вы просто используете своп?

-2
27.01.2020, 19:34
... In that case swap will wear flash memory causing it to fail years before the end of warranty. Where doubling the RAM is a couple of extra dollars on the device.

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

Кроме того, произвольная запись на полный SSD (, которая приводит к преждевременному сбою ), выполняется медленно. Они действительно очень, очень медленные. Ваш SSD не умрет преждевременной смертью, если ваш компьютер не замедлится до полной загрузки из-за подкачки.

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

Итак, что можно сделать со свопом, чего нельзя сделать с оперативной памятью?

  • Спящий режим
  • Аварийные дампы ядра
  • Дешевое виртуальное адресное пространство (намного дешевле оперативной памяти)
  • Отключение избыточной фиксации
2
27.01.2020, 19:34

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

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

Рассмотрим следующие странные махинации:

  1. У меня есть устройство с 32 ГБ ОЗУ и без другого хранилища.
  2. Мне нужно обработать 42 ГБ данных.
  3. К счастью, упомянутые данные находятся в хороших отдельных фрагментах и ​​хорошо сжимаемы (возможно, что-то вроде временного ряда, который в основном статичен ), и мне не нужен доступ ко всем сразу, так что...
  4. ]
  5. Я использую zram для создания сжатого раздела подкачки в памяти, что позволяет мне выгружать большую его часть, когда я им не пользуюсь.
  6. Таким образом, я могу поместить больше данных в мою ограниченную память, не изменяя мой программный код.

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

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

6
27.01.2020, 19:34

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

Предположим, что ваше ядро ​​видит 4G ОЗУ и 4G подкачки, а ОС и приложения для разработки (, браузер, IDE и т. д. )потребляют 3G. Это бесплатный виртуальный 5G :1G реального и 4G подкачки.

Вы разрабатываете новую базу данных или игру, которая требует, скажем, 2G для загрузки своих горячих ресурсов. Таким образом, он повторяется,sbrkиmmapнеоднократно, и с включенной подкачкой получает свой 2G реальный чудом уровня виртуальной машины ядра. Ура, ваш код работает хорошо. (И ваш браузер или что-то еще, страница -была переведена в ад подкачки.)

Теперь остановите вашу программу. swapoffи повторно -запустите вашу программу. На этот раз, пока он sbrkразглагольствует,он получает ENOMEM, и ваш код должен иметь дело с неудовлетворительным путем. Как оно реагирует? Как это танцует в этом сценарии?

Или смонтируйте USB-накопитель, mkswapи swaponна USB-разъеме и увеличьте vm.min_free_kbytes, чтобы заставить ядро ​​перейти еще больше к этому USB-накопителю. Перезапустите вашу программу. Как ваше приложение ведет себя сейчас с медленной виртуальной машиной?

Как насчет выполнения всего вышеперечисленного во время работы приложения? Как он ведет себя, когда запускается и начинает испытывать условия OOM?

Нет конца способам, которыми вы можете истязать систему, испытывающую нехватку свободной реальной оперативной памяти, путем настройки вашей подсистемы подкачки в реальном времени. И в отличие от cgroups или rusage, вам не нужно останавливать процесс, чтобы изменить доступную ему виртуальную оперативную память.

Вы можете протестировать такие злоупотребления памятью, используя моки для имитации ENOMEMили замедления brk, и это уместно, потому что это стабильно. Но ничто не сравнится с -огневыми упражнениями в средах с низким объемом памяти для добычи золота случайных процессов. Swap позволяет тестировщику на лету легко настраивать ресурсы и характеристики памяти ядра таким образом, чтобы это соответствовало реальному миру нехватки памяти. Добавление или удаление модулей оперативной памяти не дает этого значения.

10
27.01.2020, 19:34

Я считаю, что посылка вопроса здесь совершенно неверна. Swap существует не для замены оперативной памяти и не для ее «расширения». Раздел подкачки — это подушка, на которую вы падаете, когда на вашем сервере заканчивается доступная память. Назначение и функциональность подкачки довольно хорошо описаны в документации ядра и нигде не сказано, что это «замена оперативной памяти».

-3
27.01.2020, 19:34

What can be done with swap which would not also be done by adding RAM?

Для гибернации требуется файл подкачки, даже если подкачка не используется.

Кроме этого, ничего. Обмен является хорошей временной мерой , если

  • Оперативная память действительно дорога или ограничена по сравнению с дисковым пространством

  • Система представляет собой систему общего назначения под управлением 1 пользователя, который может время от времени опробовать непредсказуемое программное обеспечение и/или рабочие нагрузки.

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

What specifically can swap do that RAM can't

Две вещи:

A. Быть рядом, когда ОЗУ заполнено.

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

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

Linux использует свободную оперативную память для кэширования блоков, -считываемых и записываемых устройством, но это не обязательно. Оперативная память быстрее, чем блочные устройства. Разрешение Linux выгружать то, что процессы не используют для подкачки, позволит использовать больше оперативной памяти для кэширования чтения блока -устройством. Если вас не волнует скорость доступа к вашему блочному -устройству, которая может применяться во встроенных средах, таких как маршрутизаторы и т. д., B можно игнорировать (, и в этих ситуациях вам все равно не нужен спящий режим ).

Подкачка не является дисковым кешем. -Страницы в подкачке могут не быть связаны с файлом на диске или никогда не предназначаться для записи на диск.

4
27.01.2020, 19:34

Есть три вещи, которые своп может делать, чего не может обычная оперативная память.

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

Во-вторых, режим гибернации :Замена жесткого диска не является -энергозависимой. Это означает, что он может пережить перезагрузку, позволяющую выйти из режима гибернации на полную мощность -.

В-третьих, размер. :Допустим, вы загружаете безумно большой объем данных в базу данных, которая требует адресации памяти. С помощью Swap вы можете адресовать всю эту память, одновременно выгружая ее на диск, что обеспечивает гораздо лучший произвольный доступ и использование программного обеспечения, разработанного для базы данных в -памяти. Хотя некоторые программы могут использовать для этого файл отображения памяти, такая программа должна быть спроектирована как таковая.

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

-3
27.01.2020, 19:34

У вас уже есть ответ, но ваш вопрос показывает, что вы еще не оценили этот ответ.

Простой ответ: «Быть ​​большим и дешевым (и, возможно, гибким )». Вы уже знаете это, но вы также отвергаете это. Вы не должны.

Оперативная память — это не «пара лишних долларов». Например, гигабайт за гигабайтом, ECC RAM на моем сервере стоит 130 фунтов стерлингов за 32 ГБ (RDIMM 2400 DDR4 )или около 4 фунтов стерлингов за ГБ. SDD, который я использую для подкачки, стоит около 100 фунтов стерлингов -130 за терабайт или около 0,11 фунтов стерлингов за ГБ (Micron/Intel с защитой от потери питания ). Фермы серверов могут занимать от сотен до тысяч (во многих случаях )ГБ на сервер с сотнями серверов.

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

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

Наконец, Swap более гибок. Если ваша задача обычно использует 32 ГБ, но кратко и редко какой-то ее аспект требует 64 ГБ, с оперативной памятью вы должны предоставить 64 ГБ в любом случае. С свопом работает на 32 и кратковременно использует, потом сбрасывает, своп, для исключительных случаев.

Tl;Dr -Вы полностью упускаете экономический смысл.

3
27.01.2020, 19:34

Теги

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