Phân tích hiệu suất

Việc lập hồ sơ và điều chỉnh hiệu suất là một nhiệm vụ phức tạp, có thể giống như một nghệ thuật hơn là một khoa học. Nhiều thành phần chuyển động cần được đồng bộ hoá hoàn hảo trong một trò chơi, kết hợp với độ phức tạp trong một cảnh nhất định có thể khiến việc tìm hiểu và cô lập các vấn đề trở nên khó khăn. Trên ChromeOS, nhiều công cụ được thiết kế dành cho chipset ARM. Dưới đây là một số mẹo giúp bạn đẩy nhanh quá trình này.

Một điều cần lưu ý khi tối ưu hoá hiệu suất trò chơi trên ChromeOS là các vấn đề về hiệu suất cơ bản sẽ xuất hiện trên mọi thiết bị và những điểm cải thiện sẽ giúp nâng cao hiệu suất cũng như thời lượng pin cho tất cả người dùng. ChromeOS có xu hướng sử dụng màn hình lớn hơn và thiết bị đầu vào cho máy tính, nên có thể dễ dàng phát hiện ra một số vấn đề. Ví dụ: một thuật toán tải hoạ tiết không hiệu quả có thể "hoạt động bình thường" trên các thiết bị di động cao cấp hơn, nhưng không thể theo kịp trên Chromebook có màn hình 4K. Việc cải thiện thuật toán sẽ giúp trò chơi hoạt động hiệu quả hơn trên mọi thiết bị.

Nếu bạn mới bắt đầu lập hồ sơ, một phương pháp chung hiệu quả là:

  1. Xác định xem hiệu suất có bị giới hạn bởi:
    • CPU
    • GPU
    • Khác: Đầu vào/Đĩa/Mạng
  2. Cố gắng xác định nguyên nhân chính
  3. Cố gắng tối ưu hoá
  4. Lặp lại

Trong hầu hết các trường hợp, trò chơi sẽ cho thấy chúng là "CPU-bound" (phụ thuộc vào CPU) hoặc "GPU-bound" (phụ thuộc vào GPU). Bằng cách sử dụng các mẹo và công cụ lập hồ sơ bên dưới, hãy cố gắng xác định vị trí mà hệ thống "dành thời gian" cho mỗi khung hình. Ví dụ: nếu mất nhiều thời gian để tính toán và tải các đỉnh trước khi GPU bắt đầu kết xuất, thì trò chơi của bạn có thể bị giới hạn bởi CPU. Thay vào đó, nếu bạn đang sử dụng một số lượng lớn bộ lọc chi tiết dựa trên GPU, thì trò chơi của bạn có khả năng bị ràng buộc bởi GPU. Hãy nhớ rằng nhiều điện thoại di động và thiết bị ChromeOS không có card đồ hoạ rời. Một trò chơi trên máy tính giả định rằng các bộ lọc GPU hoạt động nhanh có thể nhận thấy GPU tích hợp mất quá nhiều thời gian để kết xuất từng cảnh.

Để biết thêm thông tin chi tiết về cách tiếp cận việc lập hồ sơ, hãy xem hướng dẫn của ARM về "Quy trình tối ưu hoá".

Công cụ

Mặc dù bạn hoàn toàn có thể tự xác định các điểm tắc nghẽn, nhưng việc có các công cụ phù hợp sẽ giúp bạn phân tích hiệu suất của trò chơi dễ dàng hơn và giúp bạn tự tin rằng mình đang tập trung vào những điều phù hợp. Có rất nhiều công cụ, nhưng đây là một số chương trình mà chúng tôi thường dùng.

Trình phân tích tài nguyên Android Studio

Cách dễ nhất để bắt đầu phân tích hiệu suất cho mọi ứng dụng Android là sử dụng trình phân tích tài nguyên Android Studio tích hợp. Trong Android Studio, thay vì nhấn vào "Run" (Chạy), bạn chỉ cần chọn "Profile" (Phân tích tài nguyên) để chạy ứng dụng và xem thông tin chi tiết theo thời gian thực về mức sử dụng CPU, bộ nhớ và mạng. Dấu vết CPU đơn giản có thể là một cách nhanh chóng để cô lập các vùng mã cần xem xét.

Công cụ này không cung cấp thông tin chi tiết thực tế về mức sử dụng GPU cũng như những gì đang xảy ra giữa mỗi lần đồng bộ hoá khung hình. Vì vậy, mặc dù là một công cụ hữu ích trong bộ công cụ, nhưng có thể công cụ này sẽ không đủ để giúp trò chơi của bạn chạy ở hiệu suất cao nhất.

Snapdragon Profiler

Vì hành vi của trò chơi sẽ giống nhau trên các thiết bị, nên một cách hay để nhận thông tin chi tiết về hiệu suất là sử dụng Snapdragon Profiler trên điện thoại ARM dựa trên Qualcomm. Mặc dù không trực tiếp lập hồ sơ trên thiết bị ChromeOS, nhưng điều này sẽ cung cấp cho bạn thông tin về thời gian mà trò chơi của bạn dành nhiều nhất cho mỗi khung hình và có thể cung cấp cho bạn thông tin chi tiết về những lệnh gọi GPU cụ thể đang được sử dụng.

Ví dụ: nếu thấy rằng bạn đang dành nhiều thời gian cho các bộ lọc GPU dị hướng và bộ lọc này đang chi phối công việc được thực hiện trên mỗi khung hình, thì bạn có thể đạt được một số mức tăng hiệu suất lớn bằng cách thay đổi chế độ cài đặt này.

Nếu bạn thấy thời gian GPU ngắn và đều đặn, nhưng thời gian CPU chiếm ưu thế và khiến bạn bỏ lỡ các lần đồng bộ hoá khung hình, hãy xem xét các thuật toán tải kết cấu/chuẩn bị khung hình.

Hãy xem tài liệu chính thức về cách sử dụng để biết thêm thông tin.

ARM Mobile Studio

Một trình phân tích hiệu suất thiết bị ARM hữu ích khác là ARM Mobile Studio. Một số nhà phát triển có thể thích công cụ này hơn Snapdragon Profiler, nhưng bạn có thể sử dụng công cụ này theo cách tương tự. Hãy xem tài liệu sử dụng chính thức.

Android GPU Inspector

Android GPU Inspector là một công cụ mới do Google phát triển và được thiết kế đặc biệt để giúp bạn khai thác hiệu suất tối đa cho trò chơi của mình bằng cả OpenGL và Vulkan. Tính năng này hiện đang ở trạng thái xem trước dành cho nhà phát triển và có thể cần một số thao tác để thiết lập, đồng thời hiện chỉ hoạt động trên một số ít thiết bị. Đây hứa hẹn sẽ là một trong những công cụ chính để sử dụng cho việc lập hồ sơ đồ hoạ trong tương lai. Xem tài liệu chính thức.

Theo dõi tổng quan về ARC

Ngoài ra, còn có một công cụ tổng quát hơn là ARC Overview Tracing (Theo dõi tổng quan về ARC), hoạt động tương tự như công cụ ARC Graphics Tracing (Theo dõi đồ hoạ ARC) nêu trên. Trình theo dõi này sẽ cung cấp các chỉ số cấp cao về hiệu suất của ứng dụng và ChromeOS. Thông tin đọc sẽ cho bạn biết FPS của ứng dụng và của chính Chrome, cũng như mức sử dụng CPU, mức sử dụng GPU, mức tiêu thụ điện năng và nhiều thông tin khác. Bạn có thể chạy công cụ này nhiều lần và xem các biểu đồ cho từng lần chạy được xếp chồng lên nhau bằng các màu sắc để phân biệt chúng. Mỗi mô hình theo dõi sẽ được lưu vào thư mục Tải xuống và có thể được nhập lại để so sánh trong tương lai. Đối với các quy trình kiểm tra tình trạng chung của ứng dụng, bạn nên bắt đầu bằng ARC Overview Tracing.

Truy cập vào chrome://arc-overview-tracing trong trình duyệt trên ChromeOS để sử dụng công cụ này.

Các bước tiếp theo

Vậy nên có thể bạn đã tìm thấy một số điểm tắc nghẽn nhưng không biết phải làm gì. Hoặc bạn đã tìm thấy và giải quyết các vấn đề đó nhưng không biết nên làm gì tiếp theo. Dưới đây là danh sách các mẹo và tài nguyên chung về Android và các mẹo và tài nguyên dành riêng cho công cụ.

Mẹo chung

Cổng thông tin dành cho nhà phát triển Android có một số mẹo hữu ích để tăng hiệu suất của ứng dụng. Bạn có thể tìm thấy các yếu tố cần cân nhắc về thời gian tải, cách tận dụng tính năng đa luồng, cách xử lý độ trễ đầu vào và nhiều yếu tố khác tại đó.

Hãy nhớ lập hồ sơ sớm và thường xuyên, đặc biệt nếu bạn đang nhắm đến những máy có hiệu suất thấp hoặc vượt quá giới hạn của cấu trúc cấp cao. Việc theo dõi số liệu thống kê về hiệu suất của ứng dụng sẽ giúp bạn xác định những thay đổi làm giảm tốc độ khung hình và những thay đổi giúp bạn duy trì trải nghiệm mượt mà mà bạn đang hướng đến.

Công cụ Unity

Ngoài tài liệu chung về Android, Unity còn cung cấp tài liệu dành riêng cho ChromeOS để giúp bạn tạo một ứng dụng ChromeOS hiệu quả bằng cách sử dụng công cụ của họ. Hãy xem tài liệu của họ về ChromeOS về cách bắt đầu, đầu vào, gỡ lỗitạo, trong đó có cách tạo bản dựng x86. Để biết nội dung của họ về hiệu suất, hãy xem phần tìm hiểu về việc tối ưu hoá và khoá học của họ về hiệu suất và việc tối ưu hoá.

Hãy cân nhắc đọc hướng dẫn của ARM về phân tích tài nguyên và tối ưu hoá trò chơi Unity cũng như các phương pháp hay nhất liên quan. Hướng dẫn này sẽ giúp bạn thực hiện quy trình phân tích tài nguyên cho một trò chơi mẫu trong Unity bằng công cụ Streamline, một khía cạnh của ARM Mobile Studio.

Unreal Engine

Unreal đã viết hướng dẫn về hiệu suất và tài liệu mẹo hay riêng để hướng dẫn bạn cách tận dụng hiệu quả nhiều lựa chọn và chế độ cài đặt mà công cụ này cung cấp. Tại đây, bạn sẽ tìm thấy những nội dung như mẹo về Cấp độ chi tiết, cách tận dụng tối đa ánh sáng, hướng dẫn từng bước về chế độ cài đặt chất lượng vật liệu và chương trình đổ bóng, cùng nhiều đề xuất khác.

Để biết thêm các phương pháp tối ưu hoá dựa trên đồ hoạ, ARM đã viết một hướng dẫn để tối ưu hoá trò chơi di động. Bạn có thể xem các mẹo tối ưu hoá chung cũng như các điểm cần lưu ý về đồ hoạ dành riêng cho Unreal tại đây.