Skip to content

[r2cn] 将 Scorpio 项目中基于 FUSE 的文件系统部分的异步运行时改造为 Monoio #1488

@genedna

Description

@genedna

[任务] 将 Scorpio 项目中基于 FUSE 的文件系统部分的异步运行时改造为 Monoio

[任务分值] 80 分

[背景描述]
Scorpio 是一个 面向 monorepo 的 Git 客户端,它通过 FUSE (Filesystem in Userspace) 将 Git 仓库挂载为本地文件系统,从而提供更直观的代码访问和管理方式。
当前实现依赖于 Tokio 等通用异步运行时,但在高并发文件操作场景(如 monorepo 中大规模代码检索与切换分支)下,Tokio 的性能可能成为瓶颈。

Monoio 是一个基于 Linux io-uring 的高性能异步运行时,适用于 IO 密集型应用。为了探索更优的运行时方案,本任务旨在将 Scorpio 的 FUSE 子系统 改造为运行在 Monoio 之上。

[需求描述]

  1. 将 Scorpio 的 FUSE 层 从 Tokio 等运行时迁移至 Monoio;
  2. 确保 FUSE 提供的基本 Git 客户端功能正常工作,包括:
  • 挂载 monorepo
  • 文件读写
  • Git 历史切换/分支 checkout
  • 卸载文件系统
  1. 保证所有单元测试和集成测试能够在 Monoio 上运行并通过;
  2. 提供简单的性能对比数据(Tokio vs Monoio),至少涵盖以下指标之一:
  • Git 文件访问延迟
  • 文件系统 QPS(文件操作每秒处理量)
  • 内存使用情况

[代码标准]

  1. 所有 PR 提交必须签署 Signed-off-by 并使用 GPG 签名,即提交代码时必须使用 git commit -s -S,参考 Contributing Guide;
  2. 所有 PR 提交必须通过 GitHub Actions 自动化测试,提交 PR 后请关注 GitHub Actions 结果;
  3. 代码注释均需要使用英文;

[PR 提交地址]
提交到 mega 仓库的 main 分支 scorpio 目录;

[开发指导]

  1. 认领任务参考 r2cn 开源实习计划 - 任务认领与确认;
  2. Monoio 使用参考:Monoio GitHub;
  3. FUSE Rust 实现参考:fuse-rs、fuse3;
  4. 可重点关注 文件系统回调(read/write/readdir) 的迁移与性能优化;

[导师及邮箱]
请申请此题目的同学使用邮件联系导师,或加入到 R2CN Discord 后在 #p-meta 频道和导师交流。

  1. Quanyi Ma [email protected]
  2. Tianxing Ye [email protected]

[备注]

  1. 认领实习任务的同学,必须完成测试任务和注册流程,请参考: r2cn 开源实习计划 - 测试任务 和 r2cn 开源实习计划 - 学生注册与审核;

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions