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)
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
Transparent Hugepage SupportLinux 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
PSI - Pressure Stall InformationLinux 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