Bagaimana cara mengatur ruang swap?


114

Raspberry Pi hanya memiliki 256 MB RAM, jadi saya ingin menggunakan ruang swap (baik pada kartu SD atau penyimpanan USB yang terpasang). Bagaimana cara mengaturnya?


10
Swap pada Pi (dan perangkat sejenis) bisa sangat lambat, dan apa pun yang benar-benar berakhir menggunakan swap secara praktis akan membuat sistem macet. Cermat!
MattJ

1
Anda tahu apa yang akan baik adalah drive RAM USB (bukan flash atau SSD tetapi chip ram yang mudah menguap berjalan pada kecepatan USB) Ini akan baik untuk swap seperti itu cukup bagus.
Piotr Kula

3
@Tibor Pertanyaannya adalah "Bagaimana cara mengatur ruang swap?" Menurut pendapat saya, jawaban yang benar harus menggambarkan cara melakukannya serta memberikan perhatian pada beberapa jebakan dan memperingatkan terhadap penyalahgunaan. Jawaban Anda tidak hanya itu sementara "paling populer" Jawabannya hanya memberitahu Anda mengapa Anda harus tidak pernah "melakukan hal ini sama sekali" (yang bodoh, karena ada cara yang tepat untuk menggunakannya, dan itu benar-benar adalah yang berguna).
Andrew Larsson

1
Ada sekitar satu juta peringatan untuk tidak menggunakan swap dengan pi raspberry di halaman ini, tetapi jika Anda perlu membuat sesuatu sekali, itu tidak dapat dihindari.
Archonic

1
@Archonic - +1 . Saya kehabisan memori saat mengkompilasi file . File swap kecil dengan swapiness rendah akan menjadi perbaikan atas situasi saat ini.
jww

Jawaban:


134

Raspbian menggunakan dphys-swapfile , yang merupakan solusi berbasis swap-file alih-alih solusi berbasis-partisi "standar". Jauh lebih mudah untuk mengubah ukuran swap.

File konfigurasi adalah:

/etc/dphys-swapfile 

Kontennya sangat sederhana. Secara default, Raspbian saya memiliki 100MB swap:

CONF_SWAPSIZE=100

Jika Anda ingin mengubah ukuran, Anda perlu memodifikasi nomor dan memulai kembali dphys-swapfile:

/etc/init.d/dphys-swapfile restart

Sunting: Pada Raspbian lokasi default adalah / var / swap, yang (tentu saja) terletak di kartu SD. Saya pikir ini adalah ide yang buruk, jadi saya ingin menunjukkan, bahwa / etc / dphys-swapfile dapat memiliki opsi berikut juga: CONF_SWAPFILE = / media / btsync / swapfile

Saya hanya bermasalah dengan itu, penyimpanan usb diautomatiskan, jadi ada kemungkinan balapan di sini (automount vs. swapon)


2
Ini jawaban yang benar. Tidak ada jawaban lain yang menyebutkan dphys-swapfile.
Kenji Noguchi

1
Saya telah mengangkat jawaban ini sebagai jawaban yang benar. Mempelajari semua itu dengan cara yang sulit baru-baru ini, jawaban Anda bisa menghemat banyak waktu. ;-)
Drachenfels

Bisakah Anda mengklarifikasi mengapa menggunakan /var/swapadalah ide yang buruk?
Andrey Portnoy

untuk menginstal paket R, yang gagal sebelumnya karena "panggilan sistem gagal tidak dapat mengalokasikan memori": Setel CONF_SWAPSIZE = 1024. Kurang tidak cukup.
Vertikal

36

Anda dapat mengatur ruang swap dengan cukup sederhana. Misalnya, jika drive USB /dev/sdxAnda, Anda akan menggunakan (Anda harus melakukan root untuk ini):

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

Perhatikan bahwa ini akan menggunakan seluruh perangkat dan Anda mungkin akan kehilangan semua data yang ada di dalamnya.

Anda juga dapat membuat file swap (menggunakan loopperangkat) seperti ini:

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

Ketika Anda tidak lagi memerlukan file swap (jika Anda ingin mengeluarkan drive USB misalnya), Anda harus menggunakan swapoff <device>. Tidak melakukannya mungkin akan mengakibatkan sistem crash.

Anda harus berhati-hati . Kartu SD memiliki batas baca / tulis yang terbatas dan itu akan mempersingkat masa pakainya. Jika Anda menggunakan hard drive eksternal, Anda akan baik-baik saja, tetapi akan sangat lambat.


2
Mengapa menambahkan loopback? Tentunya itu tidak perlu?
popey

Anda benar, bukan. Saya mengedit jawaban untuk mencerminkan hal itu.

2
Saya pikir Anda harus mengubah ini untuk menghindari pengguna menyalin dan menempel dan secara tidak sengaja berjalan mkswapdi partisi root mereka. Saya pikir itu sdxadalah konvensi yang bagus.
Jivings

3
Pengguna yang memilih untuk mengaktifkan SWAP mungkin tertarik untuk menyesuaikan swappiness kernel .
earthmeLon

@earthmelon Raspbian Jessie memiliki swappiness 1 secara default.
kaay

32

Jangan lakukan ini sama sekali.

Anda seharusnya tidak mengaktifkan swap di Raspberry Pi.

Meskipun mungkin, itu tidak berguna. Bahkan pada kartu SDHC kelas 10, itu terlalu lambat. Anda juga akan mengurangi masa pakai kartu SD.

Pada perangkat penyimpanan berbasis flash apa saja (kartu SD, SDD, USB thumb drive) Anda juga cenderung melihat jeda seluruh sistem sementara sekelompok besar blok flash terhapus.

Kemungkinan pengecualian:

  • Jika Anda menghubungkan hard drive (magnetik) (melalui adaptor USB-SATA atau USB-IDE)
  • Jika Anda menggunakan ZRAM atau yang serupa

3
tidak diragukan menukar USB bey akan membunuh kunci Anda dengan sangat cepat, menukar kartu SD juga berbahaya, bahkan jika kartu SD yang lebih baru (kelas 10) dapat mendukungnya dengan lebih baik. ZRAM jelas cara untuk pergi jika Anda membutuhkan lebih banyak RAM
neofutur

1
Anda akan berpikir bahwa dengan teknologi ReadyBoost di Windows bahwa seseorang akan membuat USB Drive (atau eSata, tidak yakin jika ReadyBoost dapat menggunakannya, tidak akan berguna untuk raspberry pi, tetapi akan menarik) yang menggunakan RAM aktual sehingga Anda dapat tingkatkan kinerja komputer Anda. Meskipun mungkin akan lebih mudah dan lebih murah untuk hanya membeli motherboard baru yang mendukung jumlah RAM yang Anda butuhkan.
Kibbee

33
Mengapa jawaban ini memiliki banyak upvotes? Ada banyak alasan untuk menggunakan swap. Saya menggunakan file swap pada drive eksternal untuk mengkompilasi perpustakaan besar selama beberapa hari. Ini lambat seperti monyet mati mengambang di molase, tetapi itu tidak berarti bahwa Anda harus "tidak melakukan ini sama sekali."
Andrew Larsson

10
Peringatan Anda, meskipun maknanya baik, terlalu kuat. Mencari tahu 'mengapa tidak' dan juga 'mengapa' adalah tujuan Raspberry Pi: cobalah apa pun yang Anda inginkan dengannya dan PELAJARI. Ada juga beberapa alasan bagus untuk menggunakan drive eksternal untuk swap juga, seperti memenuhi persyaratan memori puncak untuk kompilasi pustaka satu kali; pencarian yang membawaku ke sini. Waktu yang paling saya pelajari adalah ketika saya mengacaukan sesuatu yang kecil dan menyadari mengapa. Maaf untuk mengatakan, Anda tidak membantu seperti yang Anda pikirkan.
Chris Hatton

2
Terlalu kuat. "sebaiknya tidak", mungkin, tetapi "buruk, boros, merusak, dan tidak berguna" menyesatkan. Semuanya pakai dengan penggunaan, ingatlah oksigen beracun, dan Raspbian memang menggunakan swapfile. Perlambatan biasanya lebih baik daripada crash, dan memungkinkan Anda mengkompilasi hal-hal besar setiap beberapa bulan. Tetapkan swappiness rendah dan Anda baik-baik saja.
kaay

4

Raspbmc digunakan /etc/init/swap.confuntuk mengkonfigurasi swap via / swap file. Pertama-tama memeriksa keberadaan /home/pi/.enable_swap.

Jika Anda menghapus /home/pi/.enable_swapmaka swap file tidak dibuat, dan kemudian buat kembali dengan touch /home/pi/.enable_swapjika Anda perlu swap dihidupkan dan reboot.


4

Sangat disayangkan bahwa Raspberry Pis tidak memiliki GigaBit Ethernet tetapi setidaknya secara teori dimungkinkan untuk memiliki ruang swap pada perangkat jaringan - Proyek Terminal Terminal Linux dapat menawarkannya dari server ke klien sesuai dengan item ini di wiki mereka .

Saya menemukan topik Forum Yayasan "Tip: Tukar lebih dari nfs" yang menunjukkan bagaimana seseorang yang sudah memiliki beberapa mount NFS menggunakan swapfile pada salah satu dari mereka dan memasangnya melalui loop-mount (mungkin diperlukan karena Linux tidak mengizinkan NFS mount untuk digunakan secara langsung). Mengingat bahwa swap-file jarak jauh akan menyimpan data yang tidak boleh hilang OS, saya hanya akan mempertimbangkan ini untuk jaringan Ethernet berkabel - tautan nirkabel akan menjadi IMHO yang terlalu rapuh. Juga, tentu saja Anda tidak boleh membiarkan server jauh dimatikan tanpa mematikan swap dan membiarkannya benar-benar kosong terlebih dahulu!


RPi tidak akan mendapat manfaat dari GB Ethernet sama sekali, karena bandwidth terbatas antara chip Broadcom dan pengontrol Ethernet.
Dmitry Grigoryev

1
... dan pengontrol Ethernet sebagai tambahan pada chip USB ! Ya, tapi kita bisa memimpikan desain RPi hipotetis di mana perangkat keras jaringan adalah bagian dari perangkat inti SoC. 8-P
SlySven

Pengontrol Ethernet seringkali merupakan chip eksternal, tetapi USB sebagai bus antar-chip memang buruk untuk kecepatan dan konsumsi daya.
Dmitry Grigoryev
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.