Kapasiteyle ilgili takılmaları belirleme

Kapasite, bir cihazın belirli bir süre boyunca sahip olduğu belirli bir kaynağın (CPU, GPU vb.) toplam miktarıdır. Bu sayfada, kapasiteyle ilgili takılma sorunlarının nasıl tanımlanacağı ve ele alınacağı açıklanmaktadır.

Vali yavaş tepki veriyor

Takılma olmaması için CPU frekans denetleyicisinin ani iş yüklerine hızlı yanıt vermesi gerekir. Çoğu kullanıcı arayüzü uygulaması aynı temel kalıbı izler:

  1. Kullanıcı ekranı okuyor.
  2. Kullanıcı ekrana dokunur: Bir düğmeye dokunur, sayfayı kaydırır vb.
  3. Ekran, girişe yanıt olarak kaydırılır, etkinliği değiştirir veya bir şekilde animasyon gösterir.
  4. Yeni içerik gösterilirken sistem sessizleşir.
  5. Kullanıcı ekranı okumaya geri döner.

Pixel ve Nexus cihazlar, dokunma sırasında CPU frekans denetleyicisinin (ve planlayıcısının) davranışını değiştirmek için dokunma desteğini uygular. Yüksek saat frekansına yavaşça geçiş yapılmasını (cihazın dokunma sırasında kare düşürmesine neden olabilir) önlemek için dokunma desteği genellikle dokunma sırasında yeterli CPU kapasitesinin kullanılabilmesini sağlamak amacıyla CPU'da bir frekans tabanı belirler. Katlar, dokunulduktan sonra bir süre (genellikle yaklaşık iki saniye) görünür.

Pixel, ek bir dokunma artışı sinyali olarak Enerji Tasarruflu Planlama (EAS) tarafından sağlanan schedtune cgroup'i de kullanır: En iyi uygulamalar, hızlı çalışabilmek için yeterli CPU kapasitesine sahip olmak amacıyla schedtune aracılığıyla ek ağırlık alır. Nexus 5X ve 6P'de, küçük ve büyük CPU kümeleri (sırasıyla A53 ve A57) arasındaki performans farkı, Kryo CPU'ya sahip Pixel'e kıyasla çok daha büyüktür. Küçük CPU kümesinin, özellikle cihazdaki diğer titreşim kaynakları göz önüne alındığında, kullanıcı arayüzünün sorunsuz şekilde oluşturulması için her zaman yeterli olmadığını tespit ettik.

Buna göre, Nexus 5X ve 6P'de dokunma desteği, planlayıcı davranışını değiştirerek ön plan uygulamalarının büyük çekirdeklere taşınma olasılığını artırır (bu, CPU frekansındaki tabana kavramsal olarak benzer). Ön plan uygulamalarının büyük CPU kümesine taşınma olasılığını artıracak planlayıcı değişikliği olmadan, planlayıcı iş parçacığının yük dengesini büyük bir CPU çekirdeğine taşımaya karar verene kadar ön plan uygulamaları oluşturmak için yeterli CPU kapasitesine sahip olmayabilir. Dokunma artışı sırasında planlayıcı davranışını değiştirerek kullanıcı arayüzü iş parçacığının hemen büyük bir çekirdekte çalışmasını ve her zaman büyük bir çekirdekte çalışmasını zorunlu kılmadan takılmalardan kaçınmasını sağlayabilirsiniz. Bu, güç tüketimi üzerinde ciddi etkileri olabilecek bir durumdur.

Termal kısıtlama

Termal kısıtlama, cihazın genel termal çıkışını azaltması gerektiğinde gerçekleşir. Bu işlem genellikle CPU, GPU ve DRAM saatlerinin düşürülmesiyle gerçekleştirilir. Sistem artık belirli bir zaman diliminde oluşturmak için yeterli kapasite sağlayamadığından, bu durum genellikle takılmalara neden olur. Termal kısıtlamayı önlemenin tek yolu daha az güç kullanmaktır. Bunu yapmanın pek çok yolu yoktur ancak geçmiş SOC'lerle ilgili deneyimlerimizden yola çıkarak sistem tedarikçileri için birkaç önerimiz var.

Öncelikle, heterojen CPU mimarilerine sahip yeni bir SOC oluştururken CPU kümelerinin performans/W eğrilerinin çakıştığından emin olun. İşlemcinin tamamı için genel performans/W eğrisi sürekli bir çizgi olmalıdır. Performans/Güç eğrisinde kesintiler olması, planlayıcıyı ve sıklık denetleyiciyi iş yükünün ne tür bir güce ihtiyaç duyduğunu tahmin etmeye zorlar. Planlayıcı ve sıklık denetleyici, takılmaları önlemek için iş yüküne ihtiyaç duyduğundan daha fazla kapasite verir. Bu da çok fazla güç harcamasına neden olur ve termal kısıtlamaya yol açar.

İki CPU kümesine sahip varsayımsal bir SOC'yi düşünün:

  • Küçük küme olan 1. küme 100-300 mW harcayabilir ve saatlere bağlı olarak bir aktarım hızı karşılaştırmasında 100-300 puan alır.
  • Büyük küme olan 2. küme 1.000 ila 1.600 mW harcayabilir ve saatlere bağlı olarak aynı aktarım hızı karşılaştırmasında 800 ila 1.200 arasında puan alır.

Bu karşılaştırmada, puan ne kadar yüksekse hız o kadar yüksektir. Daha yavaştan daha iyi olmasa da daha hızlı = daha fazla güç tüketimi.

Planlayıcı, bir kullanıcı arayüzü iş yükünün bu aktarım hızı karşılaştırmasında 310 puanın eşdeğerini gerektirdiğini düşünüyorsa takılmaları önlemek için en iyi seçeneği, büyük kümeyi en düşük sıklıkta çalıştırarak önemli miktarda güç harcamaktır. (Bu, cpuidle davranışına ve boşta kalma yarışına bağlıdır; sürekli performans/W eğrilerine sahip SOC'ların optimizasyonu daha kolaydır.)

İkinci olarak, cpuset'leri kullanın. Çekirdekte ve BoardConfig.mk'te cpuset'leri etkinleştirdiğinizden emin olun. Cihazınıza özel init.rc dosyasında gerçek cpuset atamalarını da ayarlamanız gerekir. Bazı tedarikçiler, planlayıcı davranışını etkilemek için başka ipuçları kullanabilecekleri umuduyla bu özelliği BSP'lerinde devre dışı bırakır. Bunun mantıklı olmadığını düşünüyoruz. cpuset'ler, CPU'lar arasında yük dengelemenin kullanıcının cihazda gerçekten ne yaptığını yansıtacak şekilde yapılmasını sağlamak için yararlıdır.

ActivityManager, uygulamaların göreceli önemine (üst, ön plan, arka plan) göre farklı cpuset'lere atar. Daha önemli uygulamalar, CPU çekirdeklerine daha fazla erişim elde eder. Bu, ön plandaki ve en üstteki uygulamalar için hizmet kalitesini sağlamaya yardımcı olur.

cpuset'ler homojen CPU yapılandırmalarında kullanışlıdır ancak cpuset'ler etkinleştirilmeden heterojen CPU yapılandırmasına sahip bir cihazı göndermemelisiniz. Nexus 6P, heterojen CPU yapılandırmalarında cpuset'lerin nasıl kullanılacağı konusunda iyi bir modeldir. Kendi cihazınızın yapılandırması için bu modeli temel alın.

cpuset'ler, performans açısından kritik olmayan arka plan iş parçacıklarının hiçbir zaman büyük CPU çekirdekleriyle yük dengelenmediğinden, kullanıcı tarafından algılanan herhangi bir avantaj olmadan önemli ölçüde daha fazla güç harcayabilecekleri durumlarda güç avantajları da sunar. Bu, termal kısıtlamanın da önüne geçebilir. Termal sınırlama bir kapasite sorunu olsa da termal sınırlama sırasında titreşim iyileştirmeleri kullanıcı arayüzü performansı üzerinde büyük bir etkiye sahiptir. Sistem 60 FPS oluşturma kapasitesine daha yakın çalıştığından, kare atlamasına neden olmak için daha az titreşim gerekir.