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

Buku Putih Lag Game › L10 Memori

Swap Swapping

ID penyebab mem-swap · Penanggung jawab utama Infrastruktur server (Tim Infrastruktur) · Turut terlibat Pengembangan server (Tim Pengembang Game)

Buka kartu interaktif dengan gambar dan simulasi →

Jika memori kurang dan OS memindahkan sebagiannya ke disk, setiap kali memori itu dipakai, proses harus menunggu disk yang lebih dari 1.000 kali lebih lambat.

Mengapa Memori yang dipakai melebihi RAM fisik → Akibatnya OS memindahkan sebagian memori ke disk dan membacanya lagi saat dibutuhkan → Di layar Tick melonjak hingga ratusan ms, sehingga semua pemain di server mengalami slow motion dan freeze

Gejala
Slow motion, Freeze
Faktor
Stall
Siapa yang mengalami
Seluruh server
Kapan
Makin lama menyala, Jam sibuk malam hari
Penanggung jawab
Penanggung jawab utama Infrastruktur server (Tim Infrastruktur) · Turut terlibat Pengembangan server (Tim Pengembang Game)
Tugas Tim Pengembang Game
Beri batas atas penggunaan memori proses (ukuran heap dan sebagainya), periksa kebocoran.
Tugas Tim Infrastruktur
Atur server game agar tidak memakai swap, tangani lewat alert memori, sediakan RAM yang lebih longgar daripada penggunaan puncak karena tanpa swap proses langsung dihentikan paksa (OOM) begitu memori kurang.
Kisaran angka
Baca RAM sekitar 100 ns, baca ulang dari SSD sekitar 100 µs (1.000 kali), disk cloud di seberang jaringan sekitar 1 ms (10.000 kali), HDD 10 ms (100.000 kali).
Di grafik
Naik perlahan · Penggunaan swap, swap in/out
Yang diperiksa
Tumpangkan kolom si dan so di vmstat 1 (jumlah yang dibaca dari swap dan dikirim ke swap per detik), some dan full di /proc/pressure/memory (rasio waktu tertahan karena menunggu memori), serta majflt/s dari pidstat -r untuk proses server game (page fault yang harus dibaca dari disk) dengan waktu tick
Cocok jika
Saat lag terjadi, si lebih besar dari 0, dan majflt/s server game serta nilai full di PSI memory ikut naik
Tidak cocok jika
si dan so 0, dan tekanan memori (PSI memory) juga mendekati 0: swap bukan penyebabnya. Tidak ada swap tetapi majflt/s dan PSI naik: memori habis sehingga code page dibaca ulang, jadi tambah memori terlebih dahulu
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)
Pelajari lebih lanjut
Server yang memakai GC membaca berbagai bagian heap saat pengumpulan, jadi walaupun hanya sebagian heap yang masuk swap, satu kali GC bisa memanjang menjadi beberapa hingga puluhan detik. Jika swap dimatikan, server langsung dihentikan paksa (OOM) tanpa melewati tahap melambat karena swap, jadi sediakan memori cadangan terlebih dahulu. Walaupun tanpa swap, jika memori hampir habis, OS juga mengeluarkan code page file executable dari memori lalu membacanya lagi, sehingga seluruh server bisa sangat lambat untuk beberapa waktu sebelum dihentikan paksa.

Sumber

  1. Designs, Lessons and Advice from Building Large Distributed Systems (LADIS 2009 keynote) Google
    “Numbers Everyone Should Know”: referensi main memory 100 ns, seek disk 10 ms (data tahun 2009)
  2. Documentation for /proc/sys/vm/ Linux kernel
    swappiness: biaya relatif antara swap dan pengambilan kembali file page; swap mahal karena berupa I/O acak
  3. Concepts overview Linux kernel
    Kernel mengambil kembali page cache yang aslinya tersimpan di disk dan page yang bisa di-swap; jika masih kurang, OOM killer mematikan proses
  4. Solidigm™ D7-P5520 and D7-P5620 Product Brief Solidigm
    Latensi 99,99% (four-nines latency) SSD NVMe server 130 µs: dasar bahwa satu kali baca SSD sekitar 100 µs
  5. Amazon EBS General Purpose SSD volumes AWS
    Latensi disk standar cloud (gp3) dalam kisaran satu digit ms
  6. vmstat(8) — Linux manual page procps-ng
    si: memori yang dibaca dari swap per detik, so: memori yang dikirim ke swap per detik
  7. PSI - Pressure Stall Information Linux kernel
    some (rasio waktu sebagian task tertahan) dan full (rasio waktu semua task tertahan bersamaan) di /proc/pressure/memory
  8. pidstat(1) — Linux manual page sysstat
    -r: majflt/s (jumlah fault yang mengharuskan page dibaca dari disk)

Lihat juga

Lapisan yang sama: L10 Memori

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

Lihat kartu interaktif dengan gambar dan simulasi