Kapasite, bir cihazın belirli bir süre boyunca sahip olduğu bazı kaynakların (CPU, GPU vb.) toplam miktarıdır. Bu sayfada kapasiteyle ilgili istenmeyen durum sorunlarının nasıl tanımlanacağı ve çözüleceği açıklanmaktadır.
Vali tepki vermekte gecikti
Jank'ı önlemek için CPU frekans düzenleyicisinin ani iş yüklerine hızla yanıt verebilmesi gerekir. Çoğu kullanıcı arayüzü uygulaması aynı temel modeli izler:
- Kullanıcı ekranı okuyor.
- Kullanıcı ekrana dokunur: bir düğmeye dokunur, ekranı kaydırır vb.
- Girişe yanıt olarak ekran kayar, etkinliği değiştirir veya bir şekilde canlandırılır.
- Yeni içerik görüntülendiğinde sistem durur.
- Kullanıcı ekranı okumaya geri döner.
Pixel ve Nexus cihazları, dokunma sırasında CPU frekans düzenleyicisinin (ve zamanlayıcının) davranışını değiştirmek için dokunma güçlendirmeyi uygular. Yüksek saat frekansına yavaş bir yükselişten kaçınmak için (cihazın dokunma sırasında kareleri düşürmesine neden olabilir), dokunma artırma genellikle dokunma sırasında bol miktarda CPU kapasitesinin mevcut olmasını sağlamak için CPU üzerinde bir frekans tabanı ayarlar. Bir zemin, dokunuştan sonra bir süre (genellikle yaklaşık iki saniye) sürer.
Pixel ayrıca ek bir dokunma güçlendirme sinyali olarak Energy Aware Scheduling (EAS) tarafından sağlanan zamanlama grubunu kullanır: En iyi uygulamalar, hızlı bir şekilde çalışmak için yeterli CPU kapasitesine sahip olduklarından emin olmak için zamanlama yoluyla ek ağırlık alır. Nexus 5X ve 6P, küçük ve büyük CPU kümeleri (sırasıyla A53 ve A57) arasında Kryo CPU'lu Pixel'e göre çok daha büyük bir performans farkına sahiptir. Özellikle cihazdaki diğer titreşim kaynakları göz önüne alındığında, küçük CPU kümesinin kullanıcı arayüzünün sorunsuz şekilde oluşturulması için her zaman yeterli olmadığını gördük.
Buna göre, Nexus 5X ve 6P'de dokunma artırma, ön plandaki uygulamaların büyük çekirdeklere geçmesini daha olası hale getirmek için zamanlayıcı davranışını değiştirir (bu, kavramsal olarak CPU frekansındaki tabana benzer). Ön plan uygulamalarının büyük CPU kümesine geçme olasılığını artıracak zamanlayıcı değişikliği olmadan, ön plan uygulamaları, zamanlayıcı iş parçacığını büyük bir CPU çekirdeğine yük dengelemeye karar verene kadar işlemek için yetersiz CPU kapasitesine sahip olabilir. Dokunma artırma sırasında zamanlayıcı davranışını değiştirerek, bir UI iş parçacığının hemen büyük bir çekirdek üzerinde çalışması ve onu her zaman büyük bir çekirdek üzerinde çalışmaya zorlamadan, güç tüketimi üzerinde ciddi etkilere sahip olabilecek şekilde istenmeyen seslerden kaçınma olasılığı daha yüksektir.
Termal kısma
Termal kısma, cihazın genel termal çıkışını azaltması gerektiğinde meydana gelir ve genellikle CPU, GPU ve DRAM saatlerini azaltarak gerçekleştirilir. Şaşırtıcı olmayan bir şekilde, sistem artık belirli bir zaman diliminde işlemek için yeterli kapasiteyi sağlayamayabileceğinden, bu genellikle beklenmedik bir durumla sonuçlanır. Termal kısıtlamayı önlemenin tek yolu daha az güç kullanmaktır. Bunu yapmanın çok fazla yolu yok ancak geçmiş SOC'lerle olan deneyimlerimize dayanarak sistem satıcılarına birkaç önerimiz var.
İlk olarak, heterojen CPU mimarilerine sahip yeni bir SOC oluştururken CPU kümelerinin performans/W eğrilerinin örtüştüğünden emin olun. Tüm işlemcinin genel performans/W eğrisi sürekli bir çizgi olmalıdır. Performans/W eğrisindeki süreksizlikler zamanlayıcıyı ve frekans düzenleyiciyi iş yükünün neye ihtiyacı olduğunu tahmin etmeye zorlar; Jank'ı önlemek için zamanlayıcı ve frekans düzenleyici, iş yüküne ihtiyaç duyduğundan daha fazla kapasite verme hatasına düşer. Bu, çok fazla güç harcanmasına neden olur ve bu da termal kısmaya katkıda bulunur.
İki CPU kümesine sahip varsayımsal bir SOC düşünün:
- Küçük küme olan Küme 1, 100-300 mW arasında harcayabilir ve saatlere bağlı olarak verimlilik kıyaslamasında 100-300 puan alır.
- Büyük küme olan Küme 2, 1000 ile 1600 mW arasında harcayabilir ve saatlere bağlı olarak aynı verim kıyaslamasında 800 ile 1200 arasında puan alabilir.
Bu kıyaslamada daha yüksek bir puan daha hızlıdır. Yavaştan daha fazla tercih edilmese de, daha hızlı == daha fazla güç tüketimi.
Zamanlayıcı, bir kullanıcı arayüzü iş yükünün söz konusu üretim kıyaslamasında 310'a eşdeğer bir puan gerektireceğine inanıyorsa, beklenmedik durumları önlemek için en iyi seçenek, büyük kümeyi en düşük frekansta çalıştırarak önemli miktarda güç israfıdır. (Bu, işlemci davranışına ve boşta kalma yarışına bağlıdır; sürekli performans/W eğrilerine sahip SOC'lerin optimize edilmesi daha kolaydır.)
İkincisi, cpuset'leri kullanın. Çekirdeğinizde ve BoardConfig.mk
dosyanızda cpusets'i etkinleştirdiğinizden emin olun. Ayrıca cihazınıza özel init.rc
dosyasında gerçek cpuset atamalarını da ayarlamanız gerekir. Bazı satıcılar, zamanlayıcı davranışını etkilemek için diğer ipuçlarını kullanabilme umuduyla bunu BSP'lerinde devre dışı bırakıyor; bunun mantıklı olmadığını düşünüyoruz. cpusets, CPU'lar arasındaki yük dengelemenin, kullanıcının cihazda gerçekte ne yaptığını yansıtacak şekilde yapılmasını sağlamak için kullanışlıdır.
ActivityManager, uygulamaları bu uygulamaların göreceli önemine (üst, ön plan, arka plan) göre farklı işlemci kümelerine atar ve daha önemli uygulamalar CPU çekirdeklerine daha fazla erişim sağlar. Bu, ön plan ve en iyi uygulamalar için hizmet kalitesinin sağlanmasına 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, işlemci kümelerinin heterojen CPU yapılandırmalarında nasıl kullanılacağına ilişkin iyi bir modeldir; bunu kendi cihazınızın yapılandırması için temel olarak kullanın.
cpuset'ler ayrıca, performans açısından kritik olmayan arka plan iş parçacıklarının hiçbir zaman büyük CPU çekirdeklerine yük dengelemesi yapmamasını sağlayarak güç avantajları sunar; burada kullanıcı tarafından algılanan herhangi bir fayda olmadan önemli ölçüde daha fazla güç harcayabilirler. Bu aynı zamanda termal daralmanın önlenmesine de yardımcı olabilir. Termal kısıtlama bir kapasite sorunu olsa da, termal kısıtlama sırasında titreşim iyileştirmelerinin kullanıcı arayüzü performansı üzerinde çok büyük bir etkisi vardır. Sistem 60FPS işleme yeteneğine daha yakın çalışacağından, karenin düşmesine neden olmak için daha az titreşim gerekir.