Oyun süreci ileti dizilerinizin uygun şekilde kullanılıp en iyi performansı sunacak şekilde kullanılıp kullanılmadığını belirlemek için dikkate almanız gereken birkaç nokta vardır.
- Kare ilerleme hızı
- Çoklu iş parçacığı oluşturma ve iş parçacığı paralel yapma
- CPU çekirdeği benzeşimi
Çoklu iş parçacığı oluşturma
Birçok oyun ve oyun motoru, CPU işini mantıksal görevlere ayırmak için çoklu iş parçacıklarını kullanır. Bunlar, birbirinden bağımsız olarak da çalıştırılabilir. Tipik bir yapılandırma; giriş ve oyun mantığı için bir oyun iş parçacığı, çizilecek nesneleri hazırlayıp göndermek için bir oluşturma iş parçacığı ve animasyonlar veya ses gibi diğer alt görevler için çalışan iş parçacıklarıdır.
Çoklu iş parçacığının performans kazancından yararlanmak için iş parçacıklarını paralel hale getirmenizi öneririz. Oyunun ve oluşturma iş parçacıklarının farklı çekirdeklerde kısmen veya tamamen eşzamanlı olarak çalıştığı bir senaryoya örnek olarak verilebilir. Bu durum, paylaşılan veri bağımlılıkları gibi durumlarda her zaman mümkün değildir. Ancak mümkün olduğunda bu, CPU sürelerinin daha düşük olmasına ve dolayısıyla daha yüksek kare hızlarına yol açabilir.
![Paralel ana ve oluşturma iş parçacığının yanı sıra çalışan iş parçacığı ve ses iş parçacığına sahip oyun](https://developer.android.com/static/images/agi/threads-scheduling-images/sample_multithreading.png?authuser=5&hl=tr)
CPU çekirdeği benzeşimi
CPU iş yüklerinizin performansını önemli ölçüde etkileyen faktörlerden biri, iş yüklerinizin çekirdeklerde nasıl planlandığını gösterir. Bu, iki bileşene ayrılabilir:
- Oyun iş parçalarınızın iş yükü için en uygun çekirdekte çalışıp çalışmadığı
- Oyun iş parçalarınızın çekirdekler arasında sık sık geçiş yapıp yapmadığı.
Modern cihazlar genellikle çekirdeklerin farklı performans seviyelerine sahip olduğu heterojen bilgi işlem adı verilen bir mimari kullanır:
- Bir veya birkaç çekirdek en yüksek performansı sunuyor ancak daha fazla güç tüketiyor. Bunlara bazen "büyük" çekirdekler denir.
- Diğer çekirdekler daha düşük en yüksek performansa sahiptir ancak güç daha verimlidir. Bunlara bazen "küçük" çekirdekler denir.
- İsteğe bağlı olarak: Bir veya daha fazla çekirdek, performans ile güç arasında bir denge sağlar. Bunlara bazen "orta" çekirdekler denir.
İzleme alırken profil yapılandırmasında CPU'yu etkinleştirerek CPU Kullanımı altında CPU iş parçacığı davranışını inceleyebilirsiniz. İzlemenizin 200 ms'den küçük bir bölümünü yakınlaştırarak cihazınızın CPU çekirdeklerinde çalışan işlemleri ayrı ayrı görüntüleyebilirsiniz. Tipik olarak, küçük çekirdekler daha küçük dizinlere (ör. "0"-3" CPU'lar) karşılık gelirken daha büyük çekirdekler daha yüksek dizinlere (ör. "6"-7" CPU'lar) karşılık gelir ve varsa orta çekirdekler bunların arasındaki dizinleri alır (ör. "5"-6" CPU'lar). Bu, genel olarak uygulanan bir uygulama olsa da garanti değildir.
Belirli iş parçacıklarının performans veya güç gereksinimlerini karşılamayan CPU'larda planlandığını fark ederseniz bu iş parçacıkları için CPU benzeşimini manuel olarak ayarlamayı düşünebilirsiniz.
![Ana ve oluşturma iş parçacığı esas olarak büyük çekirdeklerde (CPU 6-7) çalışan ve açık mavi renkte gösterilen oyun](https://developer.android.com/static/images/agi/threads-scheduling-images/sample_bigcores.png?authuser=5&hl=tr)
İleti dizilerinizin çekirdekler arasında geçiş yapıp yapmadığını da gözlemleyebilirsiniz. Bu tür çekirdek anahtarlar, bağlam geçişi nedeniyle bir miktar ek yüke ve çekirdeğin önbelleğine/kayıtlarına ilişkin durum kaybına neden olur.
![Ana (Thread-7) ve çekirdekler arasında geçiş yapan oluşturma iş parçacığı (Thread-8) içeren, mor renkte gösterilen oyun](https://developer.android.com/static/images/agi/threads-scheduling-images/sample_coreswitching.png?authuser=5&hl=tr)
Bir iş parçacığı için CPU benzeşiminin ayarlanması, oyununuz ön plandayken sisteme onu belirtilen çekirdekte programlaması talimatını verir. Bunu yaparken göz önünde bulundurulması gereken birkaç faktör vardır:
- Platform yazılımı, yük ve termal kısıtlama gibi çalışma zamanı faktörlerine göre görev yerleşimini dinamik olarak ayarlayamaz.
Farklı cihazlardaki performans testleri, özellikle de cihazlar fiyat noktasına veya yayın tarihine göre önemli ölçüde değişiklik gösteriyorsa çok farklı performans özellikleri sağlayabilir.
Daha yeni veya daha pahalı bir cihaz, belirli bir iş yükünü küçük çekirdeklerde rahat bir şekilde çalıştırabilir. Ancak eski veya daha uygun fiyatlı bir cihaz, aynı iş yükünde teslim tarihlerine uymak için daha büyük bir çekirdek gerektirebilir.
Büyük çekirdeklere yakın ilgiyi zorunlu kılarak pil tüketimini ve termal yükü gereksiz yere artırabilirsiniz.
Bu nedenlerle, CPU yakın ilgi alanlarını manuel olarak ayarlamaktan kaçınmak genellikle en iyisidir.