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
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
Interface statisticsLinux 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
Ethtool countersLinux kernel rx_out_of_buffer (tidak ada buffer di antrean terima) dan rx_discards_phy (dibuang karena buffer port kurang) pada driver mlx5
net/core/net-procfs.cLinux kernel /proc/net/softnet_stat berisi satu baris per CPU dalam heksadesimal; kolom ke-2 adalah dropped, kolom ke-3 adalah time_squeeze
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
mpstat(1) — Linux manual pagesysstat mpstat -P ALL menampilkan utilisasi per core; %soft adalah waktu pemrosesan software interrupt, %steal adalah waktu menunggu selama hypervisor melayani CPU virtual lain
net/ipv4/proc.cLinux kernel TcpRetransSegs yang ditampilkan nstat (RetransSegs pada bagian Tcp)