İkinci Compute Basınç kaynak denemesi duyurusu

Kenneth Christiansen
Kenneth Christiansen
Arnaud (Arno) Mandy

Intel, geçtiğimiz yıl boyunca Compute Pressure API üzerinde Google ve diğer taraflarla iş birliği yapı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ırdığında bile yepyeni bir masaüstü bilgisayardan çok farklı özelliklere sahip olacaktır.

Geliştiriciler genellikle en düşük ortak payda 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 muhtemelen en iyi deneyim yalnızca mevcut hoparlörü görmektir. Ancak masaüstü bilgisayarda herkesin görüşmede olduğunu görmek güzel olurdu ve donanım genellikle göreve göre değişir. 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 spesifik bilgi paylaşmama) ile geliştiricilerin kolayca akıl 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ücü korumak 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. Sistem iyi çalışıyor ancak sınırlarına yaklaşıyor olabilir:
    • Saat hızı (AC veya DC gücüne bağlı olarak) sürekli olarak yüksek.
    • 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 varsayılan olarak Chrome'da etkin değildir, ancak Chrome 115'te işlevselliği açık bir şekilde etkinleştirilerek deneme yapılabilir. 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 üzere şu anda Chrome 118'de ( 18 Temmuz 2023'te) sona erecek bir kaynak deneme süresi bulunuyor. 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.

İşlem basıncını gözlemle

Aşağıdaki kod snippet'i, işlem baskısı değişikliklerini nasıl izleyeceğinizi ve buna göre nasıl işlem yapacağınızı gösterir:

// 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 bir 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.