Arka plan çalışmasını en aza indirerek güç tüketimini ve pil ömrünü iyileştirme

Bu kılavuz, Genel cihaz performansını ve pil ömrünü iyileştirmenize yardımcı olacak ilkeler sunarak Windows uygulamanızın güç tüketme biçimini nasıl geliştireceğini gösterir.

Güç tüketimini iyileştirmeye yönelik en temel ilkeler, uygulamanız arka plandayken aşağıdakilerin yapılmadığından emin olmaktır:

  • sistem kaynaklarını kullanın,
  • süreölçerler aracılığıyla CPU'yu uyandırmak,
  • vsync olaylarını bekleyerek CPU'yu uyandır.

"Arka planda" olmak, uygulamanızın kullanıcıya görünür veya sesli olmadığı anlamına gelir. Arka planda CPU'yu uyandırmak veya sistem kaynaklarını kullanmak için nadiren, eğer varsa, bir neden olmalıdır. Uygulamanızın bu olayları tetikleyip tetiklemediğini denetlemek ve nedeni ele almak, uygulamanızın güç tüketimini, pil ömrünü önemli ölçüde artırabilir ve uygulamanızı kullanan müşterilerin yol açacağı karbon emisyonlarını azaltabilir.

Uygulamanız kullanımda değilken CPU'nın gereksiz işler yapmak üzere uyanmadığını denetlemek için Windows Performans Çözümleyicisi'ni (WPA) kullanarak bir izleme yakalayıp analiz edebilirsiniz. Bunun nasıl yapılacağını açıklayan adımları aşağıda inceleyeceğiz.

Bir iz alıp gereksiz çalışmaları denetleyin

Uygulamanız çalıştırılırken güç tüketimine neden olabilecek gereksiz işlerin yapılıp yapılmadığını analiz etmek için izleme almadan önce doğru koşulları ayarlamak önemlidir. Uygulamanızı çeşitli koşullar altında test etmek için birden çok izleme çalıştırmak da isteyebilirsiniz.

Kurulum

  1. Görev Yöneticisi'ni açarak ve CPU kullanımının 5%'den az olduğundan emin olarak test cihazınızın boşta kalmasını sağlayın. Bunun yapılması, ölçüm etkileşimini en aza indirir ve makul boyutlu izler sağlar.

  2. Uygulamanızı başlatın ve yaygın olarak kullanılması beklenen bir görünüme gidin.

  3. Uygulamanızı simge durumuna küçültün. *Uygulama pencereniz diğer pencerelerin arkasında tamamen kapalıyken (görünüm engellenirken) ve uygulamanız ön plandayken, kullanıcı tarafından hiçbir etkileşim kurulmadığında, uygulama tarafından gereksiz işlerin başlatılmadığından emin olmak için aşağıdaki adımları tekrarlamak isteyebilirsiniz.

Arka plandayken CPU kullanımını ölçme ve değerlendirme

  1. Yönetici modunda bir komut satırı (PowerShell veya Komut İstemi) açın. (Yönetici modunda çalıştırılmazsa hata kodu alabilirsiniz: 0xc5585011, "sistem performansının profilini oluşturma ilkesi etkinleştirilemedi.")

  2. Komutunu girin: wpr -start power -filemode

  3. Cihazı 5 dakika boşta bırakın.

  4. Komutunu girin: wpr -stop idletrace.etl

  5. Windows Performance Analyzer (WPA)'yı kullanarak izlemeyi açmak için şu komutu girin:wpa.exe idletrace.etl

  6. Hesaplama>CPU Kullanımı (Kesin) grafiğini açın.

    • "İşleminize gidin (veya uygulamanızla ilgili tüm işlemler çok işlemli bir model kullanıyorsanız) ve 'CPU'ya göre kullanım' için Cswitch sayısını değerlendirin." İdeal olarak bunlar, uygulama arka plandayken mümkün olduğunca 0'a yakındır. Kaynakların nerede kullanıldığını ve kullanımını nasıl iyileştirebileceğinizi bulmak için yığınlara bakmak harika bir yöntemdir.

    • Aşırı uyandırmaları görmek için iş parçacığının hangi yığında uyandığını belirlemek üzere "Yeni İş Parçacığı Yığını" ekleyin.

    CPU işlemini, sayısını ve kullanım yüzdesini gösteren WPA grafiği

  7. Hesaplama>CPU Kullanımı (Örneklenmiş) grafiğini açın. Kod içinde zamanın hangi bölümlerde harcandığını değerlendirerek CPU kullanım sorunlarını belirleyin.

Arka planda beklenirken vsync beklemesini ölçme ve değerlendirme

Uyarı

Bu daha gelişmiş senaryoyu araştırmadan önce önceki bölümde temel CPU kullanımına odaklanın.

  1. Yönetici modunda bir komut satırı (PowerShell veya Komut İstemi) açın.

  2. Komutunu girin: wpr -start gpu -filemode

  3. Cihazı 5 dakika boşta bırakın.

  4. Komutunu girin: wpr -stop gputrace.etl

  5. İzi Windows Performance Analyzer (WPA) kullanarak açmak için şu komutu girin:

  6. Sistem Etkinliği>Genel olaylar grafiğini açın.

    • "Microsoft-Windows-Dxgkrnl" olaylarını filtreleyin.
    • İşlem sütununu 2. sütun olacak şekilde sürükleyin.
    • WaitForVsync'i çağırıp çağırmadığınızdan denetleyin. Örneğin, IDXGIOutput::WaitForVBlank (dxgi.h) gibi API'ler aracılığıyla WaitForVerticalBlankEventInternal olayı üzerinden.

    MS Edge webview2 olayını gösteren WPA grafiği

Daha fazla bilgi edinmek için Modern Bekleme sorunlarını çözümlemek için Windows Performans Çözümleyicisi kullanma makalesine bakın.

Ek kaynaklar