Buku Putih Lag Game › Cari berdasarkan gejala
Input lag: 76 penyebab dan penanggung jawabnya
Disebut juga: respons terlambat, lamban, kontrol terasa berat
Buka kamus gejala interaktif dengan gambar →
Ada jeda antara saat tombol ditekan dan saat hasilnya muncul. Gambarnya sendiri bisa tetap mulus.
Skill baru keluar 0,2–0,5 detik setelah tombol ditekan. Aksi yang menunggu konfirmasi server, seperti mengambil item, berbicara dengan NPC, atau trade, terasa lambat.
Round-trip time (ping) tinggi, atau ada antrean yang menumpuk di suatu tempat. Periksa jarak, antrean router, Nagle (fitur TCP yang mengumpulkan paket kecil sebelum dikirim), dan antrean server. Jika ping rendah tetapi kontrol selalu terasa lamban, periksa sisi PC Anda (misalnya V-Sync atau FPS rendah) atau desain yang menunggu konfirmasi server untuk setiap aksi (bab model sinkronisasi).
Penyebab gejala ini
L1 Proses game di klien
- Beban rendering kerumunan besar: Saat ratusan karakter masuk ke satu layar seperti di siege atau world boss, biaya menggambarnya saja sudah tidak sanggup ditangani. (Pengembangan klien (Tim Pengembang Game))
- Bottleneck pemrosesan paket di main thread: Jika paket yang diterima hanya diproses dalam jumlah tertentu per frame, paket yang datang bertumpuk terus terdorong ke frame berikutnya. (Pengembangan klien (Tim Pengembang Game))
- V-Sync dan antrean render: Frame yang sudah digambar GPU ditumpuk beberapa buah di antrean, lalu dikirim ke layar mengikuti siklus refresh monitor; selama itu input terlambat. (Pengembangan klien (Tim Pengembang Game))
L2 OS dan perangkat klien
- Mode hemat daya dan thermal throttling: Mode baterai laptop, mode hemat daya ponsel, dan panas perangkat menurunkan kecepatan CPU dan GPU. Ciri penurunan karena panas: awalnya normal, lalu baru melambat setelah cukup lama. (Pihak Eksternal (Pihak Eksternal))
- Pemakaian bandwidth oleh aplikasi lain di perangkat yang sama: Jika sinkronisasi cloud, unduhan besar, atau patch game berjalan di PC yang sama, paket game harus menunggu di antrean. (Pihak Eksternal (Pihak Eksternal))
- Latensi layar, perangkat input, dan frame generation: Jika ping normal tetapi kontrol terasa berat, pemrosesan gambar di TV, controller nirkabel, atau fitur frame generation mungkin menambah latensi antara input dan layar. (Pihak Eksternal (Pihak Eksternal))
L3 Jaringan rumah
- Channel Wi-Fi padat: Di tempat dengan puluhan router seperti apartemen, router harus berbagi channel yang sama sehingga harus menunggu kesempatan mengirim. (Pihak Eksternal (Pihak Eksternal))
- Bufferbloat (antrean router): Saat anggota keluarga mengunggah video atau mengunduh file besar, paket senilai ratusan ms menumpuk di antrean router, dan paket game pun menunggu di belakangnya. (Pihak Eksternal (Pihak Eksternal))
- Jeda transisi state RRC (hemat daya radio seluler): Jika lama tidak ada komunikasi, ponsel menurunkan koneksi radio ke status daya rendah, lalu harus menaikkannya lagi saat paket berikutnya sehingga terlambat. (Pengembangan klien (Tim Pengembang Game))
L4 Jalur internet
- Latensi propagasi (jarak fisik): Di kabel serat optik, cahaya pun hanya menempuh sekitar 200.000 km per detik. Server yang jauh tetap lambat, sebagus apa pun servernya. (Infrastruktur server (Tim Infrastruktur))
- Internet satelit (orbit rendah dan geostasioner): Pada internet satelit, sinyal harus bolak-balik ke luar angkasa. Dengan satelit geostasioner, pulang-pergi saja sudah lebih dari 0,5 detik. Satelit orbit rendah seperti Starlink biasanya cepat, tetapi saat rute dialokasikan ulang, latensinya berfluktuasi dan koneksi kadang putus sesaat. (Pihak Eksternal (Pihak Eksternal))
- Routing memutar: Karena kontrak interkoneksi antar-ISP, rute ke server yang dekat pun bisa memutar lewat tempat yang jauh. (Infrastruktur jaringan (Tim Infrastruktur))
- Gangguan kabel bawah laut dan jalur internasional: Jika kabel bawah laut putus, trafik harus memutar lewat rute yang jauh selama beberapa minggu (jika lama, beberapa bulan) sampai kabel diperbaiki, dan jalur yang tersisa menjadi padat. (Pihak Eksternal (Pihak Eksternal))
- Pembatasan kecepatan dan manajemen trafik oleh ISP: Jika kuota data terlampaui atau layanan internet mengelola trafik tertentu, paket ditunda atau dibuang. (Pihak Eksternal (Pihak Eksternal))
- Rute lewat VPN atau game booster: Jika VPN atau game booster diaktifkan, paket melewati server relay milik perusahaan itu. Jika server relay jauh atau padat, koneksi malah menjadi lebih lambat. (Pihak Eksternal (Pihak Eksternal))
L5 Perangkat jaringan data center
- Rute lewat proteksi DDoS dan false positive: Saat trafik dialihkan ke scrubbing center untuk menangkal serangan, rutenya menjadi lebih panjang, dan pemain yang normal kadang salah dikira serangan lalu diblokir. (Infrastruktur jaringan (Tim Infrastruktur))
- Jalur data center penuh: Jika deploy patch, pengiriman log, dan backup memakai jalur yang sama dengan game, jalurnya penuh. (Infrastruktur jaringan (Tim Infrastruktur))
L6 Kartu jaringan server
- Interrupt NIC terpusat di satu core: Jika NIC hanya mengirim interrupt kedatangan paket ke satu core CPU, core itu menjadi bottleneck. (Infrastruktur server (Tim Infrastruktur))
- Interrupt coalescing berlebihan: Jika NIC mengumpulkan paket lalu memberi tahu CPU sekaligus untuk mengurangi beban CPU, paket terlambat selama waktu pengumpulan itu. (Infrastruktur server (Tim Infrastruktur))
- Bandwidth NIC penuh: Jika kartu 1 Gbps atau 10 Gbps dipakai sampai batasnya, antrean kirim memanjang dan akhirnya paket dibuang. (Pengembangan server (Tim Pengembang Game))
- Jeda tunggu penggabungan GRO/LRO: Fitur ini menggabungkan beberapa paket menjadi satu untuk mengurangi beban CPU. Tergantung konfigurasinya, paket game yang kecil kadang menunggu sebentar paket berikutnya untuk digabung bersama. (Infrastruktur server (Tim Infrastruktur))
L7 OS server (kernel)
- Lonjakan latensi akibat manajemen daya server (C-state, pengaturan frekuensi): Core CPU yang sedang menganggur masuk ke mode hemat daya yang dalam (C-state) dan menurunkan frekuensinya untuk menghemat listrik. Saat paket atau timer datang, core butuh waktu untuk bangun dan menaikkan frekuensi, sehingga pemrosesan paket kecil mendapat tambahan latensi. (Infrastruktur server (Tim Infrastruktur))
- Perubahan performa setelah update OS, kernel, driver, atau firmware: Kode game tidak berubah, tetapi server menjadi lambat sejak OS, kernel, driver, atau firmware server diperbarui. Update bisa mengubah nilai default, scheduler, mitigasi kerentanan CPU (mitigations), dan perilaku driver. (Infrastruktur server (Tim Infrastruktur))
L8 Socket dan protokol
- Algoritma Nagle + delayed ACK: Algoritma Nagle yang mengumpulkan paket kecil sebelum dikirim dan delayed ACK yang menunda pengiriman ACK saling mengunci, sehingga setiap kali pesan ditulis terpisah-pisah terjadi keterlambatan 40–200 ms. (Pengembangan server (Tim Pengembang Game))
- Slow start setelah idle: Jika koneksi idle cukup lama, TCP kembali mengecilkan congestion window (jumlah data yang bisa dikirim sekaligus), sehingga data besar yang tiba-tiba dikirim harus dipecah menjadi beberapa kali kirim. (Infrastruktur server (Tim Infrastruktur))
- Laju kirim anjlok akibat congestion control: TCP menganggap packet loss sebagai tanda kongesti dan menurunkan kecepatan kirim 30–50%. TCP bereaksi sama terhadap packet loss di Wi-Fi. (Infrastruktur server (Tim Infrastruktur))
- Arsitektur I/O blocking: Pada arsitektur yang membuat thread tidak bisa mengerjakan hal lain selama menunggu satu socket, seluruh server makin lambat seiring bertambahnya pemain. (Pengembangan server (Tim Pengembang Game))
L9 Proses game di server
- Tick melewati budget (tick overrun): 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. (Pengembangan server (Tim Pengembang Game))
- Lonjakan broadcast: Jika gerakan satu pemain dikirim ke semua yang melihatnya, jumlah update yang harus dikirim menjadi kuadrat dari jumlah pemain yang berkumpul. (Pengembangan server (Tim Pengembang Game))
- Kelebihan beban di area single-thread (hotspot): Pada arsitektur yang menugaskan satu thread untuk setiap area, jika pemain berkumpul di satu tempat, hanya satu core itu yang mencapai 100%. (Pengembangan server (Tim Pengembang Game))
- Perebutan lock: Jika beberapa thread menunggu satu lock untuk menulis data yang sama, walaupun thread ditambah, hanya satu yang berjalan pada satu waktu. (Pengembangan server (Tim Pengembang Game))
- Penumpukan antrean pesan: Jika permintaan masuk lebih cepat daripada kecepatan pemrosesan dan menumpuk di antrean, permintaan di belakang baru diproses beberapa detik kemudian atau dibuang. (Pengembangan server (Tim Pengembang Game))
- Biaya serialisasi dan kompresi: Mengubah data yang akan dikirim menjadi byte dan mengompresinya juga memakan CPU, dan biaya ini melonjak saat pemain banyak. (Pengembangan server (Tim Pengembang Game))
- Thread pool habis: Jika semua worker thread tertahan oleh pekerjaan lambat, permintaan baru hanya bisa menunggu tanpa kepastian. (Pengembangan server (Tim Pengembang Game))
- Pertempuran terpusat pada satu target (world boss): Jika ratusan pemain menyerang satu boss secara bersamaan, perhitungan untuk boss itu terpusat di satu tempat, dan informasi setiap serangan dikirim ke semua yang melihatnya. (Pengembangan server (Tim Pengembang Game))
- Lonjakan spawn saat masuk area padat: Saat pemain memakai teleportasi ke kota yang ramai, server harus mengirim tampilan, perlengkapan, dan status ratusan pemain yang baru terlihat sekaligus. (Pengembangan server (Tim Pengembang Game))
- Penumpukan objek (item dan summon yang tidak dibersihkan): Jika item di tanah, summon, dan timer yang sudah selesai tidak dibersihkan dan terus menumpuk, makin lama server menyala, makin banyak pekerjaan di setiap tick. (Pengembangan server (Tim Pengembang Game))
- Pola trafik berubah akibat patch: Jika konten, efek, dan data sinkronisasi baru memperbesar ukuran dan frekuensi paket, server yang tadinya lancar mulai terbentur batas MTU, bandwidth, dan jumlah paket setelah patch. (Pengembangan server (Tim Pengembang Game))
L11 Disk
- Lonjakan fsync: Permintaan agar data ditulis ke disk secara “pasti” memakan 0,1 ms hingga puluhan ms per kali tergantung disknya, dan jika permintaan menumpuk, antreannya memanjang. (Pengembangan server (Tim Pengembang Game))
- Burst credit disk cloud habis: Sebagian disk cloud dan spesifikasi server kecil punya burst credit yang memungkinkan kinerja di atas baseline untuk sementara. Jika masa sibuk berlangsung lama dan kreditnya habis, kecepatannya tiba-tiba turun. (Infrastruktur server (Tim Infrastruktur))
- Batas IOPS dan antrean jenuh: Jika permintaan melebihi jumlah yang bisa diproses disk per detik, antrean memanjang dan latensi melonjak tajam. (Infrastruktur server (Tim Infrastruktur))
- Tugas backup, kompresi, dan pemindaian: Jika backup dini hari, kompresi log, dan pemindaian keamanan memonopoli disk, pembacaan dan penulisan server game tertunda. (Infrastruktur server (Tim Infrastruktur))
- Latensi seek HDD: Pada HDD, head harus bergerak di atas piringan (platter) untuk mencari posisi data (seek), sehingga membaca atau menulis data yang tersebar memakan hampir 10 ms per kali. (Infrastruktur server (Tim Infrastruktur))
L12 Database
- Query tanpa indeks: Tanpa indeks, DB harus membaca seluruh tabel untuk menemukan baris yang memenuhi kondisi (full table scan). (Pengembangan server (Tim Pengembang Game))
- Perebutan lock pada hot row: Jika semua orang ingin mengubah baris yang sama (gudang guild, item populer di balai lelang, counter untuk seluruh server), lock hanya didapat satu per satu. (Pengembangan server (Tim Pengembang Game))
- Deadlock DB: Jika dua transaksi (sekumpulan operasi DB yang diproses sebagai satu kesatuan) saling menunggu baris yang dikunci pihak lain, DB membatalkan salah satunya secara paksa. (Pengembangan server (Tim Pengembang Game))
- Connection pool habis: Jumlah koneksi yang dibuka ke DB terbatas, jadi jika query lambat menahan koneksi, request lainnya harus menunggu. (Pengembangan server (Tim Pengembang Game))
- Checkpoint dan log flush: Query melambat saat DB secara berkala menulis sekaligus perubahan yang tersimpan di memori ke disk. (Infrastruktur DB (Tim Infrastruktur))
- Cold cache (tepat setelah restart): Setelah DB dimulai ulang, cache di memori kosong, sehingga untuk sementara semua pembacaan data diambil dari disk. (Infrastruktur DB (Tim Infrastruktur))
- Lonjakan login dan N+1 query: Jika memuat satu karakter butuh puluhan query terpisah, login bersamaan puluhan ribu pemain berubah menjadi jutaan query. (Pengembangan server (Tim Pengembang Game))
- Batch job berskala besar: Agregasi ranking, pengiriman mail massal, dan pembersihan data lama yang dijalankan saat layanan berjalan menahan lock dan menyita kapasitas disk. (Pengembangan server (Tim Pengembang Game))
- Cache stampede: Jika cache data populer kedaluwarsa bersamaan, ribuan request menyerbu DB sekaligus. (Pengembangan server (Tim Pengembang Game))
- Transaksi yang terbuka lama: Transaksi yang terbuka lama terus memegang lock, dan DB tidak bisa membersihkan data versi lama (purge), sehingga seluruh DB makin lama makin lambat. (Pengembangan server (Tim Pengembang Game))
- Perintah lambat di Redis: Redis memproses perintah satu per satu, sehingga satu perintah lambat menahan semua request di belakangnya. (Pengembangan server (Tim Pengembang Game))
- Query melambat karena query plan berubah: Walaupun kodenya tidak berubah, jika DB mengganti cara memproses query yang sama (query plan), query yang kemarin 2 ms bisa menjadi ratusan ms hari ini. (Infrastruktur DB (Tim Infrastruktur))
- Lock akibat perubahan skema (DDL) saat layanan berjalan: Jika kolom atau indeks ditambahkan ke tabel saat layanan berjalan, satu lock yang dibutuhkan sesaat bisa membuat semua request yang memakai tabel itu menunggu. (Infrastruktur DB (Tim Infrastruktur))
L13 Arsitektur dan operasional server
- Rute lewat gateway atau proxy: Jika ada server perantara di antara klien dan server game, setiap kali paket melewatinya ada tambahan waktu pemrosesan, dan server itu menjadi single point of failure. (Pengembangan server (Tim Pengembang Game))
- Kegagalan berantai: Jika satu layanan melambat, server yang memanggilnya ikut tertahan menunggu respons, dan fitur yang tidak berhubungan pun ikut berhenti. (Pengembangan server (Tim Pengembang Game))
- Deploy dan restart: Jika koneksi tidak dipindahkan saat server dimulai ulang untuk update, pemain di server itu disconnect, lalu penyimpanan data menjelang shutdown dan reconnect membanjir sekaligus. (Pengembangan server (Tim Pengembang Game))
- Terlalu banyak macro dan bot: Bot mengirim permintaan jauh lebih sering daripada manusia sehingga menggerogoti throughput server. (Pengembangan server (Tim Pengembang Game))
- Kesalahan matchmaking dan penempatan region: Jika pemain ditempatkan di server region yang jauh padahal ada region yang dekat, ping pemain itu selalu tinggi walaupun koneksinya baik-baik saja. (Pengembangan server (Tim Pengembang Game))
Desain sinkronisasi
- Feedback baru tampil setelah server merespons (model request-response): Saat tombol ditekan, tidak ada animasi maupun suara sampai jawaban server datang. Ping langsung menjadi kecepatan respons. (Pengembangan klien (Tim Pengembang Game))
- Protokol dengan banyak round trip berurutan (chatty): Jika satu aksi butuh beberapa kali pulang-pergi ke server secara berurutan, ping dikalikan sebanyak jumlah itu. (Pengembangan server (Tim Pengembang Game))
- Tidak ada input buffering untuk skill: Jika skill berikutnya baru bisa ditekan setelah ada konfirmasi bahwa skill sebelumnya selesai di server, waktu pulang-pergi menyela setiap kombo. (Pengembangan klien (Tim Pengembang Game))
- Timing window pendek yang termakan ping: Jika waktu untuk bereaksi pendek, seperti pada dodge, parry, atau guard, ping memakan waktu itu sehingga muncul serangan yang mustahil dihindari. (Pengembangan server (Tim Pengembang Game))
- Lockstep menunggu pemain paling lambat: Dalam arsitektur tempat semua pemain menghitung giliran yang sama bersama-sama, jika input satu orang terlambat, semua orang menunggu. (Pengembangan server (Tim Pengembang Game))
- Menunggu tick dua kali: Jika permintaan dikumpulkan sampai tick berikutnya untuk diproses, lalu hasilnya juga dikirim pada tick sesudahnya, interval tick bertambah dua kali. (Pengembangan server (Tim Pengembang Game))
Masalah yang hanya dialami sebagian pemain
- Ukuran buffer input per pemain: Jika server menampung sedikit input untuk setiap pemain lalu mengambilnya satu per tick, gerakan terlihat mulus di mata pemain lain, tetapi aksi pemain itu sendiri dikonfirmasi server lebih lambat sebesar itu. (Pengembangan server (Tim Pengembang Game))
- Satu anggota party yang lambat dan mekanik boss: Pada mekanik raid yang menuntut semua pemain bereaksi bersamaan di saat yang ditentukan, reaksi terlambat dari satu pemain yang lambat membuat seluruh party gagal. (Pengembangan server (Tim Pengembang Game))
- Data karakter tertentu terlalu besar: Karakter yang menumpuk ribuan item atau mail, atau punya daftar teman, daftar blokir, dan buff yang sangat banyak, harus memuat, menyimpan, dan mengabarkan ke sekitarnya data yang berkali-kali lipat lebih besar dari karakter lain. Lambatnya hanya terjadi pada karakter itu, tanpa peduli koneksinya. (Pengembangan server (Tim Pengembang Game))
- Budget pengiriman dan prioritas per koneksi: Jika server membatasi volume kirim per koneksi dan mengirim objek yang dekat lebih dulu, koneksi dengan batas rendah menerima NPC yang jauh dengan terlambat atau tidak menerimanya sama sekali. (Pengembangan server (Tim Pengembang Game))
Akar penyebab retransmisi TCP
- Paket dibuang di host server penerima: 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. (Infrastruktur server (Tim Infrastruktur))
- Retransmisi yang tidak perlu akibat lonjakan latensi: Paket sebenarnya tidak hilang dan hanya sesaat datang sangat terlambat, tetapi jika keterlambatan itu lebih lama dari RTO, pengirim menganggap paket hilang lalu mengirimnya ulang. (Pihak Eksternal (Pihak Eksternal))
- Fast retransmit yang tidak perlu akibat urutan paket tertukar: Jika urutan paket berubah saat melewati beberapa jalur atau link yang digabung, penerima memberi tahu “ada paket yang hilang” lewat duplicate ACK, dan pengirim mengirim ulang paket yang sebenarnya sudah sampai dengan baik. (Infrastruktur jaringan (Tim Infrastruktur))
- ACK terlambat atau hilang (upload penuh): Data sudah tiba dengan baik, tetapi jika ACK “sudah diterima” tertunda atau hilang di antrean upload yang penuh, pengirim menganggap data hilang lalu mengirimnya ulang. (Pihak Eksternal (Pihak Eksternal))
- Pengaturan RTO tidak sesuai dengan lingkungan: Jika nilai minimum RTO diturunkan terlalu rendah, keterlambatan kecil saja sudah memicu retransmisi yang tidak perlu. Sebaliknya, nilai default (200 ms) terlalu panjang untuk game sehingga setiap kali paket hilang, game berhenti lama. (Infrastruktur server (Tim Infrastruktur))
Lihat kamus gejala interaktif dengan gambar