Replies: 3 comments
-
|
1.20 - 1.31 开发分支: 已完成
待完善
|
Beta Was this translation helpful? Give feedback.
0 replies
-
|
2.1 - 2.7 已完成:
待完善:
|
Beta Was this translation helpful? Give feedback.
0 replies
-
|
2.8 - 2.21 已完成:
待完善:
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
AxVisor eBPF 性能追踪系统
1. 项目背景
1.1 问题陈述
AxVisor 是基于 ArceOS 构建的模块化 Type-1 Hypervisor。当前的可观测性依赖于静态日志输出,存在以下局限:
1.2 解决方案
引入 eBPF 技术,实现:
1.3 技术路线
由于 Starry-OS 是基于 ArceOS 扩展的宏内核,AxVisor 是基于 ArceOS 扩展的 VMM,两者共享底层基础设施。本项目将移植并扩展 Starry-OS 的 eBPF 实现,适配 Hypervisor 场景。
2. 系统架构
3. 核心功能
3.1 追踪点 (Tracepoint)
预定义的静态插桩点,适用于 Hypervisor 关键路径:
vmm:vcpu_run_entervmm:vcpu_run_exitvmm:hypercallvmm:mmio_accessvmm:ept_violationvmm:interrupt_inject3.2 动态探针 (Kprobe/Kretprobe)
支持在任意内核函数入口/返回处动态插桩,无需预定义追踪点:
3.3 Hypervisor 专用 Helper
除标准 eBPF Helper 外,提供 Hypervisor 上下文访问:
bpf_get_current_vm_idbpf_get_current_vcpu_idbpf_get_exit_reasonbpf_get_guest_regs3.4 预期效果
4. 开发计划 (12 周)
4.1 时间线概览
4.2 Phase 1: 基础设施 (Week 1-2)
目标: 集成 Starry-OS 组件,建立符号表和追踪点基础设施
modules/axebpf,包含子模块结构symbols.rs,集成 ksym;修改 xtask 生成 kallsyms.bintracepoint.rs,封装 tracepoint 库交付物:
modules/axebpf模块xtask symbols命令4.3 Phase 2: eBPF 运行时 (Week 3-4)
目标: 移植 rbpf VM,实现程序加载和执行
EbpfVm结构体,支持 Helper 注册maps.rs,封装 kbpf-basic (HashMap, Array, RingBuf)交付物:
4.4 Phase 3: VMM 追踪点与 Shell (Week 5-6)
目标: 定义 Hypervisor 追踪点,实现 Shell 命令
交付物:
trace命令组4.5 Phase 4: Kprobe/Kretprobe 支持 (Week 7-8)
目标: 移植 Starry-OS kprobe 实现,支持动态探针
trace kprobe/kretprobe命令交付物:
4.6 Phase 5: 验证器与 Uprobe (Week 9-10)
目标: 实现 eBPF 验证器,探索 Uprobe 支持
交付物:
4.7 Phase 6: 测试与文档 (Week 11-12)
目标: 全面测试,编写文档,性能优化
性能目标:
交付物:
5. 依赖组件
5.1 Starry-OS 组件 (直接复用)
5.2 社区组件
6. 未来扩展
6.1 完善 Uprobe 支持
Phase 5 将进行 Uprobe 可行性研究。在 Hypervisor 场景下,Uprobe 面临的挑战:
如可行,将支持追踪 Guest OS 中的用户态程序。
6.2 Rust 异步追踪 (研究方向)
问题: 现有 eBPF 追踪方案基于同步执行模型,无法有效追踪 Rust async/await 异步代码:
研究方向: 探索针对 Rust async runtime 的专用追踪方案,可能需要:
此方向需要进一步研究,不在当前 12 周计划范围内。
7. 参考资料
Beta Was this translation helpful? Give feedback.
All reactions