gestion de l’état des performances Component-Level
À compter de Windows 10, l’infrastructure de gestion de l’alimentation (PoFx) permet à un pilote de définir un ou plusieurs ensembles d’états de performances ajustables individuellement pour des composants individuels au sein d’un appareil. Le pilote peut utiliser des états de performances pour limiter la charge de travail d’un composant afin de fournir juste suffisamment de performances pour ses besoins actuels.
Vue d’ensemble des états de performances
Dans Windows 8 et Windows 8.1, PoFx fournit des états d’inactivité (états F) pour les économies d’énergie au niveau des composants par le contrôle d’alimentation et de rail d’horloge lorsqu’un état F spécifique est entré. Ce modèle économise de l’énergie lorsqu’un composant est dans un état inactif (non-F0), mais ne fournit aucun mécanisme pour optimiser l’utilisation de l’alimentation ou l’équilibrer par rapport aux besoins de performances lorsque le composant est actif. Même si un composant est actif (en F0) et qu’il effectue la maintenance d’une requête, il peut ne pas nécessiter les performances complètes de l’appareil. Par exemple, un carte graphique peut avoir besoin de mettre à jour uniquement un curseur clignotant, ce qui peut ne pas nécessiter de performances complètes.
Les états de performances variables résolvent ce problème en permettant au pilote de limiter le composant d’un appareil afin de fournir juste suffisamment de performances pour ses besoins actuels. Dans Windows 8 et Windows 8.1, si un composant prend en charge les états de performances, chaque pilote doit implémenter un algorithme de sélection d’état de performance propriétaire interne au pilote et, si nécessaire, notifier le plug-in d’extension de plateforme (PEP) de manière propriétaire. Le PEP est un composant logiciel qui effectue des tâches de gestion de l’alimentation spécifiques à une gamme de produits particulière de processeurs ou de modules Système sur puce (SoC). Les solutions d’état de performances propriétaires spécifiques au pilote ont l’inconvénient d’être étroitement couplées au peps et ne peuvent pas être facilement déboguées.
À compter de Windows 10, PoFx fournit une API pour la gestion de l’état des performances. Cette API a deux objectifs main :
- Il fournit un moyen standard pour les pilotes de périphérique d’informer le PEP des changements d’état de performances afin que le PEP puisse prendre les mesures appropriées.
- Il fournit un moyen standard pour les pilotes d’informer le système d’exploitation des changements d’état des performances pour la journalisation et l’analyse dans Windows Analyseur de performances (WPA), sans avoir besoin d’un plug-in personnalisé pour chaque pilote.
Présentation de l’API PoFX pour les états de performances Component-Level
PoFx permet à un appareil de définir les types d’états de performances suivants pour chaque composant :
- Nombre discret d’états dans les unités de fréquence (mesurées en Hz), de bande passante (mesurée en bits par seconde) ou d’un nombre d’index opaque.
- Une distribution continue des états entre une valeur minimale et une valeur maximale.
Les états de performances sont organisés en ensembles et sont inscrits par composant. Les états de performances au sein d’un jeu doivent augmenter de façon monotone. La plupart des pilotes sont censés définir un ensemble unique d’états de performances par composant. Par exemple, un pilote peut définir un ensemble d’états de performances pour contrôler la fréquence d’horloge d’un composant. Toutefois, certains pilotes peuvent avoir besoin de définir plusieurs paramètres d’état de performances pour contrôler plusieurs dimensions des états de performances d’un composant. Par exemple, un pilote peut définir deux ensembles d’états de performances pour contrôler la fréquence d’horloge et la bande passante du bus.
Pour inscrire un composant d’appareil pour la gestion de l’état des performances par PoFx, un pilote suit les étapes générales suivantes :
Le pilote inscrit les composants d’appareil à gérer par PoFx. Pour plus d’informations, consultez Gestion de l’alimentation au niveau des composants.
Le pilote inscrit la prise en charge des états de performances en appelant PoFxRegisterComponentPerfStates. Dans le cadre de l’appel d’inscription, les pilotes peuvent définir eux-mêmes l’état des performances d’un composant donné ou s’en remettre au plug-in d’extension de plateforme (PEP) pour les définir à la place.
Le pilote de périphérique ou le pep doit avoir connaissance des états de performances, y compris le nombre de jeux d’états de performances par composant, le type d’état des performances (discret ou basé sur la plage), ainsi que les détails des valeurs et le nombre des états de performances réels. Si le PEP ne prend pas en charge les états de performances, le pilote peut toujours s’inscrire à la prise en charge de l’état des performances auprès de PoFx et informer le système d’exploitation des changements d’état de performances à des fins de journalisation et d’analyse dans Windows Analyseur de performances (WPA).
Dans les deux cas, une fois poFxRegisterComponentPerfStates terminé, le pilote a une structure PO_FX_COMPONENT_PERF_INFO qui contient les jeux d’états de performances inscrits.
Quand le pilote décide qu’un composant doit modifier les états de performances, il appelle PoFxIssueComponentPerfStateChange ou PoFxIssueComponentPerfStateChangeMultiple. PoFx appelle la routine ComponentPerfStateCallback fournie par le pilote lorsque le changement d’état des performances est terminé.
Le pilote est informé par la routine ComponentPerfStateCallback si le pep a réussi ou refusé la modification de l’état des performances. Si le peps a réussi la modification, le pilote effectue alors le travail qu’il doit effectuer pour modifier l’état des performances de son point de vue. Si le peps a refusé la modification, le pilote peut choisir de ne rien faire ou de réessayer la demande avec le même état de performance ou un autre état de performance.
Rubriques connexes
Informations de référence sur la gestion de l’alimentation des appareils