diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2016-09-02 17:25:55 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2016-09-02 17:27:55 +0100 |
commit | f92e47f4014ac5e9b115bf43ad40fde5182ad636 (patch) | |
tree | e5ed4ae1afe810b1c5160c6f47364ef35631790b /benchmarks/ezbench.d | |
parent | a28e9e38a9efc6daf5a08d60d29adcd3e328fe6f (diff) |
benchmarks/gem_latency: Measure fence wakeup latencies
Useful for comparing the cost of explict fences versus implicit.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'benchmarks/ezbench.d')
-rw-r--r-- | benchmarks/ezbench.d/gem_latency.test | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/benchmarks/ezbench.d/gem_latency.test b/benchmarks/ezbench.d/gem_latency.test index a62e1026..22d91b2e 100644 --- a/benchmarks/ezbench.d/gem_latency.test +++ b/benchmarks/ezbench.d/gem_latency.test @@ -33,47 +33,63 @@ done # Measure the wakeup delay (each wakeup should be uncontended) __gem:latency:wait__() { for (( c=0; c<$1; c++ )); do - sudo $IGT_BENCHMARKS/gem_latency -t 2 -w 2 -p $2 -f 2 + sudo $IGT_BENCHMARKS/gem_latency -t 2 -w 2 -p $2 -f 2 $3 done } for p in 1 2 4 8 16 32 64 128 256 512 1024; do name="gem:latency:wait:$p" test_name="$test_name $name" eval "${name}_run() { __gem:latency:wait__ \$1 $p ; } " + + name="gem:latency:wait:$p:fence" + test_name="$test_name $name" + eval "${name}_run() { __gem:latency:wait__ \$1 $p -F ; } " done # Measure the total CPU cycles for the uncontended wakeups __gem:latency:cpu__() { for (( c=0; c<$1; c++ )); do - sudo $IGT_BENCHMARKS/gem_latency -t 2 -w 2 -p $2 -f 4 + sudo $IGT_BENCHMARKS/gem_latency -t 2 -w 2 -p $2 -f 4 $3 done } for p in 1 2 4 8 16 32 64 128 512 1024; do name="gem:latency:cpu:$p" test_name="$test_name $name" eval "${name}_run() { __gem:latency:cpu__ \$1 $p ; } " + + name="gem:latency:cpu:$p:fence" + test_name="$test_name $name" + eval "${name}_run() { __gem:latency:cpu__ \$1 $p -F ; } " done # Measure the wakeup delay for contended wakeups (multiple waiters per request) __gem:latency:herd__() { for (( c=0; c<$1; c++ )); do - sudo $IGT_BENCHMARKS/gem_latency -t 2 -w 1 -c $2 -f 2 + sudo $IGT_BENCHMARKS/gem_latency -t 2 -w 1 -c $2 -f 2 $3 done } for p in 0 1 2 4 8 16 32 64 128 512 1024; do name="gem:latency:herd:$p" test_name="$test_name $name" eval "${name}_run() { __gem:latency:herd__ \$1 $p ; } " + + name="gem:latency:herd:$p:fence" + test_name="$test_name $name" + eval "${name}_run() { __gem:latency:herd__ \$1 $p -F ; } " done # Measure the impact of contended wakeups on the RealTime waiter __gem:latency:realtime__() { for (( c=0; c<$1; c++ )); do - sudo $IGT_BENCHMARKS/gem_latency -t 2 -w 1 -c $2 -R -f 3 + sudo $IGT_BENCHMARKS/gem_latency -t 2 -w 1 -c $2 -R -f 3 $3 done } for p in 0 1 2 4 8 16 32 64 128 512 1024; do name="gem:latency:realtime:$p" test_name="$test_name $name" eval "${name}_run() { __gem:latency:realtime__ \$1 $p ; } " + + name="gem:latency:realtime:$p:fence" + test_name="$test_name $name" + eval "${name}_run() { __gem:latency:realtime__ \$1 $p -F ; } " done |