Annuncio della seconda prova dell'origine Compute Pressure

Kenneth Christiansen
Kenneth Christiansen
Arnaud (Arno) Mandy

Nell'ultimo anno, Intel ha collaborato con Google e altre parti all'API Compute Pressure. In Chrome 115, puoi registrarti a una prova dell'origine per testare questa nuova API. Questo post spiega i problemi per risolvere i problemi che è stata progettata per l'API e mostra come utilizzarla.

Il problema

Il web sta diventando una piattaforma chiave per le applicazioni, con nuove funzionalità che rendono possibile utilizzare le soluzioni di videoconferenza non solo, ma anche un'esperienza piacevole per gli utenti. Le esperienze basate sul web vengono caricate all'istante, accessibili ovunque si trovino.

Gli utenti vogliono applicazioni reattive e dal caricamento rapido. Vogliono anche ottenere il più possibile dalla durata della batteria e dai dispositivi silenziosi non caldi al tatto. A volte questi obiettivi possono essere difficili da raggiungere quando si creano esperienze avanzate, poiché animazioni fluide e sfocatura dei video di sfondo utilizzano molta potenza di elaborazione, spingendo l'hardware ai suoi limiti e consumando le batterie.

Inoltre, esistono moltissimi dispositivi utilizzati per accedere alle applicazioni web. Un laptop di cinque anni avrà capacità molto diverse rispetto a un computer nuovo di zecca, anche se utilizza la stessa versione del browser.

Gli sviluppatori spesso scelgono di sviluppare usando il minimo comune denominatore, evitando di utilizzare alcune funzionalità che richiederebbero l'utilizzo di dispositivi meno recenti o meno efficienti. Tuttavia, se è stato possibile ottimizzare l'esperienza per gli utenti che dispongono di attrezzature capaci e si trovano nell'ambiente giusto per trarne vantaggio, perché non farlo? Ad esempio, quando partecipi a una videochiamata dal telefono, l'esperienza migliore è probabilmente quella di vedere solo l'oratore. Sui computer, invece, sarebbe bello vedere tutti i partecipanti alla chiamata, in quanto l'hardware è di solito all'altezza. A tal fine, è necessaria la telemetria dell'hardware in tempo reale, senza sacrificare la privacy degli utenti, che può essere utilizzata per la pianificazione delle attività e l'attivazione e la disattivazione progressiva delle funzionalità per garantire un'esperienza utente senza problemi. È qui che può aiutarti l'API Compute Pressure.

Che cos'è l'API Compute Pressure?

L'API Compute Pressure offre stati di alto livello che rappresentano la pressione sul sistema. Questi stati di alto livello garantiscono un buon equilibrio tra privacy (senza la condivisione di troppe informazioni specifiche che potrebbero identificare un utente) e informazioni su cui gli sviluppatori possono ragionare facilmente. Inoltre, consente all'implementazione di utilizzare le giuste metriche hardware di base per garantire che gli utenti possano sfruttare tutta la potenza di elaborazione a loro disposizione, purché il sistema non sia sotto stress ingestibile.

Le CPU moderne, ad esempio, sono progettate per funzionare al 100% con l'utilizzo nella maggior parte delle situazioni, su un singolo core o su tutti i core, per cui un'API che imposta come critici l'utilizzo come hardcoded all'80% potrebbe far sì che gli sviluppatori sottoutilizzano le funzionalità dell'hardware e offrire un'esperienza utente non ottimale. D'altra parte, un sistema potrebbe non avere un raffreddamento adeguato o la temperatura ambiente potrebbe essere molto elevata come in estate e il sistema potrebbe limitare l'utilizzo anche prima di raggiungere un utilizzo elevato della CPU. L'API attuale funziona sulla pressione globale della CPU, ma intendiamo sperimentare l'abilitazione della pressione della CPU per pagina nel thread principale e nei worker.

La pressione di calcolo ha i seguenti stati:

  • Nominale: i carichi di lavoro attuali causano una pressione minima, consentendo al sistema di funzionare a una frequenza di clock inferiore per preservare l'alimentazione.
  • Discreto: il sistema funziona correttamente, tutto è fluido e può eseguire attività aggiuntive senza problemi.
  • Serio: c'è una grave pressione sul sistema, ma è gestibile e il sistema funziona bene, ma potrebbe avvicinarsi ai suoi limiti:
    • La velocità di clock (a seconda dell'alimentazione CA o CC) è costantemente elevata.
    • Le temperature sono elevate ma comunque gestibili e non causano una limitazione.

A questo punto, se aggiungi altro lavoro, il sistema potrebbe passare allo stato critico.

  • Critica: il sistema sta per raggiungere i limiti, ma non lo ha ancora raggiunto. Critico non significa che il sistema è attivamente soggetto a limitazione, ma questo stato non è sostenibile a lungo termine e potrebbe comportare una limitazione se il carico di lavoro rimane lo stesso. Questo indicatore è l'ultima chiamata per alleggerire il carico di lavoro dell'applicazione web.

Abilita l'API Compute Pressure

Per impostazione predefinita, l'API Compute Pressure non è abilitata in Chrome, ma è possibile sperimentarla in Chrome 115 abilitando esplicitamente la funzionalità. Puoi attivarla localmente abilitando il flag enable-experimental-web-platform-features.

Per abilitarla per tutti i visitatori della tua app, è attualmente in corso una prova dell'origine che terminerà in Chrome 118 ( 18 luglio 2023). Per partecipare alla prova, registrati e includi un meta elemento con il token della prova dell'origine nell'intestazione HTML o HTTP. Per saperne di più, consulta il post Iniziare a utilizzare le prove dell'origine.

Osservare la pressione di calcolo

Il seguente snippet di codice illustra come monitorare e intervenire sulle variazioni della pressione di calcolo:

// 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');

Lo snippet di codice riportato di seguito illustra come utilizzare l'API Compute Pressure da un iframe:

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

Supporto piattaforme

L'API Compute Pressure è disponibile in Chrome 115 su Linux, ChromeOS, macOS e Windows.

Demo

Prova la demo incorporata di seguito per vedere come cambia lo stato della pressione di calcolo in base a una certa pressione artificiale.

Nel caso in cui il tuo browser non supporti l'API, il video seguente mostra una registrazione della demo.

Feedback

Il feedback degli sviluppatori è molto importante in questa fase, quindi segnala i problemi su GitHub con suggerimenti e domande.

Ringraziamenti

L'immagine hero è stata creata da Robert Anasch su Unsplash. Questo articolo è stato esaminato da Rachel Andrew e Thomas Steiner.