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

Buku Putih Lag Game › L2 OS dan perangkat klien

Buffer terima meluap Socket receive buffer overflow

ID penyebab co-rcvbuf · Penanggung jawab utama Pengembangan klien (Tim Pengembang Game)

Buka kartu interaktif dengan gambar dan simulasi →

Jika game terlalu sibuk sehingga terlambat mengambil paket dari socket (antarmuka kirim-terima jaringan yang disediakan OS), buffer OS meluap.

Mengapa Frame tertunda sehingga game terlambat membaca socket → Akibatnya Buffer terima OS penuh: UDP membuang paket, TCP mengecilkan receive window sehingga pengirim berhenti mengirim → Di layar Teleport (UDP) atau fast forward (TCP)

Gejala
Teleport, Fast forward
Faktor
Packet loss, Stall
Siapa yang mengalami
Hanya saya
Kapan
Saat banyak pemain berkumpul
Penanggung jawab
Penanggung jawab utama Pengembangan klien (Tim Pengembang Game)
Tugas Tim Pengembang Game
Gunakan thread khusus untuk menerima paket, sesuaikan ukuran buffer (SO_RCVBUF).
Kisaran angka
Buffer terima default berukuran puluhan hingga ratusan KB, tergantung OS dan pengaturan. Update di tempat ramai bisa mencapai ratusan KB per detik.
Di grafik
Naik mengikuti beban · Jumlah paket UDP yang dibuang di buffer terima, frame time
Yang diperiksa
Rekam Microsoft Winsock BSP\Dropped Datagrams (jumlah paket UDP yang dibuang karena buffer terima socket tidak cukup) dan UDPv4\Datagrams Received Errors di Performance Monitor Windows bersama frame time, dan di game hitung celah pada nomor urut paket yang diterima
Cocok jika
Dropped Datagrams naik di tempat ramai atau tepat setelah frame panjang, dan pada saat yang sama muncul celah di nomor urut game. Pada waktu itu tidak ada packet loss di sisi koneksi
Tidak cocok jika
Dropped Datagrams tidak berubah, tetapi ada nomor urut yang hilang: packet loss di sepanjang rute
Sarana pemeriksaan
Lingkungan pemain sendiri

Sumber

  1. socket(7) — Linux manual page Linux man-pages
    SO_RCVBUF adalah ukuran maksimum buffer terima socket; nilai default ditentukan rmem_default dan nilai maksimum oleh rmem_max (Android juga memakai kernel Linux)
  2. SOL_SOCKET Socket Options (Winsock2.h) Microsoft
    SO_RCVBUF di Windows: ruang buffer yang disediakan untuk menerima data di setiap socket
  3. RFC 9293: Transmission Control Protocol (TCP) IETF
    Field window TCP adalah jumlah byte yang masih bisa diterima penerima; jika 0, pengirim hanya mengirim zero window probe sambil menunggu
  4. Low Latency Workloads Management and Operations Microsoft
    Dropped Datagrams dan Dropped Datagrams/sec di counter set Microsoft Winsock BSP: jumlah paket yang dibuang karena UDP datang lebih cepat dari kecepatan pemrosesan aplikasi atau buffer terima socket tidak cukup
  5. Network-Related Performance Counters Microsoft
    Counter UDPv4 dan UDPv6: Datagrams Received Errors, Microsoft Winsock BSP: Dropped Datagrams

Lihat juga

Lapisan yang sama: L2 OS dan perangkat klien

Penyebab di lapisan lain dengan gejala yang sama (Teleport)

Lihat kartu interaktif dengan gambar dan simulasi