samedi 2 janvier 2021

[MAJ] Windows 10 MAO: Corriger la Latence DPC et optimiser les performances


 

logo banner windows 10 MAO

Corriger la Latence DPC et optimiser les performances

 

Latence DPC 

DPC ( appel de procédure différée ) permet aux tâches de haute priorité de gérer l’exécution ultérieure de tâches moindre priorité avec des pilotes de périphériques et autres événements de bas niveau réalisant des opérations de haute priorité ou les traitements et la planification supplémentaire d’une exécution à une priorité inférieure, et si Windows gère l'efficacité du pilote et que celui-ci à un traitement prenant plus de temps cela aurait pour conséquence un décalage dans la chaîne de traitement d’autre pilote provoquant par exemple dans l’audio des clics, des pops, distorsion et des abandons, car nos applications audio fournissent des données au «sous-système» et au matériel dans les tampons ( + fois/S ) évoluant avec un traitement en temps réel alors que Windows n’est pas un système d’exploitation en temps réel, il peut ainsi arriver que ces tampons puissent manquer leurs délais occasionnant ces fameux clics, pops et abandons audio, l’application ne pouvant ainsi fournir les mémoires tampon audio au matériel avec un temps d’exécution trop élevé.

Depuis la version 1703 l’audio dans Windows 10 a été amélioré afin de réduire la latence, et si auparavant le temps de latence du moteur audio était de ~ 12ms à ~ 6ms, avec Windows 10 c’est le pilote audio qui défini la taille de la mémoire tampon, cependant le tampon dans Windows 10 pour les applications est de ~ 10ms  par défaut, par ailleurs le nouveau Wasapi ( Windows Audio Session API ) peut traiter de plus petit tampon (<10 ms) tout comme la nouvelle API AudioGraph, aussi l’amélioration du pilote audio Windows profite aux utilisateurs Asio4LL offrant de meilleure latence avec WaveRT, et pour les autres possédant une interface audio externe, Windows 10 1703 introduit un pilote USB Audio 2.0 qui est un miniport de port audio WaveRT ( usbaudio2.sys, usbaudio2.inf ) il est aussi à noter que  les périphériques audio USB utilisent le système de donnée entre les tampons d'application et des tampons de matériel ou le mode exclusif permet d’améliorer les performances comme Wasapi augmentant automatiquement la priorité des threads du système et utilisant MMCSS.

Windows 10 a développé le DPC ( Deferred Procedure Call ) une notion de liste d’attente des priorités pour chaque processeur, alors que le pilote a créé une tâche avec différente priorité ( haute, moyenne, basse ) le processeur doit aussi rencontrer le processus des tâches/DPC d’une interruption, par exemple IRQL : Interrupt Request Level, en consultant la liste d’attente des procédures d’appels, et dans la gestion des priorités, les threads de Windows sont intéressants à évoquer car avec le séparateur de threads ( ordonnanceur ) il exécute les threads selon des priorités ou une priorité plus élevée occasionnera un temps d’exécution plus long que ceux possédants une priorité plus faible, aussi lors de la seconde rédaction du dossier Windows 10 MAO j’ai mentionné deux procédés ( AdditionalDelayedWorkerThreads  AdditionalCriticalWorkerThreads ) pouvant permettre d’augmenter et d’affecter le nombre de threads afin d’augmenter le traitement de travail des threads retardés ( un nombre restreint de threads réduira la vitesse de traitement ) et améliorant les performances E/S des systèmes, cependant il est aussi nécessaire de prendre en compte les temps longs d'exécution des routines ISR ou une interruption peut être produite sur un même processeur que l’application audio comme une carte son car le périphérique connecté peut s’interrompre sur un processeur connecté provoquant l’exécution des routines ISR ou tout thread tournant sur le processeur sur lequel une interruption s’est produite sera temporairement arrêté, aussi pour que le système soit suffisamment réactif ISR et DPC doivent s’exécuter le plus rapidement possible.

Si l’Optimisation de base pour un PC Audio/vidéo Windows 10 et l’Optimisationde la Gestion de l’énergie et performance optimisent déjà la relation entre l’énergie, la performance et la latence DPC, permettant d’asseoir une meilleure stabilité du système d’exploitation dans l’utilisation du traitement audio en temps réel, en cas de latence élevée il est encore possible de tenter d’aller chercher une amélioration des performances, néanmoins comme pour la minuterie d'événement haute précision (HPET) développé plus bas, les résultats ne sont pas forcément synonyme de pertinence ou la recherche de stabilité est avant tout une nécessité dans un environnement PC audio et d’usage différents entre chaque Stan ( Station de travail audionumérique ).

A noter que ce chapitre peut s’appliquer en mode base, néanmoins si la machine PC est stable et ne présente pas de latence particulière il apparaît ou apparaîtrait pour la plupart des configurations une étape quasiment inutile s’adressant avant tout à une catégorie de configuration ou la recherche de performance et de correction de latence est exigée.

Sous Windows 10, avec la version 1903, la mise à jour KB4505903 corrige le bug dans DPC latency provoquant des pics de latence DPC et occasionnant des bruits parasites sur certaines machines.   

 

cubase

 

Désactiver des périphériques Système ( recommandé en mode base )

Adaptateur réseau

Port Bluetooth

Port Infrarouge

Carte Wifi

Caméra vidéo

Carte graphique

- dans certains cas c’est la carte graphique qui est en cause, dans ce cas il semble nécessaire de désactiver le Device Manager

Dans la globalité mettre à jours les drivers et Windows permettent de corriger les problèmes de latence DPC

 

Désactivez le protocole Internet version 6

 ( Windows + R  tapez ncpa.cpl  dans Réseau et Internet Cliquez sur Centre Réseau et partage dans l'option Modifier les paramètres de l'adaptateur ]

 

samplitude

HPET (High Precision Event Timer) ( améliorer les performances de votre PC )

 

La minuterie d'événement haute précision (HPET) est développée par Intel et Microsoft,  HPET étant un timer possédant la capacité de gérer la minuterie, chronomètre, métronome, horloge, etc... permettant d’informer le processeur d’un temps écoulé suite à une interruption de comparateur, aussi le réglage des temporisateurs peut améliorer les performances du PC notamment les activités en temps réel.

Cependant, il y a plusieurs informations contradictoires sur la réussite de HPET activé ou pas, ou en définitive il ne s’agit pas temps de contradiction que d’élément de Windows et d’environnement matériel et logiciel complexifiant la possibilité d’établir une norme de performance ou pas, ou chaque différence et spécificité matériel et ou logiciel entrant dans le champs de Windows créé un environnement de performance particulier, ainsi il ne peut y avoir un seul rapport positif ou négatif, mais plusieurs.                                            

Optimiser la résolution du minuteur sous Windows dépend avant tout de la solution matériel, ou certaines carte mère imposent le blocage de HPET activé ou sans possibilité de changer dans le Bios comme avec les portables PC, aussi les dernières générations multicores Intel ou AMD utilisent davantage le TSC (compteur d'horodatage) accédant plus rapidement à une horloge que le HPET, il y aurait donc un débat entre HPET vs TSC comme le montre cet échange [Copie du courrier électronique à partir d'un ingénieur logiciel sur les TSC vs HPET https://pastebin.com/MjsbgiC9 ] donnant un exemple de configuration serveur avec de multiples horloges n’étant pas toutes synchronisées sur tous les nœuds pouvant conduire à des problèmes de performances notamment lorsque le TSC est la source d’horloge par défaut alors que Windows utilise une source d’horloge unique, mais il est possible de contourner ce problème sur certains environnements notamment de serveur avec la commande bcdedit / set useplatformclock true qui n’améliore pas la performance mais stabilise en vue de compatibilité pouvant ainsi améliorer la performance TSC.

Autre confirmation, celle d’application pouvant comme AMD Cool'n'Quiet technologie sous SQL server ou les valeurs peuvent être incorrects car modifiant les fréquences du processeur ceci pouvant démontrer que des logiciels et ou drivers peuvent perturber la stabilité d’un PC.

Masterdesk Plugin alliance

 

Windows possède un minuteur par défaut de 15,6 ms signifiant que toutes les 15,6 ms le système d'exploitation reçoit une interruption d'horloge du matériel du minuteur du système, et des programmes peuvent augmenter la fréquence de minuterie augmentant la consommation d’énergie, l'efficacité énergétique du système sont influencées par la quantité d'activité du processeur, y compris l'activité périodique des applications et des pilotes de périphérique, aussi les dernières fonctionnalités Windows et CPU d’économie d’énergie sont des possibles problèmes de latence audio, ou les derniers processeurs et Chipsets utilisent le temps d'inactivité entre les intervalles de temporisation du système pour réduire la consommation d'énergie du système en plaçant divers composants dans des états inactifs de faible puissance entre les intervalles de temporisation, l’application pouvant appeler timeBeginPeriod augmentant la résolution de la minuterie affectant la résolution globale du minuteur système car Windows utilisera  la résolution la plus élevée, malheureusement certaines applications peuvent augmenter la fréquence d'horloge élevée et s’il est possible de vérifier les événements permettant d’analyser les performances en enregistrant les traces ETW ou s’affiche les valeurs définissant l’intervalle de minuterie, il est ainsi possible de savoir quels sont les processus changeant la fréquence d’horloge, par ailleurs Microsoft recommande justement de désactiver le minuteur si la lecture audio ou vidéo haute résolution est interrompue.

En finalité pour des environnements spécialisés comme la MAO, création et montage Vidéo/Audio, PAO, jeux, ils peut être nécessaire d’inverser la tendance matériel et logiciel de réduction de la consommation d’énergie et de maintenir un état actif de performance permanent afin d’éviter qu’une résolution de la minuterie puisse engendrer ces phénomènes de latence, aussi dans certains environnements exigeants le réglage des temporisateurs peut apporter davantage des performances dans les activités en temps réelle ou la désactivation HPET avec l'hyperthreading et la désactivation de la fonction CPU Core Parking peuvent être significative.

 

Activer ou Désactiver HPET

Avant d’intervenir avec bcdedit il est nécessaire de vérifier dans la configuration du BIOS du mode avancé ou de l'UEFI la prise en charge de HPET et la possibilité d’activer ou désactiver la  minuterie HPET.

Rendez-vous ensuite:

Touche Windows  + R

taper dans CMD ou PowerShell ( en administrateur )                                                                                                          

Pour activer HPET exécutez la commande  bcdedit / set useplatformclock true

Redémarrer

Pour désactiver HPET exécutez la commande  bcdedit / deletevalue useplatformclock

Redémarrer

 

A noter que ce réglage réduirait la latence DPC sur certains processus

 

     bcdedit / set useplatformclock yes

     bcdedit / set tscsyncpolicy Enhanced

     bcdedit / set disabledynamictick yes

 

Redémarrer

Ne pas réaliser ces opérations avec un PC portable avec la batterie

 

useplatformclock 
Force l'utilisation de l'horloge de la plate- forme comme compteur de performance du système.

disabledynamictick 
active et désactive fonction tick timer dynamique.

tscsyncpolicy 
contrôle le temps de timbre contre la politique de synchronisation.

 

Symphony Apogée

 

Changer les priorités IRQ matériel

Ceci n’est pas une nouveauté mais il peut être utile d’assigner une priorité matériel pouvant ainsi améliorer le traitement de votre périphérique augmentant potentiellement la performance en établissant des priorités.

Le périphérique d’un ordinateur communique avec le processeur lié à une adresse IRQ, et selon les tâches effectuées comme une carte son le périphérique doit pouvoir mobiliser l’attention du processeur, aussi un IRQ possédant un numéro le plus bas possède une plus grande priorité, et il est aussi fréquent qu’un même numéro IRQ soit partagés par plusieurs périphériques pouvant engendrer un conflit IRQ, cependant IRQ Steering permet maintenant de limiter ces problèmes.

Touche  Windows + R

Tapez msinfo32.exe

Dans le menu des informations système \ Ressources matérielles \ IRQs, vous pouvez repérer le ou les périphériques à travers la numérotation IRQ,

Touche  Windows + R

Tapez regedit.exe

recherchez la clef:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl

puis créer une nouvelle valeur Dword 32b

par exemple

IRQ20priority ( IRQ20 représentant votre matériel )

et ajouter 1 en hexadecimale

Redémarrer 

 

Passer des IRQ en mode MSI ( Message Signaled Interrupts )

Pour des configurations matériels un peu limite, pour tenter de réduire davantage la latence audio, pour éviter le partage IRQ, il peut être intéressant d'envisager le basculement de certains IRQ vers la gestion MSI pouvant apporter une plus faible latence pour la gestion des interruptions traités par deux routines ISR et DPC.

Auparavant, les interruptions étaient gérées par une routine ISR développant un temps long de non-réponse puis est arrivée la division des interruptions avec ISR et DPC, alors que ISR est exécutée à un niveau de priorité très élevé, DPC est exécutée à un niveau inférieur de priorité, et si Windows 10 traite mieux le partage IRQ en cas de problème le mode MSI permet d'arrêter le partage alors qu'en mode IRQ plusieurs périphériques fonctionnant peuvent y partager le même numéro, de plus en mode MSI, il peut exister une amélioration du temps de réponse avec un traitement plus rapide des interruptions périphériques par le CPU bénéficiant à une meilleure communication entre le processeur et les périphériques.

Ce passage peut être envisagé comme HPET, c'est à dire dans l'optique d'améliorer, de corriger, sous entendant également que le résultat n'est pas une donnée de garantie universelle, ou tout dépend de l'architecture de la carte mère, des pilotes disposant d'une compatibilité MSI ou pas,  PC fixe ou portable...

Touche  Windows + R

devmgmt.msc

Dans le menu du gestionnaire de périphériques,

choisissez dans le menu "Affichage" Ressource Par type, vous pouvez ainsi accéder à la liste des requêtes d'interruption IRQ avec la dénomination du matériel, entre parenthèse vous avez un chiffre positif ( pour IRQ ) et négatif ( pour le mode MSI )

Avec la base de registre

Touche  Windows + R

Tapez regedit.exe

recherchez la clef:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI

 

Vous pouvez ainsi vérifier quelles sont les lignes PCI compatibles avec MSI comme USB 3

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\VEN_8086&DEV_9CB1&SUBSYS_201F1043&REV_03\3&11583659&0&A0\Device Parameters\Interrupt Management\MessageSignaledInterruptProperties\

avec une valeur dword 32 MSISupported sur 1

Des outils

Utiliser MSI  utility

une application permettant de cocher MSI passant d'IRQ en MSI, il est vivement recommandé d’appliquer ce processus périphérique par périphérique, une case à la fois et en redémarrant 

Spécial carte graphique Nvidia  MSIInturruptEnabler

Lessmsi:view and extract Windows MSI files 

Avant d’effectuer le basculement vers MSI, pensez à mettre à jours les pilotes ceci afin de bénéficier par défaut de la compatibilité 

 

Keyboard Arturia

Augmenter et affecter le nombre de threads de travail

Dans le thème de l’optimisation et d’amélioration des performances, ces deux astuces peuvent contribuer à augmenter les performances, plus adapté dans un environnement de type serveur, certaines valeurs peuvent participer à améliorer les paramétrages de Windows.

Augmenter le nombre de threads de travail

AdditionalDelayedWorkerThreads

Cette valeur augmente le nombre de threads de travail retardés dans la file d’attente de travail créés spécifiquement, l’ordre de traitement est évalué selon un processus définissant le traitement des éléments de travail n’étant pas considérés comme critique dans le temps, ce qui engendre un retard dans le traitement des threads, les éléments non traités peuvent être mise en attente dans une mémoire paginée, cette valeur permet ainsi d’augmenter le traitement de travail des threads retardés car un nombre restreint de threads réduira la vitesse de traitement, cependant si une valeur est trop élevé ( 20 ) elle va permettre une augmentation de la consommation des ressources système; il faut ainsi trouver le bon équilibre entre performance et gestion optimisées des ressources, le but de l’optimisation.

 

AdditionalDelayedWorkerThreads

 

W + R en mode administrateur tapez regedit rechercher la clef :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager
\Executive sur AdditionalDelayedWorkerThreads
mettre 16   0 par défaut

AdditionalCriticalWorkerThreads

Cette valeur permet d’affecter le nombre de threads que le cache du système de fichier peut utiliser pour les lectures anticipées et les écritures, en augmentant la valeur cela peut permettre d’améliorer les performances E/S des systèmes notamment lorsqu’il y a de nombreux processeurs et un matériel de stockage puissant.

 W + R en mode administrateur tapez regedit rechercher la clef :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Executive
sur AdditionalCriticalWorkerThreads mettre entre 16 et 64
0 par défaut ( aucun thread de travail du noyau critique est ajouté )

Redémarrer 

 


 

 

 

 

Outils de mesures

-LatencyMonW10 et 7

Utilitaire analysant les possibles problèmes de tampon en mesurant les latences de la minuterie du noyau et des rapports et des temps DPC, en fournissant un rapport détaillé avec moniteur il est possible d’identifier  les processus et modules du noyau causant la latence.

Latency Mon mesure

 

 -DPCLatency Checker ( pour Windows  7 )

Dans le même registre que LatencyMon

 

-WinTimerTest

Est un programme portable affichant des informations relatives à la minuterie. Vous devriez obtenir une valeur d'environ 14,3 MHz si HPET est activé, et moins que cela, généralement 3,9 MHz s'il est désactivé.

 

-TimerResolution

TimerResolution est une application pour changer la résolution du minuteur Windows par défaut, pouvant améliorer la réactivité et les performances en réduisant la latence DPC                     

-WindowsSystem Timer Tool

enregistre et modifie l’horloge système de Windows

  

-The HPET bug: What it is and what it isn't ( TimerBench )

 

-TaskManager DeLuxe

infos sur la latence DPC et les interruptions

 

-enregistrez une trace ETW avec le fournisseur Microsoft-Windows Kernel-Power

UIforETW- Windows Performance Simplification


-La ligne de commande PowerCfg avec l'option / energy ( voir Optimisation de la Gestion de l’énergie et performance 

ommande PowerCfg avec l'option / energy
Permet d’afficher un rapport donnant des informations sur l’efficacité énergétique mais également sur la  résolution du minuteur.

Le rapport répertorie les instances d'augmentation de la résolution du minuteur de la plateforme et indique si les processus liés à une application ont augmenté la résolution du minuteur. Bien qu'une analyse de code révèle si une application utilise la méthode timeBeginPeriod, les appels à des bibliothèques externes ou à des plug-ins peuvent également modifier la résolution du minuteur. L'exercice d'un large éventail de scénarios d'application pendant que PowerCfg surveille la résolution du minuteur peut être utile pour localiser les problèmes de minuteur.

 

Liens et Sources:

LowLatency Audio                                                                                                                                 

Gestion de l'alimentation pour les périphériques audio                                        


Présentationdu pilote Port WaveRT


AudioDevice Class Inactivité Application minuterie


 WASAPI Extrait audio


ExtraitAudioCreation(AudioGraph)

 

USBAudio 2.0 Drivers


Le Mode exclusif

Streamsexclusif mode


 The MSI Driver Guide HOWTO                                              


ManagingHardware Priorities


useplatformclock  disabledynamictick 

tscsyncpolicy 

 

Acquiringhigh-resolution time stamps


ISRs and DPCs, The Silent Killers                    


TSC vs HPET

 

Lesvaleurs de minuterie de SQL Server peuvent être incorrects lorsque vousutilisez des utilitaires ou des technologies qui modifient les fréquences duprocesseur 

 

 WindowsTimer Resolution: Megawatts Wasted


 Timers,Timer Resolution, and Development of Efficient



 

 

 

 

 


1 Comments:

Anonyme a dit…

nous acceptons de comprendre, comme on dit dans la vie dans les https://telecharger.onl programmes, et maintenant nous percevons tout : Réalisez que vous « ne vivez pas pour rien », mais que vous « vivez » simplement.

Enregistrer un commentaire



 

www.zikmao.net Copyright © 2010 LKart Theme is Designed by Lasantha

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License
Plan du site - mentions légales - Partenaires : - les oreilles.com - PlanèteParis - Stock2Musique - Rockenfolie


2007-2021 Zikmao.net

Zikmao.net s'est engagé à respecter la confidentialité des données personnelles régies par la loi 78-17 du 6 janvier 1978. Déclaration C.N.I.L. n° 1390775