我有一台运行在root版Android上的单板计算机。我有一个使用opencv的应用程序需要很多CPU使用率。有时应用程序的性能下降是因为另一个进程在Android OS上运行。我想知道有没有办法改变我的应用程序的线程的优先级,以避免失去性能。我知道对于没有root的版本,这是不可能的,但对于rooted版本有没有办法做到这一点?
答案 0 :(得分:0)
在Linux上,您可以使用命令nice执行此操作。您必须使用负参数来提高优先级,并且您必须是root用户:
nice --20 name_of_your_command
要更改正在运行的流程的优先级,您可以使用renice。
答案 1 :(得分:0)
使用renice命令,可以更改进程的优先级。 Android使用完全公平的队列来安排进程。
用于创建新流程并更改其优先级:
nice -n 10 command
#means start command and set its nice value to 10
对于已经运行的进程:
toybox renice -p pid -n 10
#means change the pid process nice value to 10, toybox is for Android M
好的值介于-20到19之间, ps -t -p 会显示所有过程的好处值:
USER PID PPID VSIZE RSS PRIO NICE RTPRI SCHED WCHAN PC NAME
root 1 0 1372 780 20 0 0 0 SyS_epoll_ 00000000 S /init
root 2 0 0 0 -2 0 1 1 kthreadd 00000000 S kthreadd
对于非实时过程,PRIO = 20 + NICE,值越小,优先级越高