EROFS Switches To Buffered I/O For File-Backed Mounts To Speed-Up Container Start Times
([Linux Storage] 3 Hours Ago
EROFS Buffered I/O For File-Backed Mount)
- Reference: 0001513397
- News link: https://www.phoronix.com/news/EROFS-Buffered-File-Mounts
- Source link:
Back for the Linux 6.12 kernel [1]EROFS introduced support for file-backed mounts to help with container and sandboxing use-cases. As part of the EROFS "fixes" merged yesterday to the Linux 6.13 kernel, file-backed mounts are now using buffered I/O by default to speed-up container start times.
[2]Merged yesterday for next weekend's Linux 6.13-rc4 release are the EROFS fixes that include using buffered I/O by default for file-backed mounts.
Alibaba engineer Gao Xiang explained with [3]the change :
For many use cases (e.g. container images are just fetched from remote),
performance will be impacted if underlay page cache is up-to-date but
direct i/o flushes dirty pages first.
Instead, let's use buffered I/O by default to keep in sync with loop
devices and add a (re)mount option to explicitly give a try to use
direct I/O if supported by the underlying files.
The container startup time is improved as below:
[workload] docker.io/library/workpress:latest
unpack 1st run non-1st runs
EROFS snapshotter buffered I/O file 4.586404265s 0.308s 0.198s
EROFS snapshotter direct I/O file 4.581742849s 2.238s 0.222s
EROFS snapshotter loop 4.596023152s 0.346s 0.201s
Overlayfs snapshotter 5.382851037s 0.206s 0.214s
So good for container start times. Those wanting the old behavior of using direct I/O for file-backed mounts with this open-source read-only file-system can use the "directio" mount option for restoring that usage.
[1] https://www.phoronix.com/news/EROFS-Linux-6.12
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ed90ed56e4b1311797302c2e6107f5049ba4586d
[3] https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git/commit/?h=fixes&id=6422cde1b0d5a31b206b263417c1c2b3c80fe82c
[2]Merged yesterday for next weekend's Linux 6.13-rc4 release are the EROFS fixes that include using buffered I/O by default for file-backed mounts.
Alibaba engineer Gao Xiang explained with [3]the change :
For many use cases (e.g. container images are just fetched from remote),
performance will be impacted if underlay page cache is up-to-date but
direct i/o flushes dirty pages first.
Instead, let's use buffered I/O by default to keep in sync with loop
devices and add a (re)mount option to explicitly give a try to use
direct I/O if supported by the underlying files.
The container startup time is improved as below:
[workload] docker.io/library/workpress:latest
unpack 1st run non-1st runs
EROFS snapshotter buffered I/O file 4.586404265s 0.308s 0.198s
EROFS snapshotter direct I/O file 4.581742849s 2.238s 0.222s
EROFS snapshotter loop 4.596023152s 0.346s 0.201s
Overlayfs snapshotter 5.382851037s 0.206s 0.214s
So good for container start times. Those wanting the old behavior of using direct I/O for file-backed mounts with this open-source read-only file-system can use the "directio" mount option for restoring that usage.
[1] https://www.phoronix.com/news/EROFS-Linux-6.12
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ed90ed56e4b1311797302c2e6107f5049ba4586d
[3] https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git/commit/?h=fixes&id=6422cde1b0d5a31b206b263417c1c2b3c80fe82c
Jumbotron