国際会議 OSDI 2020
14th USENIX Symposium on Operating Systems Design and Implementation で個人的に興味のある論文の一覧です。概ね興味の順番にソートしてあります。
最近のシステム系国際会議は分野が発散してきているので、興味のある分野に絞ったリストを作ることが必要そうです(それでも数が多いですが)。
目次
概要
- バーチャル会議
- 投稿数???本、採択数??本、採択率??%
論文リスト
OS系
安全なオペレーティングシステムにおける隔離と通信
(Isolation, and Communication in a Safe Operating System) www.usenix.org
Theseus:OSの構造と状態管理の実験
(Theseus: An Experiment in OS Structure and State Management)
学会ページ: https://www.usenix.org/conference/osdi20/presentation/boos
論文(著者版): https://www.yecl.org/publications/boos2020osdi.pdf
コード: https://github.com/theseus-os/Theseus
Rust で書かれた実験的OSである Theseus の経験を報告している。OSのモジュール性を向上させるために、コンポーネント間で持つ状態の数を減らし、OSの機能の多くをコンパイラに移動させることを目指している。
近年のシステムソフトウェアでは (state spill)https://doi.org/10.1145/3064176.3064205 というあるコンポーネント内に他のコンポーネントからの影響が永続的に残ってしまうという状況がしばしば起こっている。これにより、フォールトトレラントやライブアップデートなどで問題が発生する。例えば、Android の system service で state spill が発生すると、その system service が落ちたときに、それを使っていないアプリも巻き添えにして落ちてしまうことがある。
システムを進化可能かつ高可用性にすることは、ハードウェアの冗長化は高くつくが信頼性は必要といった環境においては特に重要な機能である。しかし、例えばソフトウェアアップデートなどでダウンタイムが発生したり、状態が失われて復旧に時間がかかるなど、実際にはシステムが落ちないようにすることは難しい。
この論文では、state spill の問題に対処するために、Rust を使って一からOSを書く試みをしている。Rust の ownership model は、コンポーネント間で隔離をしつつゼロコストでコンポーネント間の状態転送がおこなえるなど、この目的に適している。著者らの最初の実験的試みにより、2つのことが分かった。1つ目は、state spill を軽減するためにはOSの構造を考え直す必要があるということである。これは、state spill はOSがどのようにモジュール化されているかに大きく依存しているからである。2つ目は、Rust のようなモダンな言語は、単に安全なOSコードを書くためだけでなく、OSの動作のある種の正確性不変条件を静的に保証するためにも使えるということである。
実験の結果得られたものは Theseus OS である。Theseus の1つ目の貢献は、多くの小さなコンポーネントからなる新しい OS 構造を持っていて、実行時の永続的な境界が明確に定義されていることである。これにより、コンポーネントの動的進化や障害回復を容易にしている。
Theseus の2つ目の貢献は、OSの実行環境を実装言語のランタイムモデルにマッチングさせ、言語レベルの機構を用いてOS自体を実装するという、「言語内」OS設計アプローチに貢献していることである。言語内設計により、コンパイラがコードの挙動の理解においてギャップがないようにOSコードに安全性チェックを適用することが可能になるほか、セマンティックエラーを実行時の障害からコンパイル時のエラーへと移行させることができる。言語内設計は、安全性を超えてコンパイラがOSのセマンティック不変条件を静的にチェックし、リソース管理を行うことを可能にしている。
カーネル内仮想マシンのためのジャスト・イン・タイム・コンパイラの仕様、実装及び検証
(Specification, implementation, and verification of just-in-time compilers for an in-kernel virtual machine) www.usenix.org
OSの抽象化はFPGA上で意味があるか?
(Do OS abstractions make sense on FPGAs?) www.usenix.org
PipeSwitch: ディープラーニングアプリケーションのための高速なパイプラインコンテキストスイッチング
(PipeSwitch: Fast Pipelined Context Switching for Deep Learning Applications) www.usenix.org
高速化
高速でスケーラブル、柔軟なストレージ仮想化のためのFPGA支援による仮想デバイスエミュレーション機構
(An FPGA-assisted Virtual Device Emulation Mechanism for Fast, Scalable, and Flexible Storage Virtualization) www.usenix.org
単一サーバによる100Gbps侵入防止の実現
(Achieving 100Gbps Intrusion Prevention on a Single Server) www.usenix.org
ネットワークファンクションのためのシンプルで高速なNICドライバモデル
(A Simpler and Faster NIC Driver Model for Network Functions) www.usenix.org
Frenzy:マルチテナントネットワーク用のプログラマブルな高性能NIC
(Frenzy: A Programmable High-Performance NIC for Multi-tenant Networks) www.usenix.org
hXDP:FPGA NICでの効率的なソフトウェアパケット処理
(hXDP: Efficient Software Packet Processing on FPGA NICs) www.usenix.org
セキュリティ・バグ
マッピングされていない投機コントラクトを使用したトランジェント実行攻撃の効率的な軽減
(Efficiently Mitigating Transient Execution Attacks using the Unmapped Speculation Contract) www.usenix.org
Gauntlet: プログラマブルパケット処理のためのコンパイラにおけるバグ発見
(Gauntlet: Finding Bugs in Compilers for Programmable Packet Processing) www.usenix.org
本番環境のクラウドVMの中断を回避するための予測的で適応的な障害の軽減
(Predictive and Adaptive Failure Mitigation to Avert Production Cloud VM Interruptions) www.usenix.org
本番環境での失敗を防ぐためのコンテキストにおける構成変更のテスト
(Testing Configuration Changes in Context to Prevent Production Failures)
www.usenix.org
グローバルからローカルの休止へ:マルチスレッドプロセスのウェイトフリーコードパッチング
(From Global to Local Quiescence: Wait-Free Code Patching of Multi-Threaded Processes) www.usenix.org
ストレージ
Assise: 分散ファイルシステムにおけるNVMコロケーションによる性能と可用性
(Assise: Performance and Availability via NVM Colocation in a Distributed File System) www.usenix.org arXiv
CrossFS: レイヤ横断型ダイレクトアクセスファイルシステム
(CrossFS: A Cross-layered Direct-Access File System) www.usenix.org
LinnOS: 予測不可能なフラッシュストレージにおける予測可能性
(LinnOS: Predictability on Unpredictable Flash Storage) www.usenix.org
AGAMOTTO:あなたの永続メモリアプリケーションはどのくらい永続的ですか?
(AGAMOTTO: How Persistent is your Persistent Memory Application?) www.usenix.org
ストレージシステムは分散システム(従ってそれらをそのように確認すべし!)
(Storage Systems are Distributed Systems (So Verify Them That Way!))
www.usenix.org
大規模システム
クラウドプラットフォームにおける資源収穫VMに対するSLOの提供
(Providing SLOs for Resource-Harvesting VMs in Cloud Platforms) www.usenix.org
CacheLibキャッシングエンジン:大規模な設計と経験
(The CacheLib Caching Engine: Design and Experiences at Scale) www.usenix.org
Protean:大規模なVM割り当てサービス
(Protean: VM Allocation Service at Scale) www.usenix.org
Twine: 共有インフラのためのクラスタ管理システムの進化
(Twine: Evolving a Cluster Management System for Shared Infrastructure) www.usenix.org (Facebookブログ)
部分ネットワーク分断に対する汎用フォールトトレラント技術に向けて
(Toward a Generic Fault Tolerance Technique to Partial Network Partitioning) www.usenix.org
クラスタ
クラスタースケジューリング改善のためのジョブ間依存関係明確化
(Unearthing inter-job dependencies for better cluster scheduling)
www.usenix.org
Talk
ディープラーニングワークロードのための不均一性を意識したクラスタースケジューリングポリシー
(Heterogeneity-Aware Cluster Scheduling Policies for Deep Learning Workloads) www.usenix.org Microsoft Research