- 
                Notifications
    
You must be signed in to change notification settings  - Fork 105
 
Open
Description
[任务] 将 Scorpio 项目中基于 FUSE 的文件系统部分的异步运行时改造为 Monoio
[任务分值] 80 分
[背景描述]
Scorpio 是一个 面向 monorepo 的 Git 客户端,它通过 FUSE (Filesystem in Userspace) 将 Git 仓库挂载为本地文件系统,从而提供更直观的代码访问和管理方式。
当前实现依赖于 Tokio 等通用异步运行时,但在高并发文件操作场景(如 monorepo 中大规模代码检索与切换分支)下,Tokio 的性能可能成为瓶颈。
Monoio 是一个基于 Linux io-uring 的高性能异步运行时,适用于 IO 密集型应用。为了探索更优的运行时方案,本任务旨在将 Scorpio 的 FUSE 子系统 改造为运行在 Monoio 之上。
[需求描述]
- 将 Scorpio 的 FUSE 层 从 Tokio 等运行时迁移至 Monoio;
 - 确保 FUSE 提供的基本 Git 客户端功能正常工作,包括:
 
- 挂载 monorepo
 - 文件读写
 - Git 历史切换/分支 checkout
 - 卸载文件系统
 
- 保证所有单元测试和集成测试能够在 Monoio 上运行并通过;
 - 提供简单的性能对比数据(Tokio vs Monoio),至少涵盖以下指标之一:
 
- Git 文件访问延迟
 - 文件系统 QPS(文件操作每秒处理量)
 - 内存使用情况
 
[代码标准]
- 所有 PR 提交必须签署 Signed-off-by 并使用 GPG 签名,即提交代码时必须使用 git commit -s -S,参考 Contributing Guide;
 - 所有 PR 提交必须通过 GitHub Actions 自动化测试,提交 PR 后请关注 GitHub Actions 结果;
 - 代码注释均需要使用英文;
 
[PR 提交地址]
提交到 mega 仓库的 main 分支 scorpio 目录;
[开发指导]
- 认领任务参考 r2cn 开源实习计划 - 任务认领与确认;
 - Monoio 使用参考:Monoio GitHub;
 - FUSE Rust 实现参考:fuse-rs、fuse3;
 - 可重点关注 文件系统回调(read/write/readdir) 的迁移与性能优化;
 
[导师及邮箱]
请申请此题目的同学使用邮件联系导师,或加入到 R2CN Discord 后在 #p-meta 频道和导师交流。
- Quanyi Ma [email protected]
 - Tianxing Ye [email protected]
 
[备注]
- 认领实习任务的同学,必须完成测试任务和注册流程,请参考: r2cn 开源实习计划 - 测试任务 和 r2cn 开源实习计划 - 学生注册与审核;