Jetson TK1 CPU Performance

Hi All,

I followed below link to maximise my CPU performance of TK1.

http://elinux.org/Jetson/Performance

When I enabled “performance” mode in TK1 and checking tegrastats, I can see all the 4 CPU’s are active. But I am not able to attain maximum CPU frequency always. ie. Sometimes I can see CPUs are running in 2218.5MHz and after few minutes it is running in 1938/1785/1810 MHz. Below are log messages.

E/TegraStats( 2284): RAM 582/1739MB (lfb 172x4MB) cpu [55%,8%,6%,4%]@2218 EMC 11%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0
E/TegraStats( 2284): RAM 582/1739MB (lfb 172x4MB) cpu [57%,6%,10%,6%]@2218 EMC 11%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0
E/TegraStats( 2284): RAM 582/1739MB (lfb 172x4MB) cpu [50%,11%,6%,6%]@2218 EMC 11%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0
E/TegraStats( 2284): RAM 582/1739MB (lfb 172x4MB) cpu [58%,8%,6%,3%]@2218 EMC 11%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0
E/TegraStats( 2284): RAM 582/1739MB (lfb 172x4MB) cpu [45%,16%,4%,8%]@2218 EMC 11%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0
E/TegraStats( 2284): RAM 582/1739MB (lfb 172x4MB) cpu [52%,8%,7%,4%]@2218 EMC 11%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0
E/TegraStats( 2284): RAM 582/1739MB (lfb 172x4MB) cpu [58%,8%,2%,8%]@2218 EMC 11%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0E/TegraStats( 2284): RAM 587/1739MB (lfb 172x4MB) cpu [78%,10%,64%,14%]@1810 EMC 12%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0
E/TegraStats( 2284): RAM 587/1739MB (lfb 172x4MB) cpu [72%,10%,19%,58%]@1785 EMC 12%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0
E/TegraStats( 2284): RAM 587/1739MB (lfb 172x4MB) cpu [52%,20%,38%,44%]@1785 EMC 12%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0
E/TegraStats( 2284): RAM 587/1739MB (lfb 172x4MB) cpu [64%,34%,26%,24%]@1759 EMC 12%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0
E/TegraStats( 2284): RAM 587/1739MB (lfb 172x4MB) cpu [70%,30%,54%,10%]@1759 EMC 12%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0
E/TegraStats( 2284): RAM 587/1739MB (lfb 172x4MB) cpu [66%,22%,38%,31%]@1785 EMC 12%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0
E/TegraStats( 2284): RAM 587/1739MB (lfb 172x4MB) cpu [54%,50%,17%,18%]@1785 EMC 12%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0
E/TegraStats( 2284): RAM 587/1739MB (lfb 172x4MB) cpu [48%,36%,14%,47%]@1810 EMC 12%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0
E/TegraStats( 2284): RAM 587/1739MB (lfb 172x4MB) cpu [67%,12%,16%,64%]@1810 EMC 12%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0
E/TegraStats( 2284): RAM 587/1739MB (lfb 172x4MB) cpu [45%,24%,55%,17%]@1836 EMC 12%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0
E/TegraStats( 2284): RAM 587/1739MB (lfb 172x4MB) cpu [61%,52%,22%,12%]@1836 EMC 12%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0
E/TegraStats( 2284): RAM 587/1739MB (lfb 172x4MB) cpu [59%,47%,23%,9%]@1836 EMC 12%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0
E/TegraStats( 2284): RAM 587/1739MB (lfb 172x4MB) cpu [34%,50%,20%,18%]@1836 EMC 12%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0
E/TegraStats( 2284): RAM 587/1739MB (lfb 172x4MB) cpu [61%,60%,18%,15%]@1810 EMC 12%@792 AVP 0%@204 VDE 120 GR3D 0%@852 EDP limit 0

I tried “Manually setting CPU frequency” steps by userspace mode. But no success. Frequency of CPU is varying not constant. Any suggestions on this?

Thanks,
Gopinath S

A number of things might matter, but I suspect the init scripts might still be coming in and adjusting things. You can disable the “on demand” features via:

sudo update-rc.d -f ondemand remove

…this won’t change whether manual changes are refused due to settings being invalid, but it will stop the system from second-guessing your own settings (and this removal of on-demand will persist across reboots).

Hi,

Thanks for the reply.

I am using Jetson TK1- Android (official NVIDIA’s release 5.0.1 ) from the below link.

[url]https://devtalk.nvidia.com/default/topic/878820/jetson-tk1/android-l-update-to-jetson-tk1/[/url]

Here is an update to my issue.

I observed, this is happening when device temperature is high. For example, When I removed the Heat sink fan (just for testing), I can see the CPU frequency is maximum at the starting. After sometime (2 or 3 mins), device got heated. If I am using heat sink fan, this issue not happening

So I guess, CPU frequency is forced to decrease on high temperature. I am not sure, where this conditions are handled ? Is it possible to disable this behaviour ?

Note:
I checked with Shield tablet K1 too. I put shield tablet in performance mode and tested this issue. I found this issue also present in it too. When the processor is overloaded(in terms of heat), it is forced to operate in lower frequency.

Is there anyways to prevent/disable this?

Regards,
Gopinath S

Thermal throttling is normal and important. I do not know what adjustments can be made other than in the kernel…perhaps there are firmware files which can be changed. However, this would probably be a “bad idea”, device life would be reduced. What is your use case? Is this just for testing?

Hi,

Yes. It is for testing and evaluation. My use case is, I need to do encode and decode a video upto 1080P simultaneously and send and receive over internet.Just like Skype call application.But when checked in shield tablet with performance mode, CPU frequency is not running in maximum. This means, limitations of proper heat sink in shield tab k1 ( I don’t think so)??? or this is due to some other factors???

Because in Jetson TK1, for the same application, I am able to run @ maximum cpu speed with default fan that comes with Jetson board.

Also can you please tell me the location in kernel where I can make this adjustment for thermal throttling?

I would think that by far the easiest thing to do when just testing would be to increase cooling. Not convenient for any kind of end product, but practical for temporary testing if using the Jetson.

I won’t guarantee the answer is correct, but if changing the kernel is your goal, then the files you are interested in should be under the “arch/arm/mach-tegra/” subdirectory. Chip specific files would be the “tegra12*” files (the JTK1 is the tegra12x series, specifically the tegra124 but may also inherit from earlier code such as ardbeg). In particular, look at tegra12_dvfs.c. This should be a large part of the voltage and frequency scaling code. Do beware that if you change the wrong thing by too much you can destroy the SoC or reduce its life…using increased cooling might be easier and risk-free.

Hi,

I will consider this. Thank-you.