İkinci Compute Basınç kaynak denemesi duyurusu

Kenneth Christiansen
Kenneth Christiansen
Arnaud (Arno) Mandy

Intel, son bir yıldır Compute Pressure API ile ilgili olarak Google ve diğer taraflarla birlikte çalışıyor. Chrome 115'te bu yeni API'yi test etmek için kaynak denemesine kaydolabilirsiniz. Bu yayında, API'nin çözmek üzere tasarlandığı sorunlar açıklanmakta ve API'nin nasıl kullanılacağı gösterilmektedir.

Sorun

Web, video konferans gibi uygulamaların yalnızca mümkün olmasını değil, kullanıcılar için keyifli bir deneyim sunmasını sağlayan yeni özelliklerle önemli bir uygulama platformu haline geliyor. Web tabanlı deneyimler anında yüklenir, her yerden erişilebilir ve önceden yükleme gerektirmez.

Kullanıcılar hızlı yüklenen ve duyarlı uygulamalar ister. Ayrıca, pil ömründen mümkün olduğunca yararlanmak ve dokunulduğunda eli ısıtmayan sessiz cihazlar kullanmak isterler. Sorunsuz animasyonlar ve arka plan videosunun bulanıklaştırılması çok fazla işlem gücü kullandığından, donanımı sınırına kadar zorlayıp pilleri tükettiğinden, gelişmiş deneyimler oluştururken bu hedeflere ulaşmak bazen zor olabilir.

Ayrıca, web uygulamalarına erişmek için kullanılan çok çeşitli cihazlar vardır. Beş yaşındaki bir dizüstü bilgisayar, aynı tarayıcı sürümünü çalıştırsa bile yepyeni bir masaüstü bilgisayardan çok farklı özelliklere sahiptir.

Geliştiriciler genellikle en yaygın cihazlar için geliştirme yapmayı tercih eder ve eski veya daha az yetenekli cihazları zorlayabilecek bazı özellikleri kullanmaktan kaçınır. Ancak, uygun ekipmana sahip ve bu ekipmandan yararlanmak için doğru ortamda olan kullanıcılar için deneyimi optimize etmek mümkün olsaydı neden bunu yapmayalım? Örneğin, telefonunuzdan bir görüntülü görüşmeye katılırken yalnızca mevcut konuşmacıyı görmek muhtemelen en iyi deneyimdir. Ancak masaüstünde, görüşmedeki herkesi görmek güzel olur ve donanım genellikle bu görevi yerine getirebilir. Bunu başarmak için, kullanıcıların gizliliğinden ödün vermeden canlı donanım telemetrisine ihtiyacınız vardır. Bu telemetri, görevleri planlamak ve sorunsuz bir kullanıcı deneyimi sağlamak için özellikleri kademeli olarak açıp kapatmak için kullanılabilir. Bu noktada Compute Pressure API yardımcı olabilir.

Compute Pressure API nedir?

Compute Pressure API, sistemdeki baskıyı temsil eden üst düzey durumlar sunar. Bu üst düzey durumlar, gizlilik (kullanıcıyı tanımlayabilecek çok fazla bilgi paylaşmamak) ile geliştiricilerin kolayca mantık yürütebileceği bilgiler arasında iyi bir denge sağlar. Ayrıca, sistem yönetilemez bir stres altında olmadığı sürece kullanıcıların kullanabilecekleri tüm işleme gücünden yararlanabilmeleri için uygulamanın temelde doğru donanım metriklerini kullanmasına olanak tanır.

Örneğin, modern CPU'lar çoğu durumda tek bir çekirdekte veya tüm çekirdeklerde% 100 kullanımda sorunsuz çalışacak şekilde tasarlanmıştır. Bu nedenle, %80 kullanım oranını kritik olarak kodlayan bir API, geliştiricilerin donanımın özelliklerini yeterince kullanmamasına ve en uygun olmayan kullanıcı deneyimini sunmasına neden olabilir. Öte yandan, sistemde uygun soğutma olmayabilir veya ortam sıcaklığı yaz aylarında olduğu gibi çok yüksek olabilir. Bu durumda sistem, yüksek CPU kullanımına ulaşmadan önce bile kısıtlamaya tabi tutulabilir. Mevcut API, genel CPU baskısı üzerinde çalışır ancak ana iş parçacığı ve işleyiciler genelinde sayfa başına CPU baskısını etkinleştirmeyi denemeyi planlıyoruz.

Bilgisayar basıncı aşağıdaki durumlarda olabilir:

  • Nominal: Mevcut iş yükleri minimum düzeyde baskı oluşturduğundan sistem, güç tasarrufu yapmak için daha düşük bir saat frekansında çalışır.
  • İyi: Sistem iyi çalışıyor, her şey yolunda ve sorunsuz bir şekilde ek iş alabilir.
  • Ciddi: Sistem üzerinde ciddi bir baskı var ancak bu baskı yönetilebilir durumda. Sistem iyi çalışıyor ancak sınırlarına yaklaşıyor olabilir:
    • Saat hızı (AC veya DC güce bağlı olarak) sürekli olarak yüksektir.
    • Isıtma yüksek ancak yönetilebilir durumda ve kısıtlamaya neden olmuyor.

Bu noktada daha fazla iş eklerseniz sistem kritik duruma geçebilir.

  • Kritik: Sistem sınırına ulaşmak üzeredir ancak henüz sınıra ulaşmamıştır. Kritik, sistemin etkin bir şekilde kısıtlandığı anlamına gelmez ancak bu durum uzun vadede sürdürülebilir değildir ve iş yükü aynı kalırsa kısıtlamaya neden olabilir. Bu sinyal, web uygulamasının iş yükünü hafifletmesi için son çağrıdır.

Compute Pressure API'yi etkinleştirme

Compute Pressure API, Chrome'da varsayılan olarak etkin değildir ancak işlev açıkça etkinleştirilerek Chrome 115'te deneyebilir. enable-experimental-web-platform-features işaretini etkinleştirerek yerel olarak etkinleştirebilirsiniz.

Bu özelliği uygulamanızın tüm ziyaretçileri için etkinleştirmek amacıyla şu anda devam eden bir kaynak denemesi var. Bu deneme, Chrome 118'de ( 18 Temmuz 2023) sona erecek şekilde ayarlandı. Deneme sürümüne katılmak için kaydolun ve HTML veya HTTP üstbilgisine kaynak deneme jetonunu içeren bir meta öğe ekleyin. Daha fazla bilgi için Kaynak denemelerini kullanmaya başlama başlıklı makaleyi inceleyin.

Bilgi işlem baskısını gözlemleme

Aşağıdaki kod snippet'inde, hesaplama baskısındaki değişikliklerin nasıl izleneceği ve bu değişikliklere göre nasıl işlem yapılacağı gösterilmektedir:

// The `records` parameter is a sequence of records between two
// consecutive callbacks. Currently it contains ten entries, but
// this is an implementation detail.
function callback(records) {
  const lastRecord = records.pop();
  console.log(`Current pressure ${lastRecord.state}`);
  if (lastRecord.state === 'critical') {
    // Reduce workers load by 4.
  } else if (lastRecord.state === 'serious') {
    // Reduce workers load by 2.
  } else {
    // Do not reduce.
  }
}

const observer = new PressureObserver(callback, {
  // Sample rate in Hertz.
  sampleRate: 1,
});
observer.observe('cpu');

Aşağıdaki kod snippet'inde, Compute Pressure API'nin bir iframe'den nasıl kullanılacağı gösterilmektedir:

<iframe src="https://mysite.com/" allow="compute-pressure">
  <script>
    // Use Compute Pressure API.
  </script>
</iframe>

Platform desteği

Compute Pressure API, Linux, ChromeOS, macOS ve Windows'daki Chrome 115'te kullanılabilir.

Demo

Yapay bir basınca bağlı olarak hesaplama basıncı durumunun nasıl değiştiğini görmek için aşağıda yerleştirilmiş demoyu deneyin.

Tarayıcınız API'yi desteklemiyorsa aşağıdaki videoda demonun kaydı gösterilmektedir.

Geri bildirim

Bu aşamada geliştirici geri bildirimleri çok önemlidir. Lütfen öneri ve sorularınızla birlikte GitHub'da sorun bildirin.

Teşekkür ederiz

Kahraman resmi Unsplash'ta Robert Anasch tarafından oluşturulmuştur. Bu makale Rachel Andrew ve Thomas Steiner tarafından incelenmiştir.