Ada beberapa hal yang perlu dipertimbangkan untuk menentukan apakah thread proses game Anda dimanfaatkan dan dijadwalkan dengan tepat untuk performa terbaik.
- Kecepatan frame
- Multithreading dan paralelisasi thread
- Afinitas core CPU
Multithreading
Banyak game dan mesin game menggunakan multithreading untuk membagi pekerjaan CPU menjadi tugas logis, yang dapat dijalankan secara agak independen. Salah satu konfigurasi umum adalah thread game untuk input dan logika game, thread render untuk menyiapkan dan mengirimkan objek yang akan digambar, serta thread pekerja untuk sub-tugas lainnya seperti animasi atau audio.
Sebaiknya paralelkan thread untuk memanfaatkan peningkatan performa multithreading. Contohnya adalah skenario saat thread game dan render berjalan sebagian atau sepenuhnya secara bersamaan di core yang berbeda. Hal ini tidak selalu mungkin dilakukan, seperti dalam kasus dengan dependensi data bersama; namun, jika memungkinkan, hal ini dapat menghasilkan waktu CPU yang lebih rendah dan berpotensi menghasilkan kecepatan frame yang lebih tinggi.
Afinitas core CPU
Salah satu faktor yang memengaruhi performa workload CPU Anda secara signifikan adalah cara workload tersebut dijadwalkan pada core. Hal ini dapat dibagi menjadi dua komponen:
- Apakah thread game Anda berjalan di core yang paling sesuai untuk workload-nya.
- Apakah thread game Anda sering beralih antar-core.
Perangkat modern sering menggunakan arsitektur yang disebut heterogeneous computing, dengan core yang memiliki tingkat performa yang berbeda:
- Satu atau beberapa core menawarkan performa puncak terbaik, tetapi mengonsumsi lebih banyak daya. Inti ini terkadang disebut inti "besar".
- Inti lainnya memiliki performa puncak yang lebih rendah, tetapi lebih hemat daya. Core ini terkadang disebut core "kecil".
- Opsional: satu atau beberapa core menawarkan keseimbangan antara performa dan daya. Core ini terkadang disebut core "menengah".
Anda dapat menyelidiki perilaku thread CPU di bagian Penggunaan CPU dengan mengaktifkan CPU dalam konfigurasi profil saat merekam aktivitas. Dengan memperbesar bagian rekaman aktivitas <200 md, Anda dapat melihat setiap proses yang berjalan di core CPU perangkat Anda. Biasanya, core yang lebih kecil sesuai dengan indeks yang lebih kecil (misalnya, CPU '0'-'3'), sedangkan core yang lebih besar sesuai dengan indeks yang lebih tinggi (misalnya, CPU '6'-'7') dan core tengah jika ada akan menempati indeks di antaranya (misalnya, CPU '5'-'6'). Hal ini berdasarkan konvensi umum, tetapi tidak dijamin.
Jika Anda mendapati bahwa thread tertentu dijadwalkan di CPU yang tidak memenuhi kebutuhan performa atau daya, pertimbangkan untuk menetapkan afinitas CPU secara manual untuk thread tersebut.
Anda juga dapat mengamati apakah thread Anda beralih di antara core. Pergantian inti seperti itu menimbulkan beberapa overhead dari pergantian konteks dan hilangnya status dengan cache/register inti.
Menyetel afinitas CPU untuk thread menginstruksikan sistem untuk menjadwalkannya di core tertentu saat game Anda berada di latar depan. Ada beberapa faktor yang perlu dipertimbangkan saat melakukannya:
- Software platform tidak dapat menyesuaikan penempatan tugas secara dinamis untuk faktor runtime seperti beban dan pembatasan termal.
Pengujian performa di perangkat yang berbeda dapat menghasilkan karakteristik performa yang sangat berbeda, terutama jika perangkat sangat bervariasi berdasarkan titik harga atau tanggal rilis.
Perangkat yang lebih baru atau lebih mahal mungkin menjalankan workload tertentu dengan nyaman di core kecil, tetapi perangkat yang lebih lama atau lebih terjangkau mungkin memerlukan core yang lebih besar untuk memenuhi tenggat waktu workload yang sama.
Dengan memaksakan afinitas ke core besar, Anda dapat meningkatkan pengurasan baterai dan beban termal secara tidak perlu.
Karena alasan ini, sebaiknya hindari menyetel afinitas CPU secara manual.