Apa itu cpusets di Linux dan bagaimana cara menggunakannya dengan cgroups?

Pembaharuan Terakhir: 17/12/2025
penulis: Isaac
  • Cpusets adalah subsistem dari cgroups yang membatasi CPU dan node memori mana yang dapat digunakan oleh proses untuk berjalan dan memesan memori.
  • Konfigurasi dilakukan melalui sistem file cgroup, dengan membuat hierarki direktori dan menyesuaikan file seperti cpuset.cpus dan cpuset.mems.
  • Pengontrol tambahan seperti CPU, memori, atau blkio memungkinkan pembatasan dan penghitungan CPU, RAM, dan I/O, mengintegrasikan set CPU ke dalam strategi manajemen sumber daya global.
  • Dalam cgroup v2, pengontrol seperti cpu dan cpuset digabungkan menjadi satu pohon tunggal, memungkinkan kuota CPU yang tepat melalui file seperti cpu.max.

cpusets di Linux

Jika Anda bekerja dengan server Linux Dengan banyaknya layanan yang tersedia, Anda mungkin bertanya-tanya bagaimana caranya. mendistribusikan dengan baik CPU dan memori antara proses tanpa salah satunya mendominasi yang lain. Prioritas dengan nice Dan batasan klasik memang membantu, tetapi ketika semua orang menginginkan semua sumber daya, sistem tersebut menjadi seperti hutan belantara.

Di sinilah dua bagian penting dari kernel berperan: cgroups dan subsistem cpusetBerkat fitur-fitur tersebut, Anda dapat secara tepat menentukan proses mana yang menggunakan CPU dan node memori mana, memantau konsumsi daya, membatasi bandwidth CPU atau disk, dan bahkan mengelompokkannya untuk membuat "partisi lunak" di dalam server yang sama.

Apa itu cgroup dan mengapa cgroup penting?

Los kelompok kontrol (cgroups) Itu adalah mekanisme kernel Linux untuk proses kelompok dan menerapkan kebijakan sumber daya umum kepada mereka.CPU, memori, I/O disk, perangkat, jaringan, dll. Ini tidak menggantikan izin tradisional, melainkan melengkapinya dari perspektif berapa banyak Setiap kelompok mengonsumsi, bukan hanya satu kelompok. kenapa memiliki akses.

Dibandingkan dengan alat tradisional seperti nice, ionice o limits.confcgroups memungkinkan Anda untuk mendefinisikan hierarki kelompok di mana setiap kelompok proses menerima bagian sumber daya yang telah ditentukan sebelumnya, terlepas dari berapa banyak proses yang ada di dalam setiap kelompok.

Pada kernel modern, cgroups diekspos melalui sebuah sistem berkas virtual (cgroup v1 atau cgroup v2) biasanya dipasang pada /sys/fs/cgroupSetiap subdirektori mewakili sebuah grup, dan file-file di dalamnya memungkinkan Anda untuk melihat dan mengubah konfigurasinya.

cpusets: subsistem untuk mengikat proses ke CPU dan node memori

Di dalam cgroups, cpuset adalah pengontrol (subsistem) yang bertanggung jawab atas Membatasi CPU dan node memori mana yang digunakan. Ia dapat mengeksekusi dan mengalokasikan memori untuk serangkaian tugas. Ini sangat berguna dalam mesin besar dengan banyak core dan topologi NUMA, tetapi juga masuk akal pada server yang lebih sederhana ketika Anda ingin mengisolasi beban kerja.

Setiap set CPU mendefinisikan dua set fundamental:

  • cpuset.cpus: daftar CPU yang dapat digunakan untuk menjalankan tugas-tugas grup tersebut.
  • cpuset.mems: daftar node memori tempat tugas-tugas tersebut dapat memesan memori.

Ketika suatu proses memanggil sched_setaffinity(), mbind() o set_mempolicy()inti saring permintaan tersebut sehingga mereka hanya dapat menggunakan CPU dan node yang termasuk dalam set CPU mereka saat ini. Selain itu, penjadwal tidak akan pernah menjadwalkan tugas tersebut pada CPU yang tidak termasuk dalam mask yang diizinkan, dan alokator halaman tidak akan memesan memori pada node di luar mask tersebut. mems.

Mengapa CPUset sangat berguna dalam sistem besar?

Pada server dengan banyak CPU dan memori yang tersebar di beberapa node, penempatan proses dan memori Hal ini berdampak besar pada kinerja. Mengakses memori "jauh" pada mesin NUMA bisa jauh lebih lambat daripada mengakses memori lokal dari node tempat CPU berjalan.

Dengan CPUset, Anda dapat membuat himpunan bagian mesin (partisi lunak) dan menetapkan seluruh pekerjaan ke subset tersebut: misalnya, satu kelompok inti dan node memori untuk basis data, kelompok lain untuk antarmuka web, dan kelompok lain untuk beban kerja yang membutuhkan komputasi intensif. Kelompok-kelompok ini dapat berupa menyesuaikan secara dinamis tergantung pada beban sistem, tanpa mengganggu pekerjaan yang sudah berjalan di partisi lain.

Ini adalah strategi yang sangat umum. di:

  • Server web yang menjalankan beberapa instance dari layanan yang sama.
  • Mesin campuran dengan web, basis data, dan daemon lainnya yang berbagi perangkat keras.
  • Klaster NUMA dan HPC yang menjalankan aplikasi ilmiah yang sensitif terhadap latensi memori.

Contoh praktis: menjinakkan Apache yang rakus dengan cgroups dan cpuset

Bayangkan sebuah server dengan dua inti dan server Apache yang meluncurkan proses anak secara dinamis. Meskipun semuanya memiliki hal yang sama niceDalam praktiknya, CPU yang tersedia untuk layanan lainnya akan bergantung pada jumlah proses Apache yang aktif pada waktu tertentu.

Dengan prioritas normal Hal-hal seperti ini memang terjadi:

  • Apache dengan 9 proses dan layanan lain dengan 1 proses: layanan kedua menerima 10% CPU.
  • Apache dengan 99 proses dan yang lainnya dengan 1: yang kedua turun menjadi 1% CPU.

Prioritasnya tidak berubah, tetapi... jumlah proses yaDan itu menghancurkan keadilan. Dengan cgroups dan cpuset Anda dapat membuat dua grup: satu untuk Apache dan satu lagi untuk semua hal lainnya, dan memberi tahu kernel bahwa setiap grup ditugaskan, misalnya, 50% dari CPU, terlepas dari jumlah proses yang mereka siapkan di dalamnya.

  Apa lapisan kompatibilitas Lepton Valve dan untuk apa digunakan?

Memasang sistem file cpuset (cgroup v1)

Dalam banyak distribusi saat ini (Fedora, RHEL modern, systemdcgroups dipasang secara default, dan systemd secara otomatis mengelompokkan layanan. Pada sistem yang lebih lama (misalnya, Ubuntu 12.04/14.04 dengan konfigurasi klasik), Anda dapat memasang subsistem cpuset secara manual seperti ini:

mount -t tmpfs -o size=5M cgroup_root /sys/fs/cgroup
mkdir /sys/fs/cgroup/cpuset
mount -t cgroup -o cpuset cpuset /sys/fs/cgroup/cpuset

Dengan ini, Anda telah membuat sesuatu yang kecil. tmpfs Untuk menampung hierarki, diperlukan sebuah direktori. cpuset yang akan bertindak sebagai titik pemasangan dan, akhirnya, Anda telah memasang sistem file. cgroup terbatas pada pengontrol cpuset.

Jika Anda memeriksa /sys/fs/cgroup/cpuset Anda akan melihat file seperti:

  • tasks y cgroup.procs: daftar tugas dan ID grup thread yang termasuk dalam grup tersebut.
  • cpuset.cpusCPU yang diizinkan untuk grup ini.
  • cpuset.mems: node memori yang diizinkan.
  • Beberapa bendera tambahan: cpuset.cpu_exclusive, cpuset.mem_exclusive, cpuset.memory_migrate, Dll

Membuat subgrup dan mengalokasikan CPU/memori

Setiap subdirektori yang Anda buat di bawah /sys/fs/cgroup/cpuset adalah set CPU anak baruMenghapusnya (jika kosong dari tugas) dilakukan dengan rmdirSebagai contoh, untuk membagi sistem menjadi dua kelompok, satu untuk setiap inti:

cd /sys/fs/cgroup/cpuset
mkdir grupo-A grupo-B

echo 0 > grupo-A/cpuset.cpus
echo 1 > grupo-B/cpuset.cpus

echo 0 > grupo-A/cpuset.mems
echo 0 > grupo-B/cpuset.mems

Anda telah membuat dua set CPU, kelompok-A y kelompok-BYang pertama hanya menggunakan CPU 0 dan yang kedua menggunakan CPU 1. Keduanya berbagi node memori tunggal 0 pada mesin tersebut.

Mengaitkan proses dengan satu set CPU

Untuk menempatkan tugas dalam satu set CPU, cukup Tulis PID Anda di dalam file tersebut. tasks dari grup tersebut. Suatu proses hanya dapat menjadi bagian dari satu grup dalam hierarki tertentu; ketika Anda memindahkannya, proses tersebut akan hilang dari daftar induknya.

Misalkan Anda membuka dua shell baru, dengan PID 3435 dan 3492. Awalnya, mereka akan berada di set CPU root.Anda dapat mengirimkannya ke subgrup seperti ini:

echo 3435 > grupo-A/tasks
echo 3492 > grupo-B/tasks

Mulai saat itu, Semua yang diluncurkan dari shell bash tersebut akan mewarisi CPUset-nya.Jika Anda menjalankan empat proses dari shell 3435 consume_cpu (sebuah program biner yang terus-menerus menghabiskan CPU dalam sebuah loop), Anda akan melihat PID-nya di dalam grupo-A/tasks dan inti 0 pada penuh sementara core 1 hampir tidak aktif.

Jika nanti Anda ingin "menyelamatkan" salah satu proses tersebut dan memberikannya seluruh inti prosesor, Anda dapat melakukannya. Pindahkan PID Anda ke CPUset yang berdekatan.:

echo 3621 > /sys/fs/cgroup/cpuset/grupo-B/tasks

Saat mengamati dengan topAnda akan melihat bagaimana Kedua CPU mulai bekerja, dan proses yang dipindahkan tersebut menggunakan sebagian besar CPU 1, sedangkan tiga proses lainnya menggunakan CPU 0.

Pengontrol cgroup lain yang tersedia

cpuset hanyalah satu bagian dari teka-teki. cgroups mencakup lebih banyak pengontrol yang dapat digunakan bersama untuk suatu tujuan. manajemen sumber daya yang sangat baik:

  • cpuIni mengontrol proporsi waktu CPU yang dialokasikan untuk setiap grup. Misalnya, ini memungkinkan satu grup untuk memiliki 80% CPU, grup lain 15%, dan grup lainnya 5%.
  • cpuacctIni tidak membatasi, ini hanya jumlah el tiempo CPU yang dikonsumsi oleh tugas-tugas grup dan turunannya.
  • blkio: mengatur bandwidth I/O pada perangkat blok, dengan kuota proporsional atau batasan tetap.
  • memory: memberlakukan batasan RAM dan swap serta melaporkan penggunaan memori berdasarkan grup.
  • devices: mengizinkan atau menolak akses ke perangkat tertentu (misalnya, mengunci perangkat blok ke sebuah kontainer).
  • freezer: jeda atau lanjutkan semua tugas suatu kelompok.
  • net_cls y net_prioMereka memberi label pada lalu lintas jaringan atau menyesuaikan prioritas per antarmuka untuk berintegrasi dengan tc.
  • ns: mengelompokkan proses ke dalam namespace yang berbeda, berguna untuk virtualisasi ringan dalam kombinasi dengan namespace.
  • perf_event: memungkinkan pemantauan tugas cgroup dengan alat tersebut perf.

Detail internal cpusets di dalam kernel.

Pada tingkat kernel, setiap tugas memelihara penunjuk ke struktur cgroup tempatnya berada. cpusets mendefinisikan Masker node CPU dan memori yang beririsan dengan mask afinitas dan kebijakan NUMA yang diminta oleh tugas tersebut.

Beberapa poin penting dari implementasinya:

  • El CPUset akar Di dalamnya terdapat semua inti dan node memori sistem.
  • Setiap cpuset anak harus berupa himpunan bagian ketat dari sumber daya sang ayah.
  • Satu set CPU dapat ditandai sebagai Exclusivo untuk CPU (cpuset.cpu_exclusive) atau memori (cpuset.mem_exclusive): dalam hal itu, sumber daya mereka tidak dapat tumpang tindih dengan sumber daya milik mereka hermanos (ya, dengan leluhur atau keturunan).
  • Tidak ada panggilan sistem baru yang ditambahkan: semuanya ditangani melalui sistem file cgroup dan file virtual seperti cpuset.cpus, tasks, Dll
  Alternatif cat untuk Linux dan macOS yang layak dicoba

Kernel menghubungkan cpuset ke beberapa poin non-kritis untuk kinerja:

  • Init: menginisialisasi cpuset root saat startup.
  • percabangan/keluar: untuk mewarisi dan melepaskan keanggotaan dalam cpusets.
  • sched_setaffinity(): menyembunyikan afinitas dengan masker yang diizinkan oleh cpuset.
  • Pengalokasi memori: membatasi halaman hanya pada node yang diizinkan.
  • Pemulihan memori dan migrasi tugas: batasan cpuset dihormati sejauh mungkin.

Bendera dan file penting dari cpuset

Setiap set CPU memiliki, selain cpuset.cpus y cpuset.mems, sebuah serangkaian file konfigurasi yang mengontrol perilaku tingkat lanjut:

  • cpuset.memory_migrateJika diatur ke 1, saat mengubah set CPU atau memodifikasi memsHalaman yang ada adalah bermigrasi ke node baru, dengan tetap memperhatikan posisi relatif sebisa mungkin.
  • cpuset.mem_hardwall y cpuset.mem_exclusiveSaat diaktifkan, fitur ini memperketat penghalang memori dan membatasi bahkan cadangan kernel bersama tertentu.
  • cpuset.memory_pressure y cpuset.memory_pressure_enabledMereka menampilkan ukuran tekanan memori (pengambilan kembali langsung per detik) dengan rata-rata bergerak, yang berguna untuk orchestrator dan penjadwal batch.
  • cpuset.memory_spread_page y cpuset.memory_spread_slabJika diaktifkan, kernel akan mendistribusikan halaman cache file dan slab tertentu. dalam mode round-robin oleh node yang diizinkan, alih-alih selalu mengutamakan node lokal.
  • cpuset.sched_load_balance: mengontrol apakah penjadwal mencoba menyeimbangkan beban antara CPU dalam set CPU.
  • cpuset.sched_relax_domain_level: menyesuaikan cakupan (soket, node, seluruh sistem) dari operasi migrasi tugas tertentu dalam domain perencanaan.

Selain itu, pada set CPU utama Anda akan menemukan cpuset.effective_cpus y cpuset.effective_memsyang mencerminkan sumber daya yang benar-benar dapat digunakan, dengan mempertimbangkan peristiwa hotplug CPU/memori. Dalam mode khusus cpuset_v2_modeFile-file ini mungkin berbeda dari cpuset.cpus y cpuset.mems untuk mempertahankan perilaku yang lebih mirip dengan cgroup v2.

Interaksi dengan penjadwal: sched_load_balance dan sched_relax_domain_level

Penjadwal Linux membagi sistem menjadi domain perencanaan untuk meminimalkan biaya penyeimbangan beban. Penyeimbangan di banyak inti prosesor itu mahal, jadi biasanya dilakukan secara berkelompok (per soket, per node, dll.).

Bendera cpuset.sched_load_balance Pengaturan ini menunjukkan apakah CPU dalam set CPU tersebut harus berada dalam domain yang sama agar penjadwal dapat memindahkan tugas secara bebas di dalamnya. Menonaktifkan pengaturan ini pada set CPU utama dan hanya mengaktifkannya pada beberapa set CPU anak dapat mencegah penyeimbangan beban yang tidak perlu pada CPU yang dicadangkan untuk beban kerja waktu nyata atau yang sangat spesifik.

Berkas cpuset.sched_relax_domain_level memungkinkan Anda untuk menyesuaikan seberapa jauh penjadwal dapat melihat ketika:

  • Sebuah tugas diaktifkan dan upaya dilakukan untuk menempatkannya di inti kosong terdekat.
  • Satu CPU dibiarkan tanpa pekerjaan dan mengambil alih tugas dari CPU yang bebannya lebih berat.

Nilai tipikal (tergantung pada arsitektur) berkisar dari 0 (jangan mencari) sampai 5 (pencarian pada tingkat sistem penuh dalam sistem NUMA), dengan tingkat menengah untuk saudara HT, inti dari soket yang sama, node, dll. Ini adalah alat yang sangat detail yang hanya boleh digunakan jika Anda benar-benar memahami dampaknya pada latensi dan cache.

Cara menggunakan cpusets dalam praktik: alur tipikal.

Alur kerja Untuk membatasi "tugas" atau layanan dalam satu set CPU tertentu, biasanya caranya adalah:

  1. Pastikan Anda telah memasang sistem file cgroup/cpuset (v1 atau v2).
  2. Buat set CPU dengan mkdir dalam hierarki yang sesuai.
  3. Konfigurasikan cpuset.cpus y cpuset.mems sebelum menambahkan tugas.
  4. Aktifkan opsi seperti memory_migrate o cpu_exclusive.
  5. Mulai proses "induk" untuk memuat dan pindahkan PID-nya ke set CPU menulisnya di tasks o cgroup.procs.
  6. Luncurkan (atau izinkan peluncuran) proses anak dari induk tersebut; mereka akan mewarisi keanggotaan mereka dalam cpuset.

Jika Anda menggunakan alat ruang pengguna sebagai cgroup-bin / libcgroup (di Debian/Ubuntu) atau yang setara di distro lain, Anda dapat menangani ini dengan lebih mudah menggunakan perintah jenis cgcreate, cgexec y cgclassifyatau bahkan dengan file konfigurasi seperti /etc/cgconfig.conf y /etc/cgrules.conf untuk menetapkan grup berdasarkan pengguna atau perintah.

cgroups v1 vs cgroups v2: Driver CPU dan cpuset di RHEL 8 dan sistem serupa

Dalam distribusi modern seperti RHEL 8kernel secara bersamaan mendukung cgroups v1 dan v2Secara default, di RHEL 8 v1 dipasang di bootNamun, Anda dapat memaksakan penggunaan mode terpadu (v2) dengan parameter kernel:

  • cgroup_no_v1=all: menonaktifkan semua pengontrol v1 saat startup.
  • systemd.unified_cgroup_hierarchy=1: memberi tahu systemd untuk menggunakan cgroup v2 sebagai hierarki utama.

Setelah perubahan dan restart, Anda dapat memeriksa dengan mount o findmnt bahwa tidak ada lagi jenis perakitan apa pun cgroup klasik (kecuali internal systemd) dan merakit pohon secara manual v2, misalnya di /cgroups-v2:

mount -t cgroup2 none /cgroups-v2

Di direktori akar tersebut (kelompok kontrol akarAnda akan melihat file generik yang dimulai dengan cgroup.* dan pengontrol spesifik lainnya yang aktif di sana, seperti cpuset.cpus.effective o cpu.max.

Batasi CPU dengan cgroup v2: driver CPU dan cpuset bersama-sama

Di v2 kami bekerja dengan sebuah pohon unik dan pengontrol diaktifkan oleh subpohon menggunakan file cgroup.subtree_controlAlur kerja tipikal untuk membatasi penggunaan CPU hanya pada beberapa proses adalah:

  1. Aktifkan driver cpu y cpuset untuk anak-anak langsung dari akar menulis di /cgroups-v2/cgroup.subtree_control Sesuatu seperti +cpu +cpuset.
  2. Buat subgrup, misalnya /cgroups-v2/Example/, Dengan mkdir.
  3. Verifikasi bahwa file seperti cpu.max y cpuset.cpus.
  4. Menyesuaikan cpuset.cpus y cpuset.mems untuk memastikan bahwa proses-proses akan bersaing pada CPU/node yang sama (pengontrol) cpu Ini hanya berlaku jika terdapat setidaknya dua proses yang bersaing pada CPU yang sama.
  5. Konfigurasikan cpu.max dengan biaya dan jangka waktu tertentu, misalnya:
echo "200000 1000000" > /cgroups-v2/Example/cpu.max

Dalam hal ini, semua proses kelompok tersebut Mereka hanya akan mampu menggunakan total 0,2 detik waktu CPU per detik. Alami. Sisa waktu mereka akan dicekik sampai periode berikutnya.

  WinBoat: Apa itu dan bagaimana menjalankan aplikasi Windows di Linux

Lalu hanya ada tambahkan PID dari aplikasi yang diinginkan untuk grup tersebut dengan menuliskannya di /cgroups-v2/Example/cgroup.procsJika, misalnya, terdapat dua proses intensif (PID 5439 dan 5473) dalam kelompok tersebut, masing-masing akan berakhir di sekitar 10% CPUkarena mereka berbagi kuota 20% yang telah Anda tetapkan.

Alat lain untuk memahami CPU, afinitas, dan perangkat keras di Linux

Untuk bekerja dengan CPUset, sangat bermanfaat untuk memiliki pemahaman yang baik tentang hal-hal berikut: Topologi CPU dan status CPU pada sistem Anda. Linux menawarkan banyak perintah, pseudo-file, dan alat seperti CPU-X untuk Linux yang memberikan informasi terperinci:

  • lscpuIni menampilkan arsitektur, jumlah CPU logis dan fisik, soket, hyper-threading, cache, dukungan virtualisasi, dll., dengan cara yang sangat mudah dibaca.
  • /proc/cpuinfo: menampilkan informasi detail berdasarkan logika CPU: model, keluarga, stepping, mikrokode, flag fitur (SSE, AVX, VT-x, AMD-V, NX, dll.).
  • /sys/devices/system/cpu/: struktur direktori yang sangat kaya dengan satu subdirektori per CPU (cpu0, cpu1, …) dan lainnya untuk cpufreq, cpuidle, mikrokode, topologi, Dll

Dalam /sys/devices/system/cpu/cpu0/cpufreq/ Anda bisa melihat, misalnya(dan untuk detail selengkapnya, Bagaimana cara mengetahui frekuensi CPU?).

  • cpuinfo_cur_freq: frekuensi saat ini.
  • scaling_max_freq y scaling_min_freq: batasan di mana cpufreq dapat diskalakan.
  • scaling_governor: kebijakan aktif (prestasi, hemat energi, ondemand, Dll).
  • scaling_available_governors y scaling_driver: mode dan driver yang digunakan (misalnya, intel_pstate).

En /sys/devices/system/cpu/cpu0/cpuidle/ Anda akan melihat keadaan istirahat (state0, state1, …) dengan latensi dan konsumsi, yang ditangani oleh subsistem. cpuidleIni, bersama dengan cpufreq Dan penjadwal memutuskan kapan harus mematikan inti atau menurunkan frekuensi untuk menghemat energi berdasarkan beban.

En mobil mulai digunakan Penjadwalan Hemat Energi (EAS)yang secara lebih cerdas menyatukan keputusan dari cpuidle, cpufreq, dan penjadwal untuk menghindari inkonsistensi seperti membangunkan inti yang dimatikan ketika inti aktif lainnya tersedia.

Mengukur dan memantau penggunaan CPU berdasarkan proses dan berdasarkan grup.

Saat Anda bekerja dengan perangkat CPU dan driver CPU, Anda memerlukan alat untuk Periksa apakah konfigurasi yang Anda buat berpengaruh.Misalnya, jika sebuah VM seperti VirtualBox menggunakan terlalu banyak CPU.Beberapa pilihan yang sangat umum adalah:

  • topTampilan sistem dinamis dengan penggunaan CPU keseluruhan, per CPU, dan per proses. Bidang ini % CPU Ini memungkinkan Anda untuk melihat tugas mana yang membebani sistem.
  • mpstat (dari kemasan) sysstat): Statistik CPU dan agregat, berguna untuk melihat distribusi beban dan waktu idle (idle, iowait, steal, dll.).
  • psdikombinasikan dengan sortAnda dapat mencantumkan proses yang paling banyak menggunakan CPU, misalnya:
ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10

Selain itu, berkas akuntansi seperti cpuacct.usage y cpuacct.usage_percpu (di v1) atau penghitung bawaan di cgroup v2 memungkinkan Anda mengetahui berapa banyak CPU yang telah dikonsumsi oleh grup tertentu sejak dibuat, yang ideal untuk penagihan internal atau membandingkan dampak dari berbagai aplikasi.

Pada akhirnya, cpusets dan cgroups memberi Anda kemampuan untuk Modelkan mesin Anda sebagai sekumpulan "pulau" sumber daya.Menugaskan tugas dan menyesuaikan secara langsung bagaimana CPU, memori, dan I/O didistribusikan. Pemahaman menyeluruh tentang file-file tersebut. /sys/fs/cgroup dan /sys/devices/system/cpuBersama dengan alat pemantauan, hal ini memungkinkan Anda untuk beralih dari "sekadar melihat bagaimana kinerja server" menjadi memiliki kendali yang sangat detail atas apa yang berjalan di mana, berapa banyak yang dikonsumsi, dan bagaimana Anda dapat meningkatkan perilakunya ketika beban meningkat.

cpu-x untuk Linux
Artikel terkait:
CPU-X untuk Linux: Alternatif gratis untuk CPU-Z dengan panduan lengkap