Cara Menambah Ruang Swap pada Ubuntu 20.04

Pengantar

Salah satu cara untuk menghindari kesalahan kehabisan memori dalam aplikasi adalah dengan menambahkan sejumlah ruang swap ke server Anda. Dalam panduan ini, kita akan membahas cara menambah suatu berkas swap ke server Ubuntu 20.04.

Peringatan: Meskipun biasanya swap disarankan untuk sistem yang menggunakan hard drive berputar tradisional, harap diperhatikan bahwa melakukan swap pada SSD dapat menyebabkan masalah terkait degradasi perangkat keras seiring waktu. Karena itu, kami tidak menyarankan untuk mengaktifkan swap pada DigitalOcean atau penyedia lainnya yang menggunakan penyimpanan SSD.

Apa itu Swap?

Swap adalah bagian dari penyimpanan hard drive yang telah disisihkan pada sistem operasi untuk secara sementara menyimpan data yang tidak dapat lagi disimpan di RAM. Ini memungkinkan Anda untuk menambah jumlah informasi yang dapat disimpan oleh server Anda di dalam memori yang sedang bekerja, dengan beberapa peringatan. Ruang swap pada hard drive akan digunakan terutama saat tidak ada lagi ruang yang cukup di RAM untuk menyimpan data aplikasi yang sedang digunakan.

Informasi yang ditulis ke diska akan lebih lambat secara signifikan dibandingkan informasi yang disimpan dalam RAM, tetapi sistem operasi akan lebih memilih untuk tetap menjalankan data aplikasi dalam memori dan menggunakan swap untuk data yang lebih tua. Secara garis besar, memiliki ruang swap sebagai pilihan alternatif saat RAM sistem Anda habis dapat menjadi jaring pengaman yang baik terhadap eksepsi kehabisan memori pada sistem dengan penyimpanan non-SSD.

Langkah 1 – Memeriksa Sistem untuk Informasi Swap

Sebelum memulai, kita dapat memeriksa apakah sistem sudah memiliki sebagian ruang swap yang tersedia. Dimungkinkan untuk memiliki beberapa berkas swap atau partisi swap, tetapi pada umumnya satu sudah cukup.

Kita dapat melihat apakah sistem memiliki swap yang terkonfigurasi dengan mengetik:

  • sudo swapon --show

Jika Anda tidak mendapat keluaran apa pun, ini berarti sistem Anda tidak memiliki ruang swap yang tersedia saat ini.

Anda dapat memverifikasi bahwa tidak ada swap yang aktif dengan menggunakan utilitas free:

  • free -h
Output              total        used        free      shared  buff/cache   available Mem:          981Mi       122Mi       647Mi       0.0Ki       211Mi       714Mi Swap:            0B          0B          0B 

Seperti yang Anda lihat di baris Swap pada keluaran, tidak ada swap yang aktif pada sistem.

Langkah 2 – Memeriksa Ruang Tersedia pada Partisi Hard Drive

Sebelum menciptakan berkas swap, kita akan memeriksa penggunaan diska saat ini untuk memastikan kita memiliki cukup ruang. Lakukan ini dengan mengetik:

  • df -h
OutputFilesystem      Size  Used Avail Use% Mounted on udev            474M     0  474M   0% /dev tmpfs            99M  932K   98M   1% /run /dev/vda1        25G  1.4G   23G   7% / tmpfs           491M     0  491M   0% /dev/shm tmpfs           5.0M     0  5.0M   0% /run/lock tmpfs           491M     0  491M   0% /sys/fs/cgroup /dev/vda15      105M  3.9M  101M   4% /boot/efi /dev/loop0       55M   55M     0 100% /snap/core18/1705 /dev/loop1       69M   69M     0 100% /snap/lxd/14804 /dev/loop2       28M   28M     0 100% /snap/snapd/7264 tmpfs            99M     0   99M   0% /run/user/1000 

Perangkat dengan / di dalam kolom Mounted on adalah diska kita dalam kasus ini. Kita memiliki banyak ruang yang tersedia dalam contoh ini (hanya digunakan 1,4 G). Penggunaan Anda mungkin akan berbeda.

Meskipun ada banyak pendapat tentang ukuran ruang swap yang sesuai, hal itu benar-benar bergantung pada preferensi pribadi dan persyaratan aplikasi Anda. Secara umum, jumlah yang sama atau dua kali dari jumlah RAM pada sistem Anda adalah titik awal yang baik. Patokan yang baik lainnya adalah swap apa pun di atas 4 G mungkin tidak diperlukan jika Anda hanya menggunakannya sebagai pilihan alternatif RAM.

Langkah 3 – Menciptakan Berkas Swap

Kini setelah kita mengetahui ruang hard drive yang tersedia, kita dapat menciptakan berkas swap di sistem kita. Kita akan mengalokasikan berkas dengan ukuran yang diinginkan yang bernama swapfile di direktori root (/) kita.

Cara terbaik untuk menciptakan berkas swap adalah dengan program fallocate. Perintah ini seketika menciptakan berkas dengan ukuran yang ditentukan.

Karena server dalam contoh kita memiliki 1 G RAM, kita akan menciptakan berkas 1 G dalam panduan ini. Sesuaikan ini untuk memenuhi kebutuhan server Anda:

  • sudo fallocate -l 1G /swapfile

Kita dapat memverifikasi bahwa jumlah ruang yang benar telah disiapkan dengan mengetik:

  • ls -lh /swapfile
  • -rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

Berkas telah dibuat dengan menyisihkan jumlah ruang yang benar.

Langkah 4 – Mengaktifkan Berkas Swap

Karena sudah memiliki berkas dengan ukuran yang benar, kita perlu mengubahnya menjadi ruang swap yang sesungguhnya.

Pertama-tama, kita perlu untuk mengunci izin berkas sehingga hanya pengguna dengan privilese root yang dapat membaca konten. Ini mencegah pengguna normal untuk dapat mengakses berkas, yang akan memiliki implikasi keamanan yang signifikan.

Buat berkas hanya dapat diakses oleh root dengan mengetik:

  • sudo chmod 600 /swapfile

Lakukan verifikasi perubahan izin dengan mengetik:

  • ls -lh /swapfile
Output-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile 

Seperti yang terlihat, hanya pengguna root yang memiliki bendera baca dan tulis yang diaktifkan.

Sekarang kita dapat menandai berkas sebagai ruang swap dengan mengetik:

  • sudo mkswap /swapfile
OutputSetting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf 

Setelah menandai berkas, kita dapat mengaktifkan berkas swap, yang mengizinkan sistem kita untuk mulai menggunakannya:

  • sudo swapon /swapfile

Lakukan verifikasi bahwa swap tersedia dengan mengetik:

  • sudo swapon --show
OutputNAME      TYPE  SIZE USED PRIO /swapfile file 1024M   0B   -2 

Kita dapat memeriksa keluaran utilitas free lagi untuk menguatkan temuan kita:

  • free -h
Output              total        used        free      shared  buff/cache   available Mem:          981Mi       123Mi       644Mi       0.0Ki       213Mi       714Mi Swap:         1.0Gi          0B       1.0Gi 

Swap telah berhasil disiapkan dan sistem operasi kita akan mulai menggunakannya ketika diperlukan.

Langkah 5 – Membuat Berkas Swap Jadi Permanen

Perubahan terbaru kita telah mengaktifkan berkas swap untuk sesi ini. Namun, jika kita melakukan boot ulang, server tidak akan mempertahankan pengaturan swap secara otomatis. Kita dapat mengubah ini dengan menambahkan berkas swap ke berkas /etc/fstab.

Cadangkan berkas /etc/fstab seandainya ada kesalahan:

  • sudo cp /etc/fstab /etc/fstab.bak

Tambahkan informasi berkas swap di akhir berkas /etc/fstab dengan mengetik:

  • echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Selanjutnya, kita akan meninjau beberapa pengaturan yang dapat kita perbarui untuk menyetel ruang swap.

Langkah 6 – Menyetel Pengaturan Swap Anda

Ada beberapa opsi yang dapat Anda atur agar berdampak pada kinerja sistem Anda saat berurusan dengan swap.

Menyesuaikan Properti Swappiness

Parameter swappiness mengonfigurasi seberapa sering sistem Anda melakukan swap data dari RAM ke ruang swap. Ini adalah nilai antara 0 dan 100 yang mewakili persentase.

Dengan nilai yang dekat dengan nol, kernel tidak akan melakukan swap data ke diska kecuali benar-benar diperlukan. Ingat, interaksi dengan berkas swap adalah hal “mahal” yang dalam hal ini berarti memakan waktu lebih lama daripada interaksi dengan RAM dan dapat menyebabkan pengurangan kinerja yang signifikan. Memberi tahu sistem untuk tidak terlalu banyak mengandalkan swap secara umum akan membuat sistem Anda lebih cepat.

Nilai yang lebih dekat dengan 100 akan mencoba menaruh lebih banyak data ke dalam swap sebagai upaya untuk menjaga lebih banyak ruang RAM yang lowong. Tergantung profil memori aplikasi atau kegunaan server, ini mungkin pilihan yang lebih baik dalam beberapa kasus.

Kita dapat melihat nilai swappiness saat ini dengan mengetik:

  • cat /proc/sys/vm/swappiness
Output60 

Untuk Desktop, pengaturan swappiness 60 bukanlah nilai yang buruk. Untuk server, Anda mungkin ingin memindahkannya lebih dekat dengan 0.

Kita dapat mengatur swappiness ke nilai yang berbeda dengan menggunakan perintah sysctl.

Misalnya, untuk mengatur swappiness menjadi 10, kita dapat mengetik:

  • sudo sysctl vm.swappiness=10
Outputvm.swappiness = 10 

Pengaturan ini akan terus ada hingga boot ulang selanjutnya. Kita dapat mengatur nilai ini secara otomatis saat memulai ulang dengan menambahkan baris ke berkas /etc/sysctl.conf:

  • sudo nano /etc/sysctl.conf

Di bagian bawah, Anda dapat menambahkan:

/etc/sysctl.conf

vm.swappiness=10 

Simpan dan tutup berkas saat Anda sudah selesai.

Menyesuaikan Pengaturan Cache Pressure

Nilai terkait lainnya yang mungkin Anda ingin modifikasi adalah vfs_cache_pressure. Pengaturan ini mengonfigurasi seberapa banyak sistem akan memilih untuk melakukan cache pada inode dan informasi dentry dibandingkan data lainnya.

Pada dasarnya, ini adalah data akses tentang sistem berkas. Secara umum, ini sangat sulit untuk dicari dan sangat sering diminta, jadi sebaiknya sistem Anda melakukan cache. Anda dapat melihat nilai saat ini dengan melakukan kueri sistem berkas proc lagi:

  • cat /proc/sys/vm/vfs_cache_pressure
Output100 

Dalam konfigurasi saat ini, sistem kita menghapus informasi inode dari cache dengan terlalu cepat. Kita dapat mengatur ini ke pengaturan yang lebih konservatif seperti 50 dengan mengetik:

  • sudo sysctl vm.vfs_cache_pressure=50
Outputvm.vfs_cache_pressure = 50 

Sekali lagi, ini hanya valid untuk sesi kita saat ini. Kita dapat mengubah hal itu dengan menambahkannya ke berkas konfigurasi seperti yang kita lakukan dengan pengaturan swappiness:

  • sudo nano /etc/sysctl.conf

Di bagian bawah, tambahkan baris yang menentukan nilai baru Anda:

/etc/sysctl.conf

vm.vfs_cache_pressure=50 

Simpan dan tutup berkas saat Anda sudah selesai.

Kesimpulan

Mengikuti langkah-langkah dalam panduan ini akan memberi Anda sebagian ruang bernapas dalam kasus terkait eksepsi kehabisan memori. Ruang swap dapat menjadi sangat berguna untuk menghindari sebagian masalah umum ini.

Jika Anda menjumpai pesan kesalahan OOM (kehabisan memori), atau jika Anda menemukan bahwa sistem tidak dapat menggunakan aplikasi yang Anda perlukan, solusi terbaiknya adalah dengan mengoptimalkan konfigurasi aplikasi atau meningkatkan server.