能快速打造IoT设备的Ubuntu Appliance来了

最近Ubuntu官方公布了一个名为Appliance的服务,可以把你的PC或树莓派变成一个安全稳定的专用设备。

按照官方的说法,这是一种软件定义的IoT设备,系统层是Ubuntu Core,你不但可以在上面跑应用,还可以通过Ubuntu给你的设备构建安全防护并保持最新状态。

网址:http://ubuntu.com/appliance

该产品的使命是让你能够快速打造自己的高安全,自更新,单用途设备。

目前Ubuntu Appliance的官方页面已经有几个知名项目的镜像推介,大家可以尝个鲜什么的。

官方推介的五个项目:

  • Plex Media Server除了流媒体服务功能以外,还可以帮你存储分类影音文件,分析影片的信息从而从IMDB等数据库补全影片介绍等信息,进行索引以方便搜索。
  • Mosquitto是一个轻量级的开源MQTT消息代理,可在低功耗单板计算机到大型工业级服务器在内的所有设备上使用。
  • OpenHAB全称Open Home Automation Bus,开放式家庭自动化总线,该项目旨在为家庭自动化构建提供一个通用的集成平台。实现最灵活的智能家居控制,几乎可以连接到市面上所有的家庭自动化硬件。
  • AdGuard Home可以阻止烦人的横幅广告,弹出式窗口和视频广告,从而使网上冲浪更快,更安全,更舒适。
  • NextCloud是一个本地内容协作平台,允许用户在家中或办公室托管自己的私有云。

使用方法很简单:找到对应的硬件架构,选择对应的镜像,下载刷入即可。

如果大家有什么意见或建议,可以通过官方讨论组向他们递交。也欢迎大家加入“IoT前哨站”QQ群讨论:IoT前哨站1群:15992627;IoT前哨站2群:17163000。

AIoT开发者的灵魂拷问:过程低效且成本高的问题你解决了么?

企业将业务搬上云端已是大势所趋,云服务经过多年的发展,也已进入稳定增长的2.0时代。

2019年1月,华为基于ARM架构打造了自己的鲲鹏处理器。紧接着,华为云又基于鲲鹏处理器推出了鲲鹏云服务和解决方案。“鲲鹏”一词逐渐在互联网圈内成为热议的焦点,对于技术人而言,迫切地想揭开鲲鹏背后的技术细节,想知道鲲鹏到底有多牛。

机会来了!

10月18日,“DevRun · 选择不凡,华为云开发者沙龙 ”北京站将邀请华为云鲲鹏凌云计划架构师白雁,全面解析华为云鲲鹏云服务中的关键技术,并从操作系统、中间件、数据库以及代码层级对开源和自有软件的鲲鹏移植进行指导,通过实际案例分享移植经验,给开发者讲解为什么移植,以及如何移植。

除此之外,华为云的4位技术专家也针对各自擅长的领域,与开发者交流技术难点与解决方案,这些话题如下:

1、企业上云之前,数据库的痛点怎么解决?

数据库逐渐演变为云时代下核心竞争力的关键。如今,传统存储计算一体、一主多辅的数据库虽然仍有不小的价值,但局限性也愈加明显:资源利用率低、扩展性弱、有许多冗余写入、数据回档慢等难题,也造成了企业的上云需求越发难以满足。

在数字化、智能化时代下,企业面对的是海量的用户和交易,拥有超过几百个节点的业务系统并不稀奇,未来这种规模还将不断扩大,这为系统的运营和管理提出了不小的挑战。随着摩尔定律遇到瓶颈,不同领域的计算平台呈现出多样化的趋势。虽然这在一定程度上满足了不同场合的应用需要,但如何通过软件实现计算能力的整体协调和优化,这对于应用开发人员和 DBA 而言,是新的挑战。此外,海量的半结构、结构化数据,也迫切需要一个行之有效的解决方案来实现统一的计算和管理,并进行优化。

华为从2001年就已经开始布局数据库的研发,针对当下数据库技术的发展痛点有着深刻的理解,华为云也推出了新的解决方案。本次沙龙,华为云数据库高级技术专家宋立勇将为大家分享华为在数据库领域的研发经验,带来应对诸多数据库挑战的实战经验,并分享针对不同的业务场景,数据库如何布局才能经济高效地满足高算力、低时延、敏捷部署的业务诉求。

2、AI开发者最棘手的难题,你是不是也遇到过?

对于AI开发者而言,训练一个模型通常需要经历几个“难关”:数据标注、调参、大规模分布式训练和训练部署,然后才有可能开发出一个普通的AI应用。每一步几乎都是AI开发者的痛:数据标注需要耗费大量的人工时间,难以在最短的时间内找到最优的参数配置,需要漫长的时间进行大规模训练,最后还要面对复杂的模型部署。

一直以来,AI开发者对普惠算力的需求从未间断过,但现实情况是:稀缺、昂贵的算力将AI束之高阁,大量的资源被重复耗费,开发者宝贵的时间和精力也未能创造出真正的价值,整个AI开发过程低效且成本高昂,不利于企业及行业的智能化升级。基于这些痛点,华为推出了ModelArts 一站式AI开发平台。

相信 AI 开发者对于这一平台一定不陌生,但如何用好 ModelArts 恰恰是开发者最该了解的内容。本次沙龙,华为云EI布道师、华为开源中心算法专家王龙步将为AI开发者解析在云上构建及部署AI模型的具体过程。为什么有的 AI 开发者可以更快速、更高效地开发AI模型?差别在哪?专家给你支招!

3、都在聊 IoT,落地的事谁来负责?

在物联网业务快速发展的同时,企业和创业者也面临着网络连接复杂的问题,而且终端和传感器种类众多,这就导致集成困难,新业务上市周期长。企业都在聊IoT,但归根结底还在于谁能解决IoT开发中的难题。

对于开发者而言,如何切实可行地解决开发周期长、开发成本高、稳定性不佳、维护成本高等一系列问题,高效地完成行业应用构建,将物联网能力快速投入到生产流程或业务运营中?华为IoT生态服务产品总监谢冲,基于自己深耕IoT领域多年的经验,针对开发者在IoT 上经常“纸上谈兵”、缺乏落地实践的问题,全方位地“对症下药”。 

4、想用微服务架构,如何保证数据一致性?    

我们知道,微服务架构中的各个模块可以独立地开发,迭代;不同团队之间的技术栈分离可以根据团队的特点来使用更合适的技术解决问题;将系统切分为细粒度的服务,好处不言而喻,但问题是,如何保证数据的一致性?越来越多的企业开始向微服务架构转型,不幸的是,很多企业发现微服务实施起来并不像看上去那么轻松。各家公司提出的解决方案并不少,不过哪一种才最适合?

对此,华为云PaaS团队架构师王启军将在本次沙龙为大家分享华为在微服务架构中的实践,帮助企业和开发者清楚地了解为什么要做微服务,以及在过程中有哪些必须要避的坑。

干货满满的讲解与实操演练相结合,10月18日“DevRun · 选择不凡,华为云开发者沙龙 2019”北京站,将与开发者一道,深挖技术背后的细节,重新审视如何落地 AI 的问题。

5、北京站讲师和议题安排

温馨提示:因为现场设置实操环节,建议开发者携带笔记本电脑参会,与讲师一起在现场快速构建一套AI模型。

报名地址: https://e-campaign.huawei.com/cloud/CloudUniversalForm/register/199/phoneRegister.html?access_token=2d22ca77-2dbd-4cd3-afc9-15e92366779a (请在微信中打开)

轻装上阵,奋起直追 —— Fedora 30 物联网版亮相

红帽是全球知名的开源大厂,云计算浪潮到来时,他们果断出击,攻城略地。不管是OpenStack还是容器、存储、中间件,都有着极佳的战绩。旗下RHEL、CentOS、Fedora三个发行版,也有着数量可观的用户。

可在物联网领域,他们却有些尴尬。

绝大部分用户都在用Android、Ubuntu和Raspbian(Debian)相关的平台,很难找到红帽系统的物联网设备。

在2017年Eclipse基金会发布的一份物联网开发趋势报告中大家可以看到。

Raspbian(45.5%)和 Ubuntu(44.%)使用率位居一二,红帽系列甚至都没在其中亮相。

一些红帽开发者开始转向其他阵营。

而红帽旗下的Fedora 和 CentOS发布的几款新系统虽然加入对ARM的支持,但对“IoT”的支持还是一般。

以树莓派3x为例,跑Fedora 29之前的版本都有不同程度的卡顿。CentOS倒是可以正常运行,但除了基础软件包以外,很多x86环境下已经支持的第三方应用并没有ARM版,只能自己编译源代码。

目前Linux的各大发行版情况是怎样?

Linux官网上有篇“2018 最佳 Linux 发行版排行”的文章可见一斑。

地址:

https://www.linux.com/blog/learn/intro-to-linux/2018/1/best-linux-distributions-2018

痛定思痛,红帽先锋Fedora终于在近期祭出了大招。

与以往支持Pidora等“野生“版本,或者把ARM归入次级架构不同。

这款系统上来就力推aarch64和x86_64,没有传统的32位ARM,也没有传统的32位x86或其他。

他们专门发布了“Fedora IoT”,并启用二级域名“https://iot.fedoraproject.org/”。

2019年5月,正式推出内核为5.0.9的Fedora 30 For IoT。把一众4.x内核的竞争对手甩在了身后。

包管理工具没有使用经典的yum,也没用dnf。而是采用了 rpm-ostree 这一新式武器。支持原子升级和回滚,干净利落。

在预装程序方面,默认就是Python3.7.3,没有Python2.x等老的组件。

其他开发组件调用的也是最新源,比如刚发布的Perl和Golang等。

传统的 GPIO sysfis 接口也没有了,在系统中不会找到 /sys/class/gpio。

要与GPIO交互,可安装 libgpiod-utils 包来启用相关工具。

经过测试,市面上的几款主流开发板都可以顺畅运行该系统。没有出现烦人的驱动问题,也没有莫名的卡顿。

当然,作为一个刚出道的选手,Fedora IoT还有很多不足之处。

1、缺乏 Ubuntu Core 或 Raspbian 那种强大的生态支持。

2、其原子化操作对新用户来说也会有点门槛,用惯了 Raspbian 的人可能不太适应。

3、诡异的预配置流程(不太方便理解)。

但让人欣慰的是,这是笔者见过红帽系列对树莓派和DragonBoard 410C支持最好的一个版本,是一款可以在中低配ARM板上良好运行的IoT系统。

无论是智能家居,还是物联网网关、边缘计算……精悍的Fedora IoT给我们多了一个选择。

作者:王文文

WebThings Gateway附加组件:扩展网关的功能

除了常规功能以外,WebThings Gateway还有一个附加组件系统。你可以用它来扩展网关的功能。

默认情况下已安装Web Thing、Zigbee和Z-Wave等组件,足以支持大量的商业设备。但是,如果有其他不同类型的设备要加进来。你会需要附加组件来增强对它们的支持。

根据需要找到并安装更多附加组件:

从“设置”菜单中选择“附加组件”。

如果首屏没看到你想要的组件,请单击右下角的“(+)”按钮浏览附加组件列表,然后选择“+ Add”以启用任何附加组件。

例如,你家里有TP-Link或HomeKit兼容的设备,你可以安装它们的附加组件,然后发现这些设备,并且配对。以便它们由你的IoT网关管理。

有些附加组件需要配置才能正常工作(例如Pulse、Weather、ONVIF)。另一些则在添加后立即工作(例如Virtual Things)。

适配器

适配器页面显示当前安装并激活了哪些插件。转到“附加组件”页面,你可以添加或删除系统中适配器。

新的组件将继续被开发,以便能管控更多新的设备。因此请定期检查以扫描列表中的附加组件。你可以在网关开发站点的issues选项卡中提交对额外设备支持的请求。

实验中的功能

你可以在“experiments”选项中启用智能助手和日志记录等实验中的功能。

从“设置”菜单中选择“实验”,然后勾选“启用智能助手”和“日志”。

使用智能助手

一旦启用,智能助手页面就会在主菜单中出现。它允许你用语音和消息命令来控制家里的设备。无论你是使用语音还是输入文本,都可以达到同样的效果。

Web页面会显示你最近发出的打字和语音命令,以及命令的结果。如果你所说的命令被误解或者没说全,请再试一次。记得对麦克风大声清晰地说话。

你可以给它一些指令,比如“打开厨房的灯”。它会回应你,并确认你的动作。到目前为止,它能够理解一组基本的命令来打开和关闭设备、设置级别,设置颜色和色温。

当你第一次点击麦克风图标时,你的浏览器将请求允许使用麦克风。在弹出对话框中,点击“记住这个决定”复选框,然后选择“允许”。

注意,在0.8网关版本中,基于浏览器的语音命令调用的是谷歌语音API,因此音频是在云端处理的。如果你在智能助手的文本框中输入一个命令,那将直接在本地处理,不需要连接到谷歌。

使用日志

一旦启用,日志页面将在主菜单中可见。单击右下角的加号图标,选择要记录的设备、属性以及要存储(日志数据)的持续时间。任何已连接的智能设备都能被记录,并在配置屏幕上可见。

好了,Webthings Gateway的高级功能差不多就到这里。其他的功能大家可以自行探索。

素材:iot.mozilla.org

编译:王文文

怎样用WebThings Gateway管控你的智能家居

普通计算机联网要普通网关,物联网设备联网要用物联网网关。

物联网网关,作为一个新的名词,在物联网时代将会扮演非常重要的角色,它将成为连接感知网络与传统通信网络的纽带。作为网关设备,它可以感知网络与通信网络,以及不同类型感知网络之间的协议转换.既可以实现广域互联.也可以实现局域互联。

我们这次就在树莓派上搭一个物联网网关。

WebThings Gateway是一款面向智能家居的物联网网关,来自国际知名的Web浏览器厂商Mozilla。

安装所需要的核心零件:

1、 树莓派

2、SD卡

3、支持ZigBee或Z-Wave协议的USB适配器

WebThings Gateway 镜像地址:

https://github.com/mozilla-iot/gateway/releases/download/0.8.1/gateway-0.8.1.img.zip

安装步骤:

1、刷卡

2、插入USB适配器

3、通电

注:第一次启动可能要等2-3分钟,后面会快一些。

启动系统后,你会在Wi-Fi连接中看到一个名为 “WebThings Gateway XXXX” 的SSID,连上去。

此时会自动跳转到网关的Web管理页面,如果没有自动跳转,就在浏览器里输入“http://192.168.2.1”

然后你必须再次设置Wi-Fi连接,以便物联网网关能接到你家无线路由器上。

将Webthings联网后,系统会问你要不要创建个子域名。

下一步就是添加设备的环节了。

你可以把家里的智能灯泡、插座、门锁……都加进去。

一般的添加过程:

选择要添加的设备,并为其配对。这方面Zigbee和Z-Wave的都差不多。

灯泡拧入(配对时应点亮灯泡),插头插好。

电池驱动的设备,如门/窗传感器、运动探测器、按钮、调光开关、检漏器、温度传感器等等,也都要先通电。

远程控制和规则设置:

添加完相关智能设备后,你可以在手机或平板电脑上直接控制它们。在浏览器中输入WebThings的域名或IP,然后用你设置的用户名密码登录即可。

也可以在“规则”栏里面做设置,比如你想让卧室灯在晚上10点后自动熄灭。

当然,你也可以随时删除它们。

好了,开始享受物联网时代的智能家居生活吧!下一篇文章我再给大家讲WebThings的高级用法。

作者:王文文

Mozilla 推出物联网平台项目 WebThings

Mozilla 物联网团队宣布去年发布的物联网开放平台项目 Project Things 脱离实验阶段,并正式更名为 Mozilla WebThings。

Mozilla 的使命是确保互联网是一个全球公共资源,对所有人开放,所有人都可以访问。互联网将真正把人民放在第一位,个人能获得赋权、安全和独立。而 Mozilla 物联网团队的使命则是创建一种 Web of Things 实现去体现那些价值,帮助推动制定物联网的安全、隐私和互操作标准。

秉承了使命的产物 Mozilla WebThings 志在打破大厂只想绑架消费者使用自家路由器的局面,改变当前物联网生态的破碎现状,从而进一步降低市场物联网设备的售价。此前 Mozilla WebThings 已经历了两年的开发和七个季度的更新,已经引起了开发者和制造商社区的极大兴趣。

WebThings 让用户可以通过网页监控设备,它包括WebThings Gateway和WebThings Framework两个部分。其中,WebThings Gateway 是用于家庭智能网关的软件发行版,专注于隐私、安全和互动;WebThings Framework 可以帮助开发者构建可重复利用的软件组件集。

在宣布推出 WebThings 后,Mozilla 发布了新版本 WebThings Gateway 0.8。新版让用户可以私密记录并监控智能家居设备的数据,还添加了警报、日志的功能和网络设置 UI。

此外,Mozilla 还透露团队正在构建基于 OpenWrt(针对嵌入式设备的 Linux 操作系统)的 WebThings Gateway 版本。该版本将针对消费级无线路由器,本身就可以充当 Wi-Fi 接入点,而不仅仅是作为客户端连接到现有的无线网络。

有兴趣对项目进一步了解,可查阅 WebThings 官网

关于什么是物联网网关:

http://v.qq.com/x/page/r0867d7i4xq.html

让无人机听懂我们说话

大部分无人机都要靠手机或手持遥控器控制。

总而言之,不管是转向还是拍照……都离不开双手来控制。

如果能让无人机听懂我们的诉求,根据语音提示来行动,那就太棒了。

之前曾有一款名叫 XEagle 的语音控制无人机在 Kickstarter 上众筹。

有了它之后,运动爱好者和户外工作人员获得了极大的解放。因为 XEagle 无需双手就能操控,其语音控制、智能手表一键控制、智能避障等功能,不仅将无人机的操控极简化,还能进行自动跟踪拍摄。

不过我们今天的重点不 XEagle,而是要给大家介绍如何构建无人机语音模块。

先来看一段演示:

http://v.qq.com/x/page/h0850udk504.html

当然,不是所有无人机都提供了类似的 SDK。所以目前这个方案主要支持的是 Parrot minidrone 系列产品。

相关 Python 和 JS 代码:

https://github.com/IoToutpost/dronecontrol

硬件需求:

1、Cargo 或 Mambo 这类支持蓝牙遥控的 Parrot minidrone 无人机。

2、负责把 AWS 云服务连接到无人机的 树莓派 。

软件需求:

1、配置遥控用的 Alexa 框架。

2、配置 lambda 将 Alexa 语音命令连接到 AWS。

关于AWS的 lambda 请访问:

https://aws.amazon.com/lambda/

3、在树莓派上安装这个 kickass 库(由@amymcgovern创建):

https://github.com/amymcgovern/pyparrot

这个库提供了python-api 来通过蓝牙连接无人机。

主要流程:

1、调用 AWS lambda 函数,该函数接收操作请求并将事件发送到队列(AWS SQS)。

关于 AWS 的 SQS 消息队列服务请访问:

https://aws.amazon.com/cn/sqs/

2、树莓派上的 DroneService 轮询 SQS 并处理事件

3、DroneService 通过蓝牙向 Parrot 无人机发送移动指令。

DroneService:

无人机服务是一个做以下工作的微循环程序:

轮询AWS的SQS,如果消息可用,则提取有效信息并调用相应的方法。

例如:”TakeOffDroneIntent” -> takeOff()
该方法调用 pyparrot 库来执行无人机的动作,如“向上移动”、“向下移动”、“着陆”。

Alexa 技能:

这个技能包支持6种类型的语言表达:
TakeOffDroneIntent: 无人机起飞
LandDroneIntent: 无人机降落
RotateDroneIntent: 无人机旋转+90或-90度。
位置:RotationType(2个值:[+ 90,-90])
定位精度:“顺时针” -> 90,“逆时针” -> -90。
DroneMovementIntent: 无人机在6个可能的方向上移动。
位置:DirectionType(6个值:[“向上”,“向下”,“向左”,“向右”,“向前”,“向后”])
HoverDroneIntent: 徘徊一次。
FlightPlanIntent: 无人机在 flight_plan 中调用硬编码的飞行计划

构建模型将各种话语指向这个任务集合。

一些提示和计划:

队列应该只有一个执行者和一个发布者,它不适用于多个树莓派轮询相同的队列。

除了AWS,其他云计算提供商也有类似的语音识别、消息队列服务。

该项目未来计划在树莓派中添加面部识别以支持“请无人机来找我”类型的用例,以及支持无人机内部通信。

小结:

以上内容只是用语音代替了双手,遥控器依然需要。之前也有其他人用 Alexa 实现了类似功能,但 IoT前哨站 认为改进的空间依然很大,希望大家可以继续创新。让无人机变得更加人性化!

作者:长空无名

本文内容来自IoT前哨站,转载请注明作者和出处。

Scratch3.0正式发布 脱胎换骨扩展强大

作者:王文文

Scratch是一款由麻省理工学院(MIT)设计开发的少儿编程工具。

早期版本基于Adobe AIR,因此一直无法让iOS和Android的设备运行。近日Scratch官方终于发布了以Blocky为核心的Scratch 3.0,采用Node.js + Html5技术, 支持积木拖拽式 图形界面开发,可以在iOS & Android手机平板及桌上电脑跨平台使用,为青少年编程降低了难度!

而且Scratch 3.0可以向下兼容,因此你不必担心以前的作品无法调试。

你可以访问:https://scratch.mit.edu/create在线编辑,

也可以从:https://scratch.mit.edu/download下载最新的离线编辑器。

新版Scratch界面

此版本更新内容包括:

1、采用JS+Html5的页面技术,除了笔记本或台式机之外,还可以在平板电脑上创建和展示项目。

2、声音引擎(Audio Engine)重新设计,程序画面的速度因为WebGL的加速,达到40 fps,比Scratch 2.0的30fps快了一些,支持16:9画面。

3、新的精灵和背景,还有全新的扩展库,允许连接到Micro:bit、LEGO MINDSTORMS EV3等硬件,40多种语言支持。(连语音识别都给你准备了)

4、将舞台移到了编辑器右边(我倒是觉得放左边更好)。

5、新的运算符,使文本(字符串)更容易使用。

6、新的笔块(pen blocks),支持透明度。

7、IDE的小猫图标都改成字母了。

8、还有其他更新内容请自行发掘。

新版扩展区

从此次大改版大家应该能看出,Scratch志向不小。特别是新加的几个扩展,都是流行的IoT和AI应用。如果你的孩子在家用它搞出什么黑科技,千万不要惊讶。

小米二季度IoT收入翻番 上市来股价振幅高达30%

8月22日,小米集团公布了2018年半年报,这也是小米集团上市以来的首份财报。财报显示,今年上半年,小米收入796.48亿元,同比增长75.4%;经调整利润38.16亿元,同比增长62.2%。

不过,值得一提的是,在过去一个多月中,小米股价多次破发,最低时曾跌至15.52港元/股,较最高峰时的22.2港元/股,震荡幅度达30%。有中国香港券商人士对《证券日报》记者表示,破发是因为投资者仍然担心小米前景,所以沽出股份。截至8月22日收盘,小米报17.68港元/股,当日涨幅1.61%。

上半年收入796亿元 手机业务比重降低

半年报显示,2018年上半年,小米实现了收入、利润双增长。其中,今年二季度小米收入达452.36亿元,同比大涨68.3%,环比增长31.5%;经调整利润21.17亿元,同比增长25.1%,环比增长24.6%。2018年上半年小米收入达796.48亿元,同比增长75.4%;经调整利润38.16亿元,同比增长62.2%。

具体到各业务分部来看,手机业务在小米整体收入中的比重正在降低,收入结构有所优化。其中手机收入由2017年第二季度的192.19亿元增长58.7%至2018年第二季度的305.01亿元,但占总收入百分比由71.5%下降至67.4%。

小米表示,手机收入增长得益于销量和平均售价的双提升。2018年第二季度,小米手机销量达3200万部,同比增长43.9%。而受小米MIX2S、小米8系列等中高端旗舰机型在中国市场优异表现影响,中国大陆地区手机平均售价同比增长超25%。“小米抓住了中国手机市场消费者喜好的转变趋势,将优化产品组合、持续提升高端机型市场占比。”小米在财报中表示。

而与此同时,IoT与生活消费产品和互联网服务收入合计,所占百分比由27.9提升至31.7%。在小米各业务分部中,IoT及生活消费品的增长最为突出。2018年第二季度,该分部收入达103.79亿元,同比增长104.3%。其中,小米电视、小米笔记本电脑等主要IoT产品贡献最大,销售收入达41.78亿元,同比增长147.2%。

此外,2018年第二季度小米互联网服务收入为39.58亿元,同比大涨63.6%。其中,广告收入同比增长69.6%,互联网增值服务收入同比增长54.1%。同时,小米互联网服务的毛利率保持了一贯的高水平,2018年第二季度为62.8%,较上一季度略有提升。

海外市场蓬勃发展 西欧成新增长点

财报显示,小米海外市场收入已占总收入的36.3%,2018年第二季度收入达164亿元,同比增长151.7%。

截至2018年6月30日,小米在全球25个国家和地区跻身市场前五。其中,根据Canalys数据,2018年第二季度小米手机在印度市场同比增长106%,连续四个季度稳居市场份额第一。同一时期,在另一个市场容量极大的海外市场印尼,小米出货量位居该国第二。

此外,继2017年11月进入西班牙市场之后,小米在2018年5月扩展至法国及意大利,截至2018年第二季度,小米手机在西欧的出货量同比增长超过2700%。

来自:证券日报

怎么用 Fio 来测试树莓派的磁盘性能

为了测试系统IO性能的高低,在实际开发中,需要使用IO性能测试工具进行测试。

这里要介绍一款经典神器 —— Fio(Flexible I/O Tester)。

这是一款由 Jens Axboe 开发的用于测评和压力/硬件验证的开源软件。

它支持 19 种不同类型的 I/O 引擎 (sync、mmap、libaio、posixaio、SG v3、splice、null、network、 syslet、guasi、solarisaio,以及更多), I/O 优先级(针对较新的 Linux 内核),I/O 速度,fork 的任务或线程任务等等。它能够在块设备和文件上工作。

Fio被广泛的应用在非常多的地方,包括测评、QA,以及验证用途。它支持 Linux、BSD、OS X、Android 以及 Windows。

简单来说,Fio是用来测试系统IO性能的工具,它的强大之处在与提供了一套测试框架,能够支持多线程多进程的IO测试,用户只需进行参数的配置,便能够方便地定制不同的IO行为(顺序读写,随机读写等),并对其性能进行监测。

对于Debian/Raspbian来说,Fio的安装很容易。

执行 sudo apt-get install fio 即可。

一般的参数和说明:

bs : 设置IO请求的块大小,可以给出上下限
支持对read,write,trim分别进行设置,以逗号隔开
比如:bs=1k-2k,3k-4k,5k-6k
size : 文件请求的大小,控制job结束
rw : 控制读写类型: read/write/rw/randread/randwrite/randrw
direct : 1表示绕过buffer,直接作用于设备
ioengine: io引擎:libaio(异步IO),syslet等
iodepth : 异步IO情况下,IO队列的长度
runtime : 执行时间限制,控制job结束
filename: 输出文件或者设备名,eg:/dev/sba

例子:

bs=4k:单次io的块文件大小为4k
ioengine=libaio:IO引擎使用libaio方式
direct=1: 测试过程绕过机器自带的buffer,使得测试结果更真实,等效于buffered=0
runtime=7200:运行时间设置7200s
size=20G :设置本次测试的空间为20G
filename=/dev/sdb20 :被测裸盘的盘符
group_reporting=1:汇总每一个进程的信息
rate_iops=5000 : rate_iops设置额定的iops,一般测试不需要设置
time_based :设置测试基于时间,注:虽然设置了runtime为7200s,如果没有设置time_based,在空间写满之后停止。
write_iops_log=w-4kb-7200s-numjobs4-iodepth128-ssd:表示将iops写入到一个在fio目录下名叫4kb-7200s-numjobs4-iodepth128.iops.1.log的文件中,注:如果numjobs设置为多线程,则每一个线程的iops写入到一个log文件中。
log_avg_msec=1000: 每隔1000ms往log中写一次数据
rw=randwrite : 测试方式随机写

numjobs=4:设置测试线程数
iodepth=128:io 深度设置为128

实际操作:

随机写入的性能测试:

sudo fio –name=randwrite –ioengine=libaio –iodepth=1 –rw=randwrite –bs=4k –direct=0 –size=512M –numjobs=2 –runtime=240 –group_reporting

输出的结果:

随机读取的测试:

sudo fio –name=randread –ioengine=libaio –iodepth=16 –rw=randread –bs=4k –direct=0 –size=512M –numjobs=2 –runtime=240 –group_reporting

输出的结果:

结果里面包含吞吐量和时间。io=表示总共完成的IO量。在基于容量的测试中,这个值能匹配size参数。aggrb是所有进程/设备的汇总带宽。minb/maxb表示测量到的最小/最大带宽。mint/maxt表示测试的最短和最长耗时。和io=参数类似,时间值对于基于时间的测试应该能匹配runtime参数,对于基于容量的测试是一个变量。

如果对相关参数搞不明白可以看帮助:

好了,IoT前哨站希望大家熟练掌握这个性能检测工具。