İ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 birlikte çalıştı. Chrome 115'te, bu yeni API'yi test etmenize yardımcı olması için bir kaynak denemesine kaydolabilirsiniz. Bu yayında, API'nin çözmek üzere tasarlandığı sorunlar ve nasıl kullanılacağı açıklanmaktadır.

Sorun

Video konferans gibi uygulamaları yalnızca mümkün değil, aynı zamanda kullanıcılar için keyifli bir deneyim haline getiren yeni özelliklerle web, temel bir uygulama platformu haline gelmektedir. 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 istiyor. Ayrıca pil ömründen ve dokunulmayacak kadar sessiz cihazlardan da mümkün olduğunca fazla verim almak isterler. Akıcı animasyonlar ve arka plan videosunu bulanıklaştırma işlemleri çok fazla işlem gücü kullandığından, donanımın sınırlarını zorlar ve piller azalır. Bu nedenle, gelişmiş deneyimler oluştururken bu hedefleri başarmak bazen zor olabilir.

Ayrıca, web uygulamalarına erişmek için çok çeşitli cihazlar kullanılmaktadır. Beş yıllık bir dizüstü bilgisayar, aynı tarayıcı sürümünü çalıştırıyor olsa bile, yepyeni bir masaüstü bilgisayara göre çok farklı özelliklere sahip olacaktır.

Geliştiriciler genellikle en küçük ortak paydaya göre geliştirme yapmayı tercih ederler. Eski veya daha düşük özellikli cihazlara vergi verecek bazı özellikler kullanmaktan kaçınırlar. Ancak, deneyimi uygun ekipmana sahip ve bunlardan yararlanacak doğru ortamda olan kullanıcılar için optimize etmek mümkünse neden yapmayasınız? Örneğin, telefonunuzdan bir görüntülü görüşmeye katılırken yalnızca mevcut hoparlörü görmek en iyi deneyim olabilir. Ancak masaüstünde herkesin görüşmede olduğunu görmek güzeldir ve donanım genellikle görevi görür. Bunu başarmak için görevleri planlamak ve sorunsuz bir kullanıcı deneyimi sağlamak amacıyla özellikleri kademeli olarak açıp kapatmak için kullanılabilen, kullanıcıların gizliliğinden ödün vermeden canlı donanım telemetrisine ihtiyacınız olur. Compute Pressure API, tam da bu noktada yardımcı olabilir.

Compute Pressure API nedir?

Compute Pressure API, sistem üzerindeki baskıyı temsil eden üst düzey durumlar sunar. Bu üst düzey durumlar, gizlilik (bir kullanıcıyı tanımlayabilecek çok fazla spesifik bilgi paylaşmamak) ile geliştiricilerin kolayca gerekçelendirebileceği bilgiler arasında iyi bir denge sağlar. Buna ek olarak, sistem yönetilemez bir stres altında olmadığı sürece kullanıcıların kendilerine sunulan tüm işlem gücünden yararlanmalarını sağlamak için uygulamanın doğru temel 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ımla sorunsuz çalışacak şekilde tasarlanmıştır. Bu nedenle, kullanım oranının %80'ini kritik olarak kodlayan bir API, geliştiricilerin donanımın özelliklerini yetersiz kullanmasına ve yetersiz bir kullanıcı deneyimi sunmasına neden olabilir. Öte yandan, bir sistemin soğutma sistemi uygun şekilde olmayabilir veya ortam sıcaklığı yaz aylarına göre çok yüksek olabilir ve sistem, yüksek CPU kullanımına ulaşmadan önce bile boğucu olabilir. Mevcut API, küresel CPU baskısıyla çalışıyor, ancak ana iş parçacığı ve çalışanlar genelinde sayfa başına CPU basıncını etkinleştirmeyi planlıyoruz.

İşlem basıncı aşağıdaki durumlara sahiptir:

  • Nominal: Mevcut iş yükleri minimum basınca neden olduğu için sistemin güç tasarrufu için daha düşük bir saat frekansında çalışmasına izin verir.
  • Adil: Sistem iyi gidiyor; her şey yolunda ve sorunsuz bir şekilde ek işler üstlenebilir.
  • Ciddi: Sistem üzerinde ciddi bir baskı var ancak yönetilebilir bir durumda ve 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.
    • Termal değerler fazla ancak kontrol altına alınabilir durumda ve akış hızına neden olmuyor.

Bu noktada, daha fazla çalışma eklerseniz sistem kritik bir duruma geçebilir.

  • Kritik: Sistem şu anda sınırlarına ulaşmak üzere, ancak henüz sınıra ulaşmadı. Kritik olması sistemin aktif ş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

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

Uygulamanızı ziyaret eden tüm kullanıcıları etkinleştirmek için şu anda bir kaynak denemesi devam ediyor ve Chrome 118'de ( 18 Temmuz 2023) sona erecek şekilde ayarlandı. Denemeye katılmak için kaydolun ve HTML ya da HTTP başlığına kaynak deneme jetonuna sahip bir meta öğe ekleyin. Daha fazla bilgi için Kaynak denemelerini kullanmaya başlama başlıklı gönderiyi inceleyin.

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

Aşağıdaki kod snippet'i, işlem baskısındaki değişiklikleri nasıl izleyeceğinizi ve bunlarla nasıl hareket edeceğinizi göstermektedir:

// 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'da, Chrome 115'te kullanılabilir.

Demografi

İşlem basıncı durumunun yapay basınca göre nasıl değiştiğini görmek için aşağıya 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ştiricilerden geri bildirim çok önemlidir. Bu nedenle lütfen öneri ve sorularınızla GitHub'da sorunlarınızı bildirin.

Teşekkür

Lokomotif resim, Unsplash'ta Robert Anasch tarafından oluşturulmuştur. Bu makale Rachel Andrew ve Thomas Steiner tarafından incelendi.