19 điểm bởi GN⁺ 2025-09-04 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp
  • Thông thường, giới hạn hiệu năng máy chủ được đánh giá bằng % sử dụng CPU từ các công cụ giám sát như top, nhưng trên thực tế chỉ số này không phản ánh hiệu năng theo tuyến tính
  • Kết quả thử nghiệm với stress-ng trong môi trường Ryzen 9 5900X cho thấy, khi mức sử dụng là 50% thì khối lượng công việc thực tế đã đạt 60~100%, tạo ra độ lệch lớn so với chỉ số
  • Nguyên nhân chính là hyper-threadingturbo boost, khi việc chia sẻ tài nguyên giữa các lõi logic và sự thay đổi xung nhịp làm méo mó chỉ số
  • Vì vậy, thay vì chỉ nhìn vào mức sử dụng CPU đơn thuần, so sánh benchmark khối lượng công việc thực tế có thể xử lý với thông lượng hiện tại là chỉ số chính xác hơn
  • Nếu diễn giải mức sử dụng CPU theo cách tuyến tính thì sẽ gây ra sai số lớn trong ước tính hiệu năng, nên khi lập kế hoạch hệ thống cần có cách tiếp cận dựa trên benchmark

Sự không khớp giữa chỉ số sử dụng CPU của máy chủ và thông lượng thực tế

  • Khi vận hành máy chủ, nhiều người muốn biết hệ thống có đang gần mức sử dụng tối đa hay không
  • Thông thường, họ tham chiếu giá trị cao nhất trong các chỉ số mạng, bộ nhớ, CPU thông qua các công cụ giám sát như top
  • Tuy nhiên, trên thực tế có vấn đề là chỉ số sử dụng CPU và khối lượng công việc có thể xử lý không tăng theo tuyến tính

Môi trường và phương pháp thử nghiệm

  • Thí nghiệm dựa trên Ubuntu Desktop + Ryzen 9 5900X (12 lõi/24 luồng)
  • Bật Precision Boost Overdrive (Turbo)
  • Mô phỏng nhiều mức tải khác nhau (1~24 worker, 1~100% mức sử dụng) bằng stress-ng
  • Chỉ số đo lường: mức sử dụng CPU do hệ thống báo cáo và lượng tính toán thực tế (Bogo ops)

Tóm tắt kết quả

  • Tải CPU thông thường: ở mức sử dụng 50%, thông lượng thực tế là 60~65%
  • Phép toán số nguyên 64-bit: ở mức sử dụng 50%, thông lượng thực tế là 65~85%
  • Phép toán ma trận (Matrix math): ở mức sử dụng 50%, thông lượng thực tế là 80~100%
    • Trên thực tế, ngay cả khi worker bổ sung không còn đóng góp vào hiệu năng, mức sử dụng CPU vẫn tăng

Phân tích nguyên nhân

  • Hyper-threading

    • Cấu trúc gồm 12 lõi vật lý + 12 lõi logic
    • Với từ 12 worker trở xuống, chúng được phân bố tối ưu lên các lõi vật lý; nhưng khi vượt quá, hiệu năng giảm do chia sẻ lõi logic
    • Đặc biệt trong phép toán SIMD (phép toán ma trận), do không có tài nguyên chia sẻ phù hợp nên không thể tăng hiệu năng
  • Turbo boost

    • Khi tải thấp: 4.9GHz → khi full load: 4.3GHz, tức xung nhịp giảm 15%
    • Công thức tính mức sử dụng CPU (= busy cycles / total cycles) bị méo mó
      • Khi mẫu số (tổng số chu kỳ) giảm, mức tăng của tỷ lệ sử dụng bị đánh giá cao hơn khối lượng công việc thực tế

Hàm ý thực tiễn

  • Mức sử dụng CPU không phải là chỉ số hiệu năng tuyệt đối
  • Khi tính toán dung lượng máy chủ và dự đoán hiệu năng:
    • 1. Đo thông lượng tối đa bằng benchmark
    • 2. Giám sát thông lượng thời gian thực
    • 3. So sánh hai giá trị để đánh giá liệu hệ thống có đang tiến gần giới hạn hiệu năng hay không
  • Do khác biệt rất lớn tùy theo kiến trúc CPU (AMD vs Intel), hiệu quả hyper-threading, và cách turbo hoạt động, nên cần phân tích theo từng bộ xử lý

Kết luận

  • Mức sử dụng CPU chỉ đơn thuần là tỷ lệ chu kỳ bận, không phản ánh chính xác hiệu năng xử lý thực tế
  • Ngay cả khi "mức sử dụng 50%", hệ thống vẫn có thể đã ở 80~100% hiệu năng tối đa nếu được tận dụng hiệu quả
  • Vì vậy, giám sát hiệu năng và lập kế hoạch hệ thống nên tập trung vào thông lượng công việc dựa trên benchmark thay vì mức sử dụng CPU

Chưa có bình luận nào.

Chưa có bình luận nào.