树莓派-CPU、GPU和内存超频&稳定性测试

缘起

    由于最近有些视频转码类的工作丢给树莓派3b来做,感觉到cpu及性能有些瓶颈,就折腾着看看能不能超下频提高点性能,之前看到些超频的文章,感觉小超下是没什么问题的,于是有了这次折腾。

折腾过程

1、超频基础

最好先更新一下固件以支持最新的超频选项

sudo rpi-update

进入树莓派shell后使用如下命令编辑各种参数,重启后超频即生效,

sudo vi /boot/config.txt

2、超频参数设置

我在使用的稳定超频参数如下,其中cpu从1.2G超频到1.3G,gpu从300M超频到450M,内存从450M超频到600

over_voltage=5
arm_freq=1300
core_freq=450
gpu_freq=450
over_voltage_sdram=2
sdram_freq=600
sdram_schmoo=0x02000020


其中各项超频参数的含义如下:

1)over_voltage  //CPU/GPU电压,有效值为[-16,8],0对应1.2v,步进为0.025v,超过6需要同时配合force_turbo=1才生效。个人测试是达到5是1.394v,再高的值电压也不再增加。

2)arm_freq  //ARM CPU主频,默认值为1200

3)gpu_freq  //同时对core_freq,h264_freq,isp_freq, v3d_freq超频;core_freq默认值为400, h264_freq、isp_freq、v3d_freq默认值为300

4)core_freq  //GPU核心主频,默认400,对内存读写速度有一点好处

5)dtparam=sd_overclock  //默认50,SD卡超频,该项设置没有危险,默认值低是为了提高兼容性,一般的卡都可以放心调整到100,重启后执行dmesg | grep "mmc0"见mmc0: overclocking to 100000000Hz

6)temp_limit  //过热保护。默认值为85,过热降频。不建议长期运行在70度以上,高温对芯片寿命影响较大。

7)force_turbo  //=1时一直运行在高性能模式下,策略为scaling_governor=performance;=0时根据cpu利用率动态调频,默认策略为8)scaling_governor=ondemand。有五种调节策略,分别为performance/powersave/userspace/ondemand/conservative,可通过以下命令更改策略,比如:

echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

9)over_voltage_sdram  //内存电压范围[-16,8],默认0,同时设置over_voltage_sdram_c(control),
10)over_voltage_sdram_i(I/O), over_voltage_sdram_p(phy)电压

11)sdram_freq  //内存工作频率,默认450MHz

12)sdram_schmoo//内存部分时序4,3,2,0,0,-2,-2,0,-10,提高性能和稳定性,分别对应如下

int8_t  dphy_drive_level;    // 4..0 -> 34R,40R,48R,60R,80R
int8_t  aphy_drive_level;    // 4..0 -> 34R,40R,48R,60R,80R
int8_t  dram_drive_level;    // 4..-1 -> 34R,40R,48R,60R,80R,120R
uint8_t dphy_lpwr_rx;        // Non-zero for LPWR_RX in DPHY
uint8_t aphy_lpwr_rx;        // Non-zero for LPWR_RX in APHY
int8_t dll_offset_rd_n;      // DLL offset schmoo: Low phase Read
int8_t dll_offset_rd_p;      // DLL offset schmoo: High phase Read
int8_t dll_offset_wr;        // DLL offset schmoo: DQ/DQS Write
int8_t dll_offset_addr;      // DLL offset schmoo: Address/command


3、稳定性测试

    如上完成超频设置后一个比较重要的环节是稳定性测试,否则会出现频繁卡死的情况,下面用不同的工具测试下系统稳定性。


1)性能测试:表示创建4个线程来寻找√ ̄20000以内的质数,可以自行前后对比下

sysbench --num-threads=4 --test=cpu --cpu-max-prime=20000 run


2)压力测试:建议压力测试至少10分钟或以上无出错/死机  

sudo apt install stress
stress -c 4 -t 10m -v

3)需要同时留意CPU/GPU温度,下面两条命令均可:

vcgencmd measure_temp
cat /sys/class/thermal/thermal_zone0/temp

4)检测CPU核心电压和内存电压:

for id in core sdram_c sdram_i sdram_p ; do echo -e "$id:\t$(vcgencmd measure_volts $id)" ; done

5)检测超频是否成功,下面两条命令均可:

vcgencmd measure_clock arm   //返回1300000000
sudo cat /sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_cur_freq  //返回1300000

6)内存压力测试,一个memtester占用一个核,打开四个窗口运行四次sudo memtester 210M -1,因为需要cpu生成随机序列来对内存进行频繁读写,所以cpu占用会比较高,因此该测试可以同时对cpu和内存进行稳定性测试。该测试大约10分钟左右

sudo apt install memtester
sudo memtester 210M -1

内存稳定性测试不通过会出现如failure字样,在日常工作中可能会出现不稳定现象。

7)内存读写速度测试,按Ctrl+C结束

dd if=/dev/zero of=/dev/null

8)SD卡读写速度测试

第一行,生成1024MB大小的文件内容为0的文件,生成速度取决于sd卡写入速度

第二行 ,将刚才生成的文件删除,取决于sd卡读取速度

dd if=/dev/zero of=test bs=1M count=1024  oflag=direct
dd if=test of=/dev/null bs=1M oflag=direct
sudo hdparm -tT /dev/mmcblk0         //-t是测试硬盘读写速率,-T是测试缓存读写速率

4、关闭超频

    如果遇到超频出现问题需要还原的,可以有如下2种方法:

1)还能够进入系统,只是不稳定的

    直接编辑/boot/config.txt文件,删除或者行开头加#注释掉即可


2)不能进入系统,此时可以拔下sd卡在电脑上操作进行修改,注意windows系统下最好使用notepad++之类的软件编辑,避免windows和linux由于换行符不同出现问题


参考文档

https://www.jianshu.com/p/12acc0620c0f

树莓派官方文档--config.txt    

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。