使用云加速 Yocto 编译
简介云服务技术已经形成多年。现在行业中一个最大的概念就是物联网,又称为 IoT。我们作为电子工程师,脑海中出现的第一个印象是将许多设备连接到云,上传数据用于可视化、存储和分析。当然,也可以有许多其他的应用:云服务还可以存储和处理资源,特别是SaaS和个人应用;IT专家和运维也可以发挥云虚拟机和数据库的优势。有一件事我们经常会忽略,云不仅仅是 IoT 工具,或者只是大
云服务技术已经形成多年。现在行业中一个最大的概念就是物联网,又称为 IoT。我们作为电子工程师,脑海中出现的第一个印象是将许多设备连接到云,上传数据用于可视化、存储和分析。当然,也可以有许多其他的应用:云服务还可以存储和处理资源,特别是SaaS和个人应用;IT专家和运维也可以发挥云虚拟机和数据库的优势。
有一件事我们经常会忽略,云不仅仅是 IoT 工具,或者只是大公司才能使用的东西。我们还可以用其处理日常事物。事实上这就是本文背后的动机,处理耗费的时间的任务,并用云进行简化。
因为对微软的云平台 Azure 较为熟悉,我讲向你介绍在 Azure 上部署 Ubuntu Server 16.04 LTS 虚拟机(是的,在微软云上的 Linux虚拟机),使用 Yocto/OpenEmbedded 生成嵌入式 Linux 镜像,如 Toradex Colibri iMX6 计算机模块的标准镜像。
首先访问 portal.azure.com ,使用你的微软账号登录 Azure。
然后根据 该页面 上的 Azure 文档提示快速部署一个虚拟机。
提示1:在你电脑的终端上,使用下面命令生成认证秘钥:
ssh-keygen -t rsa -b 2048
你需要复制公钥。只要复制 “id_rsa.pub” 文件。使用下面命令复制:
cat ~/.ssh/id_rsa.pub
提示2:在完成 “连接到虚拟机”步骤后,就可以结束。你不需要安装 Azure 文档中提到的 NGINX。
通过 SSH 访问虚拟机,准备编译环境。按照这篇技术文章和 Toradex 网页的说明进行。
提示1: :尽管文章内容比较多,你可以只参考这些章节: “Prerequisites” - Ubuntu 16.04, “Installation – Setup/Configure”, “Installation – local.conf” - 然后选择 Colibri iMX6,并 “Building”.
提示2:当虚拟机初始化完成后,将会有 30GB的 SSD 磁盘空间,用于安装操作系统。在 /mnt 目录下还有临时磁盘空间,根据你选择的虚拟机配置相应的空间大小也有所不同。
注意:你可以增加安装操作系统 30GB SSD 磁盘的大小。
为了测试,我们进行 'angstrom-lxde-image' 的首次编译,包括下载和编译所有软件包,包括从云服务器上下载镜像到本地开发电脑。
我使用工作台式机做对比测试。电脑配有 Intel® Core™ i7-3740QM CPU @ 2.70GH 8虚拟核(4核处理器)、8GB 内存和 SSD,运行 Ubuntu 16.04 LTS。从零开始,首次编译总共耗时4个小时。
接下来,使用 Azure 的两个虚拟机,配置如下:一个使用最基础的配置((Standard DS1 v2),1 Intel® Xeon®core, CPU E5-2673 v3 @ 2.40GHz, 3.5 GB RAM 和 SSD 磁盘;另一个使用我账户中的最高配置(最多10核),8 Intel® Xeon® cores, CPU E5-2673 v3 @ 2.40GHz, 28 GB RAM 和 SSD。最基础配置的虚拟机首次编译的总时间为12小时,最高配置的则耗费1小时30分钟。
我的同事使用 Amazon AWS (c4.2xlarge, c4.4xlarge and m4.2xlarge – 点击这里了解详情)进行了同样的编译做对比,以及采用其他配置的电脑(4 core i7-6700K CPU @ 4.00GHz, 32 GB DDR4, NVMe SSD 和 8 core Xeon®CPU E5-2667 v4 @ 3.20GHz, 64GB DDR4, RAM 磁盘)。结果如下表所示。
注意1:其他的账户可以使用更高配置的虚拟机。
注意2:从云端下载编译好的镜像到本地电脑的速度很快(小于3分钟),平均速度为 1MB/S。
注意3:有些云平台,例如Azure,按分钟计算虚拟机费用,其他的则根据小时计算费用。
注意4:使用 RAM 磁盘也可以提高性能
机器 | 编译完成时间 | 每小时费用* | 总费用 |
个人笔记本电脑 Intel® Core™ i7-3740QM CPU @ 2.70GHz, 8GB RAM and SSD disk | 4.00 小时 | - | - |
Azure 1-vcore 1 core Intel® Xeon® CPU E5-2673 v3, 3,5GB RAM and SSD disk | 12.00 小时 | US$0.073/小时 | US$0.876 |
Azure 8-vcore 8 cores Intel® Xeon® CPU E5-2673 v3, 28GB RAM and SSD disk | 1.50 小时 | US$0.585/小时 | US$0.878 |
AWS 8-vcore c 8 cores Intel® Xeon® CPU E5-2666 v3, 15GB RAM and EBS storage | 1.88 小时 | US$0.398/小时 | US$0.796 |
AWS 16-vcore c 8 cores Intel® Xeon® CPU E5-2666 v3, 30GB RAM and EBS storage | 1.18 小时 | US$0.796/小时 | US$0.796 |
AWS 8-vcore m 8 cores Intel® Xeon® CPU E5-2686 v4 or E5-2676 v3, 32GB RAM and SSD disk | 2.10 小时 | US$0.400/小时 | US$0.800 |
Local Server 1 Intel® Core™ i7-6700K CPU @ 4GHz, 32GB RAM DDR4 and NVMe SSD disk | 1.23 小时 | - | - |
Local Server 2 Intel® Xeon® ES-2667 v4 CPU @ 3.20GHz, 64GB DDR4 RAM and RAM disk | 1.15 小时 | - | - |
* 该表格中的每小时费用不包括国际区域转移费用。该费用是部署在美国东部 Azure 服务器上的虚拟机,在其他区域虚拟机的价格可能会有波动。其他的服务,例如数据存储,也伴随虚拟机一同使用。 这些也关系到编译的总费用。价格可能随时会出现变动,根据微软的政策,请浏览Azure网页或者联系微软获取更多关于价格的信息。
最低配置的虚拟机费用为每小时US$0.073,最高配置则为每小时US$0.585。因此,两个虚拟机编译的总费用都约为 US$0.878。所有配置虚拟机价格可以在 Azure 的页面中看到。
提示1:编译完成后,关闭虚拟机避免不必要的费用。我们采用按需付费,所以请记住不要在周末的时候还开着虚拟机。
提示2:你可以配置虚拟机自动关机,万一你忘记将其关闭。
本实验揭示了基于云编译的优缺点。考虑到“这样会很快吗?”章节中编译时间,基于云编译的方法可以显著缩短编译时间。但是,你也应该考虑到下载速度:使用好的网络连接,低成本的编译服务器可能和有些配置的云差不多快,甚至更快。另一方面,如果你的网络连接很慢或者不稳定,那么云方案可能更加合适。
另外,长期使用虚拟机的成本可能会高于使用本地编译服务器。如果你公司没有专门的服务器用于编译,使用云方案可以为员工节约时间。这能够节约成本,因为虚拟机每小时的费用低于员工的公时薪资。还可以避免在个人电脑上编译带来的潜在损耗。
云也可以作为临时的方案,用于多个编译任务并行执行。结合已经在运行一个或者多个任务的本地服务器,该方案可以很容易和便宜地实施。
最后,你需要了解何种云方案可以使用,并知悉这些方案可能适合或者不适合你的需求。希望本文的提示和案例能够有所帮助。下次见!
Author: | Leonardo Veiga, Field Application Engineer, Toradex Brasil |
更多推荐
所有评论(0)