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.

È stato utile?

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 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top