diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2015-12-20 15:50:23 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2015-12-21 11:40:09 +0000 |
commit | 1761e009245c308471c7e7eca104ea60c69f41c0 (patch) | |
tree | 0627244f3f1971624c2a2c82627853b1e011c612 | |
parent | 8851956a85b645fc7ca463b8ef850865a5132532 (diff) |
more-lat
-rw-r--r-- | tests.d/gem/gem_latency.test | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/tests.d/gem/gem_latency.test b/tests.d/gem/gem_latency.test index b3ff07b..f3a25e4 100644 --- a/tests.d/gem/gem_latency.test +++ b/tests.d/gem/gem_latency.test @@ -4,38 +4,62 @@ test_invert=1 [ -e $IGT_BENCHMARKS/gem_latency ] || return 1 sudo -n true || return 1 +# Measure the execution delay vs contention, just for fun __gem:latency:dispatch__() { for (( c=0; c<$1; c++ )); do sudo $IGT_BENCHMARKS/gem_latency -t 2 -p $2 -f 1 done } - -for p in 1 2 4 8 16 32 64 128; do +for p in 1 2 4 8 16 32 64 128 256 512 1024; do name="gem:latency:dispatch:$p" test_name="$test_name $name" eval "${name}_run() { __gem:latency:dispatch__ \$1 $p ; } " 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 done } - -for p in 1 2 4 8 16 32 64 128; do +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 ; } " 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 + 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 ; } " +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 done } - -for p in 0 1 2 4 8 16 32 64 128; do +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 ; } " 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 + 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 ; } " +done |