


Lima minit keseronokan teknikal |. Analisis ringkas peraturan hierarki Linux Cgroup
Bahagian 01 gambaran keseluruhan ckumpulan
cgroup ialah Kumpulan Kawalan Singkatan , ialah mekanisme yang disediakan oleh kernel Linux yang boleh mengehadkan, mengasingkan dan mengira sumber fizikal (seperti CPU, memori, peranti IO, dll.) untuk proses atau kumpulan proses. Pengurusan ruang pengguna cgroup direalisasikan melalui sistem fail cgroup Terima kasih kepada sistem fail maya Linux, butiran sistem fail disembunyikan, dan pengguna menyedari penggunaan fungsi ini melalui fail kawalan yang berkaitan.
cgroup telah diperkenalkan oleh Google semasa tempoh kernel 2.6 Ia merupakan asas teknikal untuk virtualisasi sumber dalam kernel Linux dan merupakan asas untuk LXC (Linux Containers. ) dan bekas Docker. Terdapat konsep berkaitan berikut dalam cgroup:
- Tugas: Alias untuk proses;
- Kumpulan kawalan: Mengikut A tertentu set proses dibahagikan dengan standard. Kawalan sumber dalam Cgroup dilaksanakan dalam unit kumpulan kawalan. Sesuatu proses boleh ditambah kepada kumpulan kawalan atau dipindahkan dari satu kumpulan proses ke kumpulan proses yang lain. Proses dalam kumpulan proses boleh menggunakan sumber yang diperuntukkan oleh cgroup dalam unit kumpulan kawalan dan tertakluk kepada had sumber yang ditetapkan oleh cgroup dalam unit kumpulan kawalan.
- Hierarki: Kawal perhubungan hierarki kumpulan, menggunakan pepohon Tersusun secara berstruktur, kumpulan kawalan nod anak mewarisi atribut tetapan sumber nod induk.
- Subsistem: Subsistem ialah kawalan sumber Contohnya, subsistem CPU boleh mengawal peruntukan masa penggunaan CPU bagi proses tersebut, seperti yang ditunjukkan dalam Rajah 1. Subsistem mesti dilampirkan pada tahap untuk berfungsi Selepas subsistem dilampirkan pada tahap tertentu, semua kumpulan kawalan pada tahap ini dikawal oleh subsistem ini.
Bahagian 02 subsistem cgroup
Subsistem cgroup adalah berkaitan dengan versi kernel kernel, Terdapat lebih banyak sumber yang boleh dihadkan, secara amnya termasuk subsistem berikut.
➤ blkio: Tetapkan sekatan pada akses I/O untuk menyekat peranti, seperti peranti fizikal (cakera, SSD, USB, dsb.).
➤ cpu: Hadkan penggunaan cpu proses, melibatkan peruntukan potongan masa penjadualan cpu.
➤ cpuacct: Menjana laporan secara automatik mengenai CPU yang digunakan oleh tugasan dalam cgroup.
➤ cpuset: Peruntukkan CPU bebas (sistem berbilang teras) dan nod memori kepada tugasan dalam cgroup.
➤ peranti: Benarkan atau tolak akses tugas dalam cgroup peralatan.
➤ penyejuk beku: Gantung atau sambung semula tugas dalam kumpulan c.
➤ ingatan: Tetapkan had memori yang digunakan oleh tugasan dalam kumpulan c dan jana laporan secara automatik tentang sumber memori yang digunakan oleh tugasan tersebut.
➤ net_cls: Menandai paket rangkaian dengan pengecam kelas membolehkan program kawalan gelandangan Linux mengenal pasti paket yang dijana daripada cgroup tertentu.
➤ ns: subsistem ruang nama.
Bahagian 03 peraturan peringkat cgroup
Digabungkan dengan hierarki cgroup, ia boleh difahami sebagai pokok Setiap nod pokok ialah kumpulan proses dan setiap pokok dikaitkan dengan satu atau lebih subsistem. Dalam pokok, semua proses dalam sistem Linux akan disertakan, tetapi setiap proses hanya boleh dimiliki oleh satu nod (kumpulan proses). Terdapat banyak pokok cgroup dalam sistem, dan setiap pokok dikaitkan dengan subsistem yang berbeza Sesuatu proses boleh tergolong dalam berbilang pokok, iaitu, proses boleh tergolong dalam berbilang kumpulan proses, tetapi kumpulan proses ini dikaitkan dengan subsistem yang berbeza. Pada masa ini, Linux boleh membina sehingga dua belas pokok cgroup, dan setiap pokok dikaitkan dengan subsistem Sudah tentu, anda juga boleh membina hanya satu pokok dan kemudian mengaitkan pokok ini dengan semua subsistem. Apabila pokok cgroup tidak dikaitkan dengan mana-mana subsistem, ia bermakna pokok itu hanya mengelompokkan proses Bagi perkara yang perlu dilakukan berdasarkan pengelompokan, ia akan diputuskan oleh aplikasi itu sendiri.
Terdapat empat peraturan gubahan untuk tahap, yang diterangkan seperti berikut:
Peraturan 1: Satu hierarki boleh mempunyai satu atau lebih subsistem. Seperti yang ditunjukkan dalam Rajah 1, tahap /cpu_memory_cg menyediakan dua subsistem, cpu dan memori, untuk cgroup1 dan cgroup2.
Rajah 1 Tahap Peraturan 1
Peraturan 2: Jika mana-mana subsistem sudah dilampirkan pada satu tahap, ia tidak boleh dilampirkan pada struktur tahap lain. Seperti yang ditunjukkan dalam Rajah 2, cpu_cg pada tahap A mula-mula menguruskan subsistem cpu, kemudian cpu_mem_cg pada tahap B tidak boleh mengurus subsistem cpu.
Rajah 2 cperaturan hierarki kumpulan 2
Peraturan 3: Setiap kali hierarki baharu dicipta pada sistem, semua tugasan pada sistem pada mulanya adalah ahli kumpulan lalai hierarki tersebut (dipanggil cgroup akar). Untuk mana-mana hierarki tunggal yang dibuat, setiap tugas pada sistem boleh menjadi ahli kumpulan dalam hierarki tersebut. Tugasan boleh berada dalam berbilang cgroup, asalkan setiap cgroup tersebut berada dalam hierarki subsistem yang berbeza. Sebaik sahaja tugasan menjadi ahli cgroup kedua dalam hierarki yang sama, ia akan dipadamkan daripada cgroup pertama dalam hierarki Iaitu, dua cgroup yang tidak berkaitan dalam hierarki yang sama tidak akan mempunyai tugas yang sama hanya boleh menjadi satu cara untuk menyekat jenis subsistem cgroup tertentu untuk proses tertentu. Apabila anda mencipta hierarki pertama, setiap tugas pada sistem ialah ahli sekurang-kurangnya satu cgroup (cgroup akar), jadi apabila menggunakan cgroup, setiap tugas sistem sentiasa berada dalam sekurang-kurangnya satu cgroup, seperti yang ditunjukkan dalam Rajah 3.
Rajah 3 cperaturan hierarki kumpulan 3
Peraturan 4: Sebarang proses yang dihasilkan pada sistem mencipta proses anak (atau benang). Proses anak secara automatik mewarisi keahlian cgroup induknya, tetapi boleh dialihkan ke cgroup lain mengikut keperluan Selepas pemindahan, proses ibu bapa dan anak adalah bebas sepenuhnya, seperti yang ditunjukkan dalam Rajah 4.
Rajah 4 cperaturan hierarki kumpulan 4
Bahagian 04 analisis perhubungan hierarki ckumpulan
Kami bermula dari perspektif proses dan menggabungkan struktur data dalam kod sumber untuk menganalisis hubungan antara data berkaitan cgroup. Pertama sekali, dalam Linux, struktur data proses pengurusan ialah task_struct, di mana ahli yang berkaitan dengan cgroup adalah seperti berikut:
di mana cgroup menunjuk kepada struktur css_set, yang menyimpan maklumat cgroup yang berkaitan dengan proses. cg_list ialah senarai terpaut proses menggunakan css_set yang sama. Struktur css_set adalah seperti berikut:
struktur Maklumat elemen badan dijelaskan seperti berikut:
- refcount ialah kiraan rujukan css_set, yang boleh dikongsi oleh pelbagai proses , selagi maklumat kumpulan bagi proses ini adalah sama . Contohnya, proses dalam kumpulan c yang sama dalam semua hierarki yang dibuat.
- hlist digunakan untuk membina semua set_css ke dalam jadual cincang, dan kernel boleh mencari set_css tertentu dengan cepat.
- tugas memautkan semua proses yang merujuk css_set ini ke dalam senarai terpaut.
- cg_links menghala ke senarai terpaut yang terdiri daripada struct cg_group_link
- subsys ialah tatasusunan daripada penunjuk , menyimpan satu set penunjuk ke cgroup_subsys_state. Cgroup_subsys_state ialah maklumat yang berkaitan dengan proses dan subsistem tertentu. Melalui penunjuk ini, proses boleh mendapatkan maklumat kawalan cgroup yang sepadan.
Seterusnya mari kita lihat struktur cgroup_subsys_state:
Penunjuk cgroup dalam struktur menghala ke struktur cgroup, dan proses dipengaruhi oleh subsistem Kawalan sumber sebenarnya dicapai dengan menambah subsistem cgroup tertentu, kerana cgroup berada pada tahap tertentu, dan subsistem dilampirkan pada tahap.
Mari kita lihat struktur cgroup,
- adik-beradik , kanak-kanak Tiga senarai yang dipautkan dengan ibu bapa bertanggungjawab untuk menghubungkan cgroup pada tahap yang sama ke dalam pokok.
- susys ialah tatasusunan penuding subsistem yang diterangkan sebelum ini.
- akar menghala ke struktur cgroupfs_root, iaitu struktur yang sepadan dengan tahap di mana cgroup berada.
- root->top_cgroup menghala ke cgroup akar tahap semasa, iaitu cgroup yang dicipta secara automatik pada tahap Fantasy Sword. Anda boleh mendapatkan cgroup akar hierarki melalui cgroup->root->top_cgroup.
- css_sets menghala ke senarai terpaut cg_cgroup_link, yang konsisten dengan cg_links dalam css_set.
Untuk demi sebab Untuk memahami hubungan antara css_set dan cgroup, kita juga perlu menganalisis struktur cg_cgroup_link lapisan tengah Data struktur adalah seperti berikut:
.
Data dalam struktur diterangkan seperti berikut:
cgrp_link_list dipautkan ke cgroup- >Senarai terpaut ditunjuk oleh css_sets.
cgrp menunjuk kepada kumpulan yang berkaitan dengan cg_cgroup_link ini.
cg_link_list dipautkan ke senarai terpaut yang ditunjuk oleh css_set->cg_links.
cg menunjuk ke css_set yang berkaitan dengan cg_cgroup_link.
Ia boleh dilihat bahawa cgroup dan css_set sebenarnya adalah perhubungan banyak-ke-banyak, dan struktur perantaraan perlu ditambah untuk menggabungkan kedua-duanya, cgrp dan cg dalam cg_group_link Elemen ialah gabungan, dan dua senarai terpaut, cgrp_link_list dan cg_link_list, ialah entiti cgroup dan css_set yang dilampirkan, yang memudahkan pengundian.
Ia boleh dilihat daripada peraturan hierarki cgroup bahawa sekumpulan proses boleh tergolong dalam cgroup yang tidak berada pada tahap gabungan yang sama, set_css menyimpan sekumpulan Maklumat yang berkaitan dengan setiap subsistem akar proses Subsistem berasal daripada peringkat cgroup yang berbeza, jadi cgroup_subsys_state yang disimpan dalam css_set boleh sepadan dengan berbilang cgroup. Sebaliknya, tahap cgroup juga menyimpan satu set cgroup_subsys_state, yang diperoleh daripada subsistem yang dilampirkan pada tahap di mana cgroup terletak A cgroup boleh mempunyai berbilang proses, dan css_set proses itu tidak semestinya sama. kerana proses itu mungkin menggunakan pelbagai peringkat Oleh itu, cgroup juga perlu sepadan dengan berbilang css_sets. Rajah 5 menerangkan hubungan kait banyak-ke-banyak secara terperinci.
Rajah 5 Proses dan ckumpulan rajah hubungan banyak-ke-banyak
Bahagian 05 Kesimpulan
Artikel ini adalah berdasarkan konsep cgroup. Hubungan banyak-ke-banyak antaranya dan proses dibongkar, dan pelaksanaan kod khususnya dianalisis daripada pengaitan pembolehubah dalam struktur yang berkaitan, dengan harapan dapat membantu pembaca memahami perhubungan dan penggunaan hierarki cgroup.
Atas ialah kandungan terperinci Lima minit keseronokan teknikal |. Analisis ringkas peraturan hierarki Linux Cgroup. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Langkah -langkah untuk memulakan Nginx di Linux: Periksa sama ada Nginx dipasang. Gunakan SistemCTL Mula Nginx untuk memulakan perkhidmatan Nginx. Gunakan SistemCTL Dayakan NGINX untuk membolehkan permulaan automatik Nginx pada permulaan sistem. Gunakan Status SistemCTL Nginx untuk mengesahkan bahawa permulaan berjaya. Lawati http: // localhost dalam pelayar web untuk melihat halaman selamat datang lalai.

Bagaimana untuk mengesahkan sama ada nginx dimulakan: 1. Gunakan baris arahan: status sistem sistem nginx (linux/unix), netstat -ano | Findstr 80 (Windows); 2. Periksa sama ada port 80 dibuka; 3. Semak mesej permulaan Nginx dalam log sistem; 4. Gunakan alat pihak ketiga, seperti Nagios, Zabbix, dan Icinga.

Memulakan pelayan Nginx memerlukan langkah-langkah yang berbeza mengikut sistem operasi yang berbeza: Sistem Linux/Unix: Pasang pakej Nginx (contohnya, menggunakan apt-get atau yum). Gunakan SystemCTL untuk memulakan perkhidmatan Nginx (contohnya, SUDO SystemCTL Mula Nginx). Sistem Windows: Muat turun dan pasang fail binari Windows. Mula Nginx menggunakan nginx.exe executable (contohnya, nginx.exe -c conf \ nginx.conf). Tidak kira sistem operasi yang anda gunakan, anda boleh mengakses IP pelayan

Pelayan tidak mempunyai kebenaran untuk mengakses sumber yang diminta, mengakibatkan ralat NGINX 403. Penyelesaian termasuk: Periksa keizinan fail. Semak konfigurasi .htaccess. Semak konfigurasi Nginx. Konfigurasikan keizinan Selinux. Semak peraturan firewall. Menyelesaikan masalah lain seperti masalah penyemak imbas, kegagalan pelayan, atau kesilapan lain yang mungkin.

Bagaimana untuk memperbaiki kesilapan dilarang nginx 403? Semak keizinan fail atau direktori; 2. Semak .htaccess File; 3. Semak fail konfigurasi nginx; 4. Mulakan semula nginx. Penyebab lain yang mungkin termasuk peraturan firewall, tetapan selinux, atau isu aplikasi.

Jawab kepada Soalan: 304 Tidak diubahsuai ralat menunjukkan bahawa penyemak imbas telah cache versi sumber terkini permintaan klien. Penyelesaian: 1. Kosongkan cache penyemak imbas; 2. Lumpuhkan cache penyemak imbas; 3. Konfigurasi nginx untuk membolehkan cache pelanggan; 4. Periksa keizinan fail; 5. Semak fail hash; 6. Lumpuhkan CDN atau cache proksi terbalik; 7. Mulakan semula nginx.

Di Linux, gunakan arahan berikut untuk memeriksa sama ada nginx dimulakan: Hakim status SistemCTL Nginx berdasarkan output arahan: Jika "Aktif: Aktif (Running)" dipaparkan, Nginx dimulakan. Jika "aktif: tidak aktif (mati)" dipaparkan, nginx dihentikan.

Log ralat terletak di/var/log/nginx (linux) atau/usr/local/var/log/nginx (macOS). Gunakan baris arahan untuk membersihkan langkah -langkah: 1. Sandarkan log asal; 2. Buat fail kosong sebagai log baru; 3. Mulakan semula perkhidmatan Nginx. Pembersihan automatik juga boleh digunakan dengan alat pihak ketiga seperti logrotat atau dikonfigurasikan.
