Karena kebanyakan percaya bahwa bertukar = buruk dan bahwa jika Anda tidak mengurangi swappiness, sistem akan bertukar ketika itu benar-benar tidak perlu. Tak satu pun dari itu benar. Orang-orang mengasosiasikan swapping dengan waktu di mana sistem mereka macet - namun, kebanyakan bertukar karena sistem macet, bukan sebaliknya. Ketika sistem bertukar, itu sudah memperhitungkan biaya kinerja dalam keputusannya untuk bertukar, dan memutuskan bahwa tidak melakukannya akan memiliki penalti keseluruhan yang lebih besar dalam kinerja atau stabilitas sistem.
Secara keseluruhan, pengaturan default menghasilkan kinerja dan stabilitas keseluruhan yang baik. Saya akan merekomendasikan untuk membiarkannya di default. Ada jalan lebih lanjut untuk Linux untuk meningkatkan manajemen memorinya untuk menyelesaikan beberapa kasus tepi, tetapi pada umumnya kontrol swappiness bukanlah solusi yang baik - sesuaikan dalam satu arah dan Anda dapat memperbaiki satu masalah dan membuat masalah lain. Jika memungkinkan, cukup pasang lebih banyak RAM fisik (dan biarkan swappiness sendiri) mengatasi semua solusi lainnya.
Bagaimana Linux menggunakan RAM
RAM apa pun yang tidak digunakan oleh aplikasi dapat digunakan sebagai "cache". Cache penting untuk sistem yang cepat dan lancar, mempercepat baca dan tulis ke disk.
Jika aplikasi Anda meningkatkan penggunaan memori hingga mencapai hampir semua RAM Anda gunakan, cache Anda akan menyusut dan sebagai hasilnya rata-rata operasi disk akan melambat. Tidak cukup hanya memiliki puluhan megabyte, atau kurang, untuk cache saat ini.
Jika aplikasi meningkatkan penggunaan memori mereka lebih jauh - dengan asumsi Anda tidak memiliki ruang swap - Anda tidak hanya tidak memiliki ruang untuk cache tetapi Anda akhirnya akan kehabisan memori dan sistem Anda harus mematikan proses yang sedang berjalan. Proses membunuh lebih buruk daripada memperlambat karena memberi Anda sistem yang tidak stabil dan tidak dapat diprediksi.
Bagaimana Linux menggunakan swap
Untuk mengatasi kedua masalah ini, sistem Anda dapat mengalokasikan kembali beberapa memori aplikasi yang jarang digunakan untuk ruang swap pada disk Anda, membebaskan RAM. RAM tambahan dapat mencegah proses mati karena kehabisan memori, dan dapat mengambil kembali sedikit cache sehingga operasi disk dapat beroperasi lebih lancar.
Alokasi ulang ini tidak dilakukan sesuai dengan cutoff yang pasti. Anda tidak mencapai persentase alokasi tertentu setelah Linux mulai bertukar. Ini memiliki algoritma "fuzzy". Dibutuhkan banyak hal untuk diperhitungkan, yang dapat dijelaskan dengan "berapa banyak tekanan yang ada untuk alokasi memori". Jika ada banyak "tekanan" untuk mengalokasikan memori baru, maka itu akan meningkatkan peluang beberapa akan ditukar untuk membuat lebih banyak ruang. Jika ada sedikit "tekanan" maka itu akan mengurangi peluang ini.
Sistem Anda memiliki pengaturan "swappiness" yang membantu Anda mengubah cara "tekanan" ini dihitung. Ini sering secara keliru direpresentasikan sebagai "persentase RAM" tetapi tidak, itu hanya nilai yang digunakan sebagai bagian dari formula. Nilai sekitar 40 hingga 60 adalah nilai waras yang direkomendasikan, 60 menjadi standar saat ini.
Membiarkan sistem Anda bertukar ketika harus secara keseluruhan adalah hal yang sangat baik, bahkan jika Anda memiliki banyak RAM. Membiarkan sistem Anda bertukar jika perlu memberi Anda ketenangan pikiran bahwa jika Anda pernah mengalami situasi memori rendah bahkan sementara (sambil menjalankan proses singkat yang menggunakan banyak memori), sistem Anda memiliki kesempatan kedua untuk menjaga semuanya berjalan. Jika Anda bertindak terlalu jauh dengan menonaktifkan swapping sepenuhnya, maka Anda berisiko proses mati karena tidak dapat mengalokasikan memori.
Apa yang terjadi ketika sistem macet dan bertukar banyak?
Swapping adalah operasi yang lambat dan mahal, jadi sistem menghindarinya kecuali jika menghitung bahwa trade-off dalam kinerja cache akan menebusnya secara keseluruhan, atau jika perlu untuk menghindari proses mematikan.
Banyak kali orang akan melihat sistem mereka yang meronta-ronta disk dan menggunakan banyak ruang swap dan menyalahkan menukar untuk itu. Itu pendekatan yang salah untuk diambil. Jika bertukar mencapai ekstrim ini, itu berarti bertukar adalah upaya sistem Anda untuk mengatasi masalah memori yang rendah, bukan penyebab masalah, dan bahwa tanpa bertukar proses berjalan Anda akan mati secara acak.
Bagaimana dengan sistem desktop? Tidakkah mereka membutuhkan pendekatan yang berbeda?
Pengguna sistem desktop memang mengharapkan sistem untuk "merasa responsif" dalam menanggapi tindakan yang diprakarsai pengguna seperti membuka aplikasi, yang merupakan jenis tindakan yang kadang-kadang dapat memicu swap karena peningkatan memori yang diperlukan.
Salah satu cara beberapa orang mencoba untuk men-tweak ini adalah dengan mengurangi parameter swappiness yang dapat meningkatkan toleransi sistem untuk aplikasi yang menggunakan memori dan kehabisan ruang cache.
Namun, ini hanya mengubah tiang gawang. Aplikasi pertama sekarang dapat memuat tanpa operasi swap, tetapi itu akan meninggalkan lebih sedikit kelonggaran untuk aplikasi berikutnya yang memuat. Swapping yang sama mungkin baru saja terjadi nanti, saat Anda selanjutnya membuka aplikasi. Sementara itu, kinerja sistem secara keseluruhan lebih rendah karena ukuran cache berkurang. Dengan demikian, setiap manfaat dari pengaturan swappiness berkurang mungkin sulit untuk diukur, mengurangi penundaan swapping pada beberapa waktu tetapi menyebabkan kinerja lambat lainnya di waktu lain. Mengurangi sedikit swappiness mungkin dibenarkan jika Anda tahu apa yang Anda lakukan, tetapi menguranginya serendah 10% dapat membuat sistem toleran terhadap ukuran cache yang sangat rendah dan membuat sistem lebih bertanggung jawab untuk bertukar dengan pemberitahuan singkat.
Menonaktifkan swap sepenuhnya harus dihindari karena Anda kehilangan perlindungan tambahan terhadap kondisi kehabisan memori yang dapat menyebabkan proses macet atau terbunuh.
Obat yang paling efektif sejauh ini adalah menginstal lebih banyak RAM jika Anda mampu membelinya.
Bisakah swap dinonaktifkan pada sistem yang memiliki banyak RAM?
Jika Anda memiliki RAM jauh lebih banyak daripada yang mungkin Anda perlukan untuk aplikasi, maka Anda jarang akan perlu swap. Menonaktifkan swap mungkin sebagian besar waktu tidak akan membuat perbedaan. Tetapi jika Anda memiliki banyak RAM, membiarkan swap diaktifkan juga tidak akan dikenakan penalti karena sistem tidak bertukar ketika tidak perlu.
Satu-satunya situasi di mana itu akan membuat perbedaan akan berada dalam situasi yang tidak mungkin sistem menemukan dirinya kehabisan memori dan akibatnya sistem cache semakin terhambat, dan itu dalam situasi seperti ini di mana Anda ingin bertukar paling. Jadi Anda dapat dengan aman meninggalkan swap pada pengaturan normal untuk menambah ketenangan pikiran tanpa itu memiliki efek negatif ketika Anda memiliki banyak memori.
Tetapi bagaimana cara swap mempercepat sistem saya? Tidak menukar hal-hal lambat?
Tindakan mentransfer data dari RAM ke swap adalah operasi yang lambat, tetapi hanya diambil ketika kernel cukup yakin manfaat keseluruhan sebagai hasil dari menjaga ukuran cache yang masuk akal akan lebih besar daripada ini.
Setelah data dalam swap, kapan keluar lagi?
Setiap bagian dari memori akan keluar dari swap segera setelah digunakan - baca atau tulis. Namun, biasanya memori yang ditukar adalah memori yang belum diakses dalam waktu lama dan diperkirakan tidak akan dibutuhkan segera.
Mentransfer data dari swap sama memakan waktu dengan memasukkannya ke sana. Kernel Anda tidak akan menghapus data dari itu jika tidak perlu. Sementara data di swap dan tidak digunakan, ia meninggalkan lebih banyak memori untuk hal-hal lain yang sedang digunakan, dan cache sistem yang lebih.
Apakah ada kasus di mana mengurangi swappiness sesuai?
Iya. Jika Anda menjalankan server yang didedikasikan untuk satu aplikasi server tertentu yang tidak mendapat manfaat dari cache sistem. Beberapa server database seperti server Oracle, MySQL / MariaDB merekomendasikan dalam beberapa kasus mengurangi swappiness menjadi 1 hingga 10 karena mesin database ini menggunakan caching mereka sendiri.
Perhatikan bahwa ini benar hanya jika sistem Anda didedikasikan untuk satu tugas itu, dan dalam kasus MySQL / MariaDB hanya jika Anda menggunakan murni InnoDB atau XtraDB, dan bukan MyISAM atau Aria, dll.