品川准教授のブログ

東京大学で准教授をしています。主に研究分野(OSや仮想化などのシステムソフトウェア)に関連したことを気まぐれに書きます。

国際会議 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