Thấy GPU time tăng trong khi CPU time vẫn ổn định, nhiều người vội kết luận card đồ họa đã yếu. Thực tế, đây mới chỉ là gợi ý về vị trí nút thắt, còn nguyên nhân cụ thể phải lần theo các pass đồ họa, tải shader, băng thông dữ liệu và điểm đồng bộ. Bài viết này dựng quy trình chẩn đoán thận trọng dựa trên tài liệu của Radeon GPU Profiler và hệ lệnh stat của Unreal Engine.
Điểm chínhGPU time tăng mà CPU time ổn định gợi ý nút thắt nằm ở phía GPU, nhưng chưa đủ để kết luận. · Cần kiểm tra pass đồ họa, tải shader, băng thông dữ liệu và điểm đồng bộ trước khi khẳng định. · Không dùng ngưỡng benchmark chung cho mọi cấu hình vì mỗi workload có bối cảnh riêng. · Hiểu đúng định nghĩa từng chỉ số trong tài liệu profiler giúp tránh gán nhầm nguyên nhân. · Ghi lại cấu hình, cảnh đo và mốc chỉ số để so sánh công bằng giữa các lần đo.
Đọc đúng ý nghĩa của hai chỉ số
GPU time đo thời gian phía GPU bận xử lý công việc của khung hình, còn CPU time đo thời gian phía CPU chuẩn bị và điều phối công việc đó. Khi GPU time tăng mà CPU time ổn định, dữ kiện cho thấy phía GPU đang tốn thêm thời gian, nhưng chưa cho biết vì sao. [1] Bước đọc đúng là coi đây là hướng điều tra, không phải bản án cho phần cứng.
Tài liệu profiler giúp hiểu mỗi chỉ số được đo ở đâu và bao gồm những gì. Đọc kỹ định nghĩa trước khi so sánh giúp tránh lỗi gán nhầm, ví dụ coi thời gian chờ đồng bộ thành thời gian tính toán. Chỉ khi định nghĩa đã rõ, các bước tiếp theo mới có cơ sở.
Bốn nhóm nguyên nhân cần kiểm tra trước
Nhóm đầu tiên là các pass đồ họa: kiểm tra pass nào phình to, độ phân giải và độ phức tạp của nó có thay đổi không. Nhóm thứ hai là tải shader, gồm biên dịch lần đầu và chuyển đổi trạng thái gây khựng cục bộ. Nhóm thứ ba là băng thông dữ liệu, khi lượng texture và buffer đưa lên GPU tăng đột biến. Nhóm thứ tư là điểm đồng bộ, nơi GPU phải chờ CPU hoặc chờ khung hình trước hoàn tất.
Thứ tự kiểm tra nên đi từ thay đổi gần nhất: bản vá, thiết lập mới hay cảnh mới xuất hiện cùng lúc với hiện tượng. Cách lần ngược từ thay đổi giúp thu hẹp phạm vi thay vì rà soát toàn bộ pipeline. Mỗi phát hiện cần ghi lại kèm mốc đo để so sánh trước sau một cách công bằng.
Dùng lệnh stat để đặt câu hỏi đúng
Hệ lệnh stat của Unreal cho phép bật các lớp chỉ số chi tiết ngay trong lúc chạy, giúp người chẩn đoán thấy bức tranh theo thời gian thực. Thay vì đoán, người dùng có thể bật đúng nhóm chỉ số liên quan tới giả thuyết đang kiểm tra và quan sát phản ứng. [2] Cách làm này biến mỗi giả thuyết thành một phép thử có thể kiểm chứng, chứ không còn là phỏng đoán.
Khi dùng stat, hãy chụp hoặc ghi lại giá trị ở cùng một cảnh và cùng thiết lập để so sánh. So sánh khác cảnh hoặc khác thiết lập sẽ tạo ra chênh lệch giả, khiến nguyên nhân thật bị che lấp. Kỷ luật đo lường là một nửa của chẩn đoán đúng.
Vì sao không nên kết luận vội GPU yếu
GPU time tăng có thể đến từ workload nặng hơn chứ không phải phần cứng yếu đi, ví dụ cảnh mới nhiều hiệu ứng hơn hoặc độ phân giải vô tình bị đẩy lên. Kết luận phần cứng vội vàng dễ dẫn tới nâng cấp lãng phí trong khi nguyên nhân nằm ở thiết lập. Quy trình đúng là loại trừ các nguyên nhân phần mềm và cấu hình trước khi nghĩ tới giới hạn phần cứng. Sau giờ chẩn đoán căng thẳng, bạn có thể đổi không khí với Cùng KLIVE theo dõi các trận đấu quốc tế hôm nay; đây là nội dung thể thao trực tiếp để thư giãn, không phải công cụ đo hiệu năng.
Ngoài ra, không áp ngưỡng benchmark chung cho mọi máy, vì mỗi cấu hình và workload có đường cơ sở riêng. Con số cao trên máy này có thể là bình thường trên máy khác với cảnh nặng hơn. Mọi so sánh chỉ có ý nghĩa khi cùng cấu hình, cùng cảnh và cùng phương pháp đo.
Ghi chép để lần sau chẩn đoán nhanh hơn
Sau mỗi lần điều tra, hãy lưu lại cấu hình, cảnh đo, thiết lập và giá trị chỉ số trước sau. Hồ sơ này giúp lần sau chỉ cần mở lại đường cơ sở thay vì đo từ đầu, và cũng giúp người khác tái hiện đúng điều kiện. Một hồ sơ gọn gồm năm dòng thường hữu ích hơn một báo cáo dài thiếu mốc đo.
Cuối cùng, khi chia sẻ kinh nghiệm, hãy nêu rõ điều kiện đo kèm theo kết luận. Người nhận nhờ đó biết kết luận áp dụng cho phạm vi nào và không áp dụng máy móc sang cấu hình khác. Thói quen này giữ cho thảo luận hiệu năng luôn trung thực và dùng lại được.
Nguồn tham khảo
Câu hỏi thường gặp
GPU time và CPU time khác nhau thế nào?
GPU time phản ánh thời gian phía GPU xử lý công việc của khung hình, còn CPU time phản ánh thời gian phía CPU chuẩn bị và gửi công việc. Khi hai chỉ số tách nhau, nút thắt nằm ở phía tăng lên, nhưng vẫn cần kiểm tra các nguyên nhân cụ thể trước khi kết luận.
Thứ tự kiểm tra khi GPU time tăng gồm những gì?
Kiểm tra các pass đồ họa nặng, hoạt động biên dịch shader, lưu lượng dữ liệu đưa lên GPU và các điểm đồng bộ giữa CPU và GPU. Bốn nhóm này bao phủ phần lớn nguyên nhân khiến GPU time tăng mà CPU time vẫn ổn định.
Có thể dùng một ngưỡng benchmark chung cho mọi máy không?
Không. Một ngưỡng benchmark chỉ đúng cho cấu hình và workload đã đo. Áp ngưỡng chung cho mọi máy sẽ tạo ra kết luận sai, vì vậy mỗi tình huống cần đọc trong bối cảnh cấu hình và nội dung khung hình của nó.
Lệnh stat của Unreal giúp gì cho việc chẩn đoán?
Mở tài liệu lệnh stat của engine để hiểu mỗi chỉ số đo gì và đơn vị ra sao. Khi đã hiểu đúng định nghĩa, người đọc sẽ không gán nhầm ý nghĩa giữa các chỉ số có tên gần giống nhau.