Размер раздела подкачки на компьютере 64 ГБ оперативной памяти работает

У меня 64 ГБ оперативной памяти и 240 ГБ SSD на моем компьютере, который я собираюсь использовать для интенсивных вычислений (машинное обучение, интеллектуальный анализ данных и т. д.). Большинство советов я нашла в интернете про 2-4-8 ГБ оперативной памяти компьютеров, и они рекомендуют 2x размер ОЗУ раздел swap (так 128 ГБ).

разумно ли создавать раздел подкачки объемом 128 ГБ? Какие преимущества дает создание огромного раздела подкачки?

правильно ли я понимаю, что в случае Я бегу из физической памяти:

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

некоторые люди говорят, что это плохая идея, чтобы сделать своп на SSD, так как он имеет ограниченное количество циклов чтения/записи. Насколько быстро с помощью swap он исчерпает циклы чтения/записи SSD (насколько я знаю, это около 50000 записей IOPS)?

Я использую Linux (Ubuntu 14.04 (Надежный Тар)).

собираемся установить своп на 16 ГБ, так как этого должно быть достаточно (например, RedHat предлагает 4 ГБ), а 16 ГБ дискового пространства на самом деле не имеет большого значения.

23
задан Marcel Janus
02.02.2023 14:13 Количество просмотров материала 2368
Распечатать страницу

8 ответов

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

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

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

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

(Я согласен с Бертом, что 4 ГБ вполне вероятно будет достаточно.)

35
отвечен David Schwartz 2023-02-03 22:01

RedHat рекомендует 4 ГБ на машине с 64 ГБ.

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

использование правила 2X физической памяти устарело с количеством систем памяти в эти дни. Но запуск с нулевым свопом не рекомендуется, если вы не знаете, что ты справляешься. Рекомендация 4 ГБ является хорошей отправной точкой.

29
отвечен Bert 2023-02-04 00:18

в Linux, вам нужно достаточно подкачки, так что общая виртуальная память доступна (ОЗУ + подкачки) достаточно для всех процессов, которые вы хотите запустить сразу и их максимальное виртуальное пространство.

Если у вас меньше подкачки, чем это, или нет подкачки вообще, то происходит следующая ситуация: система работает из памяти, пытаясь выделить страницу. Но это все еще мягкий сбой, даже если нет подкачки, потому что в системе есть много страниц "жертвы", которые можно удалить, чтобы освободить место: а именно, страницы всех файловых отображений памяти, таких как исполняемые файлы и общие библиотеки!

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

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

даже в этом случае, если вы не часто запускаете задачи с интенсивным использованием памяти, вы можете быть в состоянии уйти с запуском swapless большую часть времени, и вручную настроить файл подкачки (вместо выделенного раздела), когда вам это нужно. Чтобы сделать файл подкачки на лету, станьте root и:

dd if=/dev/zero of=/path/to/swapfile size=$((1024 * 1024)) count=32768  # 32 Gb.
mkswap /path/to/swapfile
swapon /path/to/swapfile

когда вам не нужно это любой больше:

swapoff /path/to/swapfile
rm /path/to/swapfile

Примечания:

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

  2. есть способы, чтобы сделать Linux терпеть неудачу трудно, когда память не доступна, а именно с помощью манипулирования значения этих записей sysctl:

    vm.overcommit_memory
    vm.overcommit_ratio
    
12
отвечен Kaz 2023-02-04 02:35

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

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

3
отвечен kaste 2023-02-04 04:52

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

современные операционные системы предоставляют виртуальную память как сочетание физической памяти и пространства подкачки, так что если вам нужно больше памяти, чем машина доступна вам должны добавить достаточно места подкачки, чтобы заполнить пробел. Т. е. если вам нужно 80 Гб максимум, и машина имеет 64 ГБ вам нужно 16 ГБ подкачки.

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

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

2
отвечен Thorbjørn Ravn Andersen 2023-02-04 07:09

гораздо лучше, чем иметь "много подкачки" (ре)организовать свою работу так, чтобы рабочие наборы поместились в памяти, а затем использовать файловую систему для хранения и извлечения работы, которую вы делаете. То есть, вместо того, чтобы заставлять ОС угадывать, какими будут ваши шаблоны использования памяти, используйте то, что вы знаете о своих проблемах, чтобы контролировать свои шаблоны использования памяти.

в качестве случайного примера, который имеет непосредственное отношение ко мне этим летом... При реализации квадратичного сита необходимо большое (по-видимому) непрерывный массив для разметки (с некоторым сложным алгоритмом, детали которого фактически не имеют значения для этого примера). Массив должен быть ~100 Гига-записей, так легко в диапазоне 1 ТБ. Я мог бы притвориться, что выделяю это и позволяю ОС делать удивительное количество неэффективной подкачки, чтобы получать страницы и из ОЗУ для поддержки всех последовательных операций записи через массив. Вместо того, чтобы делать что-то тупое, я организовал выделение гораздо меньшего массива, который точно вписывается память, а затем повторно использовать этот маленький массив, чтобы итеративно покрыть остальную часть большого массива в ломтиках. Я также лишил ОС, лишил работающий набор служб, заменил оболочку и настроил два уровня распределителей памяти, чтобы сделать их проклятыми, чтобы сохранить как можно больше адресного пространства, доступного моему процессу, как можно ближе к непрерывному.

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

2
отвечен Eric Towers 2023-02-04 09:26

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

Если у вас есть запасной порт USB 3.0, я бы предложил использовать флэш-накопитель для вашего пространства подкачки. Есть много высокоскоростных флэш-накопителей, которые так же быстро, как ваш SSD, но гораздо дешевле-достаточно дешево заменить, если он начал терпеть неудачу. Быстрый поиск на Amazon показывает что есть много достойных 16 ГБ USB 3.0 флэш-накопители для менее чем $20, и даже некоторые 64 ГБ диски под $ 60.

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

1
отвечен ArmanX 2023-02-04 11:43

вы будете в порядке даже с 1gib (и, вероятно, меньше) свопа. Мой рабочий компьютер обычно использует не более 140-150 MiB. Гигабайт-это много избыточной подготовки для этого.

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

но больше своп помогает больше, не так ли? Больше ничего всегда лучше!

подумайте, какое значение будет иметь своп, скажем, 16GiB (или подумайте о 64GiB). Если вы никогда не используете эти 16GiB, вы могли бы также не иметь их отложить в первую очередь. Но если у вас использовать их, что происходит? Диск, по сравнению с основной памятью, чрезвычайно медленно. Даже с твердотельным накопителем SATA-600 передача 16GiB занимает от 30 до 40 секунд и 2-4 раза как долго на некоторых других конфигурациях.

Теперь кто-то неизбежно возразит, что вы скорее вызываете и выходите из дюжины или около того страниц 4kiB, а не 16GiB за один раз. Хотя это и так, суть, тем не менее, остается в силе. Если вам нужно только поменять местами несколько страниц, вам не нужно 16gib подкачки, но если вам нужно 16GiB подкачки, то вы собираетесь перенести их тоже (так или иначе).

в теории, 99,9% из всех потребителей смогли даже использовать машину 64гиб (или любые 8+гиб машина) без какой-либо замены, и, скорее всего, никогда не заметит чего-то недостающего. Однако это не рекомендуется.

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

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

В-третьих, может подействовать страшный убийца. Что означает, что более или менее случайный процесс может быть убит. Нет, спасибо. Это не то, что вы хотите иметь событие.

с учетом сказанного, советы, такие как вам нужен своп X раз объем оперативной памяти установлен исходит от людей, которые повторяют то, что они слышали (и не понял!) от кого-то, кто повторил что-то, что они услышали (и не поняли!) десятилетия назад.

Правило" use 2X your RAM "было легко запомнить эмпирическое правило в 1980-х и 1990-х годах, оно никогда не было "золотой истиной" (просто то, что работало нормально для большинства пользователей), и оно вообще не применяется настоящее время.

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

1
отвечен Damon 2023-02-04 14:00

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

Ваш ответ

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

Имя
Вверх