mengendalikan prioritas aplikasi menggunakan cgroup


8

Saya ingin memahami cgroup dengan lebih baik dan ingin memahami kasus penggunaan untuk menerapkan cgroup.

Apakah cgroup cara yang baik untuk memprioritaskan aplikasi yang berbeda (yaitu, memberikan prioritas lebih tinggi untuk jenis aplikasi tertentu seperti server web)?


Throttling CPU adalah kasus penggunaan yang baik untuk cgroup: kennystechtalk.blogspot.co.uk/2015_04_01_archive.html
Ken Sharp

Jawaban:


8

Ada beberapa kegunaan untuk cgroup . Dari administrasi sistem mungkin yang paling penting adalah membatasi sumber daya - contoh klasik di sini adalah akses cpu. Jika Anda membuat grup untuk mis sshddan memberikannya pembagian waktu CPU yang tidak dapat diabaikan (dibandingkan dengan grup lain atau standar yang menjadi dasar dari semua proses yang tidak disortir), Anda dijamin dapat login bahkan di saat-saat ketika mesin akan berjalan sebuah tugas intensif CPU.

Lebih menarik lagi, jika Anda memberikan "akses jarak jauh" ini proses berbagi CPU jauh lebih tinggi daripada yang lain, Anda akan dapat masuk hampir secara instan (karena daemon ssh akan diprioritaskan selama sisa proses yang berjalan) sementara Anda tidak akan terluka kekuatan komputasi keseluruhan alat berat, karena sumber daya dialokasikan hanya berdasarkan kebutuhan. Anda biasanya ingin melakukan ini bersama dengan prioritas I / O (termasuk jaringan). Namun, seperti yang ditunjukkan oleh John dengan tepat dalam komentar di bawah ini, orang tidak ingin melakukan hal-hal ini dengan sembrono (karena mungkin akan muncul kembali dengan cara yang tidak terduga). Hal penting yang perlu diingat adalah bahwa grup diwarisi secara default - yaitu seseorang tidak ingin memulai memori / CPU babi dari sesi ssh tersebut. Namun untuk ini ada mekanisme yang dapat menetapkan proses untuk cgroup saat mereka mulai.

Penggunaan lain adalah mengisolasi proses dari satu sama lain - dalam kombinasi dengan fitur-fitur lain (isolasi namespace) di kernel Linux baru-baru ini mereka digunakan untuk membuat virtualisasi tingkat-OS seperti LXC (Linux Containers) .

Selain itu Anda dapat melakukan berbagai hal akuntansi dan kontrol (membekukan beberapa kelompok proses, menugaskan mereka ke inti CPU tertentu, dll.).

Dua tautan di sini, harus menjadi tempat awal yang masuk akal jika Anda mencari informasi lebih lanjut. Anda mungkin juga ingin memeriksa Documentation/cgroupsdirektori di pohon sumber kernel Linux.


Terima kasih. contoh sshd menarik dan memunculkan pemikiran terkait lainnya. satu aspek yang belum saya pertimbangkan adalah memastikan sumber daya lainnya dialokasikan dengan tepat - saya berasumsi bahwa seseorang dengan pengetahuan yang tidak lengkap tentang profil suatu aplikasi dapat menimbulkan kekacauan dengan hanya mengalokasikan sumber daya untuk CPU (dalam contoh ini) dan tidak ada alokasi untuk I / O (katakanlah jaringan). Jika demikian - adakah profil terkenal untuk cgroup yang diterbitkan di mana saja?
Johnnie

@ John memang pertanyaan yang menarik. Anda mungkin ingin memeriksa distribusi yang memiliki systemd, yang (ab) menggunakan cgroup untuk keperluannya sendiri - file unit systemd untuk layanan mungkin memberikan beberapa petunjuk tentang apa yang mungkin masuk akal. Tetapi pada akhirnya selalu tergantung pada administrator sistem untuk belajar dengan cara yang sulit, yang sebenarnya bukan "Good Idea (TM)".
peterph

1
@ kokbira tergantung pada level apa - umumnya Anda menulis ke sistem cgrouppseudofiles yang mungkin perlu Anda mount terlebih dahulu. Dalam kebanyakan kasus saat ini, sistem init melakukan itu untuk Anda dan sering menggunakan cgroup dengan cara tertentu. Satu-satunya jawaban pasti adalah membaca dokumentasi: kernel docs , OpenRC @ Gentoo , systemd @ freedesktop .
peterph

1
@ kokbira sistem operasi melakukan apa yang Anda suruh (setidaknya yang bagus - ada beberapa yang melakukan banyak hal lain yang tidak Anda beri tahu, tapi itu cerita lain). Idenya adalah, bahwa jika Anda menjalankan aplikasi, Anda ingin mendapatkan apa pun yang diperlukan untuk melakukan apa pun yang Anda harapkan. Jika aplikasi salah tingkah itu terserah operator sistem (yang kebetulan Anda dalam kasus ini) untuk melakukan sesuatu tentang hal itu. Penulis distribusi dapat membuat beberapa heurestics bagaimana menangkap masalah seperti ini, tetapi itu akan menyebabkan lebih banyak masalah yang akan diperbaiki.
peterph

1
@ kbbira untuk Firefox itu sendiri, saya akan menyarankan menggunakan beberapa addons yang mengurangi beban di browser dan akibatnya seluruh sistem. Dari pengalaman saya, asal-usul NoScript & uBlock sudah cukup. Khususnya NoScript di "blok semuanya secara default" tidak mengherankan - cukup aktifkan minimum yang Anda perlukan untuk bekerja dengan situs web yang Anda gunakan dan Anda dapat dengan mudah mencapai ratusan tab pada sistem RAM 8GB dan masih berfungsi dengan cukup baik. Plus Anda memiliki tingkat perlindungan tambahan dari semua sampah JS yang sebagian besar situs web gunakan hari ini untuk efek mewah yang tidak perlu.
peterph
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.