Au cours de la dernière année, Intel a collaboré avec Google et d'autres partenaires sur l'API Compute Pressure. Dans Chrome 115, vous pouvez vous inscrire à une phase d'évaluation pour vous aider à 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 d'applications clé, avec de nouvelles fonctionnalités qui rendent les applications telles que la visioconférence non seulement possibles, mais aussi agréables pour les utilisateurs. Les expériences Web se chargent instantanément, sont accessibles partout et ne nécessitent aucune installation préalable.
Les utilisateurs veulent des applications qui se chargent rapidement et sont réactives. Ils souhaitent également profiter au maximum de l'autonomie de la batterie et d'appareils silencieux qui ne chauffent pas au toucher. Ces éléments peuvent parfois être difficiles à atteindre lorsque vous créez également des expériences avancées, car les animations fluides et le floutage vidéo en arrière-plan utilisent beaucoup de puissance de traitement, poussant le matériel à ses limites et vidant les batteries.
En outre, une grande variété d'appareils sont utilisés pour accéder aux applications Web. Un ordinateur portable de cinq ans n'a pas les mêmes fonctionnalités qu'un ordinateur de bureau flambant neuf, même s'il exécute la même version de navigateur.
Les développeurs optent souvent pour le dénominateur commun le plus bas, en évitant d'utiliser certaines fonctionnalités qui mettraient à rude épreuve les appareils plus anciens ou moins performants. Toutefois, s'il est possible d'optimiser l'expérience pour les utilisateurs disposant d'un équipement compatible et se trouvant dans l'environnement approprié pour en profiter, pourquoi ne pas le faire ? Par exemple, lorsque vous participez à un appel vidéo depuis votre téléphone, il est probablement préférable de ne voir que l'intervenant actuel. Toutefois, sur un ordinateur de bureau, il est préférable de voir tous les participants à l'appel, et le matériel est généralement à la hauteur de la tâche. Pour ce faire, vous avez besoin d'une télémétrie matérielle en temps réel, sans compromettre la confidentialité des utilisateurs, qui peut être utilisée pour planifier des tâches et activer et 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 de haut niveau qui représentent la pression exercée sur le système. Ces états généraux garantissent un bon équilibre entre la confidentialité (ne pas partager trop d'informations spécifiques qui pourraient identifier un utilisateur) et les informations que les développeurs peuvent facilement comprendre. De plus, il permet à l'implémentation d'utiliser les bonnes métriques matérielles sous-jacentes pour s'assurer que les utilisateurs peuvent profiter de toute la puissance de traitement à leur disposition tant que le système n'est pas soumis à un stress incontrôlable.
Les processeurs modernes, par exemple, sont conçus pour fonctionner correctement à 100% d'utilisation dans la plupart des situations, sur un seul cœur ou sur tous les cœurs. Par conséquent, une API qui code en dur 80 % d'utilisation comme essentielle peut entraîner une sous-utilisation des fonctionnalités du matériel par les développeurs, ce qui peut offrir une expérience utilisateur non optimale. D'un autre côté, un système peut ne pas être correctement refroidi ou la température ambiante peut être très élevée en été, et le système peut être 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 workers.
La pression de calcul est associée aux états suivants:
- Nominal:les charges de travail actuelles exercent une pression minimale, ce qui permet au système de fonctionner à une fréquence d'horloge plus faible pour économiser de l'énergie.
- Correct:le système fonctionne correctement. Tout est fluide et peut effectuer des tâches supplémentaires sans problème.
- Sérieux:Le système est soumis à une forte pression, mais il est gérable. Il fonctionne bien, mais pourrait se rapprocher de ses limites :
- La fréquence d'horloge (selon l'alimentation AC ou DC) est systématiquement élevée.
- Les températures thermiques sont élevées, mais elles restent gérables et ne provoquent aucune limitation.
À ce stade, si vous ajoutez d'autres tâches, le système peut passer à un état critique.
- Critique:le système est sur le point d'atteindre ses limites, mais il ne l'a pas encore fait. "Critique" ne signifie pas que le système est activement limité, mais cet état n'est pas durable à long terme et peut entraîner une limitation si la charge de travail reste la même. Ce signal est le dernier appel de 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 la fonctionnalité.
Vous pouvez l'activer localement en activant l'indicateur 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 (le 18 juillet 2023). Pour participer à la phase d'évaluation, inscrivez-vous et incluez un élément méta avec le jeton de test d'origine dans l'en-tête HTML ou HTTP. Pour en savoir plus, consultez l'article Premiers pas avec les tests d'origine.
Observer la pression de calcul
L'extrait de code suivant montre comment surveiller les changements de 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 sur Linux, ChromeOS, macOS et Windows.
Démo
Essayez la démonstration intégrée ci-dessous pour voir comment l'état de 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 les problèmes sur GitHub avec vos suggestions et vos questions.
Liens utiles
- Explication publique
- Spécifications
- Bug de suivi Chromium
- Enregistrement sur ChromeStatus.com
- Récapitulatif du tag
- Intent to Experiment
- Démonstration de l'API Compute Pressure | Source de la démonstration de l'API Compute Pressure
Remerciements
L'image principale a été créée par Robert Anasch sur Unsplash. Cet article a été relu par Rachel Andrew et Thomas Steiner.