Lancement de la deuxième phase d'évaluation de Compute Pressure

Kenneth Christiansen
Kenneth Christiansen
Arnaud (Arno) Mandy

Au cours de l'année écoulée, Intel a collaboré avec Google et d'autres acteurs sur l'API Compute Pressure. Dans Chrome 115, vous pouvez vous inscrire à une phase d'évaluation pour tester cette nouvelle API. Cet article explique les problèmes que l'API a été conçue pour résoudre et explique comment l'utiliser.

Problème

Le Web devient une plate-forme applicative clé, avec de nouvelles fonctionnalités qui rendent des applications telles que la visioconférence non seulement possible, mais aussi agréables pour les utilisateurs. Les expériences Web se chargent instantanément, sont accessibles de n'importe où et ne nécessitent aucune installation préalable.

Les utilisateurs veulent des applications réactives et à chargement rapide. Ils veulent également profiter au maximum de l'autonomie de la batterie et profiter d'appareils silencieux qui ne sont pas chauds au toucher. Ces choses peuvent parfois être difficiles à réaliser lors de la création d'expériences avancées, car les animations fluides et le floutage des vidéos en arrière-plan consomment beaucoup de puissance de traitement, repoussent les limites du matériel et déchargent les batteries.

De plus, une grande variété d'appareils sont utilisés pour accéder aux applications Web. Un ordinateur portable de cinq ans offre des fonctionnalités très différentes de celles d'un tout nouvel ordinateur de bureau, même lorsqu'il utilise la même version de navigateur.

Les développeurs choisissent souvent de développer pour le plus petit dénominateur commun, évitant ainsi d'utiliser certaines fonctionnalités qui pourraient facturer des appareils plus anciens ou moins performants. Toutefois, s'il était possible d'optimiser l'expérience pour les utilisateurs qui disposent d'un équipement performant et qui se trouvent dans le bon environnement pour en bénéficier, pourquoi ne pas le faire ? Par exemple, lorsque vous rejoignez un appel vidéo depuis votre téléphone, le simple fait de voir l'intervenant actuel est probablement la meilleure expérience. Sur un ordinateur de bureau, il serait intéressant de voir tous les participants à l'appel, et le matériel est généralement à la hauteur de la tâche. Pour y parvenir, vous avez besoin d'une télémétrie matérielle en direct, sans sacrifier la confidentialité des utilisateurs, qui peut être utilisée pour planifier des tâches et activer/désactiver progressivement des fonctionnalités afin de garantir une expérience utilisateur fluide. C'est là que l'API Compute Pressure peut vous aider.

Qu'est-ce que l'API Compute Pressure ?

L'API Compute Pressure propose des états généraux qui représentent la pression exercée sur le système. Ces états généraux assurent un bon équilibre entre la confidentialité (ne pas partager trop d'informations spécifiques qui pourraient permettre d'identifier un utilisateur) et les informations que les développeurs peuvent facilement interpréter. De plus, cela permet à la mise en œuvre d'utiliser les métriques matérielles sous-jacentes appropriées pour garantir aux utilisateurs de profiter de toute la puissance de traitement à leur disposition, à condition que le système ne soit pas soumis à un stress ingérable.

Les processeurs modernes, par exemple, sont conçus pour fonctionner correctement à 100% d'utilisation dans la plupart des cas, sur un seul cœur ou sur tous les cœurs. Par conséquent, une API qui code en dur 80 % de l'utilisation comme étant essentielle peut conduire les développeurs à sous-utiliser les fonctionnalités du matériel et à offrir une expérience utilisateur non optimale. En revanche, il est possible qu'un système ne dispose pas d'un refroidissement approprié, que la température ambiante soit très élevée, comme en été, et que le système soit limité avant même d'atteindre une utilisation élevée du processeur. L'API actuelle fonctionne sur la pression globale du processeur, mais nous prévoyons de tester l'activation de la pression du processeur par page sur le thread principal et les nœuds de calcul.

La pression de calcul présente les états suivants:

  • Nominale:les charges de travail actuelles n'engendrent qu'une pression minimale, ce qui permet au système de s'exécuter à une fréquence d'horloge inférieure pour préserver l'énergie.
  • Correct:le système fonctionne correctement. Tout est fluide et il peut effectuer des tâches supplémentaires sans problème.
  • Sérieux:une pression importante s'exerce sur le système, mais celui-ci est gérable, et le système fonctionne bien, mais pourrait s'approcher de ses limites :
    • La vitesse d'horloge (en fonction de l'alimentation CA ou CC) est systématiquement élevée.
    • Les températures thermiques sont élevées, mais restent gérables et ne causent pas de limitation.

À ce stade, si vous ajoutez du travail, le système peut passer dans un état critique.

  • Critique:le système est sur le point d'atteindre ses limites, mais il ne les a pas encore atteints. L'état "Critique" ne signifie pas que le système fait l'objet d'une limitation active. Toutefois, cet état n'est pas viable sur le long terme et peut entraîner une limitation si la charge de travail reste la même. Ce signal est le dernier appel envoyé à l'application Web pour alléger sa charge de travail.

Activer l'API Compute Pressure

Par défaut, l'API Compute Pressure n'est pas activée dans Chrome, mais vous pouvez la tester dans Chrome 115 en activant explicitement cette fonctionnalité. Vous pouvez l'activer localement en activant l'option enable-experimental-web-platform-features.

Pour l'activer pour tous les visiteurs de votre application, une phase d'évaluation est en cours et devrait se terminer dans Chrome 118 (18 juillet 2023). Pour participer à l'essai, inscrivez-vous et incluez un méta-élément avec le jeton de l'origine de l'essai dans l'en-tête HTML ou HTTP. Pour en savoir plus, consultez l'article Premiers pas avec les phases d'évaluation.

Observer la pression de calcul

L'extrait de code suivant montre comment surveiller les variations de la pression de calcul et agir en conséquence:

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

L'extrait de code suivant montre comment utiliser l'API Compute Pressure à partir d'un iFrame:

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

Plates-formes compatibles

L'API Compute Pressure est disponible dans Chrome 115 sous Linux, ChromeOS, macOS et Windows.

Démonstration

Essayez la démo intégrée ci-dessous pour voir comment l'état de la pression de calcul change en fonction d'une pression artificielle.

Si votre navigateur n'est pas compatible avec l'API, la vidéo ci-dessous montre un enregistrement de la démonstration.

Commentaires

Les commentaires des développeurs sont très importants à ce stade. Veuillez donc signaler des problèmes sur GitHub en indiquant des suggestions et des questions.

Remerciements

L'image héros a été créée par Robert Anasch sur Unsplash. Cet article a été lu par Rachel Andrew et Thomas Steiner.