我正在维护一个基于Yocto Project的嵌入式Linux系统。它目前运行在相当结实的硬件上,我想降低硬件的成本。因此,我正在寻找一种方法来了解运行当前应用程序所需的最低硬件要求。这包括RAM、闪存和CPU。
RAM/flash很可能很容易,因为我可以用free
和df
命令检查使用情况以获得良好的估计。
但对于CPU,我不确定如何测量或计算这些数据。我如何知道需要什么CPU频率?换成不同的ARM内核会如何影响CPU频率?等等
对此,您的解决方案是什么?
您可以对CPU内核和频率进行实验。
禁用/启用CPU核心:
- 将'maxcpus=n'(n是要激活的内核数(添加到内核命令行(U-Boot->引导期间的引导参数(
=> setenv kernelargs maxcpus=2
- 要在内核运行时禁用/启用内核:
- 禁用核心X:
echo 0 > /sys/devices/system/cpu/cpuX/online
- 启用核心X:
echo 1 > /sys/devices/system/cpu/cpuX/online
X是要启用/禁用的核心编号,范围从"1"到"(实际CPU核心的数量(-1"(始终启用核心0(。
要查看活动Core,请运行:cat /proc/cpuinfo
CPU频率
调速器:有几个频率调节器决定频率策略。默认的频率调节器是";ondemand";,其根据当前系统负载设置CPU频率。(注意:默认的调控器是在内核defconfig中选择的。在构建内核之前,您可以使用menuconfig选择不同的默认调控器-要达到此设置,请转到:CPU电源管理->CPU频率缩放->默认CPUFrequency scaling调控器(
列出所有可用的调速器:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
设置当前调速器:
echo GOVERNOR > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
(调速器是可用的调速器之一(
要查看可用的CPU频率:cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
要查看当前CPU频率:cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
要查看当前允许的最大CPU频率:cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
要设置允许的最大CPU频率:echo FREQ > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
(FREQ是可用的CPU频率之一(
使用";用户空间";调速器,并使用以下命令将CPU设置为特定频率:echo FREQ > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
(FREQ是可用的CPU频率之一(
信息源