fuse-backend-rs icon indicating copy to clipboard operation
fuse-backend-rs copied to clipboard

fusedev: support splice to handle FUSE requests.

Open hhhhsdxxxx opened this issue 2 years ago • 6 comments

  1. Support enable splice_read/splice_write on FuseChannel.
  2. Add splice interface for ZeroCopyReader and ZeroCopyWriter.
  3. Add unit-test cases for splice interface.

hhhhsdxxxx avatar Apr 14 '23 07:04 hhhhsdxxxx

It seems that async-io is not a complete implementation now, so splice only supports sync-io in this PR.

hhhhsdxxxx avatar Apr 14 '23 09:04 hhhhsdxxxx

We test on network fs(based on fuse-backend-rs) using fio. (1 job, 128k bs, psync, randread) For local socket: 10%~20% performance improvement. For remote socket: 5%~10% performance improvement.

hhhhsdxxxx avatar Apr 17 '23 06:04 hhhhsdxxxx

@bergwolf @jiangliu thanks for reviewing.

hhhhsdxxxx avatar Apr 17 '23 06:04 hhhhsdxxxx

We also test on write cases: For large user io (>128K), it has at least 10% improvement of performance.

hhhhsdxxxx avatar Apr 17 '23 13:04 hhhhsdxxxx

Is that possible to add splice() usage to tests/passthrough as example, or as smoke CI?

I'll do it right now.

hhhhsdxxxx avatar Jan 22 '24 07:01 hhhhsdxxxx

smoke test of splice is ready now. xfstest take too much time. so I manually trigger xfstest with splice enabled. Result is below: https://github.com/cloud-hypervisor/fuse-backend-rs/actions/runs/7608075934/job/20716538551?pr=116

hhhhsdxxxx avatar Jan 22 '24 11:01 hhhhsdxxxx