问题描述:
边缘设备的cpu在低占有率时,进程运行时间抖动较大,在高占有率时,运行时间抖动更稳定
低占有率运行情况图:
相同处理逻辑循环中,两次处理的时间间隔:
原因排查:
考虑问题引起的原因,是由于进程在高频核上运行时,时间间隔较短,切换到低频核后,时间间隔会变大,导致进程运行时间抖动较大
CPU频率监控命令:watch -n 1 sudo cpupower monitor
低占有率时cpu频率监测:发现不同核的频率相差较大
高占有率时cpu频率监测:发现不同核的频率相差较小
问题解决:
1.设置cpu最低运行频率,使进程在切换核时,时间间隔保持稳定。
先把intel pstate驱动干掉:
vim /etc/default/grub
在quiets plash后添加intel_pstate=disable
更新grub
sudo update-grub
重启以后,可以看到driver已经从intel_pstate改为acpi_cpufreq了,现在可以愉快地改频率了。喜欢echo进sysfs的也可以,这里用工具cpufrequtils来做:
cpufreq-set -g userspace
cpufreq-set -f 3000000
此时CPU就被固定在2GHz的频率了,可调频率键入cat available_frequence应该有,不过能选的不多,有特殊需求就要修改这个静态数组然后重新编译内核了。
测试结果:
相同处理逻辑循环中,两次处理的时间间隔:
可以看到时间间隔明显变平稳,切延迟更低
2.进程绑核(待验证)
因为大概率是进程切核引起的问题,所以考虑该方案应该也可以解决问题。
注
arm平台也亲测有效,arm修改cpu频率方法请自行搜索
具体锁频的数值建议咨询供应商,避免烧cpu
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)