From 4f5704488cbb06e4291144e0829fe030130d3a62 Mon Sep 17 00:00:00 2001 From: Deng Guangxing Date: Tue, 26 Sep 2023 16:42:19 +0800 Subject: [PATCH] add DPU-OS docs Signed-off-by: Deng Guangxing --- ...57\344\270\216\351\234\200\346\261\202.md" | 67 ++++++++++++++++++ ...01\345\211\252\346\214\207\345\257\274.md" | 65 +++++++++++++++++ dpuos/doc/figures/dpuos-arch.png | Bin 0 -> 63987 bytes dpuos/doc/overview.md | 11 +++ dpuos/doc/public_sys-resources/icon-note.gif | Bin 0 -> 394 bytes ...01\344\270\216\351\203\250\347\275\262.md" | 38 ++++++++++ 6 files changed, 181 insertions(+) create mode 100644 "dpuos/doc/DPU-OS\350\203\214\346\231\257\344\270\216\351\234\200\346\261\202.md" create mode 100644 "dpuos/doc/DPU-OS\350\243\201\345\211\252\346\214\207\345\257\274.md" create mode 100644 dpuos/doc/figures/dpuos-arch.png create mode 100644 dpuos/doc/overview.md create mode 100644 dpuos/doc/public_sys-resources/icon-note.gif create mode 100644 "dpuos/doc/\351\252\214\350\257\201\344\270\216\351\203\250\347\275\262.md" diff --git "a/dpuos/doc/DPU-OS\350\203\214\346\231\257\344\270\216\351\234\200\346\261\202.md" "b/dpuos/doc/DPU-OS\350\203\214\346\231\257\344\270\216\351\234\200\346\261\202.md" new file mode 100644 index 0000000..f002e43 --- /dev/null +++ "b/dpuos/doc/DPU-OS\350\203\214\346\231\257\344\270\216\351\234\200\346\261\202.md" @@ -0,0 +1,67 @@ +# DPU-OS背景与需求 + +## 概述 + +在数据中心及云场景下,摩尔定律失效,通用处理单元CPU算力增长速率放缓,而网络IO类速率及性能不断攀升,二者增长速率差异形成剪刀差,即当前通用处理器的处理能力无法跟上网络、磁盘等IO处理的需求。传统数据中心下越来越多的通用CPU算力被IO及管理面等处理占用,这部分资源损耗称之为数据中心税(Datacenter Tax)。据AWS统计,数据中心税可能占据数据中心算力的30%以上,部分场景下甚至可能更多。 + +DPU (Data Processing Unit) 的出现就是为了将这部分算力资源从主机CPU上解放出来,通过将管理面、网络、存储、安全等能力卸载到专有的处理器芯片上进行处理加速,达成降本增效的结果。目前主流云厂商如AWS、阿里云、华为云都通过自研芯片完成管理面及相关数据面的卸载,实现数据中心计算资源100%售卖给客户。 + +目前DPU发展非常火热,云厂商及大数据在相关场景下对DPU存在较强烈的需求,国内也有很多DPU初创公司推出不同的DPU产品。在这一背景下,云和大数据等厂商需要考虑如何整合使用不同DPU产品,而DPU厂商也面临对不同客户交付时设备驱动适配客户指定操作系统的问题。openEuler作为国内领先的开源开放操作系统,通过基于openEuler构建的DPU-OS,解决DPU厂商及客户之间的适配问题。另外DPU上OS用于承载部分业务加速的需求,需要对DPU-OS进行性能优化加速,可以基于openEuler构建DPU相关加速能力,内置在DPU-OS中,构建DPU相关软件生态。 + +## DPU-OS需求分析及设计 + +#### DPU现状及对OS需求 + +DPU普遍具有以下特点和问题: + +* DPU通用处理能力资源受限 + + 当前DPU仍处在发展早期阶段,硬件上仍在不断演进,而且由于DPU供电限制,当前硬件规格普遍较低。主流DPU中通用处理器CPU核数普遍较少,约8-24CPU,且单核处理能力较弱。内存大小受限,普遍在16-32GB。DPU本地存储空间为几十到几百GB不等。运行于DPU之上的操作系统也需要考虑这些限制。 + +* DPU-OS安装方式多样 + + 当前DPU厂商及产品多种多样,对应操作系统的安装部署方式也不尽相同,包括PXE网络安装、U盘安装或其他自定义安装方式(由HOST下发安装镜像)。 + +* DPU性能需求 + + DPU的应用场景决定其对性能有强烈需求,相比于通用服务器操作系统,DPU-OS可能对内核特性或功能组件有特殊要求,比如用于设备直通热迁移的vDPA特性、厂商特定驱动适配支持、DPU进程的无感卸载特性、定制优化的用户态数据面加速工具如DPDK/SPDK/OVS、DPU管理监控相关的工具类组件。 + +针对以上DPU现状,提出对DPU-OS的需求如下: + +* 极致轻量的DPU-OS安装包 + + 通过裁剪openEuler系统镜像,减少非必要安装包的空间占用;通过优化系统服务,减少资源底噪开销。 + +* 裁剪配置及工具支持 + + 提供裁剪配置及裁剪工具支持,客户或DPU厂商可根据各自需求进行定制;openEuler提供ISO参考实现。 + +* 定制化内核及系统,提供极致性能 + + 通过定制内核及相关驱动,提供DPU竞争力内核特性;定制化加速类组件,使能DPU硬件加速能力;优化系统配置提供更优性能;通过DPU相关管理控制工具,方便用户统一管理。 + +#### DPU-OS设计 + +**图1**DPU-OS整体设计 + +![dpuos-arch](./figures/dpuos-arch.png) + +如图1所示,DPU-OS分为五层设计: + +* 内核层:通过定制内核config,裁剪非必需内核特性及模块,达成内核轻量级效果;使能特定内核特性提供高性能DPU内核能力。 + +* 驱动层:对openEuler原生驱动进行裁剪定制,选择最小集合;DPU厂商相关底层驱动集成,原生支持部分DPU硬件产品。 + +* 系统配置层:通过对系统sysctl、proc进行配置,为DPU相关业务提供最优性能。 + +* 外围包层:对openEuler外围包进行裁剪定制,选择最小集合;提供DPU相关的定制工具集合。 + +* 系统服务层:通过优化系统原生服务启动项,减少非必要系统服务运行,保证系统运行时底噪最小化。 + +通过上述五层设计达成轻量化、极致性能DPU-OS的目标。该方案为相对长期设计,且对DPU相关软硬件生态有较强的依赖;当前第一阶段先实现基于openEuler imageTailor进行裁剪。 + +DPU-OS的裁剪步骤可参考[DPU-OS裁剪指导文档](./DPU-OS裁剪指导.md),验证与部署可参考[DPU-OS部署验证指导文档](./验证与部署.md)。 + +> ![](./public_sys-resources/icon-note.gif)**说明**: +> +> 当前阶段DPU-OS先基于openEuler现有内核及外围包,使用镜像裁剪工具imageTailor进行裁剪,提供轻量化OS安装镜像。后续可根据实际诉求,进行相关内核及外围包特性的开发及集成。 diff --git "a/dpuos/doc/DPU-OS\350\243\201\345\211\252\346\214\207\345\257\274.md" "b/dpuos/doc/DPU-OS\350\243\201\345\211\252\346\214\207\345\257\274.md" new file mode 100644 index 0000000..9a5da0a --- /dev/null +++ "b/dpuos/doc/DPU-OS\350\243\201\345\211\252\346\214\207\345\257\274.md" @@ -0,0 +1,65 @@ +# DPU-OS裁剪指导 + +本文档主要介绍`imageTailor`的使用方法并结合[dpu-utilities仓库](https://gitee.com/openeuler/dpu-utilities/tree/master/dpuos)的`dpuos`配置文件裁剪得到`dpuos`的安装镜像,具体步骤如下: + +#### 准备imageTailor和所需的rpm包 + +参照[imageTailor使用指导文档](https://docs.openeuler.org/zh/docs/22.03_LTS/docs/TailorCustom/imageTailor%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97.html)安装好`imageTailor`工具并将裁剪所要用到的rpm包准备好。 + +可以使用openEuler提供安装镜像作为镜像裁剪所需要rpm包源,`openEuler-22.03-LTS-everything-debug-aarch64-dvd.iso`中的rpm比较全但是此镜像很大,可以用镜像`openEuler-22.03-LTS-aarch64-dvd.iso`中的rpm包和一个`install-scripts.noarch`实现。 + +`install-scripts.noarch`包括可以从everything包中获取,或者在系统中通过yum下载: + +```bash +yum install -y --downloadonly --downloaddir=./ install-scripts +``` + +#### 拷贝dpuos相关的配置文件 + +`imageTailor`工具默认安装在`/opt/imageTailor`路径下。执行下面的命令将`dpuos`的配置拷贝到对应的路径下,拷贝时选择对应架构目录。当前DPU-OS裁剪配置库支持x86_64和aarch64两种架构。 + +```bash +cp -rf custom/cfg_dpuos /opt/imageTailor/custom +cp -rf kiwi/minios/cfg_dpuos /opt/imageTailor/kiwi/minios/cfg_dpuos +``` + +#### 修改其他配置文件 + +* 修改`kiwi/eulerkiwi/product.conf`,增加一行`dpuos`相关配置: + +``` +dpuos PANGEA EMBEDDED DISK GRUB2 install_mode=install install_media=CD install_repo=CD selinux=0 +``` + +* 修改`kiwi/eulerkiwi/minios.conf`,增加一行`dpuos`的相关配置: + +``` +dpuos kiwi/minios/cfg_dpuos yes +``` + +* 修改`repos/RepositoryRule.conf`,增加一行`dpuos`的相关配置: + +``` +dpuos 1 rpm-dir euler_base +``` + +#### 设置密码 + +进入到`/opt/imageTailor`子目录下,修改下面3个文件的密码: + +* `custom/cfg_dpuos/usr_file/etc/default/grub` + +* `custom/cfg_dpuos/rpm.conf` + +* `kiwi/minios/cfg_dpuos/rpm.conf` + +密码生成及修改方法可详见openEuler imageTailor手册[配置初始密码](https://docs.openeuler.org/zh/docs/22.03_LTS/docs/TailorCustom/imageTailor%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97.html#%E9%85%8D%E7%BD%AE%E5%88%9D%E5%A7%8B%E5%AF%86%E7%A0%81)章节。 + +#### 执行裁剪命令 + +执行下面的命令进行裁剪,最后裁剪出来的iso在`/opt/imageTailor/result`路径下: + +```bash +cd /opt/imageTailor +./mkdliso -p dpuos -c custom/cfg_dpuos --sec --minios force +``` diff --git a/dpuos/doc/figures/dpuos-arch.png b/dpuos/doc/figures/dpuos-arch.png new file mode 100644 index 0000000000000000000000000000000000000000..453370ab07858a13a6c40f8d22e3f608e9ec6b4c GIT binary patch literal 63987 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 literal 0 HcmV?d00001 diff --git "a/dpuos/doc/\351\252\214\350\257\201\344\270\216\351\203\250\347\275\262.md" "b/dpuos/doc/\351\252\214\350\257\201\344\270\216\351\203\250\347\275\262.md" new file mode 100644 index 0000000..c32bad0 --- /dev/null +++ "b/dpuos/doc/\351\252\214\350\257\201\344\270\216\351\203\250\347\275\262.md" @@ -0,0 +1,38 @@ +# 验证与部署 + +DPU-OS制作完成后可以安装部署进行验证。由于目前DPU硬件还不成熟,也可以通过VirtualBox拉起虚拟机进行相关部署验证。 + +## 在VirtualBox上部署DPU-OS + +本章节展示了如何在VirtualBox虚拟机管理程序上安装部署DPU-OS。 + +#### 验证准备 + +在开始部署 DPU-OS 之前,需要做如下准备工作: + +- 获取 DPU-OS ISO +- 安装有VirtualBox的宿主机 + +#### 初步安装与启动 + +##### 创建虚拟机 + +通过VirtualBox创建新的虚拟机: + +- 选择虚拟机配置,CPU及内存建议2CPU+4GB内存以上 + +- 创建虚拟机磁盘,磁盘大小建议60GB以上 + +- 系统扩展属性部分,勾选启动EFI + +- 存储设置部分,光驱配置选择本地DPU-OS ISO作为光驱文件 + +- 其他网络或显示设置可自定义 + +##### 启动虚拟机 + +启动新建的虚拟机,启动项选择`Install from ISO`进行DPU-OS安装,安装过程自动进行无需手动干预,安装完成后自动重启。 + +选择启动项 `Boot From Local Disk`,启动后即可进入DPU-OS。密码为DPU-OS制作时指定的密码。 + +通过上述步骤,即可完成DPU-OS的本地部署验证。 -- Gitee