Skip to content

Commit 8e558ad

Browse files
committed
gpu_usage: Initial import of script to read gpu usage debugfs info
1 parent 4f4a828 commit 8e558ad

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

scripts/gpu_usage.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/usr/bin/env python3
2+
3+
import time
4+
import operator
5+
6+
def get_stats():
7+
try:
8+
with open('/sys/kernel/debug/dri/0/gpu_usage') as f:
9+
lines = f.readlines()
10+
except:
11+
print("gpu_uage is not supported on this device")
12+
exit(1)
13+
queue = {}
14+
for i in lines:
15+
s = i.replace("'", "").replace('"', "").strip().rstrip(';').split(';')
16+
queues = ["bin", "render", "tfu", "csd", "cache_clean"]
17+
if s[0] == 'timestamp':
18+
timestamp = int(s[1])
19+
elif s[0] == 'QUEUE':
20+
names = s[1:]
21+
elif s[0].replace("v3d_", "") in queues:
22+
queue[s[0]] = list(map(int, s[1:]))
23+
else:
24+
print(s)
25+
assert(False)
26+
return timestamp, names, queue
27+
28+
last_timestamp = None
29+
30+
while True:
31+
timestamp, names, queue = get_stats()
32+
if last_timestamp is not None:
33+
q = {}
34+
t = timestamp - last_timestamp
35+
for k,v in queue.items():
36+
q[k] = list(map(operator.sub, queue[k], last_queue[k]))
37+
s = []
38+
for k,v in q.items():
39+
s.append(f"{k}: jobs:{v[0]:3}{100.0*v[1]/t:6.1f}%")
40+
print(", ".join(s))
41+
last_timestamp = timestamp
42+
last_queue = queue
43+
time.sleep(1)

0 commit comments

Comments
 (0)