Mematikan swapping hanya untuk satu proses dengan cgroups?

15

Saya ingin mematikan swapping hanya untuk satu proses. Swap harus bekerja seperti biasa untuk proses lainnya.

Bagaimana saya bisa menerapkan ini dengan cgroup?

iNode
sumber

Jawaban:

9

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
Bratchley
sumber
Bagaimana dengan hanya untuk file di dalam /tmpdipasang sebagai tmpfs? unix.stackexchange.com/q/146490/56970
CMCDragonkai
Untung Anda mengutip bagian yang relevan dari dokumentasi kernel di sini - tautannya rusak.
mgarey
Tautan ke dokumentasi kernel linux rusak. Gunakan yang ini sebagai ganti kernel.org/doc/Documentation/cgroup-v1/memory.txt
Andrew Eisenberg
@AndrewEisenberg Jangan ragu untuk mengedit jawaban jika Anda mau
Bratchley
Hmmm ... tidak akan membiarkan saya. Mengatakan bahwa hasil edit harus lebih besar dari 6 karakter. Mungkin reputasi tidak cukup.
Andrew Eisenberg