Silkはスタックフルファイバーライブラリ、ワークスティーリングループを備えたスケジューラ、io_uring
Silkは、スタックフルファイバー(軽量スレッド)を実装するライブラリであり、ワークスティーリングを採用したスケジューラとio_uringによる非同期I/Oを特徴とする。これにより、高効率な並行処理と低レイテンシなI/O操作を実現し、ClickHouseのようなデータ集約型システムのパフォーマンス向上に貢献する。
背景メモ
- Silkは、ClickHouse社が公開したRust製のライブラリで、「スタックフルファイバー」(処理を途中で一時保存・再開できる軽量スレッド)に、io_uring(Linuxの高速非同期I/O機構)によるスケジューラとwork-stealing(負荷分散)を組み合わせたもの。
- 背景として、データベースClickHouseは高い並列I/O性能が求められるが、従来のasync/await(Rust標準の非同期仕組み)ではスタックトレースが分断される、一部処理で相性が悪いといった課題があった。
- Silkは従来のasyncランタイム(tokioなど)とは異なり、ファイバー方式を採用することで、通常の同期コードのように書けつつ非同期I/Oを活用でき、デバッグや互換性の面で利点があるとされる。
- io_uring対応により、ファイルI/OやネットワークI/Oをシステムコール最小限で処理。ClickHouseのようなデータベース製品での活用が主眼だが、汎用Rust非同期ライブラリとしても利用可能。
- プロジェクトはまだ初期段階で、ClickHouseのプロダクションにはまだ組み込まれていない。