Linux: memori gratis tetapi swap digunakan. Mengapa?

11

Berikut adalah diagram Munin.

Penggunaan memori: http://koryagin.com/w/q/memory-day.png

Swap masuk / keluar: http://koryagin.com/w/q/swap-day.png

Mengapa Linux memutuskan untuk meningkatkan cache dan menggunakan swap ketika ukuran RAM jauh lebih besar dari memori yang digunakan oleh program?

Pavel Koryagin
sumber
2
Subsistem VM linux dalam beberapa tahun terakhir telah sangat disesuaikan untuk mendukung ruang buffer dan ruang cache; aplikasi yang menggunakan memori tetapi tidak melakukan apa pun akan dikocok ke disk. Ini meningkatkan daya tanggap dan kinerja. Kecuali jika Anda melihat masalah kinerja, Anda tidak perlu khawatir tentang hal itu.
Bart Silverstrim

Jawaban:

17

Server Anda mungkin memiliki beberapa proses pemakan memori dan / atau tidak aktif yang memiliki banyak halaman tidak aktif. Kernel Linux lebih memilih untuk menukar bagian program yang tidak aktif untuk ditukar karena kemungkinan besar memori lebih baik digunakan sebagai cache.

Jika Anda ingin mengubah perilaku ini, bermainlah dengan vm.swappinesssysctl yang dapat diubah tetapi diperingatkan, mengakali pengembang kernel / pengelola distro tidaklah mudah. :-)

Apakah Anda memiliki masalah kinerja pada server Anda selama lonjakan swap atau apakah Anda bertanya karena penasaran?

Janne Pikkarainen
sumber
Saya tidak memiliki masalah kinerja di server khusus ini. Tetapi pada yang lain, di mana situasinya tidak begitu jelas, saya berpikir tentang apa yang harus dilakukan. Tidak bisakah logika manajemen memori Linux menjadi alasan untuk Segfault PHP-FPM, jika mereka tidak cocok dengan masalah PHP yang diketahui? Jadi, umumnya mendukung rasa ingin tahu.
Pavel Koryagin
BTW, server ini secara intensif menangani jumlah data yang sangat sedikit dengan set script yang tetap, jadi seharusnya tidak memiliki I / O yang intensif. Jadi mengapa Linux ingin memiliki cache sebesar itu?
Pavel Koryagin
Linux sangat mem-cache file, metadata file, entri direktori dan sebagainya. Cobalah perintah slabtop.
Janne Pikkarainen
Terima kasih banyak. Butuh beberapa saat untuk memahami apa yang harus dilakukan dengan slabtopinfo.
Pavel Koryagin
Biarkan itu berjalan layar penuh ketika bos Anda berjalan melewati bilik Anda dan jadikan diri Anda seorang guru di matanya. :-) Perintah "ooh, yang pasti terlihat sulit untuk dipahami" bagus ada systat -vmstatdi FreeBSD (mungkin juga BSD lainnya).
Janne Pikkarainen
1

Anda harus mencoba bermain dengan parameter swappiness . Seperti yang Anda lihat sistem Anda mulai bertukar ketika mencoba meningkatkan ukuran cache file, ini normal jika swappines bukan 0.

Alex
sumber