xref: /aosp_15_r20/external/igt-gpu-tools/benchmarks/ezbench.d/gem_latency.test (revision d83cc019efdc2edc6c4b16e9034a3ceb8d35d77c)
1*d83cc019SAndroid Build Coastguard Workertest_exec_time=2
2*d83cc019SAndroid Build Coastguard Workertest_invert=1
3*d83cc019SAndroid Build Coastguard Worker
4*d83cc019SAndroid Build Coastguard Worker[ -e $IGT_BENCHMARKS/gem_latency ] || return 1
5*d83cc019SAndroid Build Coastguard Workersudo -n true || return 1
6*d83cc019SAndroid Build Coastguard Worker
7*d83cc019SAndroid Build Coastguard Worker__gem:dispatch__() {
8*d83cc019SAndroid Build Coastguard Worker    for (( c=0; c<$1; c++ )); do
9*d83cc019SAndroid Build Coastguard Worker        sudo $IGT_BENCHMARKS/gem_latency -t 2 -n $2 -p $3 -f $4
10*d83cc019SAndroid Build Coastguard Worker    done
11*d83cc019SAndroid Build Coastguard Worker}
12*d83cc019SAndroid Build Coastguard Worker
13*d83cc019SAndroid Build Coastguard Worker# Measure the delay to execute N nops
14*d83cc019SAndroid Build Coastguard Workerfor n in 0 1 2 4 8 16 32 64 128 256 512 1024; do
15*d83cc019SAndroid Build Coastguard Worker	name="gem:exec:latency:$n"
16*d83cc019SAndroid Build Coastguard Worker	test_name="$test_name $name"
17*d83cc019SAndroid Build Coastguard Worker	eval "${name}_run() { __gem:dispatch__ \$1 $n 1 1 ; } "
18*d83cc019SAndroid Build Coastguard Workerdone
19*d83cc019SAndroid Build Coastguard Worker
20*d83cc019SAndroid Build Coastguard Worker# Measure the execution delay vs contention, just for fun
21*d83cc019SAndroid Build Coastguard Workerfor p in 1 2 4 8 16 32 64 128 256 512 1024; do
22*d83cc019SAndroid Build Coastguard Worker	name="gem:latency:dispatch:$p"
23*d83cc019SAndroid Build Coastguard Worker	test_name="$test_name $name"
24*d83cc019SAndroid Build Coastguard Worker	eval "${name}_run() { __gem:dispatch__ \$1 0 $p 1 ; } "
25*d83cc019SAndroid Build Coastguard Workerdone
26*d83cc019SAndroid Build Coastguard Worker
27*d83cc019SAndroid Build Coastguard Workerfor p in 1 2 4 8 16 32 64 128 256 512 1024; do
28*d83cc019SAndroid Build Coastguard Worker	name="gem:throughput:dispatch:$p"
29*d83cc019SAndroid Build Coastguard Worker	test_name="$test_name $name"
30*d83cc019SAndroid Build Coastguard Worker	eval "${name}_run() { __gem:dispatch__ \$1 8 $p 5 ; } "
31*d83cc019SAndroid Build Coastguard Workerdone
32*d83cc019SAndroid Build Coastguard Worker
33*d83cc019SAndroid Build Coastguard Worker# Measure the wakeup delay (each wakeup should be uncontended)
34*d83cc019SAndroid Build Coastguard Worker__gem:latency:wait__() {
35*d83cc019SAndroid Build Coastguard Worker    for (( c=0; c<$1; c++ )); do
36*d83cc019SAndroid Build Coastguard Worker        sudo $IGT_BENCHMARKS/gem_latency -t 2 -w 2 -p $2 -f 2 $3
37*d83cc019SAndroid Build Coastguard Worker    done
38*d83cc019SAndroid Build Coastguard Worker}
39*d83cc019SAndroid Build Coastguard Workerfor p in 1 2 4 8 16 32 64 128 256 512 1024; do
40*d83cc019SAndroid Build Coastguard Worker	name="gem:latency:wait:$p"
41*d83cc019SAndroid Build Coastguard Worker	test_name="$test_name $name"
42*d83cc019SAndroid Build Coastguard Worker	eval "${name}_run() { __gem:latency:wait__ \$1 $p ; } "
43*d83cc019SAndroid Build Coastguard Worker
44*d83cc019SAndroid Build Coastguard Worker	name="gem:latency:wait:$p:fence"
45*d83cc019SAndroid Build Coastguard Worker	test_name="$test_name $name"
46*d83cc019SAndroid Build Coastguard Worker	eval "${name}_run() { __gem:latency:wait__ \$1 $p -F ; } "
47*d83cc019SAndroid Build Coastguard Workerdone
48*d83cc019SAndroid Build Coastguard Worker
49*d83cc019SAndroid Build Coastguard Worker# Measure the total CPU cycles for the uncontended wakeups
50*d83cc019SAndroid Build Coastguard Worker__gem:latency:cpu__() {
51*d83cc019SAndroid Build Coastguard Worker    for (( c=0; c<$1; c++ )); do
52*d83cc019SAndroid Build Coastguard Worker        sudo $IGT_BENCHMARKS/gem_latency -t 2 -w 2 -p $2 -f 4 $3
53*d83cc019SAndroid Build Coastguard Worker    done
54*d83cc019SAndroid Build Coastguard Worker}
55*d83cc019SAndroid Build Coastguard Workerfor p in 1 2 4 8 16 32 64 128 512 1024; do
56*d83cc019SAndroid Build Coastguard Worker	name="gem:latency:cpu:$p"
57*d83cc019SAndroid Build Coastguard Worker	test_name="$test_name $name"
58*d83cc019SAndroid Build Coastguard Worker	eval "${name}_run() { __gem:latency:cpu__ \$1 $p ; } "
59*d83cc019SAndroid Build Coastguard Worker
60*d83cc019SAndroid Build Coastguard Worker	name="gem:latency:cpu:$p:fence"
61*d83cc019SAndroid Build Coastguard Worker	test_name="$test_name $name"
62*d83cc019SAndroid Build Coastguard Worker	eval "${name}_run() { __gem:latency:cpu__ \$1 $p -F ; } "
63*d83cc019SAndroid Build Coastguard Workerdone
64*d83cc019SAndroid Build Coastguard Worker
65*d83cc019SAndroid Build Coastguard Worker# Measure the wakeup delay for contended wakeups (multiple waiters per request)
66*d83cc019SAndroid Build Coastguard Worker__gem:latency:herd__() {
67*d83cc019SAndroid Build Coastguard Worker    for (( c=0; c<$1; c++ )); do
68*d83cc019SAndroid Build Coastguard Worker        sudo $IGT_BENCHMARKS/gem_latency -t 2 -w 1 -c $2 -f 2 $3
69*d83cc019SAndroid Build Coastguard Worker    done
70*d83cc019SAndroid Build Coastguard Worker}
71*d83cc019SAndroid Build Coastguard Workerfor p in 0 1 2 4 8 16 32 64 128 512 1024; do
72*d83cc019SAndroid Build Coastguard Worker	name="gem:latency:herd:$p"
73*d83cc019SAndroid Build Coastguard Worker	test_name="$test_name $name"
74*d83cc019SAndroid Build Coastguard Worker	eval "${name}_run() { __gem:latency:herd__ \$1 $p ; } "
75*d83cc019SAndroid Build Coastguard Worker
76*d83cc019SAndroid Build Coastguard Worker	name="gem:latency:herd:$p:fence"
77*d83cc019SAndroid Build Coastguard Worker	test_name="$test_name $name"
78*d83cc019SAndroid Build Coastguard Worker	eval "${name}_run() { __gem:latency:herd__ \$1 $p -F ; } "
79*d83cc019SAndroid Build Coastguard Workerdone
80*d83cc019SAndroid Build Coastguard Worker
81*d83cc019SAndroid Build Coastguard Worker# Measure the impact of contended wakeups on the RealTime waiter
82*d83cc019SAndroid Build Coastguard Worker__gem:latency:realtime__() {
83*d83cc019SAndroid Build Coastguard Worker    for (( c=0; c<$1; c++ )); do
84*d83cc019SAndroid Build Coastguard Worker        sudo $IGT_BENCHMARKS/gem_latency -t 2 -w 1 -c $2 -R -f 3 $3
85*d83cc019SAndroid Build Coastguard Worker    done
86*d83cc019SAndroid Build Coastguard Worker}
87*d83cc019SAndroid Build Coastguard Workerfor p in 0 1 2 4 8 16 32 64 128 512 1024; do
88*d83cc019SAndroid Build Coastguard Worker	name="gem:latency:realtime:$p"
89*d83cc019SAndroid Build Coastguard Worker	test_name="$test_name $name"
90*d83cc019SAndroid Build Coastguard Worker	eval "${name}_run() { __gem:latency:realtime__ \$1 $p ; } "
91*d83cc019SAndroid Build Coastguard Worker
92*d83cc019SAndroid Build Coastguard Worker	name="gem:latency:realtime:$p:fence"
93*d83cc019SAndroid Build Coastguard Worker	test_name="$test_name $name"
94*d83cc019SAndroid Build Coastguard Worker	eval "${name}_run() { __gem:latency:realtime__ \$1 $p -F ; } "
95*d83cc019SAndroid Build Coastguard Workerdone
96