Як налаштувати простір для заміни?


114

Raspberry Pi має лише 256 Мб оперативної пам’яті, тому я хотів би використовувати місце для обміну (або на SD-картці, або на USB-накопичувачі). Як це налаштувати?


10
Обмін на Pi (і подібних пристроях) може бути болісно повільним, і все, що насправді закінчується широкомасштабним свопом, практично приведе систему в стан. Обережно!
— MattJ

1
Ви знаєте, що було б добре - це накопичувач USB RAM (не флеш або SSD, а фактичний мінливий мікросхем, що працює на швидкостях USB). Це було б добре для такої заміни.
— Піотр Кула

3
@Tibor Питання: "Як налаштувати простір для обміну?" На мою думку, правильна відповідь повинна описувати, як це зробити, а також привернути увагу до деяких підводних каменів і застерегти від неправильного використання. Ваш відповідь робить тільки , що в той час як «найпопулярніший» відповідь тільки говорить вам , чому ви ніколи не повинні «робити це на всіх» (який є німим, тому що є правильний спосіб , щоб використовувати його, і це на самому справі це корисно).
— Ендрю Ларссон

1
На цій сторінці є близько мільйона застережень від використання swap з малиновим пі, але якщо вам потрібно щось створити один раз, це неминуче.
— Архонічний

1
@Archonic - +1 . Мені не вистачає пам’яті для компіляції файлів при нагоді. Невеликий файл з свопом із низьким розміром зможе покращити поточну ситуацію.
— jww

Відповіді:


134

Raspbian використовує dphys-swapfile , який є рішенням на основі файлів своп-файлів замість "стандартного" рішення на основі swap-розділів. Набагато простіше змінити розмір свопу.

Файл конфігурації:

/etc/dphys-swapfile 

Зміст дуже простий. За замовчуванням мій Raspbian має 100MB свопу:

CONF_SWAPSIZE=100

Якщо ви хочете змінити розмір, вам потрібно змінити число та перезапустити dphys-swapfile:

/etc/init.d/dphys-swapfile restart

Редагувати: На Raspbian типовим місцем є / var / swap, який (звичайно) знаходиться на SD-карті. Я думаю, що це погана ідея, тому я хотів би зазначити, що / etc / dphys-swapfile також може мати наступний варіант: CONF_SWAPFILE = / media / btsync / swapfile

У мене проблема лише в цьому, зберігання usb є автоматизованим, тому потенційна гонка тут (automount vs. swapon)


2
Це правильна відповідь. Жодна з інших відповідей не згадувала dphys-swapfile.
— Кенджі Ногучі

1
Я відповів на цю відповідь як на дійсно правильну. Вивчивши все це на важкому шляху зовсім недавно, ваша відповідь могла заощадити мені багато часу. ;-)
— Драченфельс

Чи можете ви пояснити, чому використання /var/swapпоганої ідеї?
— Андрій Портний

встановити R-пакети, які раніше не вдалося через "системний виклик не вдалося виділити пам'ять": Встановіть CONF_SWAPSIZE = 1024. Менше недостатньо.
— вертикаліст

36

Ви можете налаштувати простір для заміни досить просто. Наприклад, якщо ваш USB-накопичувач /dev/sdx, ви б використовували (для цього ви повинні мати root):

$ mkswap /dev/sdx
$ swapon /dev/sdx

Зауважте, що для цього використовується весь пристрій, і ви, ймовірно, втратите всі наявні дані на ньому.

Ви також можете створити файл swap (за допомогою loopпристрою) таким чином:

$ dd if=/dev/zero of=/path/to/swapfile bs=1M count=1024 # For 1GB swap file
$ mkswap /path/to/swapfile
$ swapon /path/to/swapfile

Коли вам більше не потрібен файл swap (якщо ви хочете, наприклад, вийняти USB-накопичувач), потрібно скористатися swapoff <device>. Якщо цього не зробити, можливо, це призведе до збою системи.

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


2
Навіщо додавати петлю? Звичайно, це не потрібно?
— папі

Ти маєш рацію, це не так. Я відредагував відповідь, щоб це відобразити.

2
Я думаю, ви повинні змінити це, щоб уникнути копіювання та вставки користувачів та випадкового запуску mkswapїх кореневого розділу. Я думаю sdx, це хороша умова.
— Jivings

3
Користувачі, які вирішили ввімкнути SWAP, можуть бути зацікавлені в налаштуванні простоти ядра .
— земляLon

@earthmelon Raspbian Джессі за замовчуванням має свобідність 1.
— kaay

32

Не робіть цього взагалі.

Ви повинні НЕ включити своп на Raspberry Pi.

Хоча це можливо, це не корисно. Навіть на SDHC-класі 10 класу вона занадто повільна. Також ви скоротите термін служби SD-карти.

На будь-якому пристрої зберігання даних на базі флеш-пам'яті (SD-карта, SDD, USB-накопичувачі) ви також зможете побачити паузи в масштабах системи, коли велика група флеш-блоків стирається.

Можливі винятки:

  • Якщо ви підключите (магнітний) жорсткий диск (хоча USB-SATA або USB-IDE-адаптер)
  • Якщо ви використовуєте ZRAM або щось подібне

3
без сумніву, обмін на USB-бей дуже швидко знищить ваш ключ, обмін на SD-карту також небезпечний, навіть якщо новіші SD-карти (клас 10) могли б підтримати його краще. ZRAM - це безперечно шлях, якщо вам потрібно більше оперативної пам’яті
— neofutur

1
Ви б могли подумати, що за допомогою технології ReadyBoost у Windows хтось зробить USB-накопичувач (або eSata, не впевнений, чи ReadyBoost може це використовувати, не буде корисним для малинового пі, але було б цікаво), який використовував би фактичну оперативну пам'ять, щоб ви могли підвищення продуктивності комп'ютера. Хоча, мабуть, буде простіше і дешевше просто придбати нову материнську плату, яка підтримує необхідну кількість оперативної пам’яті.
— Kibbee

33
Чому ця відповідь має стільки відгуків? Є багато причин використовувати своп. Я використовував файл swap на зовнішньому диску, щоб скласти велику бібліотеку протягом декількох днів. Це повільно, як мертві мавпи, що плавають у патоці, але це не означає, що ви "не повинні цього робити зовсім".
— Ендрю Ларссон

10
Ваше попередження, хоч і добре, але занадто сильне. Дізнайтеся "чому ні", а також "чому" саме для цього Raspberry Pi: спробуйте все, що вам завгодно, і НАВЧАЙТЕ. Також є кілька вагомих причин використовувати зовнішній привід для swap, наприклад задоволення пікової потреби в пам'яті для одноразової компіляції бібліотеки; пошук, який привів мене сюди. Часи, яких я навчився найбільше, це коли я викрутив щось незначне і зрозумів, чому. Вибачте, що ви не настільки корисні, як вам здається.
— Кріс Хаттон

2
Шлях занадто сильний. "найкраще не", можливо, але "поганий, марнотратний, згубний і марний" вводить в оману. Все носить з використанням, мати на увазі кисень токсичний, і Raspbian робить використання файлу підкачки. Уповільнення, як правило, краще, ніж аварія, і дозволяє збирати величезні речі раз на кілька місяців. Просто встановіть низьку свобідність, і ви добре.
— kaay

4

Raspbmc використовує /etc/init/swap.confдля налаштування файлів swap через / swap. Він спочатку перевіряє наявність /home/pi/.enable_swap.

Якщо ви видаляєте, /home/pi/.enable_swapтоді файл swap не створюється, а потім просто відтворюйте його, touch /home/pi/.enable_swapякщо вам потрібен увімкнути та перезавантажити.


4

Шкода, що у Raspberry Pis немає GigaBit Ethernet, але принаймні теоретично можливо розмістити простір на мережевому пристрої - Linux Terminal Server Project може запропонувати його з сервера клієнтам відповідно до цього пункту на їхній вікі .

Я знайшов тему форуму фонду "Порада: обмінятись на nfs", яка показує, як хтось, у якого вже були якісь кріплення NFS, використовував swapfile на одному з них і монтував його через кріплення на циклі (можливо, тому що Linux не дозволяє NFS кріплення, яке слід використовувати безпосередньо). З огляду на , що віддалений своп-файл буде містити дані про те , що операційна система не повинна втратити я б розглядати тільки це для провідної мережі Ethernet - бездротовий зв'язок буде занадто тендітним ІМХО. Крім того, ви, звичайно, не повинні дозволяти відключити віддалений сервер, не вимикаючи своп і не дозволяючи йому спочатку повністю спорожнятися!


RPi взагалі не отримає користі від GB Ethernet через обмежену пропускну здатність між мікросхемою Broadcom та контролером Ethernet.
— Дмитро Григор’єв

1
... і контролер Ethernet як доповнення до USB-чіпа ! Так, але ми можемо мріяти про гіпотетичний дизайн RPi, де мережеве обладнання було частиною основного пристрою SoC. 8-P
— SlySven

Контролери Ethernet часто є зовнішніми мікросхемами, але USB як міжчипова шина дійсно погана як для швидкості, так і для споживання енергії.
— Дмитро Григор’єв
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.