Swap pada Ubuntu 16.04

Tulisan ini akan membahas cara pengaturan swap pada Ubuntu 16.04. Hal tersebut bertujuan untuk mengatasi masalah pada server server yang memiliki memori kecil namun memiliki dana yang terbatas.

Swap pada Ubuntu #

Swap merupakan area/ruang pada hard drive yang telah ditetapkan sebagai tempat di mana sistem operasi dapat menyimpan data sementara yang tidak dapat lagi ditampung oleh RAM. Pada dasarnya, swap dapat meningkatkan memori yang dibutuhkan oleh server untuk menjalankan berbagai proses yang dilakukan, namun dengan membebani hard drive. Ruang swap pada hard drive akan digunakan terutama bila tidak ada lagi ruang yang cukup dalam RAM untuk menyimpan data aplikasi dalam penggunaan.

Informasi yang ditulis ke disk akan jauh lebih lambat daripada informasi yang tersimpan dalam RAM. Sistem operasi akan memilih untuk terus menjalankan data aplikasi di memori dan menggunakan swap untuk data/proses yang lebih lama.

Periksa Sistem #

Sebelum memulai, perlu dilakukan pemeriksaan apakah sistem sudah memiliki ruang swap atau tidak. Suatu sistem memungkinkan untuk memiliki beberapa file swap, namun umumnya satu file sudah cukup.

Dengan menggunakan terminal, untuk memeriksa apakah sistem memiliki konfigurasi swap atau tidak:

$ sudo swapon --show

Jika tidak ada keluaran (output), berarti sistem tidak memiliki ruang swap. Hal tersebut dapat diverifikasi dengan:

$ free -h

Keluaran:

                total   used    free    shared      buff/cache  available
Mem: 493M 240M 42M 51M 211M 174M
Swap: 0B 0B 0B

Berdasarkan keluaran di atas, dapat dilihat bahwa tidak ada swap yang aktif pada sistem.

Periksa Ruang di Media Penyimpanan #

Cara yang paling umum untuk mengalokasikan ruang untuk swap adalah dengan menggunakan partisi terpisah. Namun, mengubah skema partisi tidak selalu memungkinkan. Oleh karena itu, pembuatan swap dilakukan dengan menggunakan partisi yang sudah ada.

Sebelum melakukan hal tersebut, perlu dilakukan pemeriksaan terhadap penggunaan disk melalui terminal:

$ df -h

Keluaran:

Filesystem      Size  Used Avail Use% Mounted on
udev 240M 0 240M 0% /dev
tmpfs 50M 6.2M 44M 13% /run
/dev/vda1 20G 5.5G 14G 29% /
tmpfs 247M 0 247M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 247M 0 247M 0% /sys/fs/cgroup
tmpfs 50M 0 50M 0% /run/user/1001

Berdasarkan keluaran di atas, didapat bahwa /dev/vda1 adalah disk yang sedang digunakan dan ruang kosong sebesar 14GB.

Membuat File Swap #

Cara terbaik untuk membuat file swap adalah dengan program fallocate.

Terdapat banyak pendapat terkait ukuran swap yang diperlukan. Namun, umumnya ukuran yang digunakan adalah sama atau dua kali dari ukuran RAM pada sistem. Misal suatu sistem memiliki RAM 512MB, maka dipilih ukuran file untuk swap dua kali kali lipat, 1 GB. Dengan menggunakan terminal:

$ sudo fallocate -l 1G /swapfile

Untuk verifikasi bahwa ukuran file yang diatur telah benar:

$ ls -lh /swapfile

Keluaran:

-rw-r--r-- 1 root root 1.0G Dec 5 17:12 /swapfile

Berdasarkan keluaran di atas, didapat bahwa file telah dibuat dengan benar.

Mengaktifkan File Swap #

Setelah memiliki file dengan ukuran yang benar, kemudian yang dilakukan adalah mengubahnya menjadi ruang swap. Pertama, hal yang harus dilakukan adalah mengunci hak akses file agar hanya pengguna dengan hak root yang bisa membaca isinya:

$ sudo chmod 600 /swapfile

Verifikasi perubahan wewenang:

$ ls -lh /swapfile

Keluaran:

-rw------- 1 root root 1.0G Dec 5 17:12 /swapfile

Berdasarkan keluaran di atas, didapat bahwa hanya pengguna root yang dapat membaca dan menulis.

Kemudian, menandai file sebagai ruang swap:

$ sudo mkswap /swapfile

Keluaran:

Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=d60f1c03-88f3-465b-bdfb-932efc7f4278

Setelah menandai file, kemudian file swap dapat diaktifkan dan memungkinkan sistem menggunakannya:

$ sudo swapon /swapfile

Verifikasi bahwa swap telah tersedia:

$ sudo swapon --show

Keluaran:

NAME      TYPE  SIZE USED PRIO
/swapfile file 1024M 0B -1

Dengan menggunakan cara yang sama pada awal tulisan untuk memeriksa sistem sudah memiliki ruang swap atau tidak:

$ free -h

Keluaran:

              total        used        free      shared  buff/cache   available
Mem: 493M 240M 42M 51M 211M 174M
Swap: 1.0G 0B 1.0G

Berdasarkan keluaran di atas, dapat dilihat bahwa swap telah berhasil di-setup dan sistem operasi akan mulai menggunakannya jika diperlukan.

Membuat File Swap Permanen #

Walaupun sudah berhasil setup swap dengan langkah-langkah di atas, masih terdapat permasalahan, yaitu jika dilakukan reboot, server tidak mempertahankan pengaturan swap secara otomatis. Namun, hal tersebut dapat diatasi dengan menambahkan file swap ke file /etc/fstab.

Sebelumnya, cadangkan file /etc/fstab untuk antisipasi:

$ sudo cp /etc/fstab /etc/fstab.bak

Tambahkan informasi file swap di akhir file /etc/fstab dengan:

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

Keluaran:

/swapfile none swap sw 0 0

Pengaturan pada File Swap #

Swappiness #

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

Dengan nilai mendekati nol, kernel tidak akan menukar data ke disk kecuali mutlak diperlukan. Ingat, interaksi dengan file swap "mahal" karena membutuhkan waktu yang lebih lama daripada interaksi dengan RAM dan hal itu dapat menyebabkan penurunan kinerja yang signifikan. Memberitahu sistem agar tidak mengandalkan swap banyak umumnya akan membuat sistem anda lebih cepat.

Nilai yang mendekati 100 akan mencoba memasukkan lebih banyak data ke dalam swap dalam upaya menjaga ruang RAM lebih bebas. Bergantung pada profil memori aplikasi Anda atau yang Anda gunakan untuk server Anda, ini mungkin lebih baik dalam beberapa kasus.

Kita bisa melihat nilai swappiness saat ini dengan mengetik:

cat /proc/sys/vm/swappiness

Keluaran:

60

Untuk Desktop, setting swappiness 60 bukan nilai yang buruk. Untuk server, mungkin perlu diubah agar lebih dekat ke 0.

Nilai swappiness dapat diatur dengan menggunakan perintah sysctl. Misalnya, untuk mengatur swappiness menjadi 10:

$ sudo sysctl vm.swappiness=10

Keluaran:

vm.swappiness = 10

Pengaturan ini akan bertahan sampai reboot berikutnya. Nilai ini dapat diatur secara otomatis saat restart dengan menambahkan baris ke file /etc/sysctl.conf:

$ sudo nano /etc/sysctl.conf

Di bagian bawah, dapat ditambahkan:

vm.swappiness=10

Kemudian simpan dan tutup file tersebut.

Menyesuaikan Pengaturan #

Nilai lain terkait yang mungkin perlu diubah adalah vfs_cache_pressure. Pengaturan ini mengonfigurasikan berapa banyak sistem yang akan dipilih untuk menyimpan informasi inode dan dentry dari data lain.

Pada dasarnya, ini adalah akses data tentang filesystem. Hal ini umumnya sangat mahal untuk dicari dan sangat sering diminta, jadi ini adalah hal yang sangat baik untuk sistem melakukan cache. Nilai saat ini dapat dilihat dengan:

$ cat /proc/sys/vm/vfs_cache_pressure

Keluaran:

100

Karena saat ini dikonfigurasi, sistem menghapus informasi inode dari cache terlalu cepat. Hal ini dapat diubah dengan pengaturan yang lebih konservatif misal 50:

$ sudo sysctl vm.vfs_cache_pressure=50

Sekali lagi, ini hanya berlaku untuk sesi saat ini. Hal tersebut dapa diubah dengan menambahkannya ke file konfigurasi seperti yang telah dilakukan pada pengaturan swappiness:

$ sudo nano /etc/sysctl.conf

Di bagian bawah, tambahkan baris yang menentukan nilai baru:

vm.vfs_cache_pressure=50

Kemudian simpan dan tutup file tersebut.

Kesimpulan #

Setelah menyelesaikan tutorial ini, diharapkan sistem dapat berjalan lebih lancar. Namun, jika masih didapati masalah, besar kemungkinan bahwa server memang perlu upgrade memori.


Since you've made it this far, sharing this article on your favorite social media network would be highly appreciated 💖! For feedback, please ping me on Twitter.

Published