Latence DPC : vérifier et améliorer la latence matérielle sur Windows

Il peut arriver qu’un pilote, logiciel ou autre élément de votre PC provoque des latences matérielles qui ont pour effets des pertes de freez ou bégaiements.
C’est notamment donc pour les jeux et les streamers qu’il faut surveiller la latence matérielle pour éviter ces problèmes.
Ces aspects concernent toutes les versions de Windows : Windows 7, Windows 8.1 et Windows 10.

Cet article vous explique comment vérifier et améliorer la latence matérielle sur Windows.

Latence DPC : vérifier et améliorer la latence matérielle sur Windows

Périphériques audio et vidéo sur Windows

Voici quelques explications un peu techniques pour comprendre le fonctionnement de Windows et des périphériques.

Windows n’est pas un système d’exploitation en temps réel. Toutes les demandes adressées au système d’exploitation sont transmises au mieux.
Il n’y a aucune garantie que les demandes soient livrées dans un certain délai, qui sont les caractéristiques d’un système d’exploitation en temps réel.
Ce n’est pas un problème pour la plupart des appareils et des tâches, mais c’est une mauvaise nouvelle pour les applications audio (considérées comme temps réel) car elles doivent fournir des données au sous-système et au matériel dans les tampons plusieurs fois par seconde.
Si un ou plusieurs tampons manquent leurs délais et ne sont pas livrés à temps, cela a des conséquences audibles qui sont reconnues comme des abandons, des clics et des pops.

Il faut donc éviter ces abandons qui peut causer des freez ou bégaiements durant les jeux.

Pour palier à cela, Windows a mis en place (DPC Deferred Procedure Call) qui est une liste d’attente avec des priorités pour chaque processeur.
Un pilote peut créer une tâche dans la liste d’attente avec une priorité élevée, moyenne ou basse.
Par défaut, toutes les DPC ont une priorité moyenne. Lorsque le processeur rencontre une interruption (IRQL : Interrupt Request Level) correspondant à l’ordonnancement des tâches/DPC, il consulte la file d’attente des procédures d’appels différées et les exécute progressivement jusqu’à épuisement de la file d’attente ou jusqu’à ce qu’une autre interruption de priorité plus élevée soit rencontrée.

DPC et ISR

Voici quelques explications techniques plus détaillées sur le fonctionnement DPC et ISR pour les curieux.

Le séparateur de threads Windows (également appelé ordonnanceur), qui fait partie du noyau, exécute les threads selon un schéma de priorité.
Les threads avec une priorité plus élevée recevront un temps d’exécution plus long (également appelé tranche quantique ou tranche de temps) que les threads avec une priorité inférieure. Cependant, le noyau connaît également d’autres types d’unités d’exécution appelées routines de service d’interruption (ISR). Les périphériques connectés au système peuvent s’interrompre sur un processeur connecté et provoquer l’exécution de leurs routines de service d’interruption.

Une interruption peut se produire sur le même processeur que celui sur lequel un programme audio est exécuté. Tout thread qui s’exécutait sur le processeur sur lequel une interruption s’est produite sera temporairement arrêté, quelle que soit sa priorité. La routine de service d’interruption (ISR) est exécutée et peut planifier un appel de procédure différée (DPC) pour décharger une quantité de travail. Le DPC s’exécutera probablement immédiatement sur le même processeur, ce qui signifie que l’application audio s’arrêtera jusqu’à ce que l’exécution des routines ISR et DPC soit terminée.

C’est parce que les ISR et les DPC s’exécutent à une IRQL élevée, ce qui signifie qu’ils ne peuvent pas être préemptés par le répartiteur de threads (planificateur).
Par conséquent, pour garantir la réactivité du système, les routines ISR et DPC doivent s’exécuter aussi rapidement que possible.
Les directives indiquent qu’ils ne doivent pas passer plus de 100 µs de temps d’exécution, mais cela n’est souvent pas possible en raison de facteurs matériels indépendants de la volonté du développeur du pilote. Si le temps d’exécution devient trop élevé, le programme audio risque de ne pas pouvoir transmettre les tampons audio au matériel en temps opportun.

Mesurer la latence DPC

Vous pouvez mesurer et vérifier la latence DPC.
Le but est de s’assurer qu’aucun abandon a lieu et vous permet de s’assurer que votre configuration est relativement bonne et optimiser pour les jeux.
Enfin vous obtenez la latence DPC en micro-secondes afin de pouvoir comparer les optimisations.
Le test de latence doit être effectué avec vos applications fermées comme si vous étiez en condition de jeux et pendant au minimum 1 minute mais 2 à 4 minutes étant l’idéal.

Deux outils sont généralement utilisés pour mesurer et suivre la latence DPC : DPC Latency et LatencyMon.
Ces deux applications sont totalement gratuits et en anglais.

DPC Latency

Ci-dessous la fenêtre de DPC Lantecy, lancez le logiciel puis cliquez sur le bouton Start en bas à droite pour lancer la mesure.
Vous pouvez arrêter celle-ci avec le bouton Stop.
Le graphique indique la latence DPC en temps réel, en bas à gauche les mesures et au milieu un message qui indique si des abandons ont lieu.
Enfin la latence DPC maximale est aussi indiquée.

DPC Latency : vérifier et améliorer la latence matérielle sur Windows

LatencyMon

LatencyMon est un autre outil plus détaillé.
Voici la fenêtre de LatencyMon durant un test avec :

  • Un message en vert, orange ou rouge, selon si des abandons ont lieu
  • puis les mesures de latence DPC en temps réel et maximales
  • Enfin les drivers qui posent le plus de problèmes de latence DPC

LantecyMon : vérifier et améliorer la latence matérielle sur WindowsPar rapport à DPC Checker, LatencyMon fournit beaucoup plus d’informations.
L’onglet Stat permet d’obtenir un rapport une fois votre vérification terminée.
Cela est assez pratique pour partager ses informations et demander des conseils.

LantecyMon : vérifier et améliorer la latence matérielle sur WindowsMais surtout LantecyMon donne la latence et autres informations par pilotes, processus et CPU.
Cela permet assez facilement de connaître les pilotes ou application qui peuvent causer et des abandons et problèmes de latences DPC.

LantecyMon : vérifier et améliorer la latence matérielle sur Windows

 

LantecyMon : vérifier et améliorer la latence matérielle sur Windows

Enfin, LatencyMon mesure aussi les pagefaults qui correspond à la mémoire virtuelle (swap).
Cela peut provoquer aussi des ralentissements ou freez puisque des accès disques ont lieu.
Un pilote qui utilise beaucoup de mémoire peut provoquer l’utilisation de cette mémoire virtuelle.
Cela dépend donc de votre quantité de mémoire RAM et le comportement de vos pilotes.
Dans la mesure du possible, il faut donc éviter ces derniers.

Autres outils

L’analyseur de performances de Windows permet de grapher des informations sur les DPC dans la partie processeur.

Enfin l’outil Xperf permet aussi de grapher les latences DPC.

Qu’est ce qui provoque des latences DPC

Voici une liste des sources des latences DPC :

  • Un pilote qui ne respecte pas le standard DPC :
    • Un pilote réseau comme le Wifi ou Ethernet
    • Les pilotes Modem
    • Les pilotes de son
    • N’importe quelle carte PCI ou PCI Express,, PCCard ou ExpressCard.

Bien sûr, l’environnement logicielle de Windows joue beaucoup. Si votre Windows est en mode « poubelle » avec beaucoup d’applications qui se lancent au démarrage, cela va se ressentir.
Certaines applications basses comme l’antivirus peuvent effectuer des appels DPC qui vont encombrer la liste d’attente et provoquer des freez durant vos jeux.
N’hésitez pas à tester le mode jeu de votre antivirus avec les outils précédemment cités.
La mesure reflète donc dans un premier temps votre hygiène informatique et l’état de votre Windows.

Si vous regardez les captures d’écran précédentes de LatencyMon, vous verrez par exemple qu’Acronis qui charge des pilotes utilise la liste d’attente DPC.
Mais surtout, on voit des pilotes systèmes de Windows et aussi de la carte graphique.

Un tour sur Google Images permet de voir que beaucoup d’utilisateurs ont des problèmes de latences avec des mesures importantes et des barres rouges.

Comment améliorer la latence DPC

Lancez les tests pendant 1 minute avec toutes les applications fermées.
Vérifiez les pilotes dans LatencyMon, si un pilote pose problème, vous pouvez désactiver ce dernier depuis le gestionnaire de périphériques de Windows.

Il faut bien sûr éviter de désactiver les périphériques suivants :

  • Le pilote de la carte graphique. Dans tous les cas, il va apparaître comme étant la cause la plus importante de latence DPC. Vous ne pouvez rien y faire.
  • Un contrôleur IDE/ATAPI ou SATA
  • Un clavier ou souris
  • Un périphérique USB – note que des sous périphériques USB peuvent causer des latences comme les cartes MMC.

De manière générale, il faut que Windows ne soit pas encombré.
Il est donc recommandé de suivre notre tutoriel : Optimiser Windows 10 pour gagner des FPS dans les jeux : le guide complet

Enfin, vous pouvez réduire assez significativement la latence DPC du pilote Nvidia en utilisant le logiciel Timer Resolution.
Ce dernier modifie le timer de Windows qui est par défaut trop élevé.
Il faut lancer l’application Timer Resolution puis cliquez sur Maximum.
Vérifiez bien entendu si cela ne cause pas des plantages ou autres.

Ci-dessus, un exemple avec à gauche sans Timer Resolution et à droite avec.

Latence DPC : vérifier et améliorer la latence matérielle sur Windows
Latence DPC : vérifier et améliorer la latence matérielle sur Windows
Il semblerait aussi que le réglage des options d’alimentation de Windows et du parking UC jouent.
On obtient de meilleurs scores avec les options d’alimentation de Windows au maximale : Optimiser les options d’alimentation du processeur sur Windows
L’activation HPET mentionnée sur la page pour optimiser Windows pour vos jeux peut aussi jouer…. ou pas.
Il faut tester tous ces éléments pour voir les impacts qui peuvent différer d’une configuration matérielle à l’autre.

(Visité 2 437 fois, 1 visites ce jour)