Throughput misurazioni
-
30-09-2019 - |
Domanda
ho scritto semplice test di carico strumento per testare le prestazioni dei moduli Java. Un problema che ho riscontrato è l'algoritmo di throughput misurazioni. I test vengono eseguiti in vari fili (configurazione client Quante volte test deve essere ripetuto) e tempo di esecuzione viene registrato. Così, quando i test sono finiti abbiamo seguente storia:
4 test executions
2 threads
36ms overall time
- idle
* test execution
5ms 9ms 4ms 13ms
T1 |-*****-*********-****-*************-|
3ms 6ms 7ms 11ms
T2 |-***-******-*******-***********-----|
<-----------------36ms--------------->
Per il momento mi calcolare il throughput (al secondo) in modo seguente:. 1000 / overallTime * threadCount
Ma c'è problema. Che cosa succede se un thread completerà è propri test più rapidamente (per qualsiasi motivo):
3ms 3ms 3ms 3ms
T1 |-***-***-***-***----------------|
3ms 6ms 7ms 11ms
T2 |-***-******-*******-***********-|
<--------------32ms-------------->
In questo caso il throughput reale è molto meglio a causa del volume è misurata delimitata da il filo più lento . Quindi, la mia domanda è come devo misurare il throughput di esecuzione di codice in un ambiente multithreading.
Soluzione
Come su throughput[t] = numberOfTests[t] / overallTime[t]
separatamente per ogni t
filo, e quindi calcolare la media di tutti i throughput
?
Poi si può anche calcolare le cose come gamma e la deviazione standard per ottenere un quadro migliore. Personalmente sono molto affezionato a boxplot . Ma solo i numeri stessi sarebbe interessante.
Altri suggerimenti
So che la sua parte un ritardo, ma ho due post del blog associati con la vostra domanda. Il primo descrive come si misura il throughput (e tempo di risposta). Il secondo descrive un metodo per il throughput grafico .