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

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

Hiệu năng thay đổi sau khi cập nhật OS, kernel, driver hoặc firmware Performance regression after OS / kernel / driver / firmware update

ID nguyên nhân so-os-update · Phụ trách chính Hạ tầng server (Đội hạ tầng)

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

Code game không đổi, nhưng server chậm đi kể từ khi cập nhật OS, kernel, driver hoặc firmware. Bản cập nhật có thể làm thay đổi giá trị mặc định, bộ lập lịch, các biện pháp giảm thiểu lỗ hổng CPU (mitigations) và cách driver hoạt động.

Vì sao Bản vá bảo mật định kỳ hoặc image server mới làm thay đổi kernel, driver hoặc firmware → Dẫn đến Giá trị mặc định hoặc bộ lập lịch thay đổi, hoặc biện pháp giảm thiểu lỗ hổng mới được bật, khiến cùng một việc tốn nhiều thời gian CPU hơn và thứ tự thread được cấp CPU thay đổi → Trên màn hình Server đang chạy tốt bỗng luôn chậm hơn một chút kể từ ngày cập nhật, gây trễ thao tác; lúc đông người thì giật khựng và quay chậm

Triệu chứng
Trễ thao tác, Giật khựng, Quay chậm
Yếu tố
Độ trễ, Ngưng trệ, Jitter
Ai gặp phải
Cả server
Khi nào
Luôn luôn, Khi đông người
Phụ trách
Phụ trách chính Hạ tầng server (Đội hạ tầng)
Việc cần làm (Đội hạ tầng)
Áp dụng bản cập nhật cho một số server trước, so sánh thời gian tick, độ trễ và mức sử dụng CPU với phiên bản cũ rồi mới mở rộng; triển khai khác ngày với bản cập nhật game; ghi lại phiên bản kernel, driver, firmware và các giá trị sysctl chính trước và sau khi cập nhật; khi có vấn đề, boot bằng kernel cũ để xác nhận; chỉ quyết định tắt giảm thiểu (mitigations=off) sau khi cân nhắc rủi ro bảo mật.
Con số tham khảo
Đổi phiên bản kernel là đổi cả hành vi mặc định. Ví dụ, Linux bắt đầu chuyển bộ lập lịch từ CFS sang EEVDF từ bản 6.6, và giá trị mặc định của giới hạn hàng đợi kết nối (somaxconn) đổi từ 128 lên 4.096 từ bản 5.4. Biện pháp giảm thiểu lỗ hổng CPU thêm việc cho CPU, như xóa bộ đệm nội bộ của CPU khi quay từ kernel về chương trình (mỗi lần kết thúc system call), khi context switch và khi chuyển sang máy ảo, nên server mạng nào gọi system call cho từng gói tin thì càng bị ảnh hưởng nhiều. Một số lỗ hổng muốn chặn hoàn toàn phải tắt SMT (tính năng cho một core chạy như hai thread), và tắt SMT có thể làm hiệu năng giảm mạnh tùy khối lượng công việc. Tham số kernel mitigations=off tắt hết các biện pháp này để lấy lại hiệu năng, nhưng khiến hệ thống bị lộ trước các lỗ hổng.
Trên đồ thị
Tăng như bậc thang từ một thời điểm · Thời gian tick của server, mức sử dụng CPU, độ trễ ở cùng mức tải
Chỗ cần xem
Lịch sử cập nhật trong trình quản lý gói và thời điểm reboot, phiên bản kernel xem bằng uname -r, thông tin driver NIC xem bằng ethtool -i, đối chiếu với thời điểm độ trễ tăng. So sánh server đã cập nhật và chưa cập nhật ở cùng mức tải bằng mpstat, pidstat, và so sánh cả trạng thái giảm thiểu trong /sys/devices/system/cpu/vulnerabilities/
Đúng nếu
độ trễ và mức sử dụng CPU tăng một bậc từ lúc reboot sau cập nhật rồi giữ nguyên, và ở cùng mức tải chỉ server đã cập nhật là cao. Boot bằng kernel hoặc driver cũ thì trở lại như trước
Loại trừ nếu
server đã cập nhật và chưa cập nhật chậm như nhau ở cùng mức tải. Nếu cùng ngày có triển khai bản cập nhật game và số lượng hoặc kích thước gói tin mỗi người chơi thay đổi → “Bản cập nhật làm thay đổi mô hình lưu lượng”
Cách kiểm tra
Kiểm tra bằng công cụ hạ tầng (không cần code game)
Tìm hiểu thêm
Trạng thái giảm thiểu được xem trong các file dưới /sys/devices/system/cpu/vulnerabilities/. Giá trị mặc định (mitigations=auto) giảm thiểu mà vẫn bật SMT, còn nếu đặt auto,nosmt thì SMT bị tắt trên CPU có lỗ hổng, nên sau khi nâng kernel, số core logic có thể giảm một nửa. Cập nhật OS cùng ngày với bản cập nhật game sẽ khó xác định nguyên nhân, nên hãy triển khai riêng.

Nguồn

  1. The kernel’s command-line parameters Linux kernel
    mitigations=: off tắt mọi biện pháp giảm thiểu lỗ hổng CPU để tăng hiệu năng nhưng khiến hệ thống bị lộ trước lỗ hổng; mặc định auto giảm thiểu mà vẫn bật SMT; auto,nosmt tắt SMT khi cần
  2. MDS - Microarchitectural Data Sampling Linux kernel
    Biện pháp giảm thiểu xóa bộ đệm CPU khi quay từ kernel về user space và khi vào máy ảo; xem trạng thái lỗ hổng và giảm thiểu qua các file dưới /sys/devices/system/cpu/vulnerabilities/; nhiều CPU phải tắt SMT mới chặn hoàn toàn được, và tắt SMT có thể ảnh hưởng lớn đến hiệu năng tùy khối lượng công việc
  3. Spectre Side Channels Linux kernel
    Để giảm thiểu, bộ đệm dự đoán rẽ nhánh bị xóa khi context switch và khi chuyển sang máy ảo; biện pháp giảm thiểu mạnh hơn thêm overhead cho mọi chương trình
  4. EEVDF Scheduler Linux kernel
    Linux bắt đầu chuyển từ bộ lập lịch CFS sang EEVDF từ bản 6.6
  5. listen(2) — Linux manual page Linux man-pages
    Giá trị mặc định của somaxconn đổi từ 128 lên 4.096 từ Linux 5.4
  6. ethtool(8) — Linux manual page ethtool
    Xem thông tin driver của thiết bị mạng bằng ethtool -i

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 (Trễ thao tác)

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