Googleの研究者たちはハイパースケールで、ミリ秒とナノ秒の間、マイクロ秒への最適化を考えている「The Next Platform」で読むグローバルITトレンド(3)

長年の間、IT業界はハイパフォーマンスコンピューティング(HPC)環境のさまざまニーズに対応できていた。しかし、ハイパースケールデータセンター環境で稼働するウェアハウス(倉庫)サイズのコンピュータの台頭に伴い、この状況は変わろうとしている。

» 2017年06月23日 05時00分 公開
[Jeffrey Burt, The Next Platform]

英国のIT専門媒体、「The Register」とも提携し、エンタープライズITのグローバルトレンドを先取りしている「The Next Platform」から、@IT編集部が独自の視点で“読むべき記事”をピックアップ。プラットフォーム3へのシフトが急速に進む今、IT担当者は何を見据え、何を考えるべきか、バリエーション豊かな記事を通じて、目指すべきゴールを考えるための指標を提供していきます。

 IT業界は、ミリ秒やナノ秒のスケールでスムーズに動作するコンピュータシステムの開発はお手の物だ。

 チップメーカーが開発したさまざまな技術が、ナノ秒レベルのデバイス開発を後押ししてきた。一方、主にソフトウェアベースのソリューションが、より低速なミリ秒レベルのデバイス向けに投入されてきた。長年の間、このようにして業界はハイパフォーマンスコンピューティング(HPC)環境のさまざまニーズに十分対応できていた。だが、HPC環境ではパフォーマンスが重要な指標と考えられ、コードのシンプルさやプログラマーの生産性レベルといった問題にはあまり関心が払われてこなかった。そのため、マイクロ秒レベルのプログラミングは、コンピューティング業界では優先順位が高くなかった。

 しかし、ハイパースケールデータセンター環境で稼働するウェアハウス(倉庫)サイズのコンピュータの台頭に伴い、この状況は変わろうとしている。GoogleやAmazonなどが運用しているようなハイパースケールデータセンター環境ではワークロードが絶えず変化することから、コードのシンプルさやプログラマーの生産性が重視される他、性能に関わるコストやマイクロ秒レベルで最適に動作する低レイテンシの新しいI/Oデバイスの開発が非常に重要になっている。

[参考]

単位 長さ
ミリ秒(ms) 1000分の1秒
マイクロ秒(μs) 100万分の1秒
ナノ秒(ns) 10億分の1秒

 ベンダーはこうした動向を背景に、マイクロ秒レベルのコンピューティングを活用し、現代のデータセンターで増大しつつある非効率を減らすべく、ソフトウェアスタックとハードウェアインフラの開発を始めなければならなくなっていると、Googleの研究者グループ(カリフォルニア大学バークレー校の名誉教授を含む)は考えている。

 研究者グループは、『Communications of the ACM』誌の2017年4月号に掲載された論文の中で、次のように論じている。「『軽率に』、ナノ秒レベルやミリ秒レベルにばかり取り組んできたことが、ウェアハウススケールコンピュータのプログラミングにおいて急速に深刻な問題になろうとしている。一方、ウェアハウススケールのコンピュータにおける、データセンターネットワーキングから新型メモリに至るまでの新タイプの低レイテンシI/Oデバイスにとっても、マイクロ秒スケールのイベントの効率的な処理が何よりも重要になってきた」

 「ナノ秒やミリ秒のタイムスケールに最適化された技術は、マイクロ秒の枠においてはうまくスケーリングしない。例えば、スーパースカラーのアウトオブオーダー実行、分岐予測、プリフェッチング、同時マルチスレッディングなど、ナノ秒のタイムスケール向きの技術はマイクロ秒の枠の中ではスケーリングがうまくいかない。システム設計者が長いレイテンシを隠すのに十分な形で、命令レベルの並列処理やハードウェアで管理されるスレッドコンテキストを利用できないからだ」と研究者グループは記している。

 「同様に、ミリ秒スケールのレイテンシを許容するためのソフトウェア技術(ソフトウェアで制御されたコンテキストスイッチなど)も、マイクロ秒レベルへの移行には難がある。これらの技術自体のオーバーヘッドが、I/Oデバイスそのもののレイテンシと同じかそれ以上になることが多いからだ。ハードウェアが高速でも、ミリ秒スケールのデバイス用に設計されたソフトウェアによってパフォーマンスは簡単に台なしになる」(研究者グループ)

 従来、こうしたことはあまり問題ではなかったと研究者グループは指摘する。HPCを利用する組織はこれまで、低遅延ネットワークを支障なく使ってきた。これらの組織のワークロードが変化する頻度は、ハイエンドのWebスケール環境のワークロードよりもはるかに少なく、プログラマーはそれほどコードに手を加える必要がない。また、HPC分野におけるデータ構造はより静的で、それほど複雑ではない場合が多い。こうしたことから、高速ネットワークが快適に利用されてきた。さらに、HPC分野ではパフォーマンスが最も重視されるが、GoogleやAmazonのような企業にとっては、コストやリソース使用率の方が大きな意味を持つ。

 「これらのことから、HPCを利用する組織では、例えばMPI(Message Passing Interface)スタイルのランデブーメッセージを受け取るためにブロックを行う場合などには、プロセッサの使用率が非常に低いままになることがある。これに対し、ウェアハウススケールのコンピューティングシステムでは、使用率を高めながら低レイテンシを目的とした最適化を行う必要性が非常に重視されている」と研究者グループは記している。

HPCとウェアハウススケールコンピューティングのニーズの違い

ハードウェアではナノ秒、ソフトウェアではミリ秒という目標の違い

 これまでのハードウェアおよびソフトウェア開発は、イベントのレイテンシをナノ秒やミリ秒レベルで最小化することを目指していた。ナノ秒スケールでは、プロセッサ内の深いメモリ階層などの機能が開発されてきた。この深いメモリ階層は、メモリに対するシンプルな同期プログラミングインタフェースとともに提供されており、さまざまなマイクロアーキテクチャ技術でサポートされている。その中にはプリフェッチング、アウトオブオーダー実行、分岐予測などが含まれる。

 ミリ秒レベルでは、主にソフトウェアのイノベーションが行われてきた。例えば、研究者グループはOSのコンテキストスイッチを挙げている。これは、ディスクへのシステムコールが行われるとOSがI/O操作を作動させる一方、ソフトウェアコンテキストを別のスレッドにスイッチし、ディスク操作中にCPUを使用するというものだ。

 「元のスレッドの実行はI/Oの完了後、いずれかの時点で再開される。ディスクアクセスに伴う長いオーバーヘッド(ミリ秒)のコストは、2回のコンテキストスイッチ(マイクロ秒)をはるかに上回る。ミリ秒スケールのデバイスは低速であるため、ソフトウェアベースのメカニズムのコストは吸収される」(研究者グループ)

 ナノ秒やミリ秒スケールのデバイスを扱うに当たって、Googleのエンジニアは非同期モデルよりも同期モデルを好んでいる。同期コードの方がシンプルで作成やデバッグがしやすく、大規模な環境で良好に機能する。組織は一貫したAPIとイディオムを利用して、一般的にC、C++、Go、Javaなど、複数の言語で作成されたアプリケーションを利用できる。これらのアプリケーションは通常、多くのプログラマーの手が加わっており、新リリースが毎週提供される。これらのことは、同期コーディングを行う場合の方がプログラマーの生産性が高いことを意味する。

マイクロ秒レベルのデバイスが登場しつつある

 現在、ハイパースケール環境のニーズに合ったマイクロ秒レベルの技術が業界で使われるようになりつつある。ナノ秒やミリ秒のタイムスケールではうまく動作しない、新しい低レイテンシのI/Oデバイスが登場している。高速のデータセンターネットワークはレイテンシがマイクロ秒レベルとなる傾向があり、一方で、フラッシュデバイスのレイテンシは数十マイクロ秒となることがある。

 研究者グループは、Intelの「3D Xpoint」メモリやMonetaの変更ベースメモリシステム、インメモリシステムなどの新しい不揮発性メモリ技術もレイテンシがマイクロ秒台の前半になるだろうと指摘している。GPUなどのアクセラレータを使う場合のレイテンシもマイクロ秒レベルだという。

 ムーアの法則の減速やデナードスケーリングの終焉(しゅうえん)も、低レイテンシのストレージや通信技術を使用する必要性に拍車を掛けていると、研究者グループは指摘している。クラウドプロバイダーはムーアの法則やデナードスケーリングの変化に対処するため、顧客が行うクエリを処理するコンピュータを増やしており、この傾向はさらに進む見通しだ。ナノ秒やミリ秒スケールの技術はレイテンシがマイクロ秒レベルの環境ではスケーリングがうまくいかず、データセンターネットワーキングとプロセッサの双方において非効率を招く恐れがある。

 「コンピュータエンジニアがなすべきことは、マイクロ秒スケールに最適化されたソフトウェアとハードウェアを開発することだ」と、研究者グループは記している。“マイクロ秒を意識した”ソフトウェアスタックと、マイクロ秒レベルのコンピューティング用に設計された低レベルの最適化が必要だという。この最適化には、ロックの競合と同期の削減、スピンポーリング時の効率的なリソース利用、ジョブスケジューリングが含まれる。

 ハードウェアについては、「多数のスレッド(プロセッサ当たり数十〜数百。ただし、適切な数はまだ不明)間で、コンテキストスイッチを極めて低いレイテンシ(数十ナノ秒)で実現する新しいアイデアが必要だ……。システム設計者は、同期ブロックメカニズムとスレッドレベルの並列処理をマイクロ秒のタイムスケールで活用できるように、新しいハードウェア最適化を実現する必要もある」と、研究者グループは述べている。

 また、I/Oとの通信のオーケストレーションからキュー管理、タスクスケジューリングまでに関わるハードウェア機能、そしてマイクロ秒レベルのオーバーヘッドを追跡する新しい仕組みも必要となっている。さらに、マイクロ秒スケールのデバイスがプロセッサパイプラインをビジーに保たなくていい技術も必要だと、研究者グループは記している。「1つの有望なソリューションは、プロセッサがマイクロ秒スケールでアクセスを処理していない間は、電力消費を停止しアクセスがブロックされない他のコアにその電力をシフトできるようにすることだ」

 ハイパースケールデータセンターからの需要が拡大していることから、コンピュータエンジニアはマイクロ秒スケールのI/Oをサポートするシステムの設計に取り掛かる必要があると、研究者グループは記している。「今日のハードウェアとシステムソフトウェアでは不十分なプラットフォームしか構築できない。特に、同期プログラミングモデルのサポートがソフトウェア生産性にとって重要と考えられていることが大きな理由だ」

 さらに研究者グループはこう付け加えている。「マイクロ秒スケールに最適化された斬新なシステムスタックが必要とされている。マイクロ秒スケールに最適化された設計と、対応する高速なI/Oは、低レイテンシ通信を利用する新しいアプリケーションとプログラミングモデルの好循環をもたらし、ウェアハウススケールコンピュータの実質的なコンピューティング機能を大幅に向上させる」

出典:Google Researchers Measure the Future in Microseconds(The Next Platform)

筆者  Jeffrey Burt

Microsoft, Stanford Researchers Tweak Cloud Economics Framework


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。