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

Buku Putih Lag Game › Akar penyebab retransmisi TCP

Paket dibuang di host server penerima Receiver host drops (ring, softirq, CPU)

ID penyebab rt-host-drop · Penanggung jawab utama Infrastruktur server (Tim Infrastruktur)

Buka kartu interaktif dengan gambar dan simulasi →

Paket sudah sampai di server, tetapi dibuang karena ring buffer NIC (buffer yang menampung sementara paket yang tiba) meluap atau core yang menangani pemrosesan terima di kernel jenuh.

Mengapa Lonjakan jumlah pemain, interrupt yang terpusat di satu core, CPU steal di virtual machine, atau virtual switch yang kelebihan beban → Akibatnya Paket dibuang di ring buffer (rx_missed_errors dan sejenisnya, namanya berbeda tiap driver) atau di antrean terima kernel (softnet dropped) → Di layar Saat pemain berkumpul, input terlambat diproses dan game tersendat sesaat di seluruh server secara bersamaan

Gejala
Input lag, Freeze, Fast forward, Teleport
Faktor
Packet loss, Stall
Siapa yang mengalami
Seluruh server
Kapan
Saat banyak pemain berkumpul
Penanggung jawab
Penanggung jawab utama Infrastruktur server (Tim Infrastruktur)
Tugas Tim Infrastruktur
Tambahkan counter drop seperti rx_missed_errors di ethtool -S dan dropped di /proc/net/softnet_stat ke monitoring, perbesar ring buffer (ethtool -G), sebar RSS dan interrupt ke beberapa core, pisahkan core thread game dari core pemrosesan terima, sisakan kapasitas CPU, dan di virtual machine periksa CPU steal serta beban virtual switch.
Kisaran angka
Paket yang dibuang server saat diterima akan dikirim ulang oleh klien. Karena itu, kejadian ini jarang tertangkap di metrik retransmisi server dan lebih dulu muncul di counter drop seperti rx_missed_errors di ethtool -S (namanya berbeda tiap driver) dan di dropped pada /proc/net/softnet_stat.
Di grafik
Mendatar di batas · Utilisasi softirq per core, counter drop NIC
Yang diperiksa
Periksa counter drop di ethtool -S (rx_missed_errors dan sejenisnya; di mlx5, rx_out_of_buffer dan rx_discards_phy), missed di ip -s -s link, serta kolom ke-2 (dropped) dan kolom ke-3 (time_squeeze) di /proc/net/softnet_stat, lalu periksa %soft (pemrosesan software interrupt) per core dengan mpstat -P ALL. Di virtual machine, periksa juga %steal
Cocok jika
Saat pemain berkumpul, counter drop atau softnet dropped naik, dan %soft pada core yang menangani pemrosesan terima tertahan di dekat 100% dan tidak bisa naik lagi. Input melambat di semua koneksi server itu pada saat yang sama
Tidak cocok jika
Counter drop server tidak berubah dan retransmisi terpusat pada koneksi dari wilayah atau ISP tertentu: packet loss di rute. Jika paket yang dikirim server hilang di rute, TcpRetransSegs di nstat server naik, sedangkan counter di atas tidak berubah
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)

Sumber

  1. Interface statistics Linux kernel
    rx_missed_errors adalah jumlah paket yang tidak bisa diterima host karena tidak ada buffer (di /proc/net/dev dijumlahkan ke drop); periksa dengan ip -s -s link
  2. drivers/net/ethernet/intel/igb/igb_ethtool.c Linux kernel
    Nama counter di ethtool -S ditentukan oleh driver (misalnya rx_missed_errors dan rx_no_buffer_count pada igb)
  3. Ethtool counters Linux kernel
    rx_out_of_buffer (tidak ada buffer di antrean terima) dan rx_discards_phy (dibuang karena buffer port kurang) pada driver mlx5
  4. net/core/net-procfs.c Linux kernel
    /proc/net/softnet_stat berisi satu baris per CPU dalam heksadesimal; kolom ke-2 adalah dropped, kolom ke-3 adalah time_squeeze
  5. Documentation for /proc/sys/net/ Linux kernel
    netdev_max_backlog: batas antrean terima yang menampung paket saat paket datang lebih cepat daripada kemampuan kernel memprosesnya
  6. Scaling in the Linux Networking Stack Linux kernel
    RSS: NIC membagi trafik ke beberapa antrean terima yang diproses oleh beberapa CPU
  7. ethtool(8) — Linux manual page ethtool
    -G (--set-ring) mengubah ukuran ring buffer
  8. proc_stat(5) — Linux manual page Linux man-pages
    steal di /proc/stat: waktu CPU dipakai OS lain di lingkungan virtualisasi
  9. mpstat(1) — Linux manual page sysstat
    mpstat -P ALL menampilkan utilisasi per core; %soft adalah waktu pemrosesan software interrupt, %steal adalah waktu menunggu selama hypervisor melayani CPU virtual lain
  10. net/ipv4/proc.c Linux kernel
    TcpRetransSegs yang ditampilkan nstat (RetransSegs pada bagian Tcp)

Lihat juga

Lapisan yang sama: Akar penyebab retransmisi TCP

Penyebab di lapisan lain dengan gejala yang sama (Input lag)

Lihat kartu interaktif dengan gambar dan simulasi