Skip to content
SS9SS / FIELD NOTES·

Unreal Insights dùng timeline để điều tra spike CPU và GPU như thế nào?

By SS9SS Digital
Tóm tắt

Một spike trên biểu đồ tổng chỉ báo rằng thời gian của một frame hoặc một đoạn xử lý tăng lên; nó chưa cho biết khâu nào gây ra. Unreal Insights hữu ích khi người đọc chuyển từ đường tổng quan sang timeline, đặt các luồng CPU và GPU cạnh nhau, rồi lần theo sự kiện tại đúng khoảng thời gian bất thường. Cách đọc tốt không phải tìm một con số duy nhất để đổ lỗi, mà là dựng lại chuỗi công việc: luồng nào chuẩn bị lệnh, lúc nào công việc được gửi, GPU bắt đầu và hoàn tất khi nào, và có khoảng chờ nào xuất hiện giữa chúng. Epic mô tả Timing Insights như công cụ phân tích các sự kiện và thời gian trong trace; hướng dẫn tham chiếu cũng nhấn mạnh dữ liệu phụ thuộc các trace channel đã thu.

Điểm chínhBắt đầu từ frame hoặc khoảng thời gian có spike, sau đó phóng to timeline; tránh suy luận chỉ từ mức sử dụng CPU/GPU trung bình. [1] · Đặt các track CPU và GPU cạnh nhau để phân biệt công việc thực thi với khoảng chờ hoặc thời điểm gửi lệnh. · Nếu trace thiếu track hay sự kiện cần thiết, kiểm tra cấu hình trace channel trước khi kết luận dữ liệu không tồn tại. [2] · So sánh nhiều lần capture cùng cảnh, cùng thiết lập và bản build; ghi lại thay đổi để tránh nhầm nhiễu với nguyên nhân. · Unreal Insights cho thấy quan hệ thời gian trong capture, nhưng tự nó không chứng minh một thay đổi tối ưu hóa sẽ cải thiện mọi máy.

Bắt đầu từ dấu hiệu, không bắt đầu từ phán đoán

Khi thấy một nhịp khựng, hãy ghi lại thời điểm, cảnh đang chạy, thao tác vừa thực hiện và liệu hiện tượng có lặp lại hay không. Trong trace, tìm vùng frame tương ứng thay vì chọn một đoạn dài tùy ý. Chú ý xem độ dài frame tăng ở đâu và hiện tượng chỉ xuất hiện một lần hay lặp thành chuỗi. Spike đơn lẻ có thể trùng với tải tài nguyên, biên dịch hoặc hoạt động nền; timeline giúp định vị sự kiện đồng thời, nhưng sự đồng thời chưa tự chứng minh quan hệ nhân quả.

Illustration: Bắt đầu từ dấu hiệu Decorative illustration for the section "Bắt đầu từ dấu hiệu"; visual only, carries no data.

Timing Insights trình bày dữ liệu theo trục thời gian và các track sự kiện. Bắt đầu ở mức tổng quan để nhận diện frame bất thường, rồi phóng to khu vực đó. Giữ một khoảng trước và sau spike để nhìn thấy hoạt động dẫn tới nó và phần việc tiếp theo. Nếu chỉ cắt đúng đỉnh, người đọc có thể bỏ mất đoạn CPU chờ GPU, hoặc GPU nhàn vì chưa nhận được lệnh. [1]

Đọc CPU và GPU như một chuỗi phối hợp

CPU thường xử lý logic trò chơi, chuẩn bị công việc render và gửi lệnh; GPU thực hiện các công việc đồ họa đã được đưa vào hàng đợi. Vì vậy, hai track không nhất thiết bắt đầu và kết thúc đồng thời. Khi CPU có một khoảng dài trước khi gửi việc, hãy kiểm tra các sự kiện trên thread liên quan và thời điểm chúng kết thúc. Khi GPU bận lâu trong cùng frame, xem các khoảng công việc GPU tương ứng. Nếu CPU chờ trong lúc GPU bận, câu hỏi khác với trường hợp GPU đang rảnh nhưng chưa có việc.

Không nên coi một track tổng mang nhãn CPU là đại diện cho mọi thread. Xác định track cụ thể, tên sự kiện, thời lượng và mối quan hệ với frame. Cũng cần phân biệt thời gian xử lý với thời gian chờ: một khoảng trống trên track không nhất thiết là lỗi, và một lệnh present bị chặn không tự động chứng minh GPU quá tải. Tài liệu Unreal Insights là bản tham chiếu về cách tổ chức, thu thập và xem dữ liệu; diễn giải phải gắn với trace thực tế đang mở. [2]

Thiết lập capture để không bỏ sót bằng chứng

Trước khi thu trace, xác định câu hỏi cần trả lời: spike nằm ở game thread, render thread, GPU hay trong quan hệ giữa các khâu? Chỉ bật dữ liệu cần thiết cho câu hỏi, nhưng bảo đảm các track CPU, GPU và frame liên quan được ghi nhận. Các trace channel quyết định nhóm dữ liệu nào xuất hiện; channel không được bật thì trace có thể thiếu thông tin cần thiết, dù công việc vẫn xảy ra trong ứng dụng. [2]

Illustration: Thiết lập capture để không bỏ sót Decorative illustration for the section "Thiết lập capture để không bỏ sót"; visual only, carries no data.

Lưu thông tin về phiên thử: phiên bản Unreal, cấu hình build, cảnh, độ phân giải, thiết lập đồ họa, thiết bị và cách tái hiện spike. Đóng hoặc giữ nguyên các ứng dụng nền nhất quán giữa những lần đo. Nếu thay đổi nhiều yếu tố cùng lúc, khó biết yếu tố nào làm timeline khác đi. Capture có thể lớn và tốn chi phí, nên thu một tình huống đại diện, kiểm tra dữ liệu trước, rồi mở rộng khi cần.

Từ timeline đến giả thuyết có thể kiểm tra

Khi vùng bất thường đã được xác định, viết giả thuyết theo dạng có thể bác bỏ: chẳng hạn một đoạn CPU kéo dài trước khi gửi lệnh, hoặc một công việc GPU chiếm phần lớn khoảng frame. Sau đó thay đổi một yếu tố liên quan, chạy lại cùng kịch bản và so sánh các track tương ứng. Đừng biến tương quan thời gian thành khẳng định rằng một hàm hay thiết bị là nguyên nhân nếu trace chưa cho thấy chuỗi bằng chứng.

Người đọc mới có thể trận đấu bóng đá mới nhất tại KLIVE rồi quay lại quy trình phân tích với cùng nguyên tắc: tách điều quan sát được khỏi điều suy đoán. Với trace, hãy lưu capture gốc và ghi rõ phiên bản công cụ. Nếu kết quả không lặp lại, báo cáo sự dao động thay vì chọn lần đo thuận tiện nhất. Kết luận nên nêu rõ điều gì đã thấy, phần nào chưa có dữ liệu và phép thử kế tiếp.

Nguồn tham khảo

  1. Epic Games — Timing Insights
  2. Epic Games — Unreal Insights Reference (UE 5.1)

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

Một spike CPU có đồng nghĩa CPU là nút thắt không?

Không. Cần xem thread nào kéo dài và quan hệ thời gian với GPU, frame và việc gửi lệnh; counter tổng không đủ để xác định nút thắt.

Tại sao không thấy track GPU trong trace?

Kiểm tra phiên bản, cấu hình capture và trace channel. Nếu dữ liệu GPU không được thu, timeline không thể dùng để khẳng định GPU làm gì trong khoảng đó.

Có thể so sánh hai trace khác cấu hình không?

Có thể xem khác biệt, nhưng cần ghi rõ cấu hình vì thay đổi build, cảnh hoặc thiết lập có thể làm kết quả không còn so sánh trực tiếp.

Một lần capture có đủ để xác nhận nguyên nhân không?

Thường không. Capture lặp lại trong cùng điều kiện giúp nhận biết dấu hiệu ổn định và tách biến động ngẫu nhiên.