Saya pikir seluruh esensi dari swap adalah untuk bertindak sebagai jaring pengaman penyimpanan sementara ketika RAM penuh tetapi partisi swap saya terus digunakan walaupun saya kadang-kadang memiliki sebanyak 3GB RAM gratis. Apakah ini normal?
kernel
swap
memory-usage
Mysterio
sumber
sumber
free -m
,top -b 1
Jawaban:
Anda dapat mencoba mengubah nilai "swappiness" Anda:
Dari FAQ Swap Ubuntu :
Anda juga dapat melihat: https://askubuntu.com/a/103916/54187
sumber
sudo sysctl --load=/etc/sysctl.conf
setelah mengedit file untuk menerapkan perubahanAda beberapa aspek berbeda untuk pertanyaan Anda.
Pertama, apa definisi Anda tentang "bebas". Ini sebenarnya tidak sesederhana seperti yang terdengar di Linux (atau sistem operasi modern).
Bagaimana Linux menggunakan RAM (sangat sederhana)
Setiap aplikasi dapat menggunakan sebagian dari memori Anda. Linux menggunakan semua memori yang tidak dihuni (kecuali untuk beberapa Mb terakhir) sebagai "cache". Ini termasuk halaman cache, inode cache, dll. Ini adalah hal yang baik - ini membantu mempercepat segalanya. Baik menulis ke disk maupun membaca dari disk dapat dipercepat dengan cache.
Idealnya, Anda memiliki cukup memori untuk semua aplikasi Anda, dan Anda masih memiliki beberapa ratus Mb tersisa untuk cache. Dalam situasi ini, selama aplikasi Anda tidak meningkatkan penggunaan memori dan sistem tidak berjuang untuk mendapatkan ruang yang cukup untuk cache, tidak perlu untuk swap apa pun.
Setelah aplikasi mengklaim lebih banyak RAM, itu hanya masuk ke beberapa ruang yang digunakan oleh cache, menyusut cache. De-alokasi cache murah dan cukup mudah dilakukan secara real time - semua yang berada di cache adalah salinan kedua dari sesuatu yang sudah ada di disk, jadi bisa langsung dibatalkan alokasinya secara instan, atau itu adalah sesuatu yang kita inginkan harus flush ke disk dalam beberapa detik ke depan pula .
Ini bukan situasi yang khusus untuk Linux - semua sistem operasi modern bekerja dengan cara ini. Sistem operasi yang berbeda mungkin hanya melaporkan RAM bebas secara berbeda: beberapa menyertakan cache sebagai bagian dari apa yang mereka anggap "bebas" dan beberapa mungkin tidak.
Ketika Anda berbicara tentang RAM gratis, itu jauh lebih berarti untuk memasukkan cache, karena sebenarnya gratis - itu tersedia jika ada aplikasi yang memintanya. Di Linux,
free
perintah melaporkannya dua arah - baris pertama termasuk cache di kolom RAM yang digunakan, dan baris kedua termasuk cache (dan buffer) di kolom gratis.Bagaimana Linux menggunakan swap (bahkan lebih disederhanakan)
Setelah Anda menggunakan cukup memori sehingga tidak ada cukup sisa untuk cache yang berjalan mulus, Linux dapat memutuskan untuk mengalokasikan kembali beberapa memori aplikasi yang tidak digunakan dari RAM untuk swap.
Itu tidak melakukan ini sesuai dengan cut-off yang pasti. Ini tidak seperti Anda mencapai persentase alokasi tertentu kemudian Linux mulai bertukar. Ini memiliki algoritma yang agak "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. Biasanya tidak disarankan untuk mengubahnya sama sekali, dan saya tidak akan merekomendasikan Anda mengubahnya. Bertukar secara keseluruhan adalah hal yang sangat baik - meskipun ada beberapa kasus tepi yang membahayakan kinerja, jika Anda melihat kinerja sistem secara keseluruhan, itu adalah keuntungan bersih untuk berbagai tugas. Jika Anda mengurangi swappiness, Anda membiarkan jumlah memori cache menyusut sedikit lebih banyak daripada yang seharusnya, bahkan ketika itu mungkin benar-benar bermanfaat. Apakah ini pertukaran yang cukup baik untuk masalah apa pun yang Anda alami dengan bertukar, itu terserah Anda. Anda hanya harus tahu apa yang Anda lakukan, itu saja.
Ada situasi yang terkenal di mana swap benar-benar merusak kinerja yang dirasakan pada sistem desktop, dan itu adalah seberapa cepat aplikasi dapat menanggapi input pengguna lagi setelah dibiarkan menganggur untuk waktu yang lama dan memiliki proses latar belakang yang berat di IO (seperti backup semalam) dijalankan. Ini adalah kelambatan yang sangat terlihat, tetapi tidak cukup untuk membenarkan mematikan swap secara bersamaan dan sangat sulit untuk dicegah dalam sistem operasi apa pun. Matikan swap dan kelesuan awal ini setelah pemindaian cadangan / virus mungkin tidak terjadi, tetapi sistem mungkin berjalan sedikit lebih lambat sepanjang hari. Ini juga bukan situasi yang terbatas pada Linux.
Ketika memilih apa yang akan ditukar ke disk, sistem mencoba untuk memilih memori yang sebenarnya tidak digunakan - baca atau tulis. Ini memiliki algoritma yang cukup sederhana untuk menghitung ini yang memilih dengan baik sebagian besar waktu.
Jika Anda memiliki sistem di mana Anda memiliki jumlah RAM yang sangat besar (pada saat penulisan, 8GB adalah jumlah yang sangat besar untuk distro Linux biasa), maka Anda akan sangat jarang mendapatkan situasi di mana swap diperlukan sama sekali. Anda bahkan dapat mencoba mematikan swap. Saya tidak pernah merekomendasikan melakukan itu, tetapi hanya karena Anda tidak pernah tahu kapan lebih banyak RAM dapat menyelamatkan Anda dari beberapa aplikasi crash. Tetapi jika Anda tahu Anda tidak akan membutuhkannya, Anda bisa melakukannya.
Tetapi bagaimana cara swap mempercepat sistem saya? Tidak bertukar hal memperlambat?
Tindakan mentransfer data dari RAM ke swap adalah operasi yang lambat, tetapi itu hanya diambil ketika kernel cukup yakin manfaat keseluruhan akan lebih besar daripada ini. Misalnya, jika memori aplikasi Anda telah naik ke titik di mana Anda hampir tidak memiliki cache yang tersisa dan I / O Anda sangat tidak efisien karena ini, Anda sebenarnya bisa mendapatkan lebih banyak kecepatan dari sistem Anda dengan membebaskan beberapa memori, bahkan setelah biaya awal swapping data untuk membebaskannya.
Ini juga merupakan pilihan terakhir jika aplikasi Anda benar-benar meminta lebih banyak memori daripada yang sebenarnya Anda miliki. Dalam hal ini, bertukar diperlukan untuk mencegah situasi kehabisan memori yang sering mengakibatkan aplikasi mogok atau harus dibunuh secara paksa.
Swapping hanya dikaitkan dengan waktu di mana sistem Anda berkinerja buruk karena itu terjadi pada saat Anda kehabisan RAM yang dapat digunakan, yang akan memperlambat sistem Anda (atau membuatnya tidak stabil) bahkan jika Anda tidak memiliki swap. Jadi untuk menyederhanakan banyak hal, swapping terjadi karena sistem Anda menjadi macet, bukan sebaliknya.
Setelah data dalam swap, kapan keluar lagi?
Mentransfer data dari swap adalah (untuk hard disk tradisional, setidaknya) sama memakan waktu dengan memasukkannya ke sana. Jadi bisa dimengerti, kernel Anda akan segan untuk menghapus data dari swap, terutama jika itu tidak benar-benar digunakan (yaitu membaca dari atau ditulis ke). Jika Anda memiliki data dalam swap dan itu tidak digunakan, maka itu sebenarnya hal yang baik bahwa itu tetap di swap, sejak ia meninggalkan lebih banyak memori untuk hal-hal lain yang sedang digunakan, berpotensi mempercepat sistem anda.
sumber
free -m
.Menetapkan nilai swappiness tidak berfungsi di setiap situasi. Jika itu berhasil untuk Anda, bagus. Jika tidak, saya telah menulis skrip untuk menghapus swap secara berkala dengan mematikannya dan kembali lagi.
Beralih swap agak berisiko jika Anda tidak hati-hati. Jika Anda tidak memiliki RAM bebas yang cukup untuk menampung semuanya di dalam RAM plus semua yang ada di swap, mencoba menonaktifkan swap akan menyebabkan sistem Anda menjadi tidak responsif. Skrip saya pertama-tama memeriksa apakah ada cukup RAM bebas (yang perlu sedikit dilakukan, karena jumlah sebenarnya RAM bebas berbeda dari apa yang
free
dilaporkan sebagai bebas), kemudian hanya beralih bertukar jika demikian. Tetapi, jika Anda kekurangan RAM, jangan memulai proses besar lainnya saat skrip berjalan. Ini dia:Anda harus menjalankan skrip ini sebagai root (mis. Dengan
sudo
). Skrip ini tidak akan membuat sistem Anda tidak responsif; jika RAM Anda tidak mencukupi, itu akan menolak untuk beralih swap. Saya telah menggunakan skrip ini tanpa masalah selama hampir lima tahun sekarang.sumber
Umumnya swap tetap tidak digunakan pada sistem sekarang-a-hari. Dalam pengalaman saya, proses yang berjalan untuk waktu yang lama tanpa operasi intensif dialihkan ke swap oleh linux.
Itu membuat beberapa program yang terpengaruh berjalan lambat.
Jika Anda memiliki banyak ram gratis, Anda dapat menonaktifkan swap dengan menjalankan perintah:
swapoff -av
(Anda akan memerlukansudo
hak untuk itu.)Jika Anda tidak suka swap off, Anda dapat mengaktifkannya, menggunakan perintah simetris:
swapon -av
(sudo
diperlukan lagi ).sumber
Sekali swap telah digunakan untuk suatu program, ia cenderung tetap dipetakan selama program. Banyak program memiliki kode (dan data) yang jarang digunakan .. Setelah memori ditukar, tidak mungkin untuk ditukar.
Salah satu cara untuk memaksa halaman-halaman ini ke dalam memori adalah mematikan perangkat swap. Jika Anda memiliki dua, Anda dapat mematikan satu, menyalakannya kembali, lalu mematikan yang kedua. Jika swap benar-benar diperlukan, itu akan berpindah antar perangkat. Anda bisa mematikan perangkat swap (atau file), tetapi jika Anda benar-benar membutuhkan ruang swap, hal-hal drastis bisa terjadi.
Selain hal-hal normal dalam memori, tempfs menggunakan ruang swap, dan akan bertukar keluar seperti sisa memori. Jika Anda menjalankan sesuatu yang membutuhkan banyak disk sementara, itu mungkin memaksa halaman untuk ditukar. Setelah file temp dibuat tidak dapat digunakan lagi setelah beberapa menit dan merupakan kandidat yang baik untuk dipindahkan ke perangkat swap.
Dalam keadaan darurat, Anda dapat menggunakan file sebagai perangkat swap. Ini berguna jika Anda membutuhkan ruang swap tambahan sementara.
sumber
Saya mengedit skrip Scott Severance untuk mencocokkan versi gratis yang lebih baru yang sudah menyertakan total bidang memori yang tersedia.
sumber