ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris Studio 12.3: OpenMP API ユーザーガイド Oracle Solaris Studio 12.3 Information Library (日本語) |
Oracle Solaris では、たとえば MPO (Memory Placement Optimizations、メモリー配置の最適化)、MPSS (Multiple Page Size Support、複数ページサイズのサポート) など、ハードウェアのアップグレードなしに OpenMP プログラムのパフォーマンスを向上させる機能がサポートされています。
MPO によって、OS は、アクセスするプロセッサの近くにあるページをプロセッサに割り当てることができます。SunFire E20K システムと SunFire E25K システムでは、異なる UniBoard 間ではなく同じ UniBoard 内で、メモリー待ち時間が異なります。「first-touch」というデフォルトの MPO ポリシーでは、メモリーに最初に接触するプロセッサが装着されている UniBoard 上のメモリーが割り当てられます。first-touch ポリシーは、first-touch 配置で、たいていのデータアクセスが各プロセッサにローカルのメモリーに行われるアプリケーションのパフォーマンスを大幅に改善することができます。メモリーがシステム全体に均等に分散されるランダムメモリー配置ポリシーと比較して、アプリケーションのメモリー待ち時間を短縮して帯域幅を増加することができ、その結果、パフォーマンスの向上につながります。
MPSS 機能により、プログラムは仮想メモリーの異なる領域で異なるページサイズを使用できます。Oracle Solaris のデフォルトのページサイズは比較的小さくなっています (UltraSPARC プロセッサで 8K バイト、AMD64 Opteron プロセッサで 4K バイト)。TLB ミスが多いと影響を受けるアプリケーションでは、大きいページサイズを使用するとパフォーマンスが向上することがあります。
TLB ミスは、Oracle Solaris Studio パフォーマンスアナライザを使用して測定できます。
特定のプラットフォームでのデフォルトのページサイズは、Oracle Solaris OS コマンドの /usr/bin/pagesize を使用して取得できます。このコマンドで -a オプションを指定すると、サポートされるすべてのページサイズが表示されます。詳細は、pagesize(1) のマニュアルページを参照してください。
アプリケーションのデフォルトのページサイズを変更する方法は次の 3 つです。
Oracle Solaris OS コマンドの ppgsz(1) を使用する。
-xpagesize、-xpagesize_heap、および -xpagesize_stack の各オプション付きでアプリケーションをコンパイルする。詳細は、コンパイラのマニュアルページを参照してください。
MPSS 固有の環境変数を使用する。詳細は、mpss.so.1(1) のマニュアルページを参照してください。