summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2015-12-20 15:50:23 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2015-12-21 11:40:09 +0000
commit1761e009245c308471c7e7eca104ea60c69f41c0 (patch)
tree0627244f3f1971624c2a2c82627853b1e011c612
parent8851956a85b645fc7ca463b8ef850865a5132532 (diff)
more-lat
-rw-r--r--tests.d/gem/gem_latency.test36
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