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

Buku Putih Lag Game › L9 Proses game di server

Tick melewati budget (tick overrun) Tick overrun

ID penyebab sp-tick-overrun · Penanggung jawab utama Pengembangan server (Tim Pengembang Game) · Turut terlibat Infrastruktur server (Tim Infrastruktur)

Buka kartu interaktif dengan gambar dan simulasi →

Jika pekerjaan dalam satu tick melewati tick budget (batas waktu per tick), interval tick server memanjang, dan seluruh area itu berjalan lambat atau patah-patah.

Mengapa Pekerjaan yang harus diproses dalam satu tick (misalnya 50 ms) melewati budget → Akibatnya State game yang seharusnya dihitung 20 kali per detik hanya dihitung 8 kali → Di layar Seluruh area itu slow motion (atau patah-patah, tergantung desain server), respons skill terlambat

Gejala
Slow motion, Input lag, Patah-patah
Faktor
Stall
Siapa yang mengalami
Lokasi/channel tertentu, Seluruh server
Kapan
Saat banyak pemain berkumpul, Jam sibuk malam hari
Penanggung jawab
Penanggung jawab utama Pengembangan server (Tim Pengembang Game) · Turut terlibat Infrastruktur server (Tim Infrastruktur)
Tugas Tim Pengembang Game
Kurangi komputasi yang mahal, bagi tick ke beberapa thread, sebar pemain (channel), catat waktu pemrosesan tick sebagai metrik.
Tugas Tim Infrastruktur
Tambahkan waktu tick dan utilisasi CPU per core ke monitoring dan alert, pertimbangkan CPU atau instance dengan performa single-core (clock) tinggi.
Kisaran angka
Budget server 20 tick adalah 50 ms, server 30 tick 33 ms, dan server 60 tick 16,7 ms. Untuk berjaga-jaga saat beban tiba-tiba melonjak, lebih aman menyisakan ruang dengan hanya memakai sekitar separuh budget di waktu biasa.
Di grafik
Naik mengikuti beban · Waktu tick server, jumlah pemain per zona dan channel, CPU thread game
Yang diperiksa
Tampilkan waktu pemrosesan tick (p99) dan jumlah tick overrun yang dicatat server dalam satu grafik dengan jumlah pemain per zona dan channel. Jika tidak ada metrik tick, periksa utilisasi CPU satu thread game dengan pidstat -t 1
Cocok jika
Saat pemain berkumpul, waktu tick melewati budget (50 ms untuk server 20 tick), dan selama itu utilisasi CPU thread game menempel di dekat 100%
Tidak cocok jika
Tick melewati budget tetapi CPU thread game rendah: penyebabnya sesuatu yang ditunggu (jeda GC, lock, pemanggilan sinkron). Latensi run queue di bcc runqlat panjang: thread tidak mendapat jatah CPU, jadi lebih mungkin CPU kurang atau thread berlebihan
Sarana pemeriksaan
Log dan metrik server atau klien game
Pelajari lebih lanjut
Wujud tick yang terlambat berbeda menurut desain server. Server yang memajukan state game sebesar waktu tetap (misalnya 50 ms) setiap tick membuat waktu game itu sendiri melambat, sehingga terjadi slow motion. Server yang menggerakkan objek sekaligus sebesar waktu yang benar-benar berlalu tetap menjaga kecepatan jalannya game, tetapi paket menjadi jarang dan gerakannya melompat besar, sehingga terlihat patah-patah atau teleport. Pada kedua cara itu, respons input tetap terlambat. Jika satu thread game menangani seluruh server, seluruh server melambat; jika thread dibagi per area, hanya area itu yang melambat. Ada juga game seperti EVE Online yang sengaja memperlambat waktu game hingga 10 kali (Time Dilation) dalam pertempuran besar agar komputasi bisa mengejar.
Kasus nyata
CCP Games 2014: Kelebihan beban server dalam pertempuran armada besar HED-GP di EVE Online

Sumber

  1. VALORANT's 128-Tick Servers Riot Games
    Server 128 tick harus menyelesaikan satu frame dalam 7,8125 ms; frame time server diukur per subsistem dan budget-nya dibagi lalu dikelola
  2. HED-GP Technical Retrospective: What a HED-ache CCP Games
    Saat kelebihan beban, EVE Online memperlambat waktu game dengan Time Dilation dengan batas bawah 10% (10 kali lebih lambat); di waktu biasa, CPU node di bawah 80%
  3. Handling variation in time Unity
    Jika simulasi berinterval tetap tertinggal, langkah pengejaran dijalankan bertumpuk, dan waktu yang melewati batas dibuang sehingga waktu game berjalan lebih lambat dari waktu nyata
  4. pidstat(1) — Linux manual page sysstat
    -t menampilkan sekaligus statistik per thread milik proses (utilisasi CPU dan lainnya)
  5. Demonstrations of runqlat, the Linux eBPF/bcc version IO Visor
    Menampilkan latensi run queue scheduler (waktu tunggu sampai tugas mendapat jatah CPU) dalam bentuk histogram

Lihat juga

Lapisan yang sama: L9 Proses game di server

Penyebab di lapisan lain dengan gejala yang sama (Slow motion)

Lihat kartu interaktif dengan gambar dan simulasi