From f92e47f4014ac5e9b115bf43ad40fde5182ad636 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Fri, 2 Sep 2016 17:25:55 +0100 Subject: benchmarks/gem_latency: Measure fence wakeup latencies Useful for comparing the cost of explict fences versus implicit. Signed-off-by: Chris Wilson --- benchmarks/ezbench.d/gem_latency.test | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'benchmarks/ezbench.d') 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 -- cgit v1.2.3