İleti dizisi planlamasını analiz etme

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
Şekil 1. İyi paralelleştirilmiş bir 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

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 performans için en iyi çekirdeklerde çalışıp çalışmadığı
  • Oyun iş parçalarınızın çekirdekler arasında sık sık geçiş yapıp yapmadığı

İ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. Genellikle küçük çekirdekler daha küçük dizinlere (ör. CPU 0-3), büyük çekirdekler ise daha yüksek dizinlere (ör. 6-7 CPU) karşılık gelir.

Genel olarak oyun ön plandayken oyun iş parçacığı ve oluşturma iş parçacığı gibi kalıcı iş parçacıkları, yüksek performanslı büyük çekirdeklerde çalışırken diğer işlem ve çalışan iş parçacıkları daha küçük çekirdeklerde planlanabilir.

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
Şekil 2. Ana ve oluşturma iş parçacığının ağırlıklı olarak büyük çekirdeklerde (CPU 6-7) çalıştığı, açık mavi renkte gösterilen oyun

Ayrıca, oyun iş parçacıklarınızın çekirdekler arasında sık sık geçiş yapıp yapmadığını, ana ve oluşturma iş parçacığınızın tek bir CPU çerçevesi içinde veya iki ardışık CPU çerçevesi arasında çekirdekleri değiştirip değiştirmediğini de gözlemleyebilirsiniz. Bu CPU davranışı, muhtemelen oyun iş parçacıklarınızın doğru bir şekilde ilişkilendirilmediğini gösterir. Bu tür çekirdek anahtarlar, bağlam anahtarı nedeniyle biraz ek yüke ve çekirdeğin önbelleği/kayıtlarıyla durum kaybına neden olarak CPU çerçevenizin uzunluğunu artırır.

Ana (Thread-7) ve çekirdekler arasında geçiş yapan oluşturma iş parçacığı (Thread-8) içeren, mor renkte gösterilen oyun
Şekil 3. Ana (Thread-7) ve çekirdekler arasında geçiş yapan oluşturma iş parçacığı (Thread-8) içeren, mor renkte gösterilen oyun