$ cat /etc/nv_tegra_release
# R32 (release), REVISION: 4.4, GCID: 23942405, BOARD: t186ref, EABI: aarch64, DATE: Fri Oct 16 19:37:08 UTC 2020
Here is the jetson_clocks
although I don’t see the point. That’s not going to change how much CPU gets used by a process, is it?
$ sudo jetson_clocks
$ sudo jetson_clocks --show
SOC family:tegra194 Machine:Jetson-AGX
Online CPUs: 0-7
CPU Cluster Switching: Disabled
cpu0: Online=1 Governor=schedutil MinFreq=1190400 MaxFreq=1190400 CurrentFreq=1190400 IdleStates: C1=0 c6=0
cpu1: Online=1 Governor=schedutil MinFreq=1190400 MaxFreq=1190400 CurrentFreq=1190400 IdleStates: C1=0 c6=0
cpu2: Online=1 Governor=schedutil MinFreq=1190400 MaxFreq=1190400 CurrentFreq=1190400 IdleStates: C1=0 c6=0
cpu3: Online=1 Governor=schedutil MinFreq=1190400 MaxFreq=1190400 CurrentFreq=1190400 IdleStates: C1=0 c6=0
cpu4: Online=1 Governor=schedutil MinFreq=1190400 MaxFreq=1190400 CurrentFreq=1190400 IdleStates: C1=0 c6=0
cpu5: Online=1 Governor=schedutil MinFreq=1190400 MaxFreq=1190400 CurrentFreq=1190400 IdleStates: C1=0 c6=0
cpu6: Online=1 Governor=schedutil MinFreq=1190400 MaxFreq=1190400 CurrentFreq=1190400 IdleStates: C1=0 c6=0
cpu7: Online=1 Governor=schedutil MinFreq=1190400 MaxFreq=1190400 CurrentFreq=1190400 IdleStates: C1=0 c6=0
GPU MinFreq=905250000 MaxFreq=905250000 CurrentFreq=905250000
EMC MinFreq=204000000 MaxFreq=1600000000 CurrentFreq=1600000000 FreqOverride=1
Fan: speed=0
NV Power Mode: MODE_30W_ALL
Here are the stats WITH MY FIX (i.e. a clock_nanosleep()
which should NOT be required):
$ sudo tegrastats
RAM 5849/31919MB (lfb 5509x4MB) SWAP 0/15959MB (cached 0MB) CPU [6%@1190,0%@1190,0%@1190,0%@1190,1%@1190,0%@1190,2%@1190,9%@1190] EMC_FREQ 10%@1600 GR3D_FREQ 0%@905 NVDEC 345 NVDEC1 345 APE 150 MTS fg 0% bg 0% AO@48.5C GPU@49C Tdiode@52.75C PMIC@100C AUX@47.5C CPU@49.5C thermal@48.55C Tboard@49C GPU 778/778 CPU 622/622 SOC 2021/2021 CV 0/0 VDDRQ 777/777 SYS5V 2430/2430
RAM 5849/31919MB (lfb 5509x4MB) SWAP 0/15959MB (cached 0MB) CPU [5%@1190,2%@1190,0%@1190,0%@1190,0%@1190,0%@1190,2%@1190,9%@1190] EMC_FREQ 10%@1600 GR3D_FREQ 10%@905 NVDEC 345 NVDEC1 345 APE 150 MTS fg 0% bg 0% AO@48.5C GPU@49C Tdiode@53C PMIC@100C AUX@47C CPU@49.5C thermal@48.35C Tboard@49C GPU 778/778 CPU 622/622 SOC 2021/2021 CV 0/0 VDDRQ 777/777 SYS5V 2390/2410
RAM 5849/31919MB (lfb 5509x4MB) SWAP 0/15959MB (cached 0MB) CPU [8%@1190,0%@1190,0%@1190,0%@1190,0%@1190,0%@1190,2%@1190,8%@1190] EMC_FREQ 10%@1600 GR3D_FREQ 9%@905 NVDEC 345 NVDEC1 345 APE 150 MTS fg 0% bg 0% AO@48.5C GPU@49C Tdiode@53C PMIC@100C AUX@47C CPU@49.5C thermal@48.2C Tboard@49C GPU 778/778 CPU 622/622 SOC 2021/2021 CV 0/0 VDDRQ 777/777 SYS5V 2390/2403
RAM 5849/31919MB (lfb 5509x4MB) SWAP 0/15959MB (cached 0MB) CPU [5%@1190,0%@1190,0%@1190,0%@1190,0%@1190,0%@1190,4%@1190,10%@1190] EMC_FREQ 10%@1600 GR3D_FREQ 0%@905 NVDEC 345 NVDEC1 345 APE 150 MTS fg 0% bg 0% AO@48.5C GPU@49C Tdiode@53C PMIC@100C AUX@47C CPU@49.5C thermal@48.35C Tboard@49C GPU 778/778 CPU 622/622 SOC 2021/2021 CV 0/0 VDDRQ 777/777 SYS5V 2430/2410
RAM 5849/31919MB (lfb 5509x4MB) SWAP 0/15959MB (cached 0MB) CPU [6%@1190,1%@1190,0%@1190,0%@1189,0%@1190,0%@1190,6%@1190,10%@1190] EMC_FREQ 10%@1600 GR3D_FREQ 10%@905 NVDEC 345 NVDEC1 345 APE 150 MTS fg 0% bg 0% AO@48.5C GPU@49C Tdiode@53C PMIC@100C AUX@47C CPU@49.5C thermal@48.2C Tboard@49C GPU 778/778 CPU 622/622 SOC 2021/2021 CV 0/0 VDDRQ 777/777 SYS5V 2390/2406
RAM 5849/31919MB (lfb 5509x4MB) SWAP 0/15959MB (cached 0MB) CPU [6%@1190,0%@1190,0%@1190,0%@1190,0%@1190,0%@1190,4%@1190,12%@1190] EMC_FREQ 10%@1600 GR3D_FREQ 0%@905 NVDEC 345 NVDEC1 345 APE 150 MTS fg 0% bg 0% AO@48.5C GPU@49C Tdiode@53C PMIC@100C AUX@47C CPU@49C thermal@48.2C Tboard@49C GPU 778/778 CPU 622/622 SOC 2021/2021 CV 0/0 VDDRQ 777/777 SYS5V 2390/2403
And here is another run when I turn off my nanosleep()
trick, this time you see the CPUs with really high % and of course the tegra_clocks
didn’t help any.
$ sudo tegrastats
RAM 5913/31919MB (lfb 5494x4MB) SWAP 0/15959MB (cached 0MB) CPU [9%@1190,1%@1190,2%@1190,0%@1190,2%@1190,0%@1190,1%@1190,92%@1190] EMC_FREQ 10%@1600 GR3D_FREQ 0%@905 NVDEC 345 NVDEC1 345 APE 150 MTS fg 0% bg 0% AO@49C GPU@49C Tdiode@53C PMIC@100C AUX@47.5C CPU@49.5C thermal@48.55C Tboard@49C GPU 777/777 CPU 777/777 SOC 2021/2021 CV 0/0 VDDRQ 777/777 SYS5V 2390/2390
RAM 5913/31919MB (lfb 5494x4MB) SWAP 0/15959MB (cached 0MB) CPU [5%@1190,0%@1190,0%@1190,0%@1190,0%@1190,0%@1190,2%@1190,97%@1190] EMC_FREQ 10%@1600 GR3D_FREQ 9%@905 NVDEC 345 NVDEC1 345 APE 150 MTS fg 0% bg 0% AO@49C GPU@49C Tdiode@53.25C PMIC@100C AUX@47.5C CPU@49.5C thermal@48.55C Tboard@49C GPU 777/777 CPU 777/777 SOC 2021/2021 CV 0/0 VDDRQ 777/777 SYS5V 2390/2390
RAM 5913/31919MB (lfb 5494x4MB) SWAP 0/15959MB (cached 0MB) CPU [7%@1190,2%@1190,2%@1190,0%@1190,0%@1190,0%@1190,2%@1190,94%@1190] EMC_FREQ 10%@1600 GR3D_FREQ 4%@905 NVDEC 345 NVDEC1 345 APE 150 MTS fg 0% bg 0% AO@49C GPU@49C Tdiode@53.25C PMIC@100C AUX@47.5C CPU@49.5C thermal@48.55C Tboard@49C GPU 778/777 CPU 777/777 SOC 2021/2021 CV 0/0 VDDRQ 777/777 SYS5V 2390/2390
RAM 5913/31919MB (lfb 5494x4MB) SWAP 0/15959MB (cached 0MB) CPU [21%@1190,8%@1190,0%@1190,0%@1190,0%@1190,0%@1190,8%@1190,71%@1190] EMC_FREQ 10%@1600 GR3D_FREQ 9%@905 NVDEC 345 NVDEC1 345 APE 150 MTS fg 0% bg 0% AO@49C GPU@49C Tdiode@53.25C PMIC@100C AUX@47.5C CPU@50C thermal@48.55C Tboard@49C GPU 777/777 CPU 777/777 SOC 2021/2021 CV 0/0 VDDRQ 777/777 SYS5V 2390/2390
RAM 5913/31919MB (lfb 5494x4MB) SWAP 0/15959MB (cached 0MB) CPU [25%@1190,2%@1190,6%@1190,0%@1190,0%@1190,0%@1190,2%@1190,73%@1190] EMC_FREQ 10%@1600 GR3D_FREQ 0%@905 NVDEC 345 NVDEC1 345 APE 150 MTS fg 0% bg 0% AO@49C GPU@49C Tdiode@53.25C PMIC@100C AUX@47.5C CPU@49.5C thermal@48.7C Tboard@49C GPU 777/777 CPU 777/777 SOC 2021/2021 CV 0/0 VDDRQ 777/777 SYS5V 2430/2398
RAM 5913/31919MB (lfb 5494x4MB) SWAP 0/15959MB (cached 0MB) CPU [35%@1190,1%@1190,0%@1190,0%@1190,4%@1190,1%@1190,7%@1190,72%@1190] EMC_FREQ 10%@1600 GR3D_FREQ 10%@905 NVDEC 345 NVDEC1 345 APE 150 MTS fg 0% bg 1% AO@48.5C GPU@49C Tdiode@53.25C PMIC@100C AUX@47.5C CPU@49.5C thermal@48.55C Tboard@49C GPU 777/777 CPU 777/777 SOC 2021/2021 CV 0/0 VDDRQ 777/777 SYS5V 2390/2396
RAM 5913/31919MB (lfb 5494x4MB) SWAP 0/15959MB (cached 0MB) CPU [28%@1190,0%@1190,0%@1190,0%@1190,1%@1190,0%@1190,1%@1190,73%@1190] EMC_FREQ 10%@1600 GR3D_FREQ 0%@905 NVDEC 345 NVDEC1 345 APE 150 MTS fg 0% bg 1% AO@49C GPU@49C Tdiode@53.25C PMIC@100C AUX@47.5C CPU@49.5C thermal@48.55C Tboard@49C GPU 777/777 CPU 777/777 SOC 2021/2021 CV 0/0 VDDRQ 777/777 SYS5V 2390/2395
RAM 5913/31919MB (lfb 5494x4MB) SWAP 0/15959MB (cached 0MB) CPU [29%@1190,2%@1190,3%@1190,0%@1190,0%@1190,0%@1190,3%@1190,74%@1190] EMC_FREQ 10%@1600 GR3D_FREQ 0%@905 NVDEC 345 NVDEC1 345 APE 150 MTS fg 0% bg 0% AO@49C GPU@49C Tdiode@53.25C PMIC@100C AUX@47.5C CPU@49.5C thermal@48.55C Tboard@49C GPU 777/777 CPU 777/777 SOC 2177/2040 CV 0/0 VDDRQ 777/777 SYS5V 2430/2400
RAM 5914/31919MB (lfb 5494x4MB) SWAP 0/15959MB (cached 0MB) CPU [8%@1190,0%@1190,0%@1190,0%@1190,0%@1190,0%@1190,1%@1190,97%@1190] EMC_FREQ 10%@1600 GR3D_FREQ 10%@905 NVDEC 345 NVDEC1 345 APE 150 MTS fg 0% bg 0% AO@49C GPU@49C Tdiode@53.25C PMIC@100C AUX@47.5C CPU@49.5C thermal@48.55C Tboard@49C GPU 777/777 CPU 777/777 SOC 2021/2038 CV 0/0 VDDRQ 777/777 SYS5V 2390/2398
RAM 5913/31919MB (lfb 5493x4MB) SWAP 0/15959MB (cached 0MB) CPU [7%@1190,0%@1190,2%@1190,6%@1190,0%@1190,0%@1190,3%@1190,87%@1190] EMC_FREQ 10%@1600 GR3D_FREQ 0%@905 NVDEC 345 NVDEC1 345 APE 150 MTS fg 0% bg 0% AO@49C GPU@49C Tdiode@53.25C PMIC@100C AUX@47.5C CPU@49.5C thermal@48.55C Tboard@49C GPU 777/777 CPU 777/777 SOC 2021/2036 CV 0/0 VDDRQ 777/777 SYS5V 2390/2398
RAM 5914/31919MB (lfb 5493x4MB) SWAP 0/15959MB (cached 0MB) CPU [7%@1190,1%@1190,0%@1190,0%@1190,0%@1190,0%@1190,8%@1190,90%@1190] EMC_FREQ 10%@1600 GR3D_FREQ 0%@905 NVDEC 345 NVDEC1 345 APE 150 MTS fg 0% bg 1% AO@49C GPU@49C Tdiode@53.25C PMIC@100C AUX@47.5C CPU@49.5C thermal@48.55C Tboard@49C GPU 777/777 CPU 777/777 SOC 2021/2035 CV 0/0 VDDRQ 777/777 SYS5V 2430/2400
Again, the culprit is the eglSwapBuffers()
which apparently doesn’t know how to wait for the VBL with an interrupt… so instead it uses 100% of a CPU. If I sleep, it reduces the usage to about 10% as I have it now. But I’d like the eglSwapBuffers()
to work instead.