Frage

Ich schrieb einfach Lasttest-Tool für die Leistung von Java-Module zu testen. Ein Problem, das ich konfrontiert ist Algorithmus von Durchsatzmessungen. Die Tests werden in mehrere Thread (Client konfiguriert, wie viel mal Test wiederholt werden soll) ausgeführt, und die Ausführungszeit protokolliert. Also, wenn die Tests abgeschlossen sind haben wir folgende Geschichte:

4 test executions
2 threads
36ms overall time

- idle
* test execution
       5ms    9ms     4ms      13ms
T1  |-*****-*********-****-*************-|
      3ms  6ms     7ms      11ms
T2  |-***-******-*******-***********-----|
    <-----------------36ms--------------->

Für den Moment, als ich berechnet Durchsatz (pro Sekunde) auf folgende Weise:. 1000 / overallTime * threadCount

Aber es gibt Probleme. Was passiert, wenn ein Thread füllen Sie es schneller eigenen Tests ist (aus irgendeinem Grund):

      3ms 3ms 3ms 3ms
T1  |-***-***-***-***----------------|
      3ms  6ms     7ms      11ms
T2  |-***-******-*******-***********-|
    <--------------32ms-------------->

In diesem Fall tatsächlichen Durchsatz ist viel besser, weil die gemessene Durchsatz ist begrenzt durch  der langsame Thread . Also, meine Frage ist, wie soll ich in Multithread-Umgebung Durchsatz von Codeausführung messen.

War es hilfreich?

Lösung

Wie wäre es throughput[t] = numberOfTests[t] / overallTime[t] separat für jeden Thread t, und berechnen dann den Mittelwert aller throughput?

Dann können Sie auch Dinge wie Bereich und Standardabweichung berechnen um ein besseres Bild zu bekommen. Persönlich bin ich sehr gern Box-Plots . Aber nur die Zahlen selbst wäre interessant.

Andere Tipps

Ich weiß, es ist ein bisschen spät, aber ich habe zwei Blog-Posts mit Ihrer Frage verbunden. Das beschreibt zunächst , wie Sie Durchsatz messen (und Reaktionszeit). Die zweite beschreibt einen Weg, um Graph Durchsatz .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top