Skip to content
Lyme Regis Arts Festival Jurassic Coast · Est. 2007

GPU nhàn trong một khung hình có đủ chứng minh nghẽn CPU không?

By admin ·
Tóm tắt

Một khung hình có GPU ít việc không đủ chứng minh CPU là nút thắt. GPU có thể đang chờ dữ liệu hoặc lệnh, nhưng cũng có thể do cảnh đơn giản, giới hạn frame rate, đồng bộ, tải không ổn định hay cách công cụ lấy mẫu. Muốn xác định nguyên nhân, cần xem timeline của Game Thread, Draw Thread và GPU qua nhiều frame, rồi kiểm tra đúng đoạn công việc gây chậm thay vì suy luận từ một phần trăm tổng hợp.

Điểm chính

  1. Epic mô tả Timing Insights như công cụ phân tích thời gian và sự kiện của Unreal; hãy đối chiếu các track thay vì một số tổng quát. [1]
  2. CSV Profiler ghi các chỉ số theo frame nhưng cần chọn counter, khoảng đo và ngữ cảnh workload phù hợp. [2]
  3. GPU chờ có thể phù hợp giả thuyết CPU-bound, nhưng hàng đợi, đồng bộ, giới hạn tốc độ và dữ liệu lấy mẫu cũng ảnh hưởng.
  4. So sánh frame chậm với frame bình thường, giữ nguyên cảnh và thiết lập, đồng thời ghi Game/Draw/GPU time.
  5. Tài liệu Unreal hướng dẫn công cụ; không xác nhận một dự án cụ thể, cũng không cho biết KLIVE có dùng Unreal.

Một frame GPU nhàn cho biết điều gì

Nếu GPU hoàn tất công việc sớm hơn nhịp khung hình quan sát được, hoặc có khoảng trống giữa các lệnh trên timeline, đó là dấu hiệu đáng điều tra. Một khả năng là CPU chưa chuẩn bị lệnh hay dữ liệu đủ nhanh để GPU tiếp tục. Tuy nhiên, “GPU nhàn” chỉ mô tả trạng thái ở khoảng thời gian đo; nó chưa chỉ ra ai gây ra khoảng trống, cũng chưa khẳng định phần CPU nào là nguyên nhân.

Illustration: Một frame GPU nhàn cho biết điều Decorative illustration for the section "Một frame GPU nhàn cho biết điều"; visual only, carries no data.

Phần trăm sử dụng GPU thường được tổng hợp trong một khoảng lấy mẫu. Một giá trị thấp có thể che khuất những đỉnh tải ngắn, hoặc bị ảnh hưởng bởi giới hạn tốc độ khung hình và thời gian chờ đồng bộ. Ngược lại, mức sử dụng cao không tự chứng minh mọi frame đều bị GPU-bound. Vì vậy, nên bắt đầu từ thời gian mỗi frame và quan hệ giữa các track, không lấy chỉ số utilization đơn lẻ làm phán quyết.

Timing Insights của Unreal cung cấp cách xem sự kiện và thời lượng qua các track; việc đọc timeline cho thấy tác vụ nào chạy nối tiếp, song song hay chờ nhau. Hãy chọn một đoạn có hiện tượng rõ, khoanh vùng frame đại diện và so sánh với frame bình thường. Đừng trộn thời gian mở editor, tải tài nguyên hoặc biên dịch shader với phép đo gameplay nếu câu hỏi chỉ về frame trong lúc chơi. [1]

Tách Game, Draw và GPU time

Game Thread thường thực hiện logic gameplay và chuẩn bị một phần công việc; Draw Thread hoặc Render Thread chuẩn bị, gửi lệnh đồ họa; GPU thực thi các lệnh đã nhận. Tên track và kiến trúc cụ thể có thể đổi theo phiên bản, nền tảng và cấu hình. Ý nghĩa quan trọng là các công đoạn có thể chồng lấp qua nhiều frame. Do đó, thời gian của từng track không nhất thiết cộng lại thành đúng một frame time.

Nếu Game Thread mất nhiều thời gian và thường xuyên trở thành đường găng, CPU gameplay có thể giới hạn tốc độ. Nếu Draw Thread kéo dài, chi phí chuẩn bị lệnh đồ họa hoặc đồng bộ có thể đáng xem xét. Nếu GPU time dài nhất trong một chuỗi frame tương ứng, giới hạn có thể nằm ở GPU. Nhưng mỗi dấu hiệu đều cần xác nhận bằng sự kiện bên trong track và phép thử có kiểm soát; một tác vụ CPU dài nhưng nằm ngoài đường găng không nhất thiết làm frame chậm.

CSV Profiler cho phép ghi các counter theo frame để đối chiếu biến động và tìm khoảng thời gian bất thường. Cần chọn những counter phù hợp, lưu cấu hình capture và so sánh cùng workload; dữ liệu CSV không tự giải thích nguyên nhân. Một cột tăng có thể là tương quan, vì vậy hãy quay lại trace chi tiết để xem sự kiện nào chiếm thời gian. [2]

Cách kiểm tra giả thuyết nghẽn CPU

Tạo phép đo lặp lại ở cùng cảnh, cùng vị trí camera và cùng thiết lập đồ họa. Ghi ít nhất nhiều frame liên tiếp thay vì một frame riêng lẻ, đồng thời lưu phiên bản Unreal, hệ điều hành, driver và cấu hình đồng bộ. Đợi quá trình tải tài nguyên hoặc shader hoàn tất trước khi capture nếu mục tiêu là hiệu năng ổn định. Nếu sự cố chỉ xảy ra trong lúc tải, đó là một câu hỏi khác và cần ghi riêng.

Illustration: Cách kiểm tra giả thuyết nghẽn Decorative illustration for the section "Cách kiểm tra giả thuyết nghẽn"; visual only, carries no data.

Trong trace, đánh dấu những frame có thời gian tổng tăng rõ. So thời gian Game Thread và Draw Thread với GPU time, xác định công đoạn nào nằm trên đường găng, rồi mở rộng vào vùng có sự kiện tốn thời gian. Nếu nghi CPU, giảm có kiểm soát một loại công việc CPU hoặc đơn giản hóa logic trong bản thử nghiệm; xem frame time có cải thiện nhất quán không. Nếu chỉ tắt một giới hạn frame mà tỷ lệ GPU thay đổi, đó không đủ để xác định nguyên nhân ban đầu.

Thực hiện thay đổi từng biến một và chạy lại nhiều lượt. Chú ý nhiệt độ, xung nhịp, tiến trình nền, VSync, giới hạn FPS và thời gian chờ GPU fence; những yếu tố này có thể tạo dao động hoặc khoảng trống. Báo cáo kết quả nên kèm trace, phạm vi frame và điều kiện đo, thay vì ghi kết luận “CPU bottleneck” dựa trên một ảnh chụp hoặc biểu đồ tổng hợp.

Những ngộ nhận cần tránh

Không đồng nhất “GPU không chạy liên tục” với “CPU yếu”. Độ phức tạp của cảnh, thời điểm lấy mẫu, pipeline shader, bộ nhớ, truyền dữ liệu và cách ứng dụng đồng bộ đều có thể tạo khoảng trống. Cũng không nên nhìn một track CPU dài rồi quy toàn bộ độ trễ cho CPU nếu nó không chặn frame tiếp theo. Phải xác định luồng phụ thuộc và thứ tự công việc ở đúng frame.

Một benchmark tổng thể hữu ích để so sánh hai cấu hình, nhưng không thay thế trace chẩn đoán. Counter có thể thay đổi định nghĩa hoặc cách ghi giữa phiên bản engine và nền tảng; khi so dữ liệu, giữ cùng phiên bản và cấu hình profiler. Epic khuyến nghị cách dùng công cụ cụ thể trong tài liệu tương ứng; đối chiếu hướng dẫn của đúng bản Unreal đang chạy trước khi kết luận. [1] [2]

Chủ đề này là kỹ thuật profiling trò chơi, không phải mô tả hạ tầng của một dịch vụ phát nội dung. Người đọc muốn xem thông tin thể thao có thể tham khảo Xem nhanh các giải bóng đá quốc tế tại KLIVE; liên kết không có nghĩa KLIVE sử dụng Unreal Engine hay gặp vấn đề hiệu năng nêu trên.

Nguồn tham khảo

  1. Epic Games — Timing Insights
  2. Epic Games — CSV Profiler

Câu hỏi thường gặp

GPU thấp trong một frame có chứng minh CPU-bound không?

Không. Đó là dấu hiệu để điều tra; cần xem trace, đường găng và nhiều frame trong cùng workload.

Nên bắt đầu đọc track nào?

Đối chiếu Game Thread, Draw/Render Thread và GPU time, sau đó mở sự kiện chi tiết ở các frame chậm.

CSV Profiler có tự xác định nguyên nhân không?

Không. Nó ghi counter theo cấu hình; người phân tích cần đối chiếu với trace và kiểm soát điều kiện đo.

Cần lấy mẫu bao nhiêu frame?

Không có số cố định cho mọi workload. Hãy thu nhiều frame ổn định, gồm các frame chậm và bình thường, rồi lặp lại phép đo.

Ten days of art, sea and stories — on the Jurassic Coast.

Now in its 18th edition. Free entry throughout, across 27 venues in and around Lyme Regis. Download the 2025 programme guide.

Get the 2025 Programme