Saya ingin mematikan swapping hanya untuk satu proses. Swap harus bekerja seperti biasa untuk proses lainnya.
Bagaimana saya bisa menerapkan ini dengan cgroup?
Dari dokumentasi kernel tentang memory.swappiness:
5.3 swappiness
Mirip dengan / proc / sys / vm / swappiness, tetapi hanya memengaruhi hirarki grup.
Mengikuti swappiness cgroup tidak dapat diubah.
- root cgroup (menggunakan / proc / sys / vm / swappiness).
- cgroup yang menggunakan hierarki dan memiliki cgroup lain di bawahnya.
- cgroup yang menggunakan hierarki dan bukan akar hierarki.
Dari Portal Pelanggan Red Hat:
memory.swappiness
mengatur kecenderungan kernel untuk menukar memori proses yang digunakan oleh tugas-tugas dalam cgroup ini alih-alih merebut kembali halaman dari cache halaman. Ini adalah kecenderungan yang sama, dihitung dengan cara yang sama, sebagaimana diatur dalam / proc / sys / vm / swappiness untuk sistem secara keseluruhan. Nilai default adalah 60. Nilai yang lebih rendah dari 60 mengurangi kecenderungan kernel untuk menukar memori proses, nilai yang lebih besar dari 60 meningkatkan kecenderungan kernel untuk menukar memori proses, dan nilai yang lebih besar dari 100 memungkinkan kernel untuk menukar halaman yang merupakan bagian dari ruang alamat dari proses dalam cgroup ini.
Perhatikan bahwa nilai 0 tidak mencegah memori proses ditukar; swap out mungkin masih terjadi ketika ada kekurangan memori sistem karena logika manajemen memori virtual global tidak membaca nilai cgroup. Untuk mengunci halaman sepenuhnya, gunakan mlock () alih-alih cgroups.
:: Anda tidak dapat mengubah swappiness dari grup berikut:
* root cgroup, yang menggunakan swappiness di / proc / sys / vm / swappiness.
* cgroup yang memiliki grup anak di bawahnya.
EDIT: Jika Anda tertarik untuk mengetahui cara mengaturnya, Anda menyetelnya persis seperti kebanyakan atribut cgroup lainnya:
# cd /mnt/cgroup/<cgroupName>
# cat memory.swappiness
60
# echo "59 " > memory.swappiness
# cat memory.swappiness
59
/tmp
dipasang sebagaitmpfs
? unix.stackexchange.com/q/146490/56970