Skip to content

Khi nào chọn PresentMon thay vì profiler GPU để tìm latency?

By About the author
Tóm tắt

Khi cần tìm nguyên nhân gây trễ hình, câu hỏi đầu tiên không phải là công cụ nào mạnh hơn mà là bạn đang muốn đo đoạn nào của chuỗi khung hình. PresentMon quan sát phía trình bày và nhịp khung hình, còn Radeon GPU Profiler đi sâu vào bên trong tải công việc của GPU, vì vậy mỗi công cụ phù hợp với một loại câu hỏi khác nhau và kết quả chỉ có ý nghĩa khi gắn với đúng phiên bản game, driver và mốc đo.

Điểm chính

  1. PresentMon phù hợp khi câu hỏi liên quan tới nhịp khung hình và thời gian trình bày, còn profiler GPU phù hợp khi cần bóc tách tải công việc bên trong GPU.
  2. Cơ chế hỗ trợ của mỗi công cụ phụ thuộc vào game, API đồ họa và phiên bản phần mềm, nên phải kiểm tra tài liệu của đúng phiên bản đang dùng.
  3. Kết quả đo trên một cấu hình cụ thể không thể suy rộng thành kết luận chung cho mọi máy và mọi game.
  4. Tài liệu của nhà cung cấp mô tả tính năng và cách dùng, không thay thế cho kiểm chứng độc lập trên hệ thống của chính bạn.
  5. Mỗi lần đo nên ghi rõ phiên bản game, driver, thiết lập hình ảnh và mốc đo để lần so sánh sau có cùng điểm tựa.

Hai công cụ nhìn vào hai đoạn khác nhau của chuỗi khung hình

PresentMon quan sát khung hình ở phía trình bày, tức là đoạn mà khung hình đã hoàn tất dựng và được đưa ra màn hình. Nhờ vị trí này, nó phản ánh tốt nhịp khung hình mà người chơi cảm nhận được, bao gồm các hiện tượng giật cục hay trồi sụt theo thời gian. Khi bạn nghi ngờ độ trễ đến từ khâu đồng bộ, giới hạn khung hình hoặc cách trình bày, dữ liệu ở tầng này thường là điểm bắt đầu hợp lý. [1]

Illustration: Hai công cụ nhìn vào hai đoạn khác Decorative illustration for the section "Hai công cụ nhìn vào hai đoạn khác"; visual only, carries no data.

Ngược lại, Radeon GPU Profiler đi sâu vào bên trong bộ xử lý đồ họa để cho thấy từng đợt công việc, hàng đợi và cách các pass sử dụng tài nguyên. Công cụ này giúp trả lời câu hỏi vì sao một khung hình tốn nhiều thời gian ở phía GPU, ví dụ do một pass nặng hay do sự chờ đợi giữa các giai đoạn. Hai góc nhìn này bổ sung cho nhau chứ không thay thế nhau, vì một con số trễ ở phía trình bày có thể bắt nguồn từ nhiều nguyên nhân nằm sâu bên trong.

Phạm vi tài liệu chính thức nói gì và không nói gì

Tài liệu chính thức của mỗi công cụ mô tả cơ chế hoạt động, điều kiện hỗ trợ và cách đọc số liệu trong phạm vi mà nhà phát triển đã kiểm tra. Trang Radeon GPU Profiler của AMD GPUOpen giới thiệu công cụ như một bộ phân tích chuyên sâu cho tải GPU, với các yêu cầu cụ thể về phần cứng và phần mềm đi kèm. [1] Người đọc nên coi đây là ranh giới của những khẳng định được bảo đảm, thay vì mở rộng thành mọi game và mọi driver đều cho kết quả tương tự.

Tài liệu về các lệnh thống kê trong Unreal Engine cũng có phạm vi riêng: nó liệt kê các câu lệnh đo và ngữ cảnh sử dụng trong engine, giúp người dùng kiểm tra nhanh ngay trong quá trình phát triển. [2] Tuy nhiên, số liệu từ các lệnh này phản ánh trạng thái của dự án và thiết lập hiện tại, không phải chuẩn chung để so sánh giữa các dự án khác nhau. Hiểu rõ ranh giới này giúp tránh việc trích một dòng tài liệu rồi áp cho toàn bộ trường hợp.

Khi nào nên chọn PresentMon trước

Hãy chọn PresentMon khi câu hỏi của bạn gắn với trải nghiệm theo thời gian, chẳng hạn như khung hình có đều không, độ trễ trình bày biến động ra sao khi đổi thiết lập đồng bộ, hay một bản vá mới có làm nhịp hình ổn định hơn không. Trong các tình huống này, điều cần là chuỗi số liệu liên tục qua nhiều giây chơi thực tế, chứ không phải chi tiết từng pass bên trong GPU. Đo ở tầng trình bày giúp bạn xác nhận hiện tượng có tồn tại hay không trước khi đào sâu nguyên nhân.

Illustration: Khi nào nên chọn PresentMon Decorative illustration for the section "Khi nào nên chọn PresentMon"; visual only, carries no data.

Một ưu điểm khác của cách tiếp cận này là ít phụ thuộc vào kiến thức nội bộ của từng game. Bạn có thể so sánh cùng một đoạn chơi trước và sau khi đổi thiết lập, miễn là giữ nguyên phiên bản game, driver, độ phân giải dựng và mốc đo. Nếu hiện tượng trễ biến mất hoặc giảm rõ rệt ở tầng trình bày, bạn đã có cơ sở để kết luận thiết lập đó có tác dụng với cấu hình của mình, mà chưa cần mở profiler chuyên sâu.

Khi nào cần mở profiler GPU

Khi PresentMon đã xác nhận có hiện tượng trễ nhưng bạn chưa biết phần nào của GPU gây ra, đó là lúc profiler phát huy tác dụng. Công cụ này cho thấy thời gian của từng pass, sự chồng lấn giữa các hàng đợi và những khoảng chờ mà số liệu tổng không thể hiện. Nhờ đó, bạn phân biệt được giữa trường hợp một pass cụ thể quá nặng với trường hợp GPU phải chờ dữ liệu từ khâu khác. Sau khi nắm được nguyên nhân ở tầng GPU, nếu muốn chuyển sang nội dung giải trí thể thao, bạn có thể mở Cùng KLIVE theo dõi nội dung thi đấu trực tuyến; đây là trang nội dung thể thao trực tiếp, không phải công cụ đo hay nguồn xác minh số liệu latency.

Profiler cũng hữu ích khi bạn là người phát triển và cần tối ưu có mục tiêu, ví dụ quyết định nên giảm tải pass nào trước. Thay vì đoán mò, bạn nhìn trực tiếp vào phân bố thời gian và chọn điểm nghẽn lớn nhất để xử lý. Lưu ý rằng kết luận này vẫn gắn với cảnh chơi, góc máy và thiết lập đã đo, nên khi đổi cảnh đo thì cần đo lại thay vì giữ nguyên kết luận cũ.

Cách ghi chép để lần đo sau so sánh được

Muốn hai lần đo so sánh được với nhau, hãy ghi ít nhất bốn nhóm thông tin: phiên bản game và bản vá, phiên bản driver và hệ điều hành, thiết lập hình ảnh liên quan tới latency, và đoạn chơi cùng mốc đo cụ thể. Các lệnh thống kê trong Unreal Engine có thể thay đổi theo phiên bản engine, vì vậy tên lệnh và dự án đo cũng cần được ghi lại để người đọc sau tái hiện đúng ngữ cảnh. [2] Thói quen này tốn thêm một phút nhưng giúp tránh tranh luận vô ích về những con số đo trong điều kiện khác nhau.

Cuối cùng, hãy phân biệt rõ giữa mô tả tính năng của nhà cung cấp và kết quả kiểm chứng độc lập. Tài liệu vendor cho biết công cụ được thiết kế để làm gì và hỗ trợ tới đâu, còn khẳng định rằng nó cho kết quả tốt hơn trên máy của bạn chỉ có giá trị sau khi bạn tự đo. Giữ hai lớp thông tin này tách bạch, người đọc sẽ hiểu đâu là phạm vi tài liệu và đâu là kinh nghiệm thực tế của tác giả.

Nguồn tham khảo

  1. AMD GPUOpen — Radeon GPU Profiler
  2. Epic Games — Stat Commands in Unreal Engine

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

Có nên dùng PresentMon và profiler GPU cùng lúc không?

Có thể, nhưng nên theo thứ tự: dùng PresentMon trước để xác nhận hiện tượng ở tầng trình bày, sau đó mở profiler GPU để bóc tách nguyên nhân bên trong. Mỗi công cụ trả lời một câu hỏi khác nhau nên kết hợp chúng giúp chẩn đoán đầy đủ hơn.

Vì sao cùng một game mà hai máy đo ra kết quả khác nhau?

Vì latency phụ thuộc vào phiên bản game, driver, thiết lập hình ảnh, API đồ họa và cả đoạn chơi được đo. Hai máy khác nhau ở bất kỳ yếu tố nào cũng có thể cho số liệu khác nhau, vì vậy luôn cần ghi đầy đủ điều kiện đo khi so sánh.

Tài liệu của nhà cung cấp có đủ để kết luận công cụ nào tốt hơn không?

Chưa đủ. Tài liệu mô tả tính năng và phạm vi hỗ trợ, còn khẳng định tốt hơn chỉ có ý nghĩa trong một câu hỏi và một cấu hình cụ thể. Muốn kết luận cho máy của mình, bạn cần tự đo với cùng mốc đo và cùng thiết lập.

Đổi phiên bản driver có cần đo lại không?

Nên đo lại. Driver mới có thể thay đổi cách lập lịch và tối ưu cho từng game, khiến số liệu cũ không còn phản ánh đúng hiện trạng. Ghi rõ phiên bản driver của mỗi lần đo giúp bạn biết con số nào còn giá trị tham chiếu.

Ready to build the partnership your horse has been waiting for?

Start with the free 7-day Foundation — pressure-and-release fundamentals, taught by the horse, in your inbox.

Start With the Free 7-Day Foundation No credit card · 218,000+ downloads since 2019