google / google/gvisor

Sentry Virtual Filesystem v2 (VFS2)

Open
#1,035 4 comments 15 reactions 1 assignee Claimed by @nixprime View on GitHub
area: filesystem area: performance revived type: enhancement
Dominant language
Go
Stars
19.3k
Forks
2k
Avg merge
3d 5h
Merged PRs (30d)
264

Description

Current VFS implementation in the Sentry has performance shortcomings with regarding to the number of operations that need to be performed for path walks. This is especially noticeable when using gofer mounted filesystems, where the round trip cost for each operation is aggravated by the RPC and scheduling costs.

VFS2 addresses this by delegating path resolution to the filesystem, making it possible to send a single RPC for each syscall operation, instead of one RPC per path component in the operation. For example, `stat(/foo/bar/goo)` generates at least 3 RPC round trips to the gofer (`foo`, `bar`, `goo`), while VFS2 makes only 1.

VFS2 also allows for the implementation of recursive bind mounts, which would require a major refactoring with the current implementation.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.