吞吐量测量

时间:2010-04-21 09:29:30

标签: metrics load-testing throughput

我编写了简单的load testing tool来测试Java模块的性能。我遇到的一个问题是吞吐量测量算法。测试在多个线程中执行(客户端配置应重复测试的次数),并记录执行时间。因此,当测试完成后,我们有以下历史记录:

4 test executions
2 threads
36ms overall time

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

目前我按以下方式计算吞吐量(每秒):1000 / overallTime * threadCount

但是有问题。如果一个线程更快地完成它自己的测试(无论出于何种原因)该怎么办:

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

在这种情况下,实际吞吐量要好得多,因为测量的吞吐量受到的限制  最慢的线程。所以,我的问题是如何衡量多线程环境中代码执行的吞吐量。

2 个答案:

答案 0 :(得分:1)

每个帖子throughput[t] = numberOfTests[t] / overallTime[t]分别t怎么样,然后计算所有throughput的平均值?

然后你还可以计算范围和标准偏差之类的东西,以获得更好的画面。我个人非常喜欢box plots。但只是数字本身会很有趣。

答案 1 :(得分:1)

我知道它有点晚了,但我有两篇与您的问题相关的博文。第一个描述how you measure throughput(和响应时间)。第二个describes a way to graph throughput