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

Buku Putih Lag Game › L8 Socket dan protokol

Arsitektur I/O blocking Blocking I/O model

ID penyebab sk-blocking-io · Penanggung jawab utama Pengembangan server (Tim Pengembang Game)

Buka kartu interaktif dengan gambar dan simulasi →

Pada arsitektur yang membuat thread tidak bisa mengerjakan hal lain selama menunggu satu socket, seluruh server makin lambat seiring bertambahnya pemain.

Mengapa Cara kerja yang menunggu baca dan tulis untuk setiap koneksi → Akibatnya Keterlambatan satu koneksi merembet ke koneksi lain di thread yang sama → Di layar Makin banyak pemain online, seluruh server makin terasa slow motion dan input lag

Gejala
Slow motion, Input lag
Faktor
Stall
Siapa yang mengalami
Seluruh server
Kapan
Saat banyak pemain berkumpul, Jam sibuk malam hari
Penanggung jawab
Penanggung jawab utama Pengembangan server (Tim Pengembang Game)
Tugas Tim Pengembang Game
Beralih ke I/O asinkron berbasis epoll, IOCP, atau io_uring.
Di grafik
Naik mengikuti beban · Waktu respons, jumlah thread
Yang diperiksa
Periksa jumlah thread server game dan context switching voluntary per thread (cswch/s, jumlah thread berhenti karena menunggu sumber daya) dengan pidstat -w -t, lalu bandingkan dengan waktu respons menurut jumlah pemain online
Cocok jika
Makin banyak pemain online, waktu respons naik tajam, dan sebagian besar thread yang bertambah sebanyak jumlah koneksi hanya banyak melakukan context switching voluntary dan hampir tidak memakai CPU (menunggu socket)
Tidak cocok jika
Thread terus memakai CPU tanpa menunggu: lebih mungkin beban komputasi berlebih (“Tick melewati budget (tick overrun)”)
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)

Sumber

  1. epoll(7) — Linux manual page Linux man-pages
    Notifikasi event I/O yang dapat diskalakan untuk memantau banyak fd sekaligus
  2. I/O Completion Ports Microsoft
    Cara Windows memproses banyak I/O asinkron dengan thread pool yang dibuat lebih dulu
  3. pidstat(1) — Linux manual page sysstat
    cswch/s pada -w: context switching voluntary (thread berhenti sendiri karena menunggu sumber daya), -t untuk melihat per thread

Lihat juga

Lapisan yang sama: L8 Socket dan protokol

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

Lihat kartu interaktif dengan gambar dan simulasi