İleti dizisi planlamasını analiz etme

Oyun süreci ileti dizilerinizin uygun şekilde kullanılıp kullanılmadığını ve en iyi performans için planlanıp ayarlanmadığını belirlemek için dikkate alınması gereken birkaç nokta vardır.

  • Kare hızı
  • Çoklu iş parçacığı işleme ve iş parçacığı paralelleştirme
  • CPU çekirdeği benzeşimi

Çoklu iş parçacığı işleme

Birçok oyun ve oyun motoru, CPU çalışmasını bir şekilde bağımsız olarak çalıştırılabilen mantıksal görevlere bölmek için çoklu iş parçacığı kullanır. Tipik bir yapılandırma, girdi ve oyun mantığına yönelik bir oyun iş parçacığı, çizilecek nesneleri hazırlamak ve göndermek için kullanılan bir oluşturma iş parçacığı ve animasyonlar ya da ses gibi diğer alt görevler için çalışan iş parçacıklarıdır.

Çoklu iş parçacığı işlemesinin performans kazanımlarından yararlanmak için iş parçacıklarını paralel hale getirmenizi öneririz. Buna örnek olarak oyun ve oluşturma iş parçacıklarının farklı çekirdeklerde kısmen veya tamamen eş zamanlı olarak çalıştığı bir senaryo verilebilir. Bu, paylaşılan veri bağımlılıkları gibi durumlarda her zaman mümkün değildir. Ancak mümkün olduğunda, bu durum CPU sürelerinin azalmasına, dolayısıyla potansiyel olarak daha yüksek kare hızlarına neden olabilir.

İyi paralelleştirilmiş bir ana ve oluşturma iş parçacığı, ayrıca bir çalışan iş parçacığı ve ses ileti dizisi içeren oyun
Şekil 1. İyi paralelleştirilmiş bir ana ve oluşturma iş parçacığı, ayrıca bir çalışan iş parçacığı ve ses ileti dizisi içeren oyun

CPU çekirdeği benzeşimi

CPU iş yüklerinizin performansını önemli ölçüde etkileyen faktörlerden biri, çekirdekler üzerinde nasıl planlandığıdır. Bu durum iki bileşene ayrılabilir:

  • Oyun ileti dizilerinizin performans açısından en iyi çekirdeklerde çalışıp çalışmadığı
  • Oyun ileti dizilerinizin ç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ı bölümünde CPU iş parçacığı davranışını inceleyebilirsiniz. İzinizin 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 (örneğin, CPU 0-3) karşılık gelirken büyük çekirdekler daha yüksek dizinlere (örneğin, CPU 6-7) karşılık gelir.

Genellikle, oyun ön plandayken oyun ileti dizisi ve oluşturma iş parçacığı gibi kalıcı iş parçacıkları yüksek performanslı büyük çekirdeklerde çalışmalı, diğer işlem ve çalışan iş parçacıkları ise daha küçük çekirdekler için planlanabilir.

Ağırlıklı olarak büyük çekirdeklerde (CPU 6-7) çalışan ana ve oluşturma iş parçacığı içeren oyun, açık mavi renkte gösterilir
Şekil 2. Ağırlıklı olarak büyük çekirdeklerde (CPU 6-7) çalışan ana ve oluşturma iş parçacığı içeren oyun; açık mavi renkle gösterilir

Ana ve oluşturma iş parçacıklarınız tek bir CPU çerçevesi içinde veya iki ardışık CPU karesi arasında çekirdekleri değiştiriyorsa oyun ileti dizilerinizin çekirdekler arasında sık sık geçiş yapıp yapmadığını da gözlemleyebilirsiniz. Bu CPU davranışı, oyun ileti dizilerinizin düzgün şekilde ilişkilendirilmediğinin göstergesi olabilir. Bu tür çekirdek anahtarları, bağlam anahtarından ve çekirdeğin önbelleğinin/kayıtlarının durum kaybından dolayı bir miktar ek yüke neden olarak CPU karenizin uzunluğunda bir artışa neden olur.

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