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

news2024/11/25 22:45:34

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

温度

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

请添加图片描述

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

空载情况

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

满载情况

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

读取速度

树莓派 4B Micro SD 读写速度均为 45 MB/s,跑不满 UHS-I 的约 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.coloradmin.cn/o/1190986.html

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

相关文章

QMetaType和QVariant使用

描述 QMetaType和QVariant可以结合使用,用于在运行时确定数据类型。 QMetaType是Qt提供的用于管理各种数据类型的类,它可以帮助我们在运行时动态地创建、销毁、复制和比较数据类型。我们可以使用QMetaType来注册我们自己的数据类型,并为其提…

用于图像处理的高斯滤波器 (LoG) 拉普拉斯

一、说明 欢迎来到拉普拉斯和高斯滤波器的拉普拉斯的故事。LoG是先进行高斯处理,继而进行拉普拉斯算子的图像处理算法。用拉普拉斯具有过零功能,实现边缘岭脊提取。 二、LoG算法简述 在这篇博客中,让我们看看拉普拉斯滤波器和高斯滤波器的拉普…

【STM32】STM32的Cube和HAL生态

1.单片机软件开发的时代变化 1.单片机的演进过程 (1)第1代:4004、8008、Zilog那个年代(大约1980年代之前) (2)第2代:51、PIC8/16、AVR那个年代(大约2005年前) (3)第3代:51、PIC32、Cortex-M0、…

Python Selenium Headless:以 Headless 模式打开 Chrome 浏览器

本篇文章介绍了如何在 Python 中使用 Selenium 运行浏览器无头模式。 在 Python 中使用 Selenium 以无头模式运行 Chrome 浏览器 要说 headless 浏览器,你也可以称它们为真正的浏览器,只不过它们是在后台运行的; 您将无法在任何地方看到它们,但它们仍在后台运行。 在某些…

拓世科技集团打造数字人营销解决方案,为车企提供新的“增长担当”

汽车,已经渐渐融入了现代人的日常生活,从高端的身份标志转变为普罗大众的出行选择,它驶入了千家万户,成为了我们日常出行的可靠伙伴,见证着人们的生活故事和时代的变迁。 中国汽车市场的蓬勃发展引起了业内外的广泛关…

达梦数据库-Win10安装

目录结构 前言达梦数据库达梦数据库适用场景达梦数据库 PK MySQL达梦数据库安装数据库下载解压下载的压缩文件安装详细步骤安装关键节点配置 DM管理工具启动DM管理工具DM管理工具连接达梦数据库 参考链接 前言 达梦数据库Win10系统安装整理; 达梦数据库 达梦数据库…

Netty第三部

继续Netty第二部的内容 一、ChannelHandler 1、ChannelHandler接口 ChannelHandler是Netty的主要组件,处理所有的入站和出站数据的应用程序逻辑的容器,可以应用在数据的格式转换、异常处理、数据报文统计等 继承ChannelHandler的两个子接口&#xff…

uniapp踩坑之项目:隐藏显示密码功能

1.input组件的password设置为动态前面加:冒号&#xff1b; 2.动态切换眼睛图标使用:style //html <view> 密码&#xff1a;<input placeholder"请输入密码" :password"openPassword" type"text" placeholder-style"color:#e2e2e2;…

QT QStackedWidget

QStackedWidget是一个特殊的布局容器&#xff0c;它可以管理多个页面&#xff0c;并且只能显示其中一个页面。这些页面是QWidget或其派生类的实例&#xff0c;并通过调用addWidget()函数添加到堆栈中。 例如&#xff1a; #include <QWidgets> #include <QStackedWid…

PTE-RA总结

目录 FIBW刷题记录 1.The Plains Indians were people who did not like 2.An economic depression is a period of sustained 3.Pidgins are languages that are born after contact between 4.It is tempting to try to prove that good looks 5.The stock of Austral…

华为云,阿里云,腾讯云 安全组配置规则

1.安全组常用端口 端口服务说明21FTPFTP服务所开放的端口&#xff0c;用于上传、下载文件。22SSHSSH端口&#xff0c;用于通过命令行模式或远程连接软件&#xff08;例如PuTTY、Xshell、SecureCRT等&#xff09;连接Linux实例。23TelnetTelnet端口&#xff0c;用于Telnet远程登…

红队系列-IOT安全深入浅出

红队专题 设备安全概述物联网设备层次模型设备通信模型 渗透测试信息收集工具 实战分析漏洞切入点D-link 850L 未授权访问 2017 认证绕过认证绕过 D-link DCS-2530Ltenda 系列 路由器 前台未授权RTSP 服务未授权 访问 弱口令命令注入思科 路由器 固件二进制 漏洞 IoT漏洞-D-Lin…

HBase学习笔记(1)—— 知识点总结

目录 HBase概述 HBase 基本架构 HBase安装部署启动 HBase Shell HBase数据读写流程 HBase 优化 HBase概述 HBase是以 hdfs 为数据存储的&#xff0c;一种分布式、非关系型的、可扩展的 NoSQL 数据库 关系型数据库和非关系型数据库的区别&#xff1a; 关系型数据库和非关…

Java代码是怎么运行的?

Java代码是怎么运行的&#xff1f; 运行流程 将Java程序转换成Java虚拟机所能识别的指令序列&#xff0c;也称Java字节码。之所以这么取名&#xff0c;是因为Java字节码指令的操作码&#xff08;opcode&#xff09;被固定为一个字节。 Java虚拟机可以由硬件实现&#xff0c;…

Spring Ioc 容器启动流程

Spring容器的启动流程 本文基于 Spring 5.3.23 基于XML文件 public void test() {ApplicationContext applicationContext new ClassPathXmlApplicationContext("applicationContext.xml");User user applicationContext.getBean("user", User.class)…

CCF ChinaSoft 2023 论坛巡礼 | 云计算标准化论坛

2023年CCF中国软件大会&#xff08;CCF ChinaSoft 2023&#xff09;由CCF主办&#xff0c;CCF系统软件专委会、形式化方法专委会、软件工程专委会以及复旦大学联合承办&#xff0c;将于2023年12月1-3日在上海国际会议中心举行。 本次大会主题是“智能化软件创新推动数字经济与社…

可视化 | echarts中国地图散点图

改编自echarts添加地图散点 &#x1f4da;改编点 roam: false&#xff1a;不允许放缩拖动 地图颜色修改 geo: {show: true,top: 15%,map: name,label: {normal: {show: false},emphasis: {show: true,color: "#fff",}},roam: false,itemStyle: {normal: {areaColo…

SAP ABAP基础语法-Excel上传(十)

EXCEL BDS模板上传及赋值 上传模板事务代码&#xff1a;OAER l 功能代码&#xff1a;向EXCEL模板中写入数据示例代码如下 REPORT ZEXCEL_DOI. “doi type pools TYPE-POOLS: soi. *SAP Desktop Office Integration Interfaces DATA: container TYPE REF TO cl_gui_custom_c…

Elasticsearch 集群状态详解

cluster state 返回结果详解 GET /_cluster/statehttps://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-state.html详细信息如下&#xff1a; {"cluster_name": "business-log","cluster_uuid": "ArYy-qmCTbCQTDUI8o…

ClickHouse Keeper: Coordination without the drawbacks没有缺点的分布式协作系统

ClickHouse Keeper 介绍 现代分布式系统需要一个共享和可靠的信息存储库和共识系统来协调和同步分布式操作。对于ClickHouse来说&#xff0c;ZooKeeper最初是被选中的。它的广泛使用是可靠的&#xff0c;提供了简单而强大的API&#xff0c;并提供了合理的性能。 然而&#xf…