スケジューラの効率性とスケーラビリティの改良、FPGAのサポート

OpenStack PTG Denver 2019参加報告

Takashi Natsume
nttlabs
8 min readMay 22, 2019

--

はじめに

皆さん、こんにちは!NTTソフトウェアイノベーションセンタの夏目です。Open Infrastructure Summitに引き続き、2019年5月2日(木)~5月4日(土)にPTG(Project Teams Gathering)が開催され、筆者(夏目)も参加しました(Summitについては別の記事をご覧ください)。会場はSummitと同じく、コロラド・コンベンション・センターです。PTGとはOpenStack®の開発者が集めって開発方針や開発項目などについて議論する会議で、2017年2月にアメリカ合衆国ジョージア州アトランタで第1回目のPTGが開催されてから5回目のPTGになります。ちなみにそれ以前はOpenStack Summitと併催のDesign Summitと各プロジェクトがSummitとSummitの間に開催するMid-cycle Meetupで開発者が議論していました。

2019年10月にリリース予定のTrainリリースの開発方針や開発項目を決める今回のPTGでは、筆者(夏目)は主にNova(一部Placement)の会議に参加しました。それでは、会議や議論の内容を紹介していきたいと思います。

写真1. PTGの看板

Train向けのテーマ

Novaプロジェクトでは、いつもは各開発・作業項目に対して優先度(Priorities)を持つものが決定されますが、今回のTrainリリース向けの「テーマ」が決められました。優先度ではなくテーマとなった理由ですが、前のSteinリリースで優先度を持った開発項目があったにもかかわらず、Steinリリースで完了しなかった開発項目が幾つかありました。そのため、やや「緩い」表現としてテーマという表現が選ばれました。

テーマとして選ばれたのは以下の3つの項目です。

  1. スケジューラの効率性とスケーラビリティの改善(Placementとの連携)
    例えば、NUMAのモデリングおよびアフィニティ(affinity)やコンピュート・ドライバー(例えばlibvirt、Hyper-V)の特徴や起動イメージのタイプのトレイト(Trait)に対するフィルタの利用などです。
    NTTグループが提案している「Support filtering of allocation_candidates by forbidden aggregates」の機能もここに含まれます。
  2. Cyborgとの連携
    NovaでサポートされているvGPUと同様に、Cyborgと連携することにより、FPGAをサポートします。
  3. ドキュメントの改善
    ディレクトリ構造に沿った再編やインストール・ガイドの見直しなどを行ないます。

前回SteinリリースのためのPTGでは、ユーザが利用する(User facing)機能に重点が置かれましたが、今回は特にそのような観点からはテーマは選定されませんでした。

また、runwaysの仕組み(レビュー可能な実装パッチを機能(Blueprint)単位で待ち行列に登録して、登録順に前から3つの機能を一定期間(2週間)のうちにCore Reviewerが集中的にレビューする仕組み)はTrainサイクルでも継続となりました。

なお、残念ながら筆者(夏目)が注目している「Cross-cell resize」(セルを跨った仮想サーバの移動)の機能はテーマには含まれませんでした。しかしながら、テーマの設定はあっても、それ以外の機能の実装を進めてはいけないという訳ではありませんので、Trainリリースでの実装を期待したいと思います。

Novaプロジェクトのガバナンス

また、開発項目ではなく、Novaのガバナンスに関連してパッチの承認のルールについても議論がありました。現在Novaでは暗黙のルールとして、同じ会社に所属するCore reviewerだけでパッチを承認してマージすることをすべきではないということになっています(パッチをマージするには通常はGerritでCore reviewer 2人から+2をもらい、Workflow +1をしてもらう必要があります)。議論されたのは、このルールを廃止すべきか、また、このルールを明文化すべきかといった点でした。結論はルールは廃止すべきではないし、また明文化しないといった「現状維持」でした。また、判断に迷う場合は、他のCore reviewerなどに確認すべきという意見も出ていました。

ガバナンスの話は、以前のPTGでも時々話がでています。以前はドキュメントなどの軽微な修正を1人のCore reviewerの承認のみで済ませたいといった要望などがCore reviewerのうちの1人から出されていました。PTGではこのような開発プロセス・手続きも議題として採り上げられます。

他に注目したトピック

Novaについては非常に多くの議題が挙げられ、議論されました。全部を紹介することは記事のスペースの都合上難しいので、筆者(夏目)が気になった議題を以下に紹介します。

  1. リソース・プロバイダの共有ディスク対応(Shared resource providers for shared disk on compute hosts)
    かつて共有ディスクのためのリソース・プロバイダのサポートが追加されましたが、バグのためサポートが取り消されました。そのため現在は共有ディスクには対応しておりませんが、その対応を行なうという提案をNTTグループから行なっています。この提案については基本的に進めることについて合意されました。しかし、幾つか指摘事項があり、共有ディスクをコンピュート・ノードが認識するためのツール(設定ツール)を整備する必要があるということと(CI/CDの)テスト・ジョブとしてマルチ・ノードで共有ディスクのリソース・プロバイダをテストするテストがあるのが望ましいとの指摘がありました。
  2. QoS Bandwidthルールがあるポートを持つ仮想サーバの移動操作のサポート
    SteinリリースでAPIマイクロバージョン 2.72として、QoS Bandwidthルールがあるポート(Neutron)を持つ仮想サーバの作成がサポートされました。しかしながら、ライブ・マイグレーション等の仮想サーバの移動の操作はサポートされていません。そこで、そのサポートの実装を進めることとなりました。なお、実装に当たっては新しいAPIマイクロバージョンの追加は必要なしという結論になりました。
  3. OpenStack SDKの利用への移行
    現在Novaでは、他のコンポーネント(例えばcinder)を呼び出すのに、そのコンポーネントのクライアント(例えばpython-cinderclient)を利用しています。それをOpenStack SDKに置き換える提案です。これはnova CLIを廃止してOpenStack CLIに移行する動きと関連があります。この提案については進めることが合意されました。
  4. 非推奨(deprecated)となった機能等のコードの削除
    既に非推奨(deprecated)となっているCells V1とnova-networkについてコードの削除を行うこと(Cells V1については削除作業の継続)が合意されました。
    また、筆者(夏目)が取り組んでいる「Remove mox」(Python3ではサポートされていない古いテスト用ライブラリであるmoxをmockに置き換える作業)も継続することが合意されました。
  5. CIジョブの追加
    現在のCIジョブ(テストジョブ)には動いていないジョブや正常に動かないジョブがあります。それら(Xen server、libvirt lxc)を廃止することが合意されました。また、今後追加すべきCIジョブ(DPDK、GPUなどの特定のハードウェアを持つ構成等)について議論が行われました。

昼食会場の様子

余談ですが、PTGには多くの開発者が集まりました。下の写真(写真2)は昼食時の昼食会場の写真です。

写真2. 昼食会場の様子(PTG 1日目)

昼食時には比較的新しいプロジェクト(rust-vmmzuulKata-containerなど)のプレゼンも行なわれていました(写真3)。

写真3. rust-vmmに関するプレゼンテーション

さて、今回は主にNovaプロジェクトとNovaとPlacementの連携にフォーカスして会議や議論の内容や様子をお伝えしました。しかし、他の多くのプロジェクトやSIG(Special Interest Group)も会議を行なっていました。皆さんも興味のあるプロジェクトやSIGの会議に参加して、議論を聞いたり、議論に参加すると面白いかもしれません。なお、次回のSummitとPTGは2019年11月4日の週に中華人民共和国の上海で開催されます。それでは、上海でまたお会いしましょう!

※ 写真はプライバシーに配慮して一部加工してあります。

--

--