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

Sách trắng lag game › L7 OS server (kernel)

Dừng do thu hồi bộ nhớ và compaction Memory compaction / reclaim stalls (THP)

ID nguyên nhân so-reclaim · Phụ trách chính Hạ tầng server (Đội hạ tầng) · Phối hợp Phát triển server (Đội phát triển game)

Mở thẻ gốc có hình minh họa và thí nghiệm →

Tiến trình bị dừng trong lúc OS dồn bộ nhớ (compaction) để tạo huge page, hoặc thu hồi bộ nhớ để có thêm chỗ trống.

Vì sao Bộ nhớ trống giảm, hoặc tính năng huge page (THP) kích hoạt compaction bộ nhớ → Dẫn đến Thread xin bộ nhớ phải chờ đến khi thu hồi hoặc compaction xong → Trên màn hình Server dừng thất thường (vài ms đến vài trăm ms)

Triệu chứng
Đứng hình, Giật khựng
Yếu tố
Ngưng trệ
Ai gặp phải
Cả server
Khi nào
Càng chạy lâu càng nặng, Thỉnh thoảng bất chợt
Phụ trách
Phụ trách chính Hạ tầng server (Đội hạ tầng) · Phối hợp Phát triển server (Đội phát triển game)
Việc cần làm (Đội phát triển game)
Giảm cấp phát bộ nhớ lớn trong lúc chạy (cấp phát sẵn lúc khởi động rồi dùng lại).
Việc cần làm (Đội hạ tầng)
Cấu hình huge page (THP) chỉ dùng ở nơi cần (madvise), nâng ngưỡng bộ nhớ trống (vm.min_free_kbytes, v.v.).
Trên đồ thị
Thỉnh thoảng vọt lên bất chợt · Thời gian tick của server, PSI bộ nhớ
Chỗ cần xem
some và full trong /proc/pressure/memory (tỷ lệ thời gian bị dừng để chờ bộ nhớ) và mức tăng compact_stall trong /proc/vmstat, xem cùng thời gian tick của server; kiểm tra cấu hình /sys/kernel/mm/transparent_hugepage/defrag
Đúng nếu
PSI bộ nhớ và compact_stall cùng tăng vào lúc tick vọt lên. defrag đặt là always
Loại trừ nếu
PSI và compact_stall không đổi. Mức dùng swap tăng → “Swap”
Cách kiểm tra
Kiểm tra bằng công cụ hạ tầng (không cần code game)

Nguồn

  1. Transparent Hugepage Support Linux kernel
    Với defrag=always, khi cấp phát THP thất bại, kernel thu hồi và compaction bộ nhớ ngay tại chỗ nên tiến trình bị dừng; với madvise, chỉ vùng có yêu cầu mới làm vậy
  2. Documentation for /proc/sys/vm/ Linux kernel
    min_free_kbytes: ngưỡng bộ nhớ trống tối thiểu (watermark) mà kernel giữ lại
  3. PSI - Pressure Stall Information Linux kernel
    some (tỷ lệ thời gian một số tác vụ bị dừng để chờ bộ nhớ) và full (tỷ lệ thời gian mọi tác vụ đều bị dừng) trong /proc/pressure/memory

Nguyên nhân nên xem cùng

Cùng tầng: L7 OS server (kernel)

Nguyên nhân ở tầng khác gây cùng triệu chứng (Đứng hình)

Xem thẻ gốc có hình minh họa và thí nghiệm