mesures Throughput
-
30-09-2019 - |
Question
J'ai écrit simplement outil de test de charge pour tester les performances des modules Java. Un problème que je pose est l'algorithme de débit des mesures. Les tests sont exécutés dans plusieurs fil (configure client comment test beaucoup de temps doit être répété), et le temps d'exécution est consigné. Ainsi, lorsque les tests sont terminés, nous avons l'histoire suivante:
4 test executions
2 threads
36ms overall time
- idle
* test execution
5ms 9ms 4ms 13ms
T1 |-*****-*********-****-*************-|
3ms 6ms 7ms 11ms
T2 |-***-******-*******-***********-----|
<-----------------36ms--------------->
Pour calculer I moment débit (par seconde) de façon suivante:. 1000 / overallTime * threadCount
Mais il y a un problème. Que faire si un fil complètera ses propres tests plus rapidement (pour une raison quelconque):
3ms 3ms 3ms 3ms
T1 |-***-***-***-***----------------|
3ms 6ms 7ms 11ms
T2 |-***-******-*******-***********-|
<--------------32ms-------------->
Dans ce cas, le débit réel est beaucoup mieux en raison du débit mesuré est délimitée par le plus lent fil . Alors, ma question est de savoir comment dois-je mesurer le débit d'exécution de code dans un environnement multithread.
La solution
Que diriez-vous throughput[t] = numberOfTests[t] / overallTime[t]
séparément pour chaque t
de fil, puis calculer la moyenne de tous throughput
?
Ensuite, vous pouvez également calculer des choses comme plage et écart-type pour obtenir une meilleure image. Personnellement, je l'aime beaucoup parcelles boîte . Mais seulement les chiffres eux-mêmes serait intéressant.
Autres conseils
Je sais que son bit une fin, mais j'ai deux postes de blog associés à votre question. Le premier décrit comment mesurer le débit (et Temps de réponse). Le deuxième décrit un moyen de débit graphique .