Durées d'exécution bizarres

cs_Gerard Messages postés 121 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 7 août 2018 - 2 sept. 2012 à 07:02
cs_Gerard Messages postés 121 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 7 août 2018 - 4 sept. 2012 à 05:57
Bonjour,
Je mesure les durées d'exécution d'une tâche de fond exécutée dans un thread dédié.
Cette tâche consiste à établir la liste de joueurs et de leur résultat.
Je constate plusieurs choses curieuses, dont une bizarre.
Bien sûr le temps d'exécution de la tâche dépend du nombre de joueurs et est linéairement croissante avec le nombre de joueurs.
la première chose curieuse, est que la pente de la droite obtenue change à un moment donné. je suppose que pendant un certain temps, les données sont toutes contenues dans la mémoire cache, mais qu'après il faut aller en chercher dans la mémoire générale ce qui allonge en proportion les calculs. Est-ce correct?
La deuxième chose curieuse, est que si j'arrête le serveur et le redémarre, le nombre de joueurs restant le même, la durée de calcul baisse sensiblement: meilleure utilisation de la mémoire cache?
Enfin et c'est là la chose bizarre, c'est que ces durées qui s'étalent de quelques microsecondes au début à quelques millisecondes
peuvent parfois sauter à des durées beaucoup plus importantes et cela par multiple de 50 millisecondes. Voir l'histogramme:
et leur répartition dans le temps:

On voit que cela peut se produire alors qu'il y a encore peu de joueurs mais que bien sûr le phénomène devient plus fréquent et plus remarquable au fur et à mesure que le nombre des joueurs augmente.
J'ai bien essayé de modifier la priorité du thread en lui affectant la plus haute possible (tpTimeCritical) mais cela n'a rien changé.
Je ne pense pas que ceci ait une incidence sur le fonctionnement du serveur, mais cela m'intrigue beaucoup.
Pour info, le processeur est un core I7 3770 et l'OS est W7.

Merci à celui qui pourrait avancer une explication et encore plus un remède!

2 réponses

Utilisateur anonyme
3 sept. 2012 à 22:49
Salut question intéressante mais trop vague pour qu'on puisse lui donner une réponse claire et limpide. Au passage dans tes graphes, l'axe des abscisses et des ordonnées correspondent à quoi ?
0
cs_Gerard Messages postés 121 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 7 août 2018
4 sept. 2012 à 05:57
Bonjour,
Merci de ta réponse.
En ordonnée les temps en microsecondes, en abscisse le nombre de mesures
[list]dans le premier, rangées en ordre décroissant, dans le second en ordre chronologique, donc en nombre croissant de joueurs./list
Est-ce que je peux faire quelque chose qui aiderait à éclaircir davantage ce point?

J'ajoute un autre graphique qui permet de mieux comprendre mes premières questions.
Il s'agit des mesures des temps découpés selon la tâche avec bien sûr un zoom sur l'axe des ordonnées:
On constate que la pente change vers 8H du matin, qu'il y a une brusque baisse vers midi suite à un redémarrage du serveur (volontaire) sans arrêter l'ordinateur.
Bien sûr les très grandes durées de multiples de 50 millisecondes sont largement en dehors du champ... (ordonnées toujours en microsecondes)
Passé minuit un autre tournoi recommence ce qui explique les valeurs à nouveau faibles, alors que celui de la veille se poursuit jusqu'à 2 heures du matin...
Note: C'est uniquement la dernière tâche - dresser la liste - qui est affectée par les sauts de 50ms.
0
Rejoignez-nous