美食网站开发与设计任务书国外移动端网站模板
news/
2025/9/26 19:19:40/
文章来源:
美食网站开发与设计任务书,国外移动端网站模板,有没有和小孩做的网站,广东石油化工建设集团公司网站近日#xff0c;在 2022 云栖大会龙蜥峰会 eBPF Linux 稳定性专场上#xff0c;来自 eBPF 技术探索 SIG Maintainer 、浙江大学的郑昱笙分享了《eunomia-bpf#xff1a;eBPF 轻量级开发框架》技术演讲#xff0c;以下为本次演讲内容#xff1a; 大家好#xff01;…近日在 2022 云栖大会龙蜥峰会 eBPF Linux 稳定性专场上来自 eBPF 技术探索 SIG Maintainer 、浙江大学的郑昱笙分享了《eunomia-bpfeBPF 轻量级开发框架》技术演讲以下为本次演讲内容 大家好我是来自浙江大学的郑昱笙今天为大家介绍下 eunomia-bpf 项目作为一个为了简化 eBPF 程序的开发、分发、运行而设计的轻量级 eBPF 开发框架的背景和目标再通过一些简单的实例展示一下 eunomia-bpf 是如何从云端一行命令下载运行 eBPF 程序、只编写内核态代码即可运行和导出事件以及和 WebAssembly 的结合等功能最后简要阐述一下 eunomia-bpf 的原理和设计实现的思路探讨一下接下来的发展方向。
eunomia-bpf 项目龙蜥社区开源仓库https://gitee.com/anolis/eunomia
概要
eunomia-bpf 起源于 2022 年全国大学生操作系统大赛希望将 eBPF 程序作为服务运行把 eBPF 程序打包为一个 JSON 对象通过 HTTP 请求即可动态插拔运行任意一个可重定位的 eBPF 程序并且可以适应不同内核版本和架构。比赛结束之后在高校的几位老师和社区中的一些伙伴的帮助和指导下在这里重点感谢西安邮电大学陈莉君教授及团队和龙蜥社区毛文安老师逐步把这些想法变成了一个初具雏形的开源项目。 当前eunomia-bpf 想要解决的问题或 eBPF 程序当前的开发和分发过程中存的痛点主要有以下两个
第一对于新手而言搭建和开发 eBPF 程序的门槛较高不仅需要必须同时关注内核态和用户态两方面的交互和信息处理还需要编写用户态加载代码。
第二在不同架构的不同内核版本上无法方便快捷地打包、分发、发布各种 eBPF 程序。eBPF 很多小工具由不同的语言开发存在不同的接口无法轻易集成到大型的可观测系统。当前没有很好的插件方案很多时候必须重新编译整个可观测的框架再重新部署上线才能更新 eBPF 探针或数据处理模块。另外如果引入第三方的用户态数据处理代码代码崩溃会导致整个程序崩溃。
因此针对上面两个问题我们提出了三种解决思路
1.针对初学者只需要编写内核态代码即可自动获取内核态导出的数据编译后即可进行加载和运行降低了 eBPF 的学习成本提高了开发效率。
2.基于 libbpf一次编译处处运行的特性将用户态、内核态的编译和运行的完全分离通过标准 JSON 或 WASM模块的方式进行分发无需进行重新编译应用启动占用资源少时间短甚至容器启动更短。
WebAssembly (缩写 WASM) 是一种基于堆栈虚拟机的二进制格式 WASM 是为了可移植的目标而设计。可作为 C/C/RUST 等高级语言的编译目标使客户端和服务器应用程序能够在 Web 上部署。到现在为止 WASM 已经发展成为一个轻量级、高性能、跨平台和多语种的软件沙盒环境被运用于云原生软件组件可以在非浏览器环境下运行。 WASM 的设计思路和 eBPF 也有不少相似之处。
3.只编写内核态代码的时候使用 JSON 即可完成分发、加载、打包的过程对于完整的、需要用户态和内核态进行交互的 eBPF 应用或工具可以在 WASM 中编写复杂的用户态处理程序进行控制和处理并且将编译好的 eBPF 字节码嵌入在 WASM 模块中一同分发在目标机器上动态加载运行。
和 WASM 生态项结合可以给 eBPF 程序带来许多特性同时和 eBPF 程序原本的设计思路也不谋而合比如可移植、隔离性、安全性它也是一个跨语言、轻量级的运行环境等等。同时也可以借助 WASM 的相关工具完成 eBPF 程序的 OCI 镜像的存储和分发最近 Docker 官方也推出了一个基于 WASM 的分发工具。
以上三部分就是 eunomia-bpf 的核心特性接着和大家一起来看一些示例。
示例
eunomia-bpf 并不是一个完整的系统而是类似于开发库和开发框架可以很轻松地嵌入 Coolbpf 工具链里也可以作为开发库或开发框架嵌入其他程序。 可以通过一行命令从网页端直接下载预编译好的 eBPF 程序运行。使用 WebAssembly 或 JSON 模块的方式进行分发部署时无需重新编译启动速度很快。eunomia-bpf 适用于通用的、任意类型的 eBPF 程序不仅局限于 trace 方面的 kprobe、uprobe、fentry 等也支持如 lsm、tc、xdp 等类型的 eBPF 应用都只需要编写内核态代码即可完成。
上图中为放入 URL 里的形式也可以换成 OCI 镜像或 Docker 镜像可以存储在 Docker 仓库或 github package 使用方式与 Docker 基本一致只需简单地执行 pull、run 即可运行也可以将编译好的程序包 push 下去直接使用。
而相比于传统的 Docker 镜像它的启动速度更快同时也保留了 eBPF 很重要的特性可以轻松嵌入到其他程序作为子模块或插件使用。 通过 eunomia-bpf 只需编写内核态代码即可正确运行能够最大程度减少新手的上手障碍省略了用户态的加载框架编写能够自动导出内核态 perf event 或 ring buffer 事件。另外它与和原生 libbpf 完全兼容可以获取 libbpf tools 的内核态代码无需修改任何代码可直接运行。
可以额外添加 tracepoint 也可以通过注释的形式添加其他内容。使用容器打包编译工具链无需担心环境配置问题一行命令生成项目模板、一行命令编译。 一般来说一个完整的 eBPF 应用程序分为用户空间程序和内核程序两部分用户空间程序负责加载 BPF 字节码至内核或负责读取内核回传的统计信息或者事件详情进行相关的数据处理和控制。
我们可以在 WASM 中编写用户态辅助程序来完成安全、高效的用户态数据处理和控制逻辑它同样具备 eBPF 的特性例如安全性 WASM 和 eBPF 一样也是个沙盒环境在用户态运行的时候即使 WASM 模块崩溃了也不会造成宿主程序的异常退出、可移植性、轻量级、模块化等等也可以作为插件使用添加新的数据处理逻辑时也不需要更改原本的代码。注意 WASM 是可选而不是必须的对于一些简单的应用而言编写内核态代码就足够了
实际上我们是用 C 语言编写代码然后打包生成 WASM 模块之后我们可以
借助 WebAssembly 的相关生态帮助分发、管理 eBPF 程序例如 docker-wasm。可嵌入大型应用中作为 eBPF 可编程模块或插件使用。
这里演示的是一个简单的 WASM 模块它可以获取当前系统的进程间的 signal 信号传递的事件也可以接受一些命令行参数并且对上报的信息进行处理。
目前来看我们已经可以基本上不用进行代码修改就可以直接把 BCC/libbpf-tools 里面的程序编译为 WASM 模块。对开发体验来说也可以做到和使用 C 语言开发 libbpf 的 eBPF 程序完全相同之后也可以引入其他的语言开发 SDK。
把 WASM 和 eBPF 结合起来主要的困难在于WASM 的内存布局和 eBPF 程序并不一样C 语言的结构体并不能直接映射所以传递结构体必须要经过序列化操作。同时 WASM 对于访问系统资源例如文件、网络等等也有不少限制很多标准库是缺失的所以我们需要在 WASM 模块中进行一些特殊的处理和移植。
系统架构
架构底层依赖的是内核态和用户态的基础设施比如 libbpf 库和 Kernel 中的 eBPF 虚拟机。在内核的基础设施这之上我们会提供相关的编译工具链和对应的运行时加载器帮助生成 JSON 或打包成 WASM 的模块工具链本身使用了比如 Clang/LLVM、bpftool 等工具。动态加载库可以独立使用与 WASM 无关也可以借助动态加载 JSON 配置信息即可热插拔、热更新 eBPF 程序的形式通过 API 接口轻松实现 kernel function as a service内核函数即服务。
我们还实现了 WASM 抽象层包含 API 规范比如用于扩展 WASM 的虚拟机 WSAI 系统占用的访问形式或与 eBPF 交互的访问形式。还有基于 WASM 定制的 libbpf 库、移植的辅助态程序以及序列化库等用于在 WASM 模块加载基于 libbpf 的 eBPF 程序。
运行时库可以轻松进行替换比如替换成 WSI 的 WASM 运行时。除此之外上层还在 LMP 项目中实现了 eBPF hub 等包管理和分发设施以及其他的命令行工具、可观测性工具等。
目前eunomia-bpf 项目已在龙蜥社区开源欢迎各位开发者体验也欢迎大家提出建议和反馈一起来做大做强。
相关链接
eunomia-bpf 项目地址链接
https://github.com/eunomia-bpf/eunomia-bpf
eBPF技术探索 SIG 地址
https://openanolis.cn/sig/ebpfresearch
原文链接
本文为阿里云原创内容未经允许不得转载。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/916927.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!