树莓派4B的测试记录(CPU、FFMPEG)

本文是用来记录树莓派 4B 的一些测试记录。

温度

下面记录中的风扇和大风扇是这样的:

请添加图片描述

为什么要用大风扇呢?因为小风扇在外壳上,气流通过外壳的珊格会有啸叫,声音不大但是很烦人,大风扇没这个问题,并且同样使用树莓派的 USB 进行供电,而且由于树莓派在大硬盘旁边,还能顺道一起散热。

空载情况

情形温度(摄氏度)
无散热片+无风扇41.3
有散热片+无风扇38.9
有散热片+有风扇36.5
有散热片+有大风扇29.7

满载情况

情形温度(摄氏度)
有散热片+无风扇69.6
有散热片+有风扇56.9
有散热片+有大风扇50.6

读取速度

树莓派 4B Micro SD 写入速度为 45 MB/s,但是读取偶尔能跑到 100MB/s,大部分时间和读取速度差不多(Jeff 测试第五代是可以跑满的)。

CPU性能

使用 Clang 和 ISPC(并行计算)编写的程序来测试 CPU 的一些性能数据。考虑到受写入速度的影响,这里均使用不存储的程序进行测试。

4096x4096 Float64 矩阵计算

如果均拆分 4 块进行并行计算:

设备串行并行
树莓派4B(4C4T)66.12s51.72s
(对比组)Mac mini 2018 i5(6C6T)17.76s6.08s

进程占用内存约 192.8 MB。可以看到树莓派 4B 使用并行计算加上分割任务带来的提升并没有接近预期的 4 倍。

个人猜测是每次处理的块大大超出每个核心的 32kB data L1 cache 的大小了,那么如果单个块更小一些呢?理论上是在16x16上最快,也就是分成 256 块,因为 32kB 单次可以存放的最大 64 位浮点数矩阵是 22x22,16 刚好小于这个值。

下列每个测试是相同的矩阵:

分块(每块大小)测试1测试2测试3测试4
4(1024x1024)40s39s47s41s
8(512x512)56s47s55s48s
16(256x256)37s39s40s46s
32(128x128)38s49s48s50s
64(64x64)45s49s45s42s
128(32x32)41s37s43s40s
256(16x16)38s38s43s37s

可以看到虽然不一定每次都是 16x16 最快,但是在多次测试中可以看到,16x16 一定是第一梯队的。这里按40s的话,也就是达到了串行的 1.653 倍,这个值接近 2 倍了。

优化过的矩阵乘法(测浮点性能)

使用优化过的矩阵和算法,然后再进行分块处理。这个测试在某些能达到 70%~90% 的浮点性能,实际情况还得看设备当时的运行状态和系统以及其他配置。

设备浮点性能(GFLOPS)
树莓派4B11.91
(对比组)Mac mini 2018 i5200.03

这里对比组达到了理论性能的 70%(200/288),树莓派比上面一次测试得出的浮点值高了不少。

排序

设备并行计算+分割任务
树莓派4B(4C4T)2.45x
(对比组)Mac mini 2018 i5(6C6T)5.86x

进程占用内存约 192.8 MB。可以看到树莓派 4B 使用并行计算加上分割任务带来的提升并没有接近预期的 4 倍,也是在 2 倍左右。

生成 mandelbrot 图

设备并行计算+分割任务
树莓派4B(4C4T)8.58x
(对比组)Mac mini 2018 i5(6C6T)44.03x
(对比组)Intel E5-2690 v4 x2(28C58T)130.18x

这里可以看到各个设备的提升均达到了核心数的两倍。

一些想法

证明了 BCM2711 的低缓存(每核心 32kB 数据 + 48kB 指令 L1 cache 和共 1MB L2 cache)导致一旦计算所需的数据稍大一些,那么并行性能就大幅度下降,无法发挥所有核心的性能。

当然我怀疑这也和新系统没有优化完善有关,看看后续会不会好一些。

FFMPEG

有些时候需要对一些视频进行格式转换、转码修复问题等,我用 ffmpeg 比较多,偶尔转换分辨率和裁切有时候用 macOS 自带的也很方便。

这里说明一下测试中的单位x,在使用 ffmpeg 的时候,速度是用类似123x的格式来显示的。这表示当前一秒处理的帧数和视频平均帧数的比值,比如说视频是 24hz 的,那么如果一秒钟处理了48帧,则会显示2x;如果只处理了 12 帧,那么则会显示0.5x

测试项目:对一个约 950MB 的 FLV 格式的抖音录播进行操作,平均码率约 500K。

转化格式

转换格式最快的办法是直接拷贝流,如下:

$ ffmpeg -i input.mkv -c copy out.mp4

这种格式不会对任何音视频、编码器、码率进行修改,是直接抓流到新的格式里(就是需要注意字幕和音轨的选择)。

树莓派 4 的成绩和对比成绩如下:

设备速度
树莓派 + Micro SD(45MB/s)35x
树莓派 + USB NVMe SSD (约 350MB/s)617x
(对比组)Mac mini 2018 i5(读2400写1200)2410x

可以看到随着硬盘速度的提升,速度有着巨幅提升。

需要说明一下,上面这个USB SSD 的速度是固态硬盘本身的限制,因为使用的是 BG4,没有内存作为缓冲,那么由于单闪存颗粒加上 TLC 导致使用 USB 外接的时候 IOPS 性能不光难以达到内接(内接会用系统内存作为缓冲),也比不过带内存颗粒缓冲或者多闪存颗粒的其他 SSD。

IOPS 是每秒可读写数,会影响系统的响应速度。

转码

这里模拟平时最简单的命令,码率一般在 1500~3000K:

$ ffmpeg -i in.flv out.mp4
设备速度
树莓派 + Micro SD(45MB/s)0.23x
树莓派 + USB NVMe SSD (约 350MB/s)0.452x
(对比组)Mac mini 2018 i5(读2400写1200)2.7x

硬件加速转码

在树莓派上使用硬件加速转码需要使用:

ffmpeg -i in.flv -c:v h264_v4l2m2m -b:v 1500k out.mp4

这里的1500k不是视频本身的码率,而是上一节中自动转码的码率,这样可以作为对比。我也测了一下其他码率,速度差不多:

设备速度
树莓派 + Micro SD(45MB/s)2.1x
树莓派 + USB NVMe SSD (约 350MB/s)2.36x
(对比组)Mac mini 2018 i5 UHD 630(读2400写1200)4.36x

可以看到树莓派 4B 在使用硬件加速之后,速度提升了 6~10 倍。不过需要注意一点,h264_v4l2m2m是有 CPU 占用率的,如果你在跑其他程序,那么性能会降低一些。

为什么还是买了树莓派 4

最后记录一下为什么虽然树莓派 5 已经发布了,但是我又重新买了台树莓派 4B,因为考虑到几点:

  1. 功耗涨了 10 W,不光充电器得特別买(4B直接用现在的很多手机充电器都行,甚至显示器上的充电接口都可以),如果想无散热无风扇使用不太可能(Jeff 测试结果证明了这一点)。
  2. 虽然树莓派 5 的性能提升了 2~3 倍,但是实际价格也涨了不少。可能你会说官方售价不过涨了 5 美元哎,也不多啊。但是需要考虑到用的 5V5A 充电器目前并不是很多,而且必须用散热器。那么根据官方指定商家的过期链接的价格(4GB 550)再加上官方充电器(69)和散热器(99),也就是七百(不用官方充电器便宜 50),而且这个价格我能买到两倍性能并且直接有 M.2 + SATA 接口的 N100 主机了。
  3. 我要用来调试树莓派 Pico,这个在树莓派上刚好有调试接口,这也不要求什么性能。
  4. 树莓派 5 刚出可能会有一些问题,我想长期使用,不想当小白鼠,现在树莓派 4B 卖出了至少 300 万台,出现严重问题的可能性不大。
  5. 说实话我上次买树莓派 4B 就没用满。树莓派 5 也没有公开说支不支持 OpenCL,4B 是不能用的。
  6. 最关键的是,树莓派 5 在国内还没开始卖呢,而且双十一补贴树莓派 4B 4GB 裸板只要330,这还要啥自行车。

希望能帮到有需要的人~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/140816.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3 数据响应式原理:Proxy和Reflect

我们在Vue2中使用的是Object.defineProperty方法来实现数据响应式的,可以通过get和set方法来监听对象的访问和修改。 但是并不能响应对象中属性的增加和删除,只能使用Vue.$set 和Vue.$delete 来对对象中的属性进行增加和删除。 数组也不能直接通过下标…

PyCharm因安装了illuminated Cloud插件导致加载项目失败

打开Pycharm时会有弹窗提示: The license for Illuminated Cloud is invalid or has expired. All Illuminated Cloud features will be disabled. 这个弹窗会导致你加载项目一直失败,close project 也关不掉,我都是用任务管理器杀死进程的…

Jmeter 性能 —— 负载阶梯场景!

1、安装阶梯测试的第三方插件->搜jpgc 选项-JMeter Plugins Manager -搜jpgc 空格,然后安装 2、脚本-线程组选jpgc Stepping Thread Group 最终并发数为100,并发数从0开始,5秒内增加10个并发数,增加10个后持续30s,…

taro(踩坑) npm run dev:weapp 微信小程序开发者工具预览报错

控制台报错信息: VM72:9 app.js错误: Error: module vendors-node_modules_taro_weapp_prebundle_chunk-JUEIR267_js.js is not defined, require args is ./vendors-node_modules_taro_weapp_prebundle_chunk-JUEIR267_js.js 环境: node 版本&#x…

Spring Boot(二)

1、运行维护 1.1、打包程序 SpringBoot程序是基于Maven创建的,在Maven中提供有打包的指令,叫做package。本操作可以在Idea环境下执行。 mvn package 打包后会产生一个与工程名类似的jar文件,其名称是由模块名版本号.jar组成的。 1.2、程序…

vue分片上传视频并转换为m3u8文件并播放

开发环境: 基于若依开源框架的前后端分离版本的实践,后端java的springboot,前端若依的vue2,做一个分片上传视频并分段播放的功能,因为是小项目,并没有专门准备文件服务器和CDN服务,后端也是套用…

2023NewStarCTF

目录 一、阳光开朗大男孩 二、大怨种 三、2-分析 四、键盘侠 五、滴滴滴 六、Include? 七、medium_sql 八、POP Gadget 九、OtenkiGirl 一、阳光开朗大男孩 1.题目给出了secret.txt和flag.txt两个文件,secret.txt内容如下: 法治自由公正爱国…

【Redis】list常用命令内部编码使用场景

文章目录 前置知识列表类型的特点 命令LPUSHLPUSHXRPUSHRPUSHXLRANGELPOPRPOPLINDEXLREMLINSERTLTRIMLSETLLEN 阻塞版本命令BLPOPBRPOP 命令总结内部编码测试内部编码 使用场景消息队列分频道的消息队列 模拟栈和队列 前置知识 列表类型是⽤来存储多个有序的字符串&#xff0c…

第一次实操Python+robotframework接口自动化测试

目前我们需要考虑的是如何实现关键字驱动实现接口自动化输出,通过关键字的封装实现一定意义上的脚本与用例的脱离! robot framework 的安装不过多说明,网上资料比较太多~ 实例:!!!&#xff01…

AI:80-基于深度学习的医学图像分割与病变识别

🚀 本文选自专栏:人工智能领域200例教程专栏 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的代码,详细讲解供大家学习,希望可以帮到大家。欢迎订阅支持,正在不断更新中,…

Flink SQL 表值聚合函数(Table Aggregate Function)详解

使用场景: 表值聚合函数即 UDTAF,这个函数⽬前只能在 Table API 中使⽤,不能在 SQL API 中使⽤。 函数功能: 在 SQL 表达式中,如果想对数据先分组再进⾏聚合取值: select max(xxx) from source_table gr…

2022年06月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 Python中 print(“八进制{: o}”.format(12)) 正确的输出结果是?( ) A: 八进制:O B: 八进制:O14 C: 八进制14O D: 八进制14 答案:D 字符串的format()格式。 第2题 下列的程…

pychon/PIL/opencv/json学习过程中遇到的问题

1. 使用PIL.Image读取图片 注意:pytorch中对图像预处理是transforms的输入必须是PIL格式的文件,使用cv2读取的图片就按照第二条的代码处理(3通道合并、归一化处理) from PIL import Image img Image.open("test1.jpg"…

2023 年最新企业微信官方会话机器人开发详细教程(更新中)

目标是开发一个简易机器人,能接收消息并作出回复。 获取企业 ID 企业信息页面链接地址:https://work.weixin.qq.com/wework_admin/frame#profile 自建企业微信机器人 配置机器人应用详情 功能配置 接收消息服务器配置 配置消息服务器配置 配置环境变量…

如何利用 cpolar 内网穿透技术实现 U8 用友 ERP 异地访问

文章目录 前言1. 服务器本机安装U8并调试设置2. 用友U8借助cpolar实现企业远程办公2.1 在被控端电脑上,点击开始菜单栏,打开设置——系统2.2 找到远程桌面2.3 启用远程桌面 3. 安装cpolar内网穿透3.1 注册cpolar账号3.2 下载cpolar客户端 4. 获取远程桌面…

【MATLAB源码-第75期】基于模拟退火算法(SA)的栅格路径规划,输出做短路径图和适应度曲线。

操作环境: MATLAB 2022a 1、算法描述 模拟退火算法是一种启发式优化算法,通常用于解决组合优化问题,例如旅行商问题和图着色问题。它模拟了固体材料在退火过程中逐渐冷却达到稳定状态的行为,以寻找问题的全局最优解。 以下是模…

Hadoop原理,HDFS架构,MapReduce原理

Hadoop原理,HDFS架构,MapReduce原理 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql&#xff0c…

postswigger 靶场(CSRF)攻略-- 1.没有防御措施的 CSRF 漏洞

靶场地址: What is CSRF (Cross-site request forgery)? Tutorial & Examples | Web Security Academy (portswigger.net)https://portswigger.net/web-security/csrf 没有防御措施的 CSRF 漏洞 题目中已告知易受攻击的是电子邮件的更改功能,而目…

Oracle Primavera Unifier 23.10 新特征

根据官方的说法,Unifier 23.7 ~ 23.9 更多为对功能bug的修复,以下将对23.10进行重点介绍 Cost Sheets Cost Sheets Support Conditional Formatting Conditional formatting of table data is now supported in cost sheets with features such as ce…

基于注解的声明式事务

1.什么是事务 数据库事务(transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。 2.事务的特性 A:原子性(A…