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

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

22
задан Brad Patton
23.12.2022 4:42 Количество просмотров материала 2374
Распечатать страницу

4 ответа

короткий ответ: "Вы не have to".

в зависимости от типа ядра / системы, возможно, имеет смысл размер подкачки, например, в FreeBSD tuning (7) Man-страница мы находим следующее обоснование размера подкачки, по крайней мере, в 2 раза от размера физической памяти:

обычно размер своп-пространства должен быть примерно 2x основная память для систем С ОЗУ менее 2 ГБ или основная память приблизительно 1x если вы есть больше. Если вы не имейте много RAM, хотя, вы вообще будете хотеть намного больше менять. Не рекомендуется устанавливать менее 256МБ своп в системе, и вы должны иметь в виду будущее расширение памяти при изменении размера раздела подкачки. Ядро Алгоритмы подкачки виртуальных машин настроены для лучшей работы, когда минимум 2x подкачки по сравнению с основной памятью. Слишком мало настроек подкачки также может привести к неэффективности кода сканирования страницы виртуальной машины как создавать вопросы позже, если вы добавить больше памяти для вашей машина. Наконец, на больших системах с несколькими дисками SCSI (или несколько дисков IDE, работающих на разных контроллерах), мы настоятельно рекомендуется настроить swap на каждом диске. Тот разделы подкачки должны быть примерно одинаковыми размер. Ядро может обрабатывать произвольные размеры, но внутренние данные структуры масштабируются в 4 раза больше самого большого раздела подкачки. Сохранение разделов подкачки примерно одного размера позволит ядра оптимально полоса подкачки через N дисков. Делать не переживай сильно преувеличиваешь, подкачки-это экономия благодать UNIX и даже если вы обычно не используете много подкачки, это может дать вам больше времени, чтобы оправиться от беглого программы до принудительная перезагрузка.

другие факторы могут быть важны, когда вы решаете, сколько места подкачки выделить, где его выделить и так далее. Например, при установке большого сервера со 128 ГБ физической памяти вероятно, это хорошая идея, чтобы избежать предварительного выделения 256 ГБ дискового пространства для swap, который никогда не будет использоваться.

с другой стороны, имея некоторые пространство подкачки часто позволяет захватывать дампы ядра (например, в Open -, Net-и FreeBSD). Так что это хорошая идея, чтобы иметь по крайней мере достаточно подкачки, чтобы захватить полный дамп ядра в панику.

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

8
отвечен Giorgos Keramidas 2022-12-24 12:30

вам не нужно вообще. Старые версии windows рассматривали бы каждую страницу выделенной памяти как mmap в файле подкачки, поэтому вам нужен был по крайней мере ваш общий физический размер оперативной памяти в swap, чтобы он был полезен - сегодня это уже не так, и никогда не было в Linux, но слух сохраняется.

однако, есть случай, когда желательно иметь хотя бы столько свопов, сколько ОЗУ - спящий режим. Поскольку Linux использует файл подкачки для гибернации (так называемый suspend-to-disk), вам нужно достаточно подкачки, чтобы вместить все данные в оперативной памяти, а также все данные, которые уже были выгружены (за вычетом кэш-памяти). Это относится только к компьютерам, которым требуется спящий режим, например ноутбукам.

наконец, имея слишком много своп может быть плохо вещь, несмотря на то, что другие могут сказать. Подумайте-если у вас есть 4G оперативной памяти, и на вершине, что нужно дополнительное 8G подкачки, как вы думаете, ваша система будет по-прежнему использоваться, что со всеми подкачки к/с диска это делает? Это часто лучше, чтобы процесс захвата памяти был убит сразу же, когда у вас заканчивается память, вместо того, чтобы вся система медленно работала до непригодного уровня, когда она начинает тратить все свое время на маршалинг данных в и из подкачки.

4
отвечен bdonlan 2022-12-24 14:47

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

современные unices не ведут себя таким образом, поэтому причина правила устаревший (я думаю, что он уже устарел в 1992 году, поэтому он никогда не был актуален для Linux). Но как ни странно правило сохранилось. Если вы будете следовать ему сейчас, вы получите виртуальную память, которая в три раза больше вашего объема оперативной памяти, в то время как первоначальное намерение состояло в том, чтобы получить в два раза больше.

просто потому, что историческая причина правила неверна, не означает, что это глупо. Дисковое пространство стало дешевле, поэтому имеет смысл выделять больше подкачки. Сколько своп вы должны иметь зависит много от того, сколько Оперативная память у вас есть и как вы ее используете. Вы можете запустить систему без подкачки, но тогда у вас не будет возможности выбрать, какие программы убить, если ваша оперативная память заполнится, и система может быть медленнее (иногда лучше использовать оперативную память для кэша и замены некоторой памяти программы). Выделение слишком большого объема подкачки стоит небольшого объема оперативной памяти (для структур данных ядра) и, конечно, дискового пространства (но в настоящее время это обычно дешево, кроме SSD). Имея достаточно подкачки, чтобы соответствовать всей вашей виртуальной памяти необходимо, если вы хочу впасть в спячку.

1
отвечен Gilles 2022-12-24 17:04

древняя рекомендация, основанная на предположениях о типичном объеме системной памяти, скорости шины памяти по сравнению со скоростью диска, а также процент времени, затрачиваемого процессами в различных состояниях ожидания. Я скептически отношусь к тому, что в наши дни вам нужно больше, чем, возможно, 1/2 физической памяти в пространстве подкачки-достаточно, чтобы предотвратить случайное убийство OOM, когда вы работаете почти с полным использованием памяти. Но все полностью зависит от вашей типичной рабочей нагрузки, YMMV и т. д.

0
отвечен llasram 2022-12-24 19:21

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх