İleti dizisi planlamasını analiz etme

Oyun sürecinizdeki iş parçacıklarının en iyi performans için uygun şekilde kullanılıp planlandığını belirlemek üzere göz önünde bulundurmanız gereken birkaç nokta vardır.

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

Çoklu iş parçacığı

Birçok oyun ve oyun motoru, CPU çalışmasını biraz 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ırmada; 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 animasyon veya ses gibi diğer alt görevler için çalışan iş parçacıkları bulunur.

Çoklu iş parçacığının performans avantajlarından yararlanmak için iş parçacıklarını paralelleştirmenizi ö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. Paylaşılan veri bağımlılıklarının olduğu durumlarda bu her zaman mümkün olmayabilir. Ancak mümkün olduğunda bu durum, CPU sürelerinin kısalmasına ve dolayısıyla kare hızlarının artmasına yol açabilir.

İyi paralelleştirilmiş ana ve oluşturma iş parçacığının yanı sıra çalışan iş parçacığı ve ses iş parçacığı içeren oyun
Şekil 1. İyi paralelleştirilmiş ana ve oluşturma iş parçacığının yanı sıra çalışan iş parçacığı ve ses iş parçacığı içeren oyun

CPU çekirdeği benzeşimi

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

  • Oyun iş parçacıklarınızın, iş yükleri için en uygun çekirdekte çalışıp çalışmadığı.
  • Oyun iş parçacıklarınızın çekirdekler arasında sık sık geçiş yapıp yapmadığı

Modern cihazlarda genellikle heterojen bilgi işlem adı verilen bir mimari kullanılır. Bu mimaride çekirdekler farklı performans düzeylerine sahiptir:

  • Bir veya birkaç çekirdek en yüksek performansı sunar ancak daha fazla güç tüketir. Bunlara bazen "büyük" çekirdekler denir.
  • Diğer çekirdeklerin en yüksek performansı daha düşüktür ancak daha az güç tüketirler. Bunlara bazen "küçük" çekirdekler denir.
  • İsteğe bağlı: Bir veya daha fazla çekirdek, performans ve güç arasında denge sağlar. Bunlara bazen "orta" çekirdekler de denir.

İzleme yaparken profil yapılandırmasında CPU'yu etkinleştirerek CPU Kullanımı bölümünde CPU iş parçacığı davranışını inceleyebilirsiniz. İzlemenizin <200 ms olan 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 daha küçük çekirdekler daha küçük indekslere (örneğin, "0"-"3" numaralı CPU'lar) karşılık gelirken daha büyük çekirdekler daha yüksek indekslere (örneğin, "6"-"7" numaralı CPU'lar) karşılık gelir. Orta çekirdekler varsa aradaki indeksleri (örneğin, "5"-"6" numaralı CPU'lar) kullanır. Bu, genel bir uygulamadır ancak garanti edilmez.

Belirli iş parçacıklarının performans veya güç ihtiyaçlarını karşılamayan CPU'larda planlandığını fark ederseniz bu iş parçacıkları için CPU yakınlığını manuel olarak ayarlamayı düşünebilirsiniz.

Ana ve oluşturma iş parçacıklarının öncelikle büyük çekirdeklerde (CPU 6-7) çalıştığı oyun (açık mavi renkte gösterilir)
Şekil 2. Ana ve oluşturma iş parçacığının öncelikle büyük çekirdeklerde (CPU 6-7) çalıştığı oyun, açık mavi renkte gösterilir

Ayrıca, iş parçacıklarınızın çekirdekler arasında geçiş yapıp yapmadığını da gözlemleyebilirsiniz. Bu tür temel geçişler, bağlam geçişinden ve temel önbelleği/kayıtlarıyla durum kaybından kaynaklanan ek yükler oluşturur.

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

Bir iş parçacığı için CPU yakınlığı ayarlamak, oyununuz ön planda olduğunda sistemi iş parçacığını belirtilen çekirdekte planlaması için yönlendirir. Bunu yaparken göz önünde bulundurmanız gereken birkaç faktör vardır:

  • Platform yazılımı, yük ve termal kısıtlama gibi çalışma zamanı faktörleri için görev yerleşimini dinamik olarak ayarlayamaz.
  • Farklı cihazlarda yapılan performans testleri, özellikle cihazlar fiyat noktası veya yayınlanma tarihi açısından önemli ölçüde farklılık gösteriyorsa çok farklı performans özellikleri ortaya çıkarabilir.

    Daha yeni veya daha pahalı bir cihaz, belirli bir iş yükünü küçük bir çekirdekte rahatça çalıştırabilir ancak daha eski veya daha uygun fiyatlı bir cihazın aynı iş yükünün son tarihlerine uymak için daha büyük bir çekirdeğe ihtiyacı olabilir.

  • Benzerlikleri büyük çekirdeklerle zorlayarak pil tüketimini ve termal yükü gereksiz yere artırabilirsiniz.

Bu nedenlerden dolayı, CPU yakınlıklarını manuel olarak ayarlamaktan kaçınmak genellikle en iyisidir.