クラウドワークロードのためのサーバーパフォーマンス最適化
クラウドサービスのサーバー効率を改善することに集中しよう。
― 1 分で読む
目次
クラウドサービスは今や多くのビジネスにとって必須で、何十億ものユーザーに世界中でサービスを提供するために広大なサーバーネットワークを運用してるんだ。でも、これらのクラウドサービスは、サーバーのパフォーマンスをテストやベンチマークするために使われる従来のサーバーアプリケーションとはかなり違った動きをする。この違いが、クラウドワークロードのニーズに完全には応えられない効率的でないサーバー設計につながってる。
クラウドサービスがサーバープロセッサー市場の主要部分になるにつれて、特定のワークロードがどのように動作するかに焦点を当てることでサーバーの性能を向上させることへの関心が高まっている。クラウドワークロードの挙動を理解することで、より良いサーバーハードウェアの設計が可能になり、効率の向上や運用コストの削減につながる。
クラウドワークロードの遅延の原因は?
クラウドワークロードは、主に3つの理由からさまざまな遅延を経験することがある:
- コードフェッチ遅延:サーバーが処理のための命令を取得しようとするけど、すぐにはできないときに起こる遅延。
- メモリ帯域幅の問題:データのリクエストがサーバーの処理能力を超えたときに発生する問題。
- メモリ待機時間の問題:待機時間はメモリに格納されたデータにアクセスするのにかかる時間を指す。待機時間が長いと、サーバーは必要な情報を得るのに長く待たなきゃいけない。
これらの課題に対処するために、クラウドワークロードとサーバーメモリシステムの相互作用を分析・改善する新しいプロファイリングツールが開発されている。このツールは遅延がどこで起こるかを特定し、克服する方法を提案するのに役立つ。
共有コードとメモリシステム
クラウドワークロードの分析からの面白い発見の一つは、多くのワークロードが異なるサーバーコアで同じコードを実行する傾向があることだ。この類似性は、コア間で特定のコンポーネントを共有することでサーバーハードウェアを最適化するユニークな機会を提供する。例えば、コードのための共有キャッシュがあれば、コードフェッチによる遅延を大幅に減らすことができる。複数のコアが同じ大きなプールのキャッシュコードを利用できるからね。
さらに、研究によると、メモリ使用量の大部分はほんの少数のメモリページによって占められている。この観察を利用して、高速メモリと大容量ストレージを組み合わせた新しいメモリシステムを作ることができる。
メモリ帯域幅の改善
クラウドサービスが成長する中で、従来のメモリシステムでは増加するメモリ帯域幅の需要に対応できないことが明らかになってきた。今のサーバープロセッサーは帯域幅が限られていて、クラウドプロバイダーはメモリチャネルを増やす必要があるけど、これがコストを押し上げることになる。
クラウドワークロードのメモリ帯域幅ニーズを分析した結果、ほんのわずかなメモリページが大部分のメモリ帯域幅を占めていることがわかった。この洞察により、新しい階層型メモリシステムの開発が可能になる。このシステムでは、1つの高帯域幅メモリ階層が迅速なデータアクセスの即時ニーズに対応し、より大きく遅いメモリ階層が追加のストレージ容量を提供する。
メモリ待機時間への対処
メモリ待機時間もクラウドワークロードにとって重要な問題だ。多くのクラウドアプリケーションは厳格なパフォーマンス要件を持っているから、高いメモリ待機時間はサーバーコアをアイドル状態にして貴重な計算リソースを無駄にしちゃう。
この問題を軽減しようと、サーバープロセッサーは通常ハードウェアプリフェッチャーを使用して、どのデータがすぐに必要になるかを予測し、あらかじめ取得するように設計されている。しかし、既存のプリフェッチャーの多くはクラウドワークロードには効果的に機能しないため、メモリ帯域幅の使用が高くてもパフォーマンスの向上にはつながらない。
新しいツールが実際の生産環境でのメモリアクセスを追跡するために開発されている。このツールは低いオーバーヘッドで動作し、クラウドワークロードの挙動をより正確にモデル化できるようになっている。このデータを利用して、リアルな条件でのパフォーマンス向上のためにプリフェッチャーの設計を改善できる。
メモリプロファイリングツール
クラウドワークロードのパフォーマンスを理解し改善するために、新しいプロファイリングツールが作られた。このツールはワークロードがメモリシステムとどのように相互作用するかを測定する。コードフェッチ、メモリ帯域幅の使用、メモリ待機時間の処理についての洞察を提供する。
このプロファイリングツールを使うことで、プログラマーやハードウェアデザイナーは問題がどこで発生しているかをより明確に把握できる。どのコンポーネントが遅延の原因になっているかを特定し、改善を優先することができる。
クラウドワークロードにおけるコードの挙動
クラウドワークロードの挙動を研究していると、時間の経過に伴ってコードのフットプリントが大きくなることがわかった。多くのクラウドアプリケーションは今やより大きなコードサイズを持っていて、命令キャッシュミスが増えている。つまり、CPUコアが命令を取得しようとすると、その命令がキャッシュにすぐには存在しないことが多くなり、遅延が発生するってわけ。
このコードフェッチの問題を軽減するために、研究は異なるコア間でのコードアクセスの挙動を最適化することを提案している。キャッシュ構造を共有することで、複数のコアがリソースをプールでき、全体的なパフォーマンスが向上する。
メモリ帯域幅の特性
クラウドワークロードを調べると、メモリ帯域幅の利用が非常に異なることがわかる。ほとんどのワークロードは利用可能なメモリ帯域幅をすべて使っておらず、ほんの数ページが帯域幅の大部分を使用している。この不均一な分布は、高帯域幅のニーズとより大きな容量要件をバランスよく調整する階層型メモリシステムを作る可能性を示唆している。
この挙動に焦点を当てることで、クラウドサービスはよりスマートなメモリ管理戦略を実装できる。これにより、コストを抑えながらもパフォーマンスが向上し、クラウドアプリケーションの要求に応えられるようになる。
サーバー構成の評価
クラウドワークロードのためにサーバーを設計するときは、さまざまな構成のパフォーマンスがどれだけ良いかを評価することが重要だ。理想的なセットアップは、メモリの速度やさまざまなメモリ階層の容量、処理に使うハードウェアなどの要因を考慮する必要がある。
いくつかの構成をテストして、従来のメモリセットアップと高帯域幅メモリと大きな低速メモリを含む階層型アーキテクチャを比較できる。これらの構成は異なるレベルのパフォーマンスを提供し、最もコスト効率の良いソリューションを特定するのに役立つ。
結論
クラウドコンピューティングが拡大し続ける中で、クラウドワークロードの特性を理解することはサーバーのパフォーマンスを最適化するために重要だ。共有コードアクセス、メモリ帯域幅の使用、メモリ待機時間の管理に焦点を当てることで、サーバーがクラウドサービスを扱う方法において大きな改善が見込める。
メモリ条件をプロファイリングし分析するための新しいツールがこの取り組みに重要な役割を果たす。ワークロードの挙動に関する洞察を提供することで、ハードウェアやソフトウェアの設計をより良くし、このダイナミックな環境のニーズに応えることができる。最終的には、サービスプロバイダーとユーザーの両方に利益をもたらすことになるだろう。
継続的な研究と改善への取り組みを通じて、クラウドワークロードの未来は明るく、ますます増え続けるユーザーベースに効果的に対応できることが期待される。
タイトル: Workload Behavior Driven Memory Subsystem Design for Hyperscale
概要: Hyperscalars run services across a large fleet of servers, serving billions of users worldwide. These services, however, behave differently than commonly available benchmark suites, resulting in server architectures that are not optimized for cloud workloads. With datacenters becoming a primary server processor market, optimizing server processors for cloud workloads by better understanding their behavior has become crucial. To address this, in this paper, we present MemProf, a memory profiler that profiles the three major reasons for stalls in cloud workloads: code-fetch, memory bandwidth, and memory latency. We use MemProf to understand the behavior of cloud workloads and propose and evaluate micro-architectural and memory system design improvements that help cloud workloads' performance. MemProf's code analysis shows that cloud workloads execute the same code across CPU cores. Using this, we propose shared micro-architectural structures--a shared L2 I-TLB and a shared L2 cache. Next, to help with memory bandwidth stalls, using workloads' memory bandwidth distribution, we find that only a few pages contribute to most of the system bandwidth. We use this finding to evaluate a new high-bandwidth, small-capacity memory tier and show that it performs 1.46x better than the current baseline configuration. Finally, we look into ways to improve memory latency for cloud workloads. Profiling using MemProf reveals that L2 hardware prefetchers, a common solution to reduce memory latency, have very low coverage and consume a significant amount of memory bandwidth. To help improve hardware prefetcher performance, we built a memory tracing tool to collect and validate production memory access traces.
著者: Suyash Mahar, Hao Wang, Wei Shu, Abhishek Dhanotia
最終更新: 2023-05-02 00:00:00
言語: English
ソースURL: https://arxiv.org/abs/2303.08396
ソースPDF: https://arxiv.org/pdf/2303.08396
ライセンス: https://creativecommons.org/licenses/by/4.0/
変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。
オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。