Bạn cần cân nhắc một số yếu tố để xác định xem các luồng quy trình trò chơi có được sử dụng và lên lịch phù hợp để đạt được hiệu suất tốt nhất hay không.
- Tốc độ khung hình
- Đa luồng và song song hoá luồng
- Mối quan hệ giữa luồng và lõi CPU
Đa luồng
Nhiều trò chơi và công cụ trò chơi sử dụng đa luồng để chia công việc của CPU thành các tác vụ logic. Các tác vụ này có thể chạy tương đối độc lập. Một cấu hình điển hình là luồng trò chơi cho logic đầu vào và trò chơi, luồng kết xuất để chuẩn bị và gửi các đối tượng cần vẽ, cũng như các luồng thực thi cho các tác vụ phụ khác như ảnh động hoặc âm thanh.
Bạn nên song song hoá các luồng để tận dụng hiệu suất của đa luồng. Ví dụ về trường hợp này là khi luồng trò chơi và luồng kết xuất đang chạy một phần hoặc hoàn toàn đồng thời trên các lõi khác nhau. Không phải lúc nào điều này cũng có thể thực hiện được, chẳng hạn như trong các trường hợp có các phần phụ thuộc dữ liệu được chia sẻ. Tuy nhiên, khi có thể, điều này có thể dẫn đến thời gian sử dụng CPU thấp hơn và do đó, có thể dẫn đến tốc độ khung hình cao hơn.
Mối quan hệ giữa luồng và lõi CPU
Một yếu tố ảnh hưởng đáng kể đến hiệu suất của khối lượng công việc CPU là cách các khối lượng công việc này được lên lịch trên các lõi. Yếu tố này có thể được chia thành 2 thành phần:
- Liệu các luồng trò chơi có đang chạy trên lõi phù hợp nhất cho khối lượng công việc của chúng hay không.
- Liệu các luồng trò chơi có chuyển đổi giữa các lõi thường xuyên hay không.
Các thiết bị hiện đại thường sử dụng một cấu trúc có tên là điện toán dị hợp, trong đó các lõi có mức hiệu suất khác nhau:
- Một hoặc một vài lõi mang lại hiệu suất cao nhất, nhưng tiêu thụ nhiều điện hơn. Những lõi này đôi khi được gọi là lõi "lớn".
- Các lõi khác có hiệu suất cao nhất thấp hơn, nhưng tiết kiệm điện hơn. Những lõi này đôi khi được gọi là lõi "nhỏ".
- Không bắt buộc: một hoặc nhiều lõi mang lại sự cân bằng giữa hiệu suất và điện năng. Những lõi này đôi khi được gọi là lõi "trung bình".
Bạn có thể điều tra hành vi của luồng CPU trong phần Mức sử dụng CPU bằng cách bật CPU trong cấu hình hồ sơ khi lấy dấu vết. Bằng cách phóng to một phần của dấu vết <200 ms, bạn có thể xem các quy trình riêng lẻ đang chạy trên các lõi CPU của thiết bị. Thông thường, các lõi nhỏ hơn tương ứng với các chỉ mục nhỏ hơn (ví dụ: CPU "0" – "3"), trong khi các lõi lớn hơn tương ứng với các chỉ mục cao hơn (ví dụ: CPU "6" – "7") và các lõi trung bình (nếu có) sẽ chiếm các chỉ mục ở giữa (ví dụ: CPU "5" – "6"). Đây là quy ước chung, nhưng không đảm bảo luôn như vậy.
Nếu bạn thấy rằng một số luồng đang được lên lịch trên các CPU không đáp ứng nhu cầu về hiệu suất hoặc điện năng, hãy cân nhắc đặt mối quan hệ giữa luồng và CPU theo cách thủ công cho các luồng đó.
Bạn cũng có thể quan sát xem các luồng có chuyển đổi giữa các lõi hay không. Việc chuyển đổi lõi như vậy sẽ phát sinh một số chi phí từ việc chuyển đổi ngữ cảnh và mất trạng thái với bộ nhớ đệm/thanh ghi của lõi.
Việc đặt mối quan hệ giữa luồng và CPU sẽ hướng dẫn hệ thống lên lịch cho luồng đó trên lõi đã cho khi trò chơi của bạn ở nền trước. Bạn cần cân nhắc một số yếu tố khi thực hiện việc này:
- Phần mềm nền tảng không thể điều chỉnh vị trí tác vụ một cách linh hoạt cho các yếu tố thời gian chạy như tải và điều tiết nhiệt.
Việc kiểm tra hiệu suất trên các thiết bị khác nhau có thể mang lại các đặc điểm hiệu suất rất khác nhau, đặc biệt là nếu các thiết bị có sự khác biệt đáng kể về mức giá hoặc ngày phát hành.
Một thiết bị mới hơn hoặc đắt tiền hơn có thể chạy thoải mái một khối lượng công việc nhất định trên một lõi nhỏ, nhưng một thiết bị cũ hơn hoặc có giá cả phải chăng hơn có thể yêu cầu một lõi lớn hơn để đáp ứng thời hạn cho cùng một khối lượng công việc đó.
Bằng cách buộc mối quan hệ với các lõi lớn, bạn có thể làm tăng mức tiêu thụ pin và tải nhiệt một cách không cần thiết.
Vì những lý do này, bạn thường nên tránh đặt mối quan hệ giữa luồng và CPU theo cách thủ công.