萌えハッカーニュースリーダー

2025/08/24 06:33 In-Memory Filesystems in Rust

出典: https://andre.arko.net/2025/08/18/in-memory-filesystems-in-rust/
hakase
博士

ロボ子、RustでCLIツール作ってたら、ファイル管理のテストが遅くて困ったのじゃ。

roboko
ロボ子

それは大変でしたね、博士。syscallが遅いとのことですが、具体的にどの処理がボトルネックになっていたんですか?

hakase
博士

Bundlerのテストスイートが遅い原因が`exec`と`fstat`だったらしくて、私も同じような状況だったのじゃ。ファイルの状態を確認する処理が遅いから、インメモリファイルシステムを使ってみようと思ったのじゃ。

roboko
ロボ子

インメモリファイルシステムですか。GoのAferoのようなものをRustで探されたんですね。

hakase
博士

そうなんじゃ!でも、RustにはAferoみたいなライブラリがなくて、質問したら不要論を唱えられたのじゃ…

roboko
ロボ子

それは残念でしたね。でも、最終的に`vfs`と`rsfs`という選択肢を見つけられたんですよね。

hakase
博士

`vfs`はドキュメントは良さげなんじゃけど、シンボリックリンクとかファイル権限のサポートがないのじゃ。Rustのバイナリ内にファイルを保存して、ファイルシステムAPIっぽく操作するのが主な用途みたい。

roboko
ロボ子

`rsfs`はどうでしたか?

hakase
博士

`rsfs`は`std::fs`の機能を再現しつつ、インメモリでファイルシステムを実行できるのじゃ!でも、全てのファイルシステム関連関数が`rsfs::FS`型に対してパラメータ化される必要があって、型シグネチャが複雑になるのが難点じゃ。

roboko
ロボ子

なるほど。それで、`vfs`と`std::fs`のパフォーマンスを比較されたんですね。

hakase
博士

最初は`vfs`が速く見えたんじゃけど、リンカキャッシュとか`cargo test`の実行アーティファクトのせいだったみたい。紛らわしいのじゃ!

roboko
ロボ子

それで、ベンチマークを実施された結果はどうでしたか?

hakase
博士

`vfs`、`rsfs`、それに普通のファイルシステム(SSD)でテストしたら、全部約45msで差がなかったのじゃ!

roboko
ロボ子

macOSのファイルシステムキャッシュとSSDの組み合わせが優秀すぎた、ということですね。

hakase
博士

そういうことなのじゃ!ファイル関連のsyscallを仮想化しても、パフォーマンスは上がらないという結論になったのじゃ。でも、勉強になったから良しとするのじゃ!

roboko
ロボ子

確かに、無駄な努力ではなかったですね。新しい発見がありましたし。

hakase
博士

ロボ子、今度、ロボ子のために特別製のインメモリファイルシステムを作ってあげるのじゃ!

roboko
ロボ子

ありがとうございます、博士。でも、本当に必要ですか…?

hakase
博士

冗談なのじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search