한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Buku Putih Lag Game › L7 OS server (kernel)

CPU throttling di container (kuota CFS) Container CPU throttling (CFS quota)

ID penyebab so-cpu-quota · Penanggung jawab utama Infrastruktur server (Tim Infrastruktur) · Turut terlibat Pengembangan server (Tim Pengembang Game)

Buka kartu interaktif dengan gambar dan simulasi →

Jika container diberi batas CPU, begitu kuota dalam satu periode (biasanya 100 ms) habis, container dipaksa berhenti selama sisa periode itu (throttling).

Mengapa Batas CPU (limit) dipasang pada container server game, misalnya di Kubernetes → Akibatnya Saat perhitungan tick menumpuk, kuota habis dan proses berhenti puluhan ms sampai periode berikutnya → Di layar Rata-rata CPU rendah tetapi tick melonjak secara berkala, sehingga terjadi patah-patah atau slow motion

Gejala
Patah-patah, Slow motion
Faktor
Stall, Jitter
Siapa yang mengalami
Seluruh server
Kapan
Saat banyak pemain berkumpul, Sesekali secara acak
Penanggung jawab
Penanggung jawab utama Infrastruktur server (Tim Infrastruktur) · Turut terlibat Pengembangan server (Tim Pengembang Game)
Tugas Tim Pengembang Game
Sesuaikan jumlah worker thread dengan batas CPU (agar runtime tidak membuat thread sebanyak seluruh core host).
Tugas Tim Infrastruktur
Beri batas CPU yang longgar atau hapus batasnya dan alokasikan core khusus, pantau jumlah throttling (nr_throttled).
Kisaran angka
Pada server dengan batas 2 core, jika 8 thread bekerja bersamaan, kuota periode 100 ms habis dalam 25 ms dan proses berhenti selama 75 ms.
Di grafik
Naik mengikuti beban · Jumlah throttling (nr_throttled), waktu tick server
Yang diperiksa
Periksa kenaikan nr_throttled dan throttled_usec (di cgroup v1: nr_throttled dan throttled_time) di cpu.stat cgroup container bersama waktu tick server
Cocok jika
Rata-rata utilisasi CPU di bawah batas, tetapi nr_throttled dan throttled_usec terus naik dan waktunya bertepatan dengan lonjakan tick
Tidak cocok jika
nr_throttled tidak naik: bukan penyebab ini. Virtual machine itu sendiri yang tertahan: lebih mungkin “CPU steal (virtual machine)”
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)

Sumber

  1. CFS Bandwidth Control Linux kernel
    Jika kuota yang diterima di setiap periode habis, thread berhenti sampai periode berikutnya (throttling); periode default 100 ms; statistik nr_throttled
  2. Control Group v2 Linux kernel
    cpu.max berformat “$MAX $PERIOD” (kuota, periode), dengan nilai default “max 100000” (periode 100 ms)
  3. Resource Management for Pods and Containers Kubernetes
    CPU limit pada container adalah batas keras (hard limit) yang ditegakkan kernel melalui CPU throttling

Lihat juga

Lapisan yang sama: L7 OS server (kernel)

Penyebab di lapisan lain dengan gejala yang sama (Patah-patah)

Lihat kartu interaktif dengan gambar dan simulasi