Mengoptimalkan SSD di Sistem Operasi Linux
Solid-state drive adalah perangkat penyimpanan solid-state yang menggunakan rangkaian sirkuit terintegrasi untuk menyimpan data secara terus-menerus, biasanya menggunakan memori flash dan berfungsi sebagai penyimpanan sekunder dalam hierarki penyimpanan komputer. Media penyimpanan SSD menggunakan komponen yang berbeda dengan HDD konvensional, oleh karena itu perawatan serta penggunaannya berbeda dengan HDD. Secara teori SSD memang jauh lebih cepat dibanding HDD, tetapi bukan berarti kamu bisa memperlakukannya sama dengan HDD.
Seiring berjalannya waktu, bertambahnya jumlah total penulisan data (Total Bytes Written) mempengaruhi umur SSD. Oleh karena itu, berikut ada beberapa penyesuaian yang harus dilakukan untuk mengoptimalkan solid-state drive pada sistem operasi linux agar tetap bekerja secara optimal dan panjang umur.
Aktifkan TRIM dan kurangi WRITE
TRIM memastikan bahwa ketika sistem operasi ingin menulis di sektor yang sama, data lama akan dihapus sepenuhnya tanpa sampah. Ini berjalan pada minimal kernel linux 3.8 atau lebih baru, dan menggunakan ext4 atau filesystem yang mendukung TRIM lainnya.
Pertama, edit filesystem table menggunakan text editor, misalnya nano.
$ sudo nano /etc/fstab
# Static information about the filesystems.
# See fstab(5) for details.
# <file system> <dir> <type> <options> <dump> <pass>
# FileSystem on /dev/sda2 [Gentoo]
UUID=7f59e8fa-bfcf-4a53-a58c-08627d30a061 / f2fs discard,noatime,active_logs=2,compress_algorithm=lz4 0 0
# Boot EFI on /dev/sda1
UUID=E476-E614 /boot vfat noatime 0 0
Untuk partisi f2fs sebenarnya tidak perlu menambahkan opsi discard, karena defaultnya otomatis hidup. Selain f2fs perlu menambahkan.Selanjutnya, tambahkan 4 baris berikut sehingga menggunakan RAM sebagai penyimpanan untuk file temp dan log.
tmpfs /tmp tmpfs noatime,mode=1777 0 0 tmpfs /var/log tmpfs noatime,mode=0755 0 0 tmpfs /var/spool tmpfs noatime,mode=1777 0 0 tmpfs /var/tmp tmpfs noatime,mode=1777 0 0
Setelah reboot, jalankan TRIM secara berkala.
$ sudo fstrim -va
Mengubah nilai Swappiness
Parameter sysctl swappiness mewakili preferensi (penghindaran) kernel dari ruang swap. Swappiness dapat memiliki nilai antara 0 - 100, nilai standarnya adalah 60. Nilai yang rendah menyebabkan kernel menghindari penulisan swap, nilai yang lebih tinggi menyebabkan kernel mencoba menggunakan lebih banyak ruang swap. Menggunakan nilai rendah pada memori yang cukup diakui dapat meningkatkan daya tanggap (responsiveness) pada banyak sistem.
Debian dan Ubuntu
$ sudo nano /etc/sysctl.conf
$ sudo nano /etc/sysctl.d/99-sysctl.conf
Kemudian, tambahkan dua baris ini pada kernel parameter sysctl.
vm.swappiness=1 vm.vfs_cache_pressure=50
Mengubah I/O Scheduler (Advanced Preference)
Linux memberi opsi untuk memilih I/O scheduler. Secara default biasanya menggunakan mq-deadline atau bfq.
I/O scheduler berupaya meningkatkan throughput dengan menyusun ulang akses permintaan ke dalam urutan linear berdasarkan alamat logis dari data dan mencoba untuk mengelompokkannya bersama-sama. Meskipun hal ini dapat meningkatkan throughput keseluruhan, hal itu dapat menyebabkan beberapa permintaan I/O menunggu terlalu lama sehingga menyebabkan masalah latensi. I/O scheduler berupaya menyeimbangkan kebutuhan akan throughput tinggi dan mencoba membagi secara adil permintaan I/O diantara proses.
Berbagai pendekatan telah diambil untuk berbagai I/O scheduler dan masing-masing memiliki kekuatan dan kelemahan masing-masing dan aturan umumnya adalah bahwa tidak ada I/O scheduler default yang sempurna untuk semua rentang tuntutan I/O yang mungkin dialami oleh suatu sistem.
Ubuntu Wiki
Best I/O scheduler to use
Different I/O requirements may benefit from changing from the Ubuntu distro default. A quick start guide to select a suitable I/O scheduler is below. The results are based on running 25 different synthetic I/O patterns generated using fio on ext4, xfs and btrfs with the various I/O schedulers using the 5.3 kernel.
SSD or NVME drives
It is worth noting that there is little difference in throughput between the mq-deadline/none/bfq I/O schedulers when using fast multi-queue SSD configurations or fast NVME devices. In these cases it may be preferable to use the 'none' I/O scheduler to reduce CPU overhead.
HDD
Avoid using the none/noop I/O schedulers for a HDD as sorting requests on block addresses reduce the seek time latencies and neither of these I/O schedulers support this feature. mq-deadline has been shown to be advantageous for the more demanding server related I/O, however, desktop users may like to experiment with bfq as has been shown to load some applications faster.Of course, your use-case may differ, the above are just suggestions to start with based on some synthetic tests. You may find other choices with adjustments to the I/O scheduler tunables produce better results.ArchWiki
The best choice of scheduler depends on both the device and the exact nature of the workload. Also, the throughput in MB/s is not the only measure of performance: deadline or fairness deteriorate the overall throughput but may improve system responsiveness. Benchmarking may be useful to indicate each I/O scheduler performance.
Rekomendasi
Untuk SSD disarankan untuk mengganti I/O scheduler menjadi none sedangkan untuk HDD gunakan mq-deadline atau bfq.
Kemudian, ubah I/O scheduler menjadi none pada langkah selanjutnya.
Pertama, cek I/O scheduler yang aktif sekarang ini.
$ grep "" /sys/block/*/queue/scheduler
Berikut contoh I/O scheduler yang aktif ditandai dengan kurung siku [bfq].
mq-deadline kyber [bfq] none mq-deadline kyber [bfq] none
Kemudian, ubah I/O scheduler menjadi none pada langkah selanjutnya.
Kernel Boot Parameters
Ini berlaku untuk semua storage yang terpasang.
$ sudo nano /etc/default/grub
Tambahkan elevator=none ke baris GRUB_CMDLINE_LINUX_DEFAULT.
GRUB_CMDLINE_LINUX_DEFAULT="elevator=none quiet"
Update konfigurasi GRUB.
$ sudo update-grub
Udev Rules
Ini lebih powerful. Dengan udev rules kita dapat mengkonfigurasi banyak storage, tidak hanya untuk perangkat komputer yang menggunakan satu storage saja.
$ sudo nano /etc/udev/rules.d/60-ioschedulers.rules
ACTION=="add|change", KERNEL=="nvme[0-9]n[0-9]", ATTR{queue/scheduler}="none"
Untuk SATA tambahkan baris berikut.
ACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="none"
Simpan konfigurasi dan reboot.
Bagaimana cukup mudah kan?
Cukup itu yang dapat saya berikan.
Semoga bermanfaat bagi kalian semua.
Terima Kasih.
Posting Komentar untuk "Mengoptimalkan SSD di Sistem Operasi Linux"
Posting Komentar
Silahkan tinggalkan komentar jika ada masukan, pertanyaan, kritik ataupun dukungan. Namun pastikan untuk berkomentar secara sopan.