Devenir membre
Devenir Membre
Continuer avec Google

ou
Connexion
Se connecter
Se connecter avec Google

ou

Tutoriel : MAO Mesurer la latence DPC de chaque driver(Win)

Par babatman le 29/06/2011 - (Tout public)
< Tous les tutoriels & astuces

Bonjour, de nombreux utilisateurs rencontrent des problèmes de latence avec leur PC (bip aigu, freeze, firewire problématique, etc.)

Je vais vous décrire une méthode permettant de connaître le temps que chaque driver passe pour la DPC (deferred procedure calls) & pour l'ISP (interrupt service routines) (et cela en traçant ces évènements dans le kernel/noyau windows)


Remarque : MAJ suite au commentaire de J-Luc :
Ce tutoriel est destiné à connaître de manière poussée l'utilisation DPC de chaque driver de votre système. Si vous voulez faire une analyse simple, vous pouvez vous utiliser le tutoriel de J-Luc :
https://fr.audiofanzine.com/mao/pedago/tutoriels/mao-mesurer-la-latence-dpc-vista-7-5339/

 

DPC :

Un appel de procédure différée (ou Deferred Procedure Call, abrégé "DPC") est un mécanisme utilisé sous les systèmes d'exploitation Microsoft Windows, et permettant aux tâches les plus prioritaires de reporter à plus tard l'exécution de tâches ayant un niveau de priorité inférieur. Cela permet aux pilotes de matériel ainsi qu'aux autres procédures de bas niveau d'obtenir rapidement la priorité pour leurs propres tâches, et ce, tout en attribuant un niveau de priorité d'excécution moins élevé aux processus additionnels.

Les DPC sont implémentés sous forme d'objets DPC créés et initialisés par le noyau du système d'exploitation lorsqu'un pilote ou un autre programme s'exécutant dans l'espace noyau en fait la demande. La requête DPC est donc placée en fin de la file d'attente des demandes d'appels de procédures différées. Chaque processeur dispose de sa propre file d'attentes pour les requêtes DPC. Les appels de procédures différées ont trois niveaux de priorités : basse, moyenne, et élevée. 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.



L'idée initiale de microsoft est de transformer ses systèmes d'exploitation non temps-réel en semi système temps réel afin notamment d'optimiser les tâches de traitement audio, vidéo, etc.

Le problème c'est que beaucoup de driver ne respecte pas le standard DPC - résultat, la gestion des priorités ne fonctionnent pas & vous vous retrouvez à avoir des pics de son aigu, cela vous forçant entre autre à augmenter le nombre de samples/buffer pour éviter cela.



Méthode:

A Installation de WDK

1)Récupérer le Windows Driver Kit (WDK) ici :https://www.microsoft.com/download/en/details.aspx?displaylang=en&id=11800

2)Installer ce kit dans le répertoire par défaut (vous trouvez les informations si besoins sur le site de Microsoft)

B Lancement de l'application

1)Lancer une fenêtre de commande : démarrer exécuter cmd      CD

2)Taper cd C:WDDK7600.16385.1toolstracingamd64 (afin de se positionner dans le répertoire contenant les outils à utiliser)

Si vous utilisez une version 32bits de windows, positionnez dans le répertoire : cd "C:WDDK7600.16385.1toolstracingi386"

3)Taper : tracelog -start -f test01.etl -dpcisr -UsePerfCounter -b 64

optionnel :Tester si des évènements sont perdus (buffer trop petit) tracelog -q

Logger Name:            NT Kernel Logger
Logger Id:              ffff
Logger Thread Id:       00000BC4
Buffer Size:            64 Kb
Maximum Buffers:        25
Minimum Buffers:        3
Number of Buffers:      25
Free Buffers:           23
Buffers Written:        571
Events Lost:            544
Log Buffers Lost:       0
Real Time Buffers Lost: 0
AgeLimit:               15
Log File Mode:          Sequential
Enabled tracing:        Process Thread Disk File ImageLoad
Log Filename:           c:Tracelogtest.etl

Si oui, augmenter la taille des buffers : tracelog -update -b 128 -max 40



C Utilisation des programmes/drivers

Le but maintenant est d'utiliser vos programmes/drivers tels qu'à l'accoutumée, et de tenter de reproduire les moments où votre son saute / lag / fait des pics aigus, etc.


D Arrêter tracelog et générer un fichier de rapport

1) tracelog -stop

2) tracerpt test01.etl -report dpcisr.html -f HTML



E Analyser le rapport html

1) Ouvrir le fichier dpcisr.html (celui-ci se trouve dans le même répertoire que le programme tracelog : C:WDDK7600.16385.1toolstracing amd64 ou i386 )

rq : le fichier généré peut aussi se trouver dans c:windowssystem32

2) Pour plus d'informations sur comment analyser le fichier aller voir le lien  : http://msdn.microsoft.com/en-us/library/ff545764%28v=vs.85%29.aspx



https://technet.microsoft.com/en-us/library/cc732700%28WS.10%29.aspx

https://developer.mozilla.org/en/Performance/Profiling_with_Xperf

--------------------------------------ANALYSE DU LOG-----------------------------

1)Nous avons ouvert le fichier dpcisr.html

2)Se positionner dans la rubrique :Répartition des temps d’exécution DPC

Ici nous obtenons l'allocation DPC par driver.

Nous devons chercher quels sont les drivers qui utilise le plus cette fonctionnalité avec une limite inférieure & supérieure élevée.

Exemple :

usbport.sys

Limite inférieure

Limite supérieure

Nombre

Pourcentage

4

5

2468

72.29

3

4

610

17.87

5

10

308

9.02

10

25

27

0.79

250

500

1

0.03

0

1

0

0.00

1

2

0

0.00

2

3

0

0.00

25

50

0

0.00

50

100

0

0.00

100

250

0

0.00



3414

100.0

 


On voit ici que le driver usbport.sys peut généré un pic élevé (entre 250 et 500) de temps d'occupation DPC mais de manière rare. (0.03%)

 

acpi.sys

Limite inférieure

Limite supérieure

Nombre

Pourcentage

100

250

11

27.50

50

100

9

22.50

250

500

8

20.00

25

50

7

17.50

10

25

4

10.00

5

10

1

2.50

0

1

0

0.00

1

2

0

0.00

2

3

0

0.00

3

4

0

0.00

4

5

0

0.00



40

100.0

 


On voit bien ici que le driver acpi.sys génère beaucoup de latence DPC (ce driver sert à la gestion de l'alimentation du système).

Il faut donc y remédier en modifiant les options d'alimentations en passant par exemple votre portable en mode performances élevées... (afin de minimiser l'impact de l'ACPI)

OU voir si d'autres personnes n'ont pas le problème avec ce driver  :

Exemple : dans google , rechercher : DPC Acpi.sys

 

Il faut faire de même avec les différents problèmes selon le driver (désactivation, mise à jour, etc.)

Bon courage & soyez prudent de ne pas faire n'importe quoi non plus!!

 

 

  • sebRomeo 55 posts au compteur
    sebRomeo
    Posteur AFfranchi
    Posté le 15/06/2013 à 03:54:24
    Génial !!! Simple, concis et efficace ! depuis le temps que je vois des gens qui galèrent sur les forums avec des problèmes de latence !! Au moins maintenant on peux savoir d'ou ca vient.

Vous souhaitez réagir à cet tutoriel ?

Se connecter
Devenir membre
cookies

Nous utilisons les cookies !

Oui, Audiofanzine utilise des cookies. Et comme la dernière chose que nous voudrions serait de perturber votre alimentation avec des choses trop grasses ou trop sucrées, sachez que ces derniers sont fait maison avec des produits frais, bio, équitables et dans des justes proportions nutritives. Ce que cela veut dire, c’est que les infos que nous y stockons ne visent qu’à simplifier votre usage du site comme à améliorer votre expérience sur nos pages (en savoir plus). Pour personnaliser vos cookies, merci de cliquer ici.

Nous tenons à préciser qu’Audiofanzine n’a pas attendu qu’une loi nous y oblige pour respecter la vie privée de nos membres et visiteurs. Les cookies que nous utilisons ont en commun leur unique objectif qui est d’améliorer votre expérience utilisateur.

Tous nos cookies

Cookies non soumis à consentement

Il s'agit de cookies qui garantissent le bon fonctionnement du site Audiofanzine et permettent son optimisation. Le site Web ne peut pas fonctionner correctement sans ces cookies.

Préférences du site

Nous retenons vos préférences afin que vous n’ayez pas à effectuer les mêmes actions chaque fois que vous revenez (options forums, mode sombre ou clair, filtres petites annonces, choix onglets news ou buzz, popups newsletters...).

Connexion

C'est grâce à cela que vous n’avez pas à vous reconnecter à chaque fois que vous venez sur Audiofanzine.

Analytics

Ces données nous permettent de comprendre l’utilisation que nos visiteurs font de notre site pour tenter de l’améliorer.

Publicités

Ces informations nous permettent de vous afficher des publicités qui vous concernent grâce auxquelles Audiofanzine est financé. En décochant cette case vous aurez toujours des publicités mais elles risquent d’être moins intéressantes :)

Nous tenons à préciser qu’Audiofanzine n’a pas attendu qu’une loi nous y oblige pour respecter la vie privée de nos membres et visiteurs. Les cookies que nous utilisons ont en commun leur unique objectif qui est d’améliorer votre expérience utilisateur.

Tous nos cookies

Cookies non soumis à consentement

Il s'agit de cookies qui garantissent le bon fonctionnement du site Audiofanzine et permettent son optimisation. Le site Web ne peut pas fonctionner correctement sans ces cookies.

Préférences du site

Nous retenons vos préférences afin que vous n’ayez pas à effectuer les mêmes actions chaque fois que vous revenez (options forums, mode sombre ou clair, filtres petites annonces, choix onglets news ou buzz, popups newsletters...).

Connexion

C'est grâce à cela que vous n’avez pas à vous reconnecter à chaque fois que vous venez sur Audiofanzine.

Analytics

Ces données nous permettent de comprendre l’utilisation que nos visiteurs font de notre site pour tenter de l’améliorer.

Publicités

Ces informations nous permettent de vous afficher des publicités qui vous concernent grâce auxquelles Audiofanzine est financé. En décochant cette case vous aurez toujours des publicités mais elles risquent d’être moins intéressantes :)


Vous pouvez trouver plus de détails sur la proctection des données dans la politique de confidentialité.