Скільки місця для SWAP в системі 2-4 Гб?


53

Як я повинен вирішити, який розмір зробити свій замін на новій машині Linux (Debian) з 2-4 ГБ оперативної пам’яті? Мені справді потрібен обмінний простір?


3
2-4 Гб вже не дуже висока пам'ять через 5 років.
fifi finance

@KasperSouren Ні, це не так. На той час була справедлива сума.
C. Росс

Відповіді:


54

Існує маса способів зрозуміти, скільки обмінів використовується в машині. Загальні пропозиції використовують формули, засновані на оперативній пам’яті, такі як 2 х оперативної пам’яті, 1,5 х ОЗУ, 1 х ОЗУ, .75 х ОЗУ і .5 х ОЗУ. Формули багато разів змінюються залежно від обсягу оперативної пам’яті (тому в коробці з 1 ГБ оперативної пам’яті може використовуватися 2 х своп оперативної пам’яті (2 ГБ), тоді як у коробці з 16 ГБ оперативної пам’яті може використовуватися .5 х оперативної пам’яті оперативної пам’яті (8 ГБ)).

Інша річ, яку слід врахувати, - для чого використовуватиметься цей ящик. Якщо у вас буде велика кількість одночасно запущених процесів, які працюють на коробці, але значна кількість з них буде простоювати протягом певного періоду часу, то додавати додатковий своп має сенс. Якщо ви будете виконувати невелику кількість критичних процесів, то додавання додаткового свопу має сенс (це може здатися контрінтуїтивним, але я поясню за хвилину). Якщо ви використовуєте коробку як робочий стіл, то додавати додатковий своп має сенс.

Що стосується того, чи слід включати своп, так, слід. Ви завжди повинні включати місця для заміни, якщо ви дійсно не знаєте, що робите, і у вас справді є вагомі причини для цього.

Дивіться, спосіб роботи ядра Linux, swap використовується не тільки тоді, коли ви вичерпали всю фізичну пам'ять. Ядро Linux буде приймати додатки, які не є активними (сплячими), і через певний проміжок часу перемістить додаток для заміни з реальної пам'яті. Результат полягає в тому, що коли вам знадобиться цей додаток, буде миттєва затримка (як правило, лише на секунду-дві), поки пам'ять програми зчитується з підкачки на оперативну пам'ять. І це, як правило, гарна річ.

Це дозволяє переводити неактивні програми на режим «сну», надаючи активним програмам доступ до додаткової оперативної пам’яті. Крім того, Linux використовуватиме будь-яку доступну (нерозподілену) оперативну пам’ять на машині в якості кеш-диска, роблячи більшість (повільних) активностей диска швидшими та чуйнішими. Заміна неактивних процесів дає вам більше кеш-диска та робить вашу машину загальною швидше.

І нарешті, давайте зізнаємося, дисковий простір коштує дешево. Дійсно дешево. Насправді немає жодної вагомої причини взагалі не промацати (відносно) невеликий шматок місця для заміни. Якби я працював з 2 ГБ - 4 ГБ оперативної пам’яті в машині, я, певно, встановив би свій обмінний простір, принаймні, рівний ОЗУ. Якби це було менше 2 Гб оперативної пам’яті, я б все одно ходив з принаймні 2 ГБ оперативної пам’яті.

ОНОВЛЕННЯ: Як згадується чудовий коментар (і я його забув включити), якщо ви працюєте з ноутбуком або робочим столом, які, можливо, захочете перевести в режим «сплячого режиму» (Призупинити на диск), то вам завжди хочеться хоча б стільки ж поміняйте, як у вас є пам'ять. Простір підкачки буде використаний для зберігання вмісту оперативної пам’яті в комп’ютері під час «сплячого режиму».


22
Чудова відповідь, але ви забули лише одне. Якщо це настільний ПК або ноутбук, переконайтеся, що обмін є принаймні більшим, ніж оперативна пам’ять, щоб ви могли перезимувати на комп’ютері. Це економить оперативну пам'ять для заміни.
Сандер Маречал

4
Чудовий пост. Сандер побив мене до єдиного, що я збирався до цього додати. Я маю на увазі ще один додатковий елемент, якщо у вас є кілька дисків, розміщення своп на диску, який не має решти ваших активних файлових систем, може підвищити продуктивність, оскільки у нього не буде стільки конфліктів.
GreenKiwi

як я дізнався минулого літа, вам потрібно мати значне місце для заміни, якщо ви працюєте з Java
warren

Якщо у користувача об'єм оперативної пам’яті набагато більший за обсяг, який він фактично використовуватиме (16 Гб / 32 ГБ) на 100% настільному комп’ютері (без відсутності сплячки), ви все ще пропонуєте вимагати, щоб процеси були переведені на SWAP? Мені здається, було б корисно від того, щоб залишити все на оперативній пам’яті, якщо ви коли-небудь не наближалися до своєї ємності.
earthmeLon

1
@earthmeLon - я б запропонував все-таки трохи помінятися. Диски в наші дні великі і дешеві, тому втрата кількох ГБ місця на диску для незначного обміну є незначною. Маючи трохи місця для обміну, ви надаєте страховий поліс на випадок, якщо щось з’їсть більше оперативної пам’яті, ніж ви очікували.
Крістофер Кашелл

17

Red Hat рекомендує наступну формулу для серверів з великою кількістю оперативної пам’яті:

if MEM < 2GB then SWAP = MEM*2 else SWAP = MEM+2GB

Якщо у вашій системі є 1 ГБ оперативної пам’яті, ваш обмін буде 2 ГБ, для 16 ГБ - 18 ГБ.


3
Відповідна посилання з керівництва RHEL6 зберігання: docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html / ...
Ophidian

Сервер був би досить застопорений, якби він послідовно використовував 1Gb своп, тому що його таран буде повним.
користувач2284570

12

Пізня відповідь, і я думаю, що це було в значній мірі висвітлено у вибраній відповіді, але у відповіді, наданій @ssapkota тут (є копія / вставка нижче), є якась гарна та легкозасвоювана інформація .

Ось дуже гарна рекомендація від RedHat: Рекомендований простір для заміни системи

Уривок з того ж посилання:

За минулі роки рекомендована кількість простору підкачки лінійно збільшувалась із кількістю оперативної пам’яті в системі. Але оскільки об'єм пам'яті в сучасних системах збільшився до сотень гігабайт, зараз визнано, що обсяг простору обміну, який потрібна системі, є функцією завантаження пам'яті, що працює на цій системі. Однак, враховуючи, що місце підкачки зазвичай позначається під час встановлення, і що заздалегідь може бути важко визначити робоче навантаження пам'яті системи , радимо визначити систему своп за допомогою наступної таблиці.

Поточна таблиця (станом на грудень 2012 року):

Amount of RAM in the system   Recommended swap space         Recommended swap space 
                                                             if allowing for hibernation
---------------------------   ----------------------------   ---------------------------
2GB of RAM or less            2 times the amount of RAM      3 times the amount of RAM
2GB to 8GB of RAM             Equal to the amount of RAM     2 times the amount of RAM
8GB to 64GB of RAM            0.5 times the amount of RAM    1.5 times the amount of RAM
64GB of RAM or more           4GB of swap space              No extra space needed

Оригінальна таблиця:

Amount of RAM in the System     Recommended Amount of Swap Space
4GB of RAM or less              a minimum of 2GB of swap space
4GB to 16GB of RAM              a minimum of 4GB of swap space
16GB to 64GB of RAM             a minimum of 8GB of swap space
64GB to 256GB of RAM            a minimum of 16GB of swap space
256GB to 512GB of RAM           a minimum of 32GB of swap space 

8

Це дуже залежить від того, що ти з цим робиш. При відповідному навантаженні вам насправді не потрібне місце для заміни, незалежно від того, чи є у вас 16MB або 16384MB оперативної пам’яті; насправді більшість вбудованих пристроїв Linux працює без будь-якого (на що б вони мінялися?)

Враховуючи ціни на оперативну пам’ять, ви, мабуть, не збираєтесь використовувати swap для активних обчислень. Отже, що залишилося?

  1. На робочих столах місце підкачки використовується для зупинки на диску. Цей обмінний простір повинен становити близько 1 × ОЗУ, залежно від того, наскільки добре вміст пам'яті стискається.
  2. Дозволяє видаляти з оперативної пам’яті неактивні завдання, щоб зробити більше місця для кеш-диска
  3. Те саме, але щоб дозволити активним процесам використовувати його замість heap / stack

(2) і (3) сильно залежать від завантаженості. На своїх робочих столах я можу легко використовувати 4 Гб + увімкнено (2), не залишаючи vims, xterms тощо тощо на інших робочих столах.

На більшості серверів, на яких я працюю, майже нічого не поміняється, і 1–2 ГБ свопу (незалежно від кількості оперативної пам’яті) здається нормальним.


простір swap також використовується, якщо ви запускаєте що- небудь, що використовує JVM: не шинтуйте і не забудьте виділити місця для заміни, якщо ви працюєте на Java!
warren

@warren: У мене є екземпляри Tomcat, кожен з яких перевищує 3GiB, але не використовує своп (і один використовує величезні сторінки, і тому їх не можна поміняти). Не впевнений, про що ти говориш.
дероберт

в JVM є напівзрозуміла помилка, пов’язана з мінімальними та максимальними налаштуваннями пам’яті, з якими я зіткнувся минулого літа ( antipaucity.com/?p=984 ). TL; DR - кожного разу, коли JVM запитує більше оперативної пам'яті в ОС, він записує себе на обмін, отримує новий фрагмент пам'яті, а потім зчитує себе в оперативній пам'яті, щоб пам'ять була суміжною
warren

@warren: Гаразд, я запускаю OpenJDK на 64-бітному рівні, з Xmx і Xms однаковими. Але я не впевнений, як Java змусить себе обмінятися, єдиним закриттям системи буде madvise, але це не вийде з ладу ... ця помилка говорить про те, що пам’ять втрачається під час збирання сміття. Додавання swap, звичайно, перешкоджає цьому, але так би і додавання оперативної пам'яті. Може бути, це пов'язано з 32-розрядною з PAE?
дероберт

це трапляється і з 64-розрядним JVM: якщо у вас є Xmsі Xmxне встановлені однакові значення, це може вас погано вкусити: спричинило основні проблеми для нас протягом двох + тижнів, поки ми нарешті не відстежили це
warren

4

Ну, це залежить від того, які сервіси та програми ви плануєте запустити. Ви можете спостерігати за тим, як ви використовуєте пам'ять, використовуючи free -m і відповідно налаштовуйте свій swap-розділ.

Ось цікава дискусія з цього приводу. Особисто (і після прочитання цієї дискусії) я все-таки залишив близько 1 Гб для заміни.


2

Я не можу говорити безпосередньо з Debian, але я знаю, що коли ви встаєте вище 2 ГБ оперативної пам’яті, початкове рівняння 2xRAM змінюється, як правило, до 1xRAM. Я думаю, що коли ви натиснете 16 Гб оперативної пам’яті, пропозиція знову знизиться до .75xRAM.

Звичайно, я вважаю це справжнім для Solaris, і це фактично показник, який використовується для установок Oracle, тому YMMV залежно від програм, які ви будете там працювати.


2

Я завжди здійснюю стільки своп (принаймні) оперативної пам'яті. На всякий випадок, коли я хочу сняться в сплячку. Може працювати з меншими, але так само ні.

Простір на жорсткому диску сьогодні дешевий, тому я не вагаюся, віддаючи місця для заміни.


2

Простір для заміни може слугувати "набиванням", коли в іншому випадку у вас негайно залишиться пам'ять.

Коли процес споживає всю наявну оперативну пам'ять, а потім деяка машина працюватиме дуже повільно, але ви, як правило, зможете відновитись. Також буде простіше зрозуміти, який процес викликає проблему.


2
Це меч з двома кінцями: на домашньому ПК я знімав своп, коли використовував Firefox 2.x, тому що він повільно поїдав усю пам'ять, а коли машина перейшла на обмін, стала зовсім непридатною; без свопу, ядро ​​Firefox було просто закрите ядром :)
wazoox

1

Протягом багатьох років я дотримувався правила, згідно з яким на машинах Windows ви маєте стільки, скільки маєте оперативна пам’ять ... У Novell ми б налаштовували своп вище, якби було більше принтерів ... Для Linux для мене правило та практика - 1 Гб поміняти кожну оперативну пам’ять 2 Гб. І ви розміщуєте його на передній частині диска, щоб отримати доступ до нього швидше.

  • Якщо це шлюз пошти / спаму, я використовую подвійний своп на оперативну пам'ять
  • Якщо це * сервер, я взагалі не використовую своп
  • якщо це сервер LAMP, діє правило 1/2.

  • Пробіг буде залежати від програми та використання графічного інтерфейсу.


Власне, я думаю, що до swap посеред диска можна отримати найшвидший доступ.
Едді

0

Я створюю 1 Гб своп і купую більше оперативної пам’яті, другий її використовую. Вам не потрібні заміни на сучасних комп’ютерах, оперативна пам’ять така дешева.


0

Для чого ви використовуєте систему? Особисто я не використовую жодного свопу. Якщо що-небудь використовувати маркер 512 Мб або щось таке, щоб все можна було поставити на диск, якщо він є резидентом, але неактивний протягом тривалих періодів.


0

Я просто використовую невеликий токен своп (зазвичай 256 Мб, але я навіть зробив 64 МБ), оскільки для налаштування системи з нульовим свопом потрібна спеціальна конфігурація.

Місце на диску дешево, але slooooooooow. Як тільки система починає змінюватися, продуктивність дорівнює нулю. І оперативна пам’ять вже не така дорога.

Повірте, придбайте трохи повільніший процесор і купіть більше оперативної пам’яті. 2,8 ГГц замість 3,0 ГГц заощадить вам достатньо грошей, щоб придбати ще 2 Гб оперативної пам’яті.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.