次世代メモリーへの準備

インテル® VTune™ プロファイラー

この記事は、インテル® デベロッパー・ゾーンに掲載されている「Prepare for the Next Generation of Memory」(https://software.intel.com/en-us/articles/prepare-for-the-next-generation-of-memory) の日本語参考訳です。


インテル® Optane™ DC パーシステント・メモリー向けにアプリケーションを最適化

アプリケーション開発における DRAM メモリーへの要求は高まり続けています。多くのソフトウェアのパフォーマンスは、利用可能なシステムメモリーの容量に直接制限されることはよく知られています。プラットフォームは、この需要を満たす代替のソリューションを持っておらず、ますます高価なメモリーを追加してきました。ハイブリッド・メモリー・システムは特に新しいコンセプトでありませんが、テクノロジーの進化により実現の可能性は急速に高まっています。ハイブリッド・メモリー・システムは通常、CPU とディスク間にある複数レベルの異種システムメモリーで構成されます。インテル® Optane™ DC パーシステント・メモリーは、SSD やハードディスクよりも高速な、新しいタイプの不揮発性メモリー/ストレージです。DRAM に近い高速レイテンシーを持ち、より大容量です (モジュールごとに最大 512 GB)。そして、メモリー階層の 2 つのレベル間に位置します。また、従来の DRAM とは異なり永続性を保つ機能も提供されます。

インテル® Optane™ DC パーシステント・メモリーのリリースにより、ハイブリッドシステムが利用できるようになるため、開発者はこれらのプラットフォームで最高のパフォーマンスを達成するためのガイドとツールを持つ必要があります。

Visualization of memory hierarchy

図 1 – 新たなメモリー階層

この記事では、インテル® VTune™ Amplifier を使用して、アプリケーションが入手しやすい価格で大容量の不揮発性メモリーであるインテル® Optane™ DC パーシステント・メモリーの使用に適しているか判断する方法を説明していきます。また、従うべき最適化ガイドラインも紹介します。インテル® VTune™ Amplifier の導入は容易であり、ボタンを数回クリックするか、1 行のコマンドラインを実行するだけで済みます。詳しくは、図 2 またはインテル® VTune™ プロファイラー導入ガイドを参照してください。

Setup Steps for VTune Amplifier

図 2 – 導入の手順

1. アプリケーションのメモリー使用量を確認する

インテル® VTune™ Amplifier のメモリー消費解析を実行します。この解析は、アプリケーションのすべてのメモリー割り当てを追跡します。レポートには、時間経過におけるメモリー消費量が示され、そこからピークのメモリー使用量を特定できます (図 3)。タイムラインの Y 軸の最大値は、ピークメモリー使用量を示します。図 3 では、ピークは 1GB 近辺です。

Memory Consumption Report

図 3 – メモリー消費レポート

インテル® Optane™ DC パーシステント・メモリーからパフォーマンス上の恩恵を得るには、アプリケーションは物理メモリーから利点を得られるようにする必要があります。メモリー使用量は、システムで使用可能な DRAM 容量に近い (90% 以内) かそれ以上であるべきです。物理メモリーは有限のリソースであるため、オペレーティング・システムや他のプロセスもメモリーを消費することを忘れてはいけません。アプリケーションのメモリー使用量と他のメモリー消費量の合計が DRAM 容量に近い場合、アプリケーションはすべてのデータを DRAM に格納できない可能性があるため、インテル® Optane™ DC パーシステント・メモリーを活用できます。

もう 1 つの検出の可能性が低いアプリケーションの特性は、利用可能であれば、さらに多くのメモリーを使用するようにアプリケーションがスケールできるか、または修正できるかどうかです。アプリケーションが DRAM 容量によって制限されていることが判明しているなら、その時点でプラットフォームのメモリー搭載量に収まっていても、次のことを調査してください。

2. アプリケーションのワーキングセットを確認する

メモリー使用量は、アプリケーションのメモリー消費量を示しますが、メモリーの利用頻度や未使用であることを示すものではありません。インテル® Optane™ DC パーシステント・メモリー向けの最適化を行うには、ワーキングセット、つまりアプリケーションによって頻繁にアクセスされるオブジェクトを特定することが重要です。

インテル® VTune™ Amplifier のメモリーアクセス解析を [動的メモリー・オブジェクトを解析] オプションを選択して実行します。GUI の [ボトムアップ] ビューには、アプリケーションによって割り当てられたメモリー・オブジェクトとサイズ、およびそれぞれにアクセスしたロードとストア数を示すグリッドが表示されます (図 4)。最も頻繁にアクセスされている (ロードとストア) オブジェクトを特定します。これらオブジェクトのサイズ (範囲内の値) を合計します。合計されたオブジェクトのサイズがワーキングセットのサイズです。どこまでをワーキングセットに含めるかは開発者次第です。

Memory Access Analysis Report

図 4 – 動的メモリー・オブジェクト解析とメモリーアクセス解析レポート

3a. システムに最適なメモリー設定を特定する

ワーキングセットのサイズが判明したら、コストとパフォーマンスの観点から、DRAM とインテル® Optane™ DC パーシステント・メモリーに最適なメモリーシステムを構成できます。DRAM はワーキングセット (ロードとストアによるホットなオブジェクト) を適切にキャッシュできる十分な容量にし、大容量のインテル® Optane™ DC パーシステント・メモリーにはアプリケーションが使用するメモリー容量を完全に包括します。

アプリケーションの設定が決定したら、インテル® Optane™ DC パーシステント・メモリーを Memory モードで試すことができます。これには、ソフトウェアの変更は必要ありません。アプリケーションは、アドレス可能なシステムメモリーとして自動的にインテル® Optane™ DC パーシステント・メモリーを参照できます。ワーキングセットは定期的に DRAM へキャッシュされ、残りのデータはディスクではなくインテル® Optane™ DC パーシステント・メモリーに格納されます。

3b. アプリケーションを既知のメモリー構成向けに最適化する

Memory モードに加え、インテル® Optane™ DC パーシステント・メモリーは App Direct モードにも設定できます。これにより、ユーザーはどのオブジェクトを DRAM に割り当て、どのオブジェクトをインテル® Optane™ DC パーシステント・メモリーに割り当てるか明示的に定義できます。誤った割り当てを行うと、アプリケーションのパフォーマンスが低下する可能性があるため、十分に考慮して選択する必要があります。この割り当ては通常、特定の API、例えばパーシステント・メモリー開発キット (PMDK) (英語) と memkind ライブラリー (英語) で提供される API を介して処理されます。

ラストレベル・キャッシュ (LLC) のミスが最も多いオブジェクトを特定します。これらのうち、どれくらいが DRAM に収まるかを概算してそれらを割り当てます。これにより、長いレイテンシーのインテル® Optane™ DC パーシステント・メモリーと比較して、レイテンシーが短くなります。LLC ミスが少ない、または DRAM に格納するには大きすぎる残りのオブジェクトについては、割り当て API を使用してインテル® Optane™ DC パーシステント・メモリーに格納します。これらのステップにより、最も頻繁にアクセスされるオブジェクトが CPU への最速パス (DRAM に割り当てられる) を維持し、アクセス頻度の低いオブジェクトは、低速なディスク上に配置する代わりにインテル® Optane™ DC パーシステント・メモリーを利用するようにします。

最適化のそのほかの考慮事項は、オブジェクトへのロード/ストア比率を知ることです。インテル® Optane™ DC パーシステント・メモリーのロードは、通常ストアよりも高速です。高いロード/ストア比率 (ロードが多いオブジェクト) を特定し、それらをパーシステント・メモリーに割り当てます。ストアが多いオブジェクトは DRAM に配置します。

ホット/ウォーム/コールド・オブジェクトを構成する要素に厳密な決まりはなく、動作はアプリケーションに依存します。このガイドラインは、パーシステント・メモリーにオブジェクトを割り当てる方法を選択する出発点となります。このステップが終了したら、パーシステント・メモリーを使用してパフォーマンスをさらに高めるため、アプリケーションのプロファイルとチューニングを始めます。

追加トピック: プラットフォーム・プロファイラーを使用してプラットフォーム・レベルのボトルネックを特定する

これで、インテル® VTune™ Amplifier を使用してインテル® Optane™ DC パーシステント・メモリー向けにアプリケーションを解析する方法が分かりました。さらにシステム全体を解析したり、プラットフォームで実行される一連のワークロードの概要を知ることもできます。インテル® VTune™ Amplifier の新しいプラットフォーム・プロファイラーは、これを実現するように設計されており、計算、メモリー、およびディスク・パフォーマンスに関連する情報も提供します。

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

タイトルとURLをコピーしました