(57)【要約】【課題】アプリケーションプログラムの性能のボトルネックが、メモリやチップセットであるか否かを迅速に判定する。【解決手段】ＣＰＵとメモリ及びＩ／Ｏインターフェースを接続するコントローラとを備えた計算機システムにおいて、前記コントローラ６は、メモリに対するアクセス要求を受け付けると、当該メモリアクセス要求に対する応答時間を測定する応答時間測定部（ＳＵＢ１２０）と、メモリアクセス要求の発行回数を測定する度数カウント部（インクリメンタ１２２）と、応答時間に対応する前記発行回数とを関連づけた測定結果を格納する測定結果記憶部（レジスタファイル１１８）と、測定結果の読み出し要求があったときには、前記測定結果記憶部に格納された測定結果を出力する測定結果制御部パフォーマンスモニタ制御ユニット１０５と、を備える。【選択図】図２
2008071237.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのＣＰＵと、前記ＣＰＵとメモリ及びＩ／Ｏインターフェースを接続するコントローラとを備えた計算機システムにおいて、
前記コントローラは、
前記メモリに対するアクセス要求を受け付けると、当該メモリアクセス要求に対する応答時間を測定する応答時間測定部と、
前記メモリアクセス要求の発行回数を測定する度数カウント部と、
前記応答時間に対応する前記発行回数とを関連づけた測定結果を格納する測定結果記憶部と、
前記測定結果の読み出し要求があったときには、前記測定結果記憶部に格納された測定結果を出力する測定結果制御部と、
を備えたことを特徴とする計算機システム。
【請求項２】
前記メモリアクセス要求は、前記ＣＰＵが発行したメモリアクセス要求であることを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記Ｉ／Ｏインターフェースは、前記メモリに対してアクセスを行うＤＭＡ制御部を含み、
前記メモリアクセス要求は、前記Ｉ／Ｏインターフェースが発行したメモリアクセス要求であることを特徴とする請求項１に記載の計算機システム。
【請求項４】
前記測定結果制御部は、測定結果の読み出し要求を送信する管理端末に接続され、前記読み出し要求を受け付けたときには、前記管理端末へ前記測定結果を送信することを特徴とする請求項１に記載の計算機システム。
【請求項５】
前記応答時間測定部は、
前記応答時間の測定範囲を設定する測定範囲設定部と、
前記測定する応答時間の間隔を設定する測定間隔設定部と、
を備えたことを特徴とする請求項１に記載の計算機システム。
【請求項６】
前記管理端末は、
前記測定結果制御部から取得した測定結果に基づいて、前記メモリアクセス要求の応答時間と、当該応答時間に対応するメモリアクセス要求の発行回数から、メモリアクセスの特性を推定することを特徴とする請求項４に記載の計算機システム。
【請求項７】
前記計算機システムは、
少なくとも１つのＣＰＵと、前記ＣＰＵとメモリ及びＩ／Ｏインターフェースを接続するコントローラとを含むノードを複数備え、前記複数のノードを相互に接続する通信部を有することを特徴とする請求項１に記載の計算機システム。
【請求項８】
前記計算機システムは、前記複数のノードのうち、予め設定した複数のノードを組み合わせて一つの処理を実行する物理分割部を備えたことを特徴とする請求項６に記載の計算機システム。
【請求項９】
少なくとも１つのＣＰＵと、前記ＣＰＵとメモリ及びＩ／Ｏインターフェースを接続するコントローラとを備えた計算機と、
前記計算機に接続された管理端末と、を備えた計算機の性能評価システムにおいて、
前記コントローラは、
前記メモリに対するアクセス要求を受け付けると、当該メモリアクセス要求に対する応答時間を測定する応答時間測定部と、
前記メモリアクセス要求の発行回数を測定する度数カウント部と、
前記応答時間に対応する前記発行回数とを関連づけた測定結果を格納する測定結果記憶部と、
前記管理端末から測定結果の読み出し要求があったときには、前記測定結果記憶部に格納された測定結果を前記管理端末へ出力する測定結果制御部と、を備え、
前記管理端末は、
前記測定結果制御部から取得した測定結果から、前記メモリアクセス要求の応答時間と、当該応答時間に対応するメモリアクセス要求の発行回数から、メモリアクセスの特性を推定する性能推定部を備えたことを特徴とする計算機の性能評価システム。
【請求項１０】
前記メモリアクセス要求は、前記ＣＰＵが発行したメモリアクセス要求であることを特徴とする請求項９に記載の計算機の性能評価システム。
【請求項１１】
前記Ｉ／Ｏインターフェースは、前記メモリに対してアクセスを行うＤＭＡ制御部を含み、
前記メモリアクセス要求は、前記Ｉ／Ｏインターフェースが発行したメモリアクセス要求であることを特徴とする請求項９に記載の計算機の性能評価システム。
【請求項１２】
前記応答時間測定部は、
前記応答時間の測定範囲を設定する測定範囲設定部と、
前記測定する応答時間の間隔を設定する測定間隔設定部と、
を備え、
前記管理端末は、
前記測定範囲設定部に応答時間の測定範囲を送信し、前記測定間隔設定部に応答時間の測定間隔を送信する測定条件設定部を有することを特徴とする請求項９に記載の計算機の性能評価システム。
【請求項１３】
前記性能推定部は、
前記測定結果制御部から取得した測定結果から、前記メモリアクセス要求の応答時間と、当該応答時間に対応するメモリアクセス要求の発行回数から、メモリアクセス要求を行ったメモリの物理的な位置を推定することを特徴とする請求項９に記載の計算機の性能評価システム。
【請求項１４】
前記計算機は、
少なくとも１つのＣＰＵと、前記ＣＰＵとメモリ及びＩ／Ｏインターフェースを接続するコントローラとを含むノードを複数備え、前記複数のノードを相互に接続する通信部と、前記複数のノードのうち、予め設定した複数のノードを組み合わせて一つの処理を実行する物理分割部と、を備え、
前記管理端末は、
前記性能推定部が推定したメモリアクセスの特性に基づいて、前記応答時間を短縮可能な前記計算機のノードの構成を出力する構成支援部を備えたことを特徴とする請求項９に記載の計算機の性能評価システム。
【請求項１５】
少なくとも１つのＣＰＵと、前記ＣＰＵとメモリ及びＩ／Ｏインターフェースを接続するコントローラとを備えた計算機と、前記計算機に接続された管理端末で計算機の性能を評価する方法であって、
前記計算機でアプリケーションを実行させるステップと、
前記コントローラがメモリに対するアクセス要求を受け付けると、当該メモリアクセス要求に対する応答時間を測定するステップと、
前記コントローラがメモリアクセス要求の発行回数を測定するステップと、
前記応答時間に対応する前記発行回数とを関連づけた測定結果を格納するステップと、
前記アプリケーションの実行終了後に前記管理端末から測定結果の読み出し要求があったときには、前記格納された測定結果を前記管理端末へ送信するステップと、
前記管理端末は、コントローラから取得した測定結果から、前記メモリアクセス要求の応答時間と、当該応答時間に対応するメモリアクセス要求の発行回数から、前記アプリケーションのメモリアクセスの特性を推定するステップと、
を含むことを特徴とする計算機の性能評価方法。
【請求項１６】
前記メモリアクセスの特性を推定するステップは、
前記取得した測定結果から、前記メモリアクセス要求の応答時間と、当該応答時間に対応するメモリアクセス要求の発行回数から、メモリアクセス要求を行ったメモリの物理的な位置を推定することを特徴とする請求項１５に記載の計算機の性能評価方法。
【請求項１７】
前記計算機は、
少なくとも１つのＣＰＵと、前記ＣＰＵとメモリ及びＩ／Ｏインターフェースを接続するコントローラとを含むノードを複数備え、前記複数のノードを相互に接続する通信部と、前記複数のノードのうち、予め設定した複数のノードを組み合わせて一つの処理を実行する物理分割部と、を備え、
前記性能推定部が推定したメモリアクセスの特性に基づいて、前記応答時間を短縮可能な前記計算機のノードの構成を出力するステップを、さらに含むことを特徴とする請求項１５に記載の計算機の性能評価方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアモニタを搭載した計算機システムに関し、当該ハードウェアモニタで採取した情報を元に性能を評価する性能評価システム、並びに、性能評価結果を用いてハードウェア構成を再構成する計算機システムに関する。
【背景技術】
【０００２】
データベースサーバやアプリケーションサーバ等の計算機システムで性能のチューニングを行う場合、始めに性能のボトルネック解析をする。一般的な性能ボトルネックの解析方法は、非特許文献１、非特許文献２で述べられているように、OSのパフォーマンスモニタ等で得られたＣＰＵ使用率やＣＰＵ待ち行列長、メモリのページングやスワップ、Ｉ／Ｏスループット等から総合的に判断して、ボトルネック箇所を特定することが常套手段となっている。
【０００３】
一般に、サーバのトランザクション処理のスループットは以下の式で求められる。
（スループット性能）＝（ＣＰＵ数×ＣＰＵ周波数×定数）÷（ＣＰＵの実行ステップ数×ＣＰＩ）
ここで、上記定数はスループットの値を単位時間当たり、あるいは単位秒あたりに変換する数を指す。CPIは、ＣＰＵの１命令あたりの実行サイクル数のことである。性能を改善するためには、ＣＰＵ数、ＣＰＵ周波数を大きくし、実行ステップ数やCPIを小さくすればよい。
【０００４】
CPIは以下の式で求められる。
ＣＰＩ＝ＣＰＩ０＋（Ｌ１キャッシュのミス率−Ｌ２キャッシュミス率）×（Ｌ２キャッシュのメモリレイテンシ）×Ｋｃ＋（Ｌ２キャッシュのミス率）×（主記憶のメモリレイテンシ）×Ｋｍ
但し、ＣＰＩ０：１次キャッシュが無限の容量ある場合の１命令あたりの実行サイクル数
Ｋｃ、Ｋｍ：メモリアクセスが多重実行される場合を考慮したときの定数値
前記の式から、ＣＰＵ数やＣＰＵ周波数を向上すれば性能向上することが分かる。これらは、サーバ上に実装するＣＰＵ数と使用するＣＰＵ数によって決まる。ＣＰＵの実行ステップ数の削減は、コーディング上の工夫やコンパイラによるコードの最適化が従来から取り組まれてきた。
【０００５】
ＣＰＩの削減は、コンパイラやＣＰＵの命令スケジューラで命令の並列実行度を高める技術が提案されてきた。しかし、メモリレイテンシはシステムの稼働状態やハードウェアの構造によって異なるため、ワークロードのサイズによっては、メインメモリのレイテンシにより大きく性能が変わるケースがあることが知られている。
【０００６】
これに対して、メモリレイテンシの計測結果を用いて命令スケジューリングをする方法が検討されている（例えば、特許文献１）。この方法は、プロセッサで実行する命令のメモリレイテンシをサンプリングし、命令とメモリレイテンシの関係を記録しておく。命令スケジューラはメモリレイテンシが大きな命令は出来るだけ先行して実行するように命令の実行順序を変更する。または、プリフェッチ命令を挿入する場所を決定する。この方法により、プログラムが動作するサーバのメモリレイテンシにあわせたチューニングをし、ＣＰＵ時間というハードウェアリソースの有効利用が可能になる。
【特許文献１】米国特許６，０９２，１８０号
【非特許文献１】「UNIXシステムパフォーマンスチューニング」,Gian-Paolo D. Musumeci, Mike Loukides著, 砂原 秀樹監訳, 岡島順次郎, 高橋敏明訳, O'REILLY, 2003  (原本題名 System Performance Tuning)
【非特許文献２】「データベースチューニング256の法則」, Chris Looseley, Frank Douglas著, 間宮あきら訳, 日経BP社 (原本題名 High-Performance Client/Server)
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記のようなＯＳのパフォーマンスモニタを用いる手法では、ハードウェアが性能のボトルネックになっているのか直接観測が出来ないという問題がある。さらに、上記ワークロードのサイズと、メインメモリのレイテンシによる性能の変化については、ＣＰＵにパフォーマンスモニタを搭載し、このパフォーマンスモニタでキャッシュミス率や命令パイプラインでキャッシュミスしてストールしている時間の平均値を計測し、命令レベルでの解析をして手作業でコーディングの最適化をしていく手法が考えられる。
【０００８】
しかし、この手法はコンパイラやＣＰＵにのみ適用され、サーバを構成するためのコンポーネント、例えば、チップセットに対しては適用ができない。
【０００９】
更に、一般に、実行可能なバイナリコードとして配布または購入したアプリケーションプログラムを稼働させるシステムでは、コードレベルのチューニングは不可能なため、上記のようなコーディングの最適化による性能ボトルネック箇所の特定は困難である。
【００１０】
また、サーバなどの計算機では複数のＣＰＵを搭載するマルチプロセッサが使われることが多い。特に少数のＣＰＵを搭載した計算機と、多数のＣＰＵを搭載した計算機では、前者はメモリレイテンシが短いが、ＯＬＴＰ（ＯｎＬｉｎｅ  Ｔｒａｎｓａｃｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ）システムに代表される多重プロセスまたは多重スレッドのアプリケーションでは十分に性能が上げられず、複数のサーバを並べて性能向上を図るクラスタシステムというアプローチがとられることが多い。一方、後者の多数のＣＰＵを搭載した計算機では、多重処理のアプリケーションでは負荷にあわせて性能をスケーラブルに向上できるが、複数のＣＰＵ間でキャッシュメモリのコヒーレンシ制御をとる必要がある為、ハードウェアが複雑化し、メモリレイテンシが伸びる傾向がある。このため、同一プロセスまたは同一スレッド数のアプリケーションでは、少数のＣＰＵを搭載した小規模サーバの方が、性能が高いケースがある。これらの使い分けは、実際の業務アプリケーションや標準ベンチマークを動かしてスケーラビリティを評価するなど、評価のための工数が増大する、という問題点がある。
【００１１】
そこで本発明は、上記問題点に鑑みてなされたもので、内部構造を変更することができないＣＰＵや、コーディングの最適化を行うことのできないアプリケーションプログラムの性能のボトルネックが、メモリやチップセットであるか否かを迅速に判定することを第１の目的とする。
【００１２】
また、サーバなどの計算機の性能情報を採取する際に、性能情報を取得するソフトウェアが、測定対象のアプリケーションからＣＰＵ時間などのリソースを奪ってしまうのを抑制し、測定対象とするシステムに評価の為の負荷が加わるのを防ぐことを第２の目的とする。
【００１３】
さらに、実際のアプリケーションでのワークロードに適合したシステム構成を、メモリレイテンシの測定を基準にして自動的にシステム管理者に提案することを第３の目的とする。
【課題を解決するための手段】
【００１４】
本発明は、少なくとも１つのＣＰＵと、前記ＣＰＵとメモリ及びＩ／Ｏインターフェースを接続するコントローラとを備えた計算機システムにおいて、前記コントローラは、前記メモリに対するアクセス要求を受け付けると、当該メモリアクセス要求に対する応答時間を測定する応答時間測定部と、前記メモリアクセス要求の発行回数を測定する度数カウント部と、前記応答時間に対応する前記発行回数とを関連づけた測定結果を格納する測定結果記憶部と、前記測定結果の読み出し要求があったときには、前記測定結果記憶部に格納された測定結果を出力する測定結果制御部と、を備える。
【００１５】
また、前記管理端末は、前記測定結果制御部から取得した測定結果から、前記メモリアクセス要求の応答時間と、当該応答時間に対応するメモリアクセス要求の発行回数から、メモリアクセスの特性を推定する。
【発明の効果】
【００１６】
したがって、本発明は、メモリとＣＰＵの間に配置されたコントローラは、メモリレイテンシ（応答時間）をメモリアクセス要求の頻度に対応付けて測定することができ、ＣＰＵに性能測定の負荷をかけることなく性能測定を実施できる。測定結果から、内部構造を変更することができないＣＰＵ３−１〜３−Ｍや、コーディングの最適化を行うことのできないアプリケーションプログラムの性能のボトルネックが、メモリやチップセット（コントローラ）であるか否かを迅速に判定することが可能となる。
【００１７】
また、多数のノードや多数のＣＰＵを備えた計算機システムでは、システム管理者がアプリケーションに応じた構成を検討する際には、アプリケーション毎のメモリアクセスの特性に基づいて、計算機システムの構成変更を支援することが可能となる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００１９】
＜対象とする計算機システム＞
図１は、第１の実施形態を示し、本発明のハードウェアモニタを実装した計算機システムのブロック図である。
【００２０】
図１において、計算機システム１は、複数のノード２−１〜２−Ｎ（但し、Ｎは整数）で構成されており、各ノード２−１〜２−Ｎは、クロスバスイッチ１４を介して相互に接続される。一つのノード（例えば、ノード２−１）には、キャッシュメモリを含む複数のＣＰＵ３−１〜３−Ｍ（Ｍは１以上の整数）と、プログラムやデータを格納するメインメモリ５と、ネットワーク（ＬＡＮ）１３やストレージ装置（ＤＩＳＫ）１２と接続するためのＩ／Ｏインタフェース７と、ノード２−１のハードウェアを管理するボードマネジメントコントローラ１０（以降、ＢＭＣと略す）と、ＣＰＵ３−１〜３−Ｍとメインメモリ５とｉ／Ｏインターフェース７及びＢＭＣとを相互に接続するチップセット６（以下、ノードコントローラと呼ぶことにする）とを含んでいる。なお、他のノード２−２〜２−Ｎも同様に構成される。
【００２１】
ＣＰＵ３−１〜３−Ｍは、ＣＰＵバス（またはフロントサイドバス）４を介してノードコントローラ６と接続されている。各ノードに搭載されているＢＭＣ１０は、ＳＶＰ（サービスプロセッサ）１５と接続されている。
【００２２】
ＳＶＰ１５は、シリアルケーブルまたはローカルエリアネットワーク１７を介して管理コンソール１６と接続されている。ノードコントローラ６は、トランザクション処理ユニット８とトランザクション処理制御ユニット９とパフォーマンスモニタ１１から構成され、これらはノードコントローラ６の中で相互に接続されている。
【００２３】
＜動作概要＞
以下に、ノード２−１〜２−ＮのＣＰＵによるメインメモリ５へのアクセス動作及び管理コンソール１６から計算機システム１へのアクセスについて説明する。なお、以下の説明では、ＣＰＵ３−１〜３−Ｍは同一の構成、動作であるので、ＣＰＵ３−１のみについて説明し、他のＣＰＵの説明は省略する。
【００２４】
ＣＰＵ３−１が内蔵するキャッシュメモリ（図示省略）に必要なデータが存在しない場合、メインメモリ５に必要なデータを取りに行く為、メモリアクセス要求をＣＰＵバス４に発行する。
【００２５】
同一ＣＰＵバス４に接続された他のＣＰＵ３−２〜３−Ｍのキャッシュに、ＣＰＵ３−１が要求したデータが存在する場合、ＣＰＵ間でＣＰＵバス４を介してデータが転送される。同一ＣＰＵバス４上にデータが存在しない場合、当該メモリアクセス要求はノードコントローラ６内部のトランザクション処理ユニット８に発行される。
【００２６】
トランザクション処理ユニット８は、キャッシュメモリをもっているユニット（ここでは、全ノードのＣＰＵ）に対してメモリアクセス要求を発行し、各ＣＰＵ３−１〜３−Ｍのキャッシュメモリのコヒーレンシを維持する為のスヌーピング処理を行う。同時に、自ノード２−１に搭載されたメインメモリ５宛ての要求であるか、他ノード２−２〜２−Ｎに搭載されたメインメモリ５宛ての要求か判定し、要求するアドレスが設定されているノードにメインメモリ読出しの要求を転送する。
【００２７】
該当するメインメモリ５から読み出されたデータは、他ノードからはクロスバスイッチ１４、トランザクション処理ユニット８とＣＰＵバス４を介して要求を発行したＣＰＵ３−１へ転送され、自ノードであれば、トランザクション処理ユニット８とＣＰＵバス４を介して、メモリアクセス要求発行元のＣＰＵ３−１に転送される。
【００２８】
メモリアクセス要求（メモリ要求トランザクション）は、要求の種類、トランザクションのＩＤ番号、要求する物理アドレスから構成されている。本実施形態の計算機システム１では、メモリアクセス要求と、その応答であるメモリアクセス応答（メモリ応答トランザクション）は、応答の種類とメモリ（メインメモリ５またはキャッシュメモリ）から読み出したデータとトランザクションＩＤ番号から構成されている。このトランザクションＩＤ番号はメモリアクセス要求とメモリアクセス応答で同じ番号となっている。このため、トランザクションのＩＤ番号だけで要求とその応答の対応関係が判定できる。
【００２９】
システム管理者は、管理コンソール１６からＳＶＰ１５に対して、システムのリセットや、立ち上げ等の要求を発行する。ＳＶＰ１５は、これらの要求を対象となるノード２−１〜２−ＮのＢＭＣ１０に伝える。ＢＭＣ１０は、トランザクション処理制御ユニット９に対して前記からの要求を転送する。
【００３０】
そして、トランザクション処理制御ユニット９は、トランザクション処理ユニット８及びパフォーマンスモニタ１１の初期化や動作モード変更の為のメモリマップドレジスタ１０６（図２参照）へのデータの読み書きを行い、システム（またはノード）の初期化や動作モードの切り替えを行う。なお、メモリマップドレジスタ１０６は、予めメインメモリ５の所定の位置に設定されたものである。各ノード２−１〜２−Ｎは、ＳＶＰ１５からの設定コマンドで、それぞれ別の計算機システムとして動作するように設定できる。つまり、各ノードが個々の計算機として動作し、別のＯＳが起動する運用形態が可能である。
【００３１】
＜ノード数とメモリレイテンシの関係＞
複数のノード２−１〜２−Ｎをクロスバスイッチ１４を介して接続し、ひとつの計算機システムとして構成する場合、メモリアクセス要求を発行したＣＰＵと同じノードに搭載されているメインメモリ（以降、ローカルメモリと呼ぶ）のメモリレイテンシ（応答時間または遅延時間）と、メモリアクセス要求を発行したＣＰＵと異なるノードに搭載されたメインメモリ（以降、リモートメモリと呼ぶ）のメモリレイテンシでは、ノード間の通信が存在しない分、ローカルメモリのメモリレイテンシのほうがリモートメモリのメモリレイテンシよりも短い。ローカルメモリとリモートメモリを物理メモリ空間上に配置する方法は、大きく分けて２種類存在する。
【００３２】
一つは、ＣＰＵ３−１〜３−Ｍのキャッシュメモリのラインサイズ程度で各ノード２−１〜２−Ｎを順番に配置していくインターリーブモードと、ノード２−１〜２−Ｎごとに連続したアドレス空間を与え、メモリ領域を積み上げていくＮＵＭＡ（Ｎｏｎ  Ｕｎｉｆｏｒｍ  Ｍｅｍｍｏｒｙ  Ａｃｃｅｓｓ）モードがある。ＮＵＭＡモードでは、各ノード２−１〜２−Ｎに属しているＣＰＵ３−１〜３−Ｍ、物理メモリ空間、Ｉ／Ｏインタフェース７の関係をファームウェアがＯＳに通知して、ＯＳがプロセスやスレッドのスケジューリングに反映させる。
【００３３】
ここで、上記インターリーブモードは、どのようなメモリアクセスでも、大抵は以下の式で与えられる。
（インタリーブモードの平均メモリレイテンシ）＝｛（ローカルメモリアクセスレイテンシ）＋（リモートメモリアクセスレイテンシ）×（ノード数−１）｝÷（ノード数）
ローカルメモリに比べてリモートアクセスのレイテンシが非常に大きい場合、平均メモリレイテンシは大きくなってしまうため、ＮＵＭＡモードを使用するケースもある。この場合、ＯＳならびにアプリケーションプログラムレベルで、メモリアクセスがローカルメモリ領域に収まるようにチューニングをする必要がある。ただし、物理メモリ空間で一部はインタリーブモードで、一部はＮＵＭＡモードにするケースも可能である。
【００３４】
＜パフォーマンスモニタの構成＞
以下に、ノードコントローラ６に配置されたパフォーマンスモニタ１１の構成を、図２を用いて説明する。
【００３５】
ノードコントローラ６ではパフォーマンスモニタ１１、トランザクション処理ユニット８、トランザクション処理制御ユニット９は、それぞれ、相互に接続されている。トランザクション処理制御ユニット９は、診断パス１０４で、図１のＢＭＣ１０と接続されている。トランザクション処理ユニット８は、ＣＰＵバス４がＣＰＵ３−１〜３−Ｍに接続され、メモリチャネル１２４がメインメモリ５に接続され、Ｉ／Ｏチャネル１２５でＩ／ＯブリッジまたはＩ／Ｏインタフェース７と接続されている。
【００３６】
パフォーマンスモニタ１１は、ＣＰＵ側からのメモリアクセス要求の到着信号を受け付ける要求トランザクションレジスタ１１１と、メインメモリ５側から応答を受け付ける応答トランザクションレジスタ１１２と、パフォーマンスモニタ１１を制御するパフォーマンスモニタ制御ユニット１０５と、予めメインメモリ５側に設定したメモリマップドレジスタ１０６と、出力する信号を選択するセレクタ１１３、セレクタ１１４と、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）１１５と、ＣＡＭ１１５への書き込みを制御するＣＡＭ書き込み制御ユニット１１６と、レジスタファイル（レジスタアレイ）１１７，１１８と、所定の周期でカウンタ値を更新するフリーランカウンタ１１９と、減算器１２０と、ＡＮＤゲート１２１及びインクリメンタ１２２で構成される。
【００３７】
パフォーマンスモニタ制御ユニット１０５は、トランザクション処理ユニット９及びメモリマップドレジスタ１０６と接続されている。
【００３８】
セレクタ１１３は、要求トランザクションレジスタ１１１とメモリマップドレジスタ１０６のトランザクションタイプレジスタ１０８と接続される。セレクタ１１３の出力は、ＣＡＭ１１５、ＣＡＭ書き込み制御ユニット１１６、レジスタファイル１１７と接続されている。
【００３９】
応答トランザクションレジスタ１１２と、メモリマップドレジスタ１０６のイネーブルレジスタ１０７とＣＡＭ１１５の出力信号は、ＡＮＤゲート１２１に入力され、ＡＮＤゲート１２１の出力は、レジスタファイル１１８に接続されている。
【００４０】
ＣＡＭ書き込み制御ユニット１１６は、セレクタ１１３の出力信号とＣＡＭ１１５の出力である一致信号を入力とし、ＣＡＭ１１５のデータ書き込みアドレス信号と接続されている。
【００４１】
ＣＡＭ１１５の出力の一致アドレス信号は、レジスタファイル１１７の読み出しアドレス入力に接続されている。
【００４２】
フリーランカウンタ１１９は、レジスタファイル１１７の書き込みデータ入力に接続されている。
【００４３】
レジスタファイル１１７の出力の読み出しデータ信号と、フリーランカウンタ１１９は、減算器１２０の入力に接続される。
【００４４】
減算器１２０の出力信号と、セレクタ１１４とレジスタファイル１１８の書き込みアドレス（Ｗｒｉｔｅ  Ａｄｄｒｅｓｓ）入力に接続されている。
【００４５】
レジスタファイル１１８の出力の読み出しデータ信号は、インクリメンタ１２２に入力に接続される。インクリメンタ１２２の出力は、レジスタファイル１１８の書き込みデータ入力に接続されている。
【００４６】
メモリマップドレジスタ１０６のリードアドレスレジスタ１０９と、減算器１２０の出力信号は、セレクタ１１４に入力される、また、セレクタ１１４の入力を選択する信号としてメモリマップドレジスタ１０６のイネーブルレジスタ１０７が入力され、このイネーブルレジスタ１０７が”１”のと減算器１２０が、”０”のとき、リードアドレスレジスタ１０９が選択される。セレクタ１１４の出力は、レジスタファイルの読出しアドレス（Ｒｅａｄ  Ａｄｄｒｅｓｓ）入力に接続されている。
【００４７】
レジスタファイル１１８の読み出しデータ（Ｒｅａｄ  Ｄａｔａ）出力は、メモリマップドレジスタ１０６の度数レジスタ１１０に接続されている。
【００４８】
ＣＡＭ１１５と、レジスタファイル１１７及びレジスタファイル１１８は、ライトイネーブル（Ｗｒｉｔｅ  Ｅｎａｂｌｅ）が”１”のとき、書き込みアドレス（Ｗｒｉｔｅ  Ａｄｄｒｅｓｓ）入力で指定されたアドレスのエントリに書き込みデータ（Ｗｒｉｔｅ  Ｄａｔａ）入力のデータを書き込む設計となっている。
【００４９】
メモリマップドレジスタ１０６の計測期間レジスタ（ＭＥＡＳＵＲＥＭＥＮＴ  ＴＩＭＥ）１３０は、タイマ１３１と接続され、タイマ１３１は、イネーブルレジスタ１０７と接続されている。
【００５０】
以上の構成により、後述するようにローカルメモリやリモートメモリのレイテンシを測定し、計算機システム１の性能のボトルネックが、メインメモリ５やノードコントローラ６にあるか否かの判定を行うためのヒストグラムを提供するのである。
【００５１】
パフォーマンスモニタ１１の概要は、メモリアクセス要求トランザクションの開始時刻と、メモリ応答トランザクションの到着時刻からレジスタファイル１１７、１１８及び減算器１２０等のハードウェアにより、メモリアクセス要求トランザクションのあったアドレスのレイテンシとアクセス頻度を測定し、該当アドレスのアクセス頻度をレジスタファイル１１８（測定結果記憶部）に保持するものである。つまり、レジスタファイル１１８には、測定したレイテンシ（応答時間）に対応するメモリアクセス要求トランザクションの発行回数が関連づけられて格納されることになる。
【００５２】
＜パフォーマンスモニタの動作＞
上記図２に示したのパフォーマンスモニタ１１の動作について、図面を用いて説明する。
【００５３】
メモリアクセス要求のメモリレイテンシのヒストグラムを作成する処理は、図３のフローチャートで示すように、以下の４段階に分かれる。なお、図３のフローチャートは、パフォーマンスモニタ１１のパフォーマンスモニタ制御ユニット１０５が実行する。
ステップ０：パフォーマンスモニタ１１の設定、並びに測定開始（図４）
ステップ１：メモリ要求トランザクションのトランザクションＩＤと到着時刻を登録する（図５（ａ）及び図６）。
ステップ２：メモリ要求トランザクションの応答である応答トランザクションのトランザクションＩＤと到着時刻を用いてレイテンシを計算し、その出現頻度をカウントする（図５（ｂ）及び図７）。
ステップ３：測定の停止、並びに計測したメモリレイテンシの度数分布を管理コンソール１６で読み出し、ヒストグラムを表示する（図１０、図８）。
【００５４】
メモリレイテンシのヒストグラム計測では、計測開始後、ステップ１とステップ２の処理は平行して実行され、それぞれ繰り返し実行される。計測終了後、ステップ３を実行する。
【００５５】
以下、各処理段階の詳細について説明する。
【００５６】
＜ステップ０＞
図３に示したステップ０の動作を図４のフローチャートで説明する。
【００５７】
始めに、管理コンソール１６からＳＶＰ１５経由等でＢＭＣ１０にアクセスし、診断パス１０４を使ってパフォーマンスモニタ１１のメモリマップドレジスタ１０６のトランザクションタイプレジスタ１０８に、計測対象のトランザクションの種類を表すコードを登録する（ステップ２７０）。
【００５８】
次に、管理コンソール１６からＳＶＰ１５経由等でＢＭＣ１０にアクセスし、診断パス１０４を使ってパフォーマンスモニタ１１のメモリマップドレジスタ１０６のイネーブルレジスタ１０７に”１”を設定する。イネーブルレジスタ１０７が“１”である期間中は、パフォーマンスモニタ１１は計測を実行する（ステップ２７１）。ここでは、”１”を設定したときにパフォーマンスモニタ１１の測定を開始し、”０”のときパフォーマンスモニタ１１でのメモリレイテンシの測定を停止することを意味する。
【００５９】
パフォーマンスモニタ１１での計測終了時には、イネーブルレジスタ１０７を直接ＳＶＰ１５からアクセスして“０”を設定して計測を終了する方法があるが、他に一定時間計測した後に、自動的に終了するオプションもある。これは計測開始前に、計測期間レジスタ（ＭＥＡＳＵＲＥＭＥＮＴ  ＴＩＭＥ）１３０に計測マシンサイクル数を設定し、イネーブルレジスタ１０７に“１”を設定すると計測期間レジスタで設定したサイクル数をタイマ１３１がカウントした後、タイマ１３１がイネーブルレジスタ１０７を“０”に設定して自動的に計測を終了させるようになっている。
【００６０】
＜ステップ１＞
図３のステップ１の概要を図５（ａ）を用いて説明する。トランザクション処理ユニット８からパフォーマンスモニタ１１に発行されたメモリ要求トランザクションのトランザクションＩＤ２１０をＣＡＭ１１５に登録する（２０５）。図５（ａ）では、Ｔｘ０というトランザクションＩＤをエントリ番号＃０に登録している。ところで、ＣＡＭ１１５は、連想メモリとも呼ばれる特殊なメモリで、ＣＡＭ１１５内部に格納された複数のデータと、外部からの参照データを平行して比較し、一致するデータが存在した場合、一致信号とそのデータが格納されているエントリのアドレスを出力するメモリである。
【００６１】
ＣＡＭ１１５にデータを登録すると同時に、フリーランカウンタ１１９の値を、レジスタファイル１１７のＣＡＭ１１５でデータを書き込んだエントリと同じ番号のエントリに書き込む（２０７）。図５（ａ）では、Ｔ０という値をエントリ＃０に書き込んでいる。
【００６２】
次に、ステップ１の詳細について、図６を参照しながら以下に示す。
【００６３】
トランザクション処理ユニット８が、ＣＰＵ３−１〜３−Ｍで発行されたメモリアクセス要求トランザクション（Ｍｅｍｏｒｙ  Ｒｅｑｕｅｓｔ  Ｔｒａｎｓａｃｔｉｏｎ）をＣＰＵバス４を経由して受信する。その直後、トランザクション処理ユニット８から、パフォーマンスモニタ１１へ当該メモリアクセス要求の到着信号（Ｔ＿ＳＴＡＲＴ）、トランザクションの種類、トランザクションＩＤが送信され、パフォーマンスモニタ１１は、これらを要求トランザクションレジスタ１１１（図５（ａ））に登録する（ステップ２５０）。
【００６４】
このとき、メモリアクセス要求の到着信号Ｔ＿ＳＴＡＲＴは、トランザクションが有効であるかどうか判定することに使用される。ここでは、Ｔ＿ＳＴＡＲＴが”１”のとき、トランザクションが有効であるという意味とする。
【００６５】
メモリアクセス要求の到着信号Ｔ＿ＳＴＡＲＴが”１”であり、かつ、トランザクションの種類がトランザクションタイプレジスタ１０８の内容と一致し、かつトランザクションイネーブルレジスタが”１”のとき、セレクタ１１３の出力は”１”となり、ＣＡＭ１１５のライトイネーブル入力とレジスタファイル１１７のライトイネーブル入力が”１”に活性化される（ステップ２５１）。
【００６６】
このとき、ＣＡＭ１１５の書き込みデータに入力されているトランザクションＩＤが、ＣＡＭ書き込み制御ユニット１１６が出力している書き込みアドレスで指定されたＣＡＭ１１５のエントリに書き込まれる。同時に、レジスタファイル１１７でも前記書き込みアドレスで指定されているエントリに、フリーランカウンタ１１９の値が格納される（ステップ２５２）。つまり、レジスタファイル１１７の該当エントリには、フリーランカウンタ１１９が指し示す時刻が設定され、この時刻はメモリアクセス要求トランザクションの開始時刻となる。
【００６７】
ＣＡＭ書き込み制御ユニット１１６は、ＣＡＭ１１５のデータを格納するエントリの使用状態を管理しており、未使用のエントリのリストから順に書き込みアドレスをＣＡＭ１１５に発行する。このエントリにデータが書き込まれたら、未使用のエントリのリストからはずす処理をする。また、以下に示すステップ２の検索処理でヒットしたエントリは、未使用のエントリとして再利用する。
【００６８】
＜ステップ２＞
図３のステップ２の概要を図５（ｂ）を用いて説明する。本実施形態の計算機システム１は、トランザクションＩＤは、メモリ要求トランザクションとその応答であるメモリ応答トランザクションで同じものが使用される仕様である。この性質を使ってメモリレイテンシを求める。
【００６９】
トランザクション処理ユニット８は、パフォーマンスモニタ１１に発行されたメモリ応答トランザクションのトランザクションＩＤで、ＣＡＭ１１５に格納されているデータと一致するものが無いか検索する（２１１）。トランザクションＩＤが一致するエントリがある場合、ＣＡＭ１１５はトランザクションＩＤが一致したエントリのアドレスをレジスタファイル１１７へ出力する（２１２）。このアドレスを持つレジスタファイル１１７のエントリのデータを読み出す（２１４）。この読み出しデータ２１４はメインメモリ５を読み出すトランザクションの開始時刻にあたり、当該トランザクションの終了時刻にあたるフリーランカウンタ１１９の値Ｔ１との差分を減算器１２０で生成することで（２１６）、メモリレイテンシ（ΔＴ０）が計算できる（２１８）。このメモリレイテンシを読み出しアドレスとしてレジスタファイル１１８に入力し（２１８）、読み出されたデータＣ０（２２０）をインクリメンタ１２２に入力して１を加える（２１９）。この１を加えたデータＣ０＋１で、レジスタファイル１１８の始めに格納されていたエントリを更新する（２２１）。
【００７０】
次に、ステップ２の詳細を図７のフローチャートに基づいて以下に示す。
【００７１】
トランザクション処理ユニット８が、前記メモリアクセス要求トランザクションの応答であるメモリアクセス応答トランザクション（Ｍｅｍｏｒｙ  Ｒｅｓｐｏｎｃｅ  Ｔｒａｎｓａｃｔｉｏｎ）をＣＰＵバス４に発行する直前に、トランザクション処理ユニット８から、パフォーマンスモニタ１１へ当該メモリアクセス応答の到着信号（Ｔ＿ＥＮＤ）とトランザクションＩＤが送信され、パフォーマンスモニタ１１は、これらを要求トランザクションレジスタ１１１に登録する（図７のステップ２６０）。
【００７２】
前記トランザクションＩＤでＣＡＭ１１５を検索し（ステップ２６１）、一致するデータがあるか否かを判定し（ステップ２６２）、一致するデータがある場合は、ＣＡＭ１１５が一致信号を”１”を出力し、同時に一致したエントリ番号を示すアドレス信号（Ｍａｔｃｈ  Ａｄｄｒｅｓｓ）を出力する。このアドレス信号をレジスタファイル１１７に入力し、読み出されたデータと、フリーランカウンタ１１９の値を減算器１２０に入力する。レイテンシに相当する減算器１２０の出力は、レジスタファイル１１８の書き込みアドレス信号として入力される（ステップ２６３）。
【００７３】
前記ＣＡＭ１１５の一致信号（Ｍａｔｃｈ）とメモリマップドレジスタ１０６のイネーブルレジスタ１０７のデータが、ＡＮＤゲート１２１に入力され、ＡＮＤゲート１２１の出力はレジスタファイル１１８の書き込みイネーブル入力に送られる。セレクタ１１４は、メモリマップドレジスタ１０６のイネーブルレジスタ１０７が”１”のとき、減算器１２０の出力をレジスタファイル１１８の読出しアドレス入力に転送する。そして、レジスタファイル１１８は、このアドレスのエントリのデータを読出しデータ（Ｒｅａｄ  Ｄａｔａ）を出力する。この読出しデータはインクリメンタ１２２に入力され、”１”を加えた値をレジスタファイル１１８の書き込みデータ（Ｗｒｉｔｅ  Ｄａｔａ）として入力する。このとき、上述の説明によりレジスタファイル１１８のライトイネーブルは”１”になっているので、書き込みアドレス入力で指定されたアドレスのエントリのデータは、前記書き込みデータの値に更新される（ステップ２６４）。
【００７４】
＜ステップ３＞
図３に示したステップ３の動作について主に図８を用いて説明する。
【００７５】
管理コンソール１６からＳＶＰ１５経由等でＢＭＣ１０にアクセスし、診断パス１０４を使ってパフォーマンスモニタ１１のメモリマップドレジスタ１０６のイネーブルレジスタ１０７に”０”を設定し、計測を停止する（ステップ２８０）。なお、メモリマップドレジスタ１０６の計測期間レジスタ１３０を使った自動停止オプションを選択した場合は、設定したサイクル数後に自動的にイネーブルレジスタ１０７が“０”と設定されるため、ＳＶＰ１５からイネーブルレジスタ１０７を“０”に設定する必要はなく、予め設定した計測期間後には自動的にパフォーマンスモニタ１１の計測が停止する。
【００７６】
次に、レジスタファイル１１８のデータを読み出すために、管理コンソール１６からＳＶＰ１５経由等でＢＭＣ１０にアクセスし、診断パス１０４を使ってパフォーマンスモニタ１１のメモリマップドレジスタ１０６の読み出しアドレスを設定する。この設定後、レジスタファイル１１８の当該アドレスのデータがメモリマップドレジスタ１０６の度数レジスタ１１０に格納される。このデータを管理コンソール１６からＳＶＰ１５経由等でＢＭＣ１０にアクセスし、診断パス１０４を使って前記度数レジスタ１１０を管理コンソール１６上に表示、あるいは、管理コンソール１６などでファイル等に保存する。この操作を繰り替えし、レジスタファイル１１８の全エントリのデータを読出し、管理コンソール１６で表示あるいはファイル等に保存する（ステップ２８１）。
【００７７】
以上の処理により、ノードコントローラ６が測定したノードのメモリレイテンシとアクセス頻度は、図９で示すように管理コンソール１６の表示装置などに表示される。
【００７８】
図９は、管理コンソール１６の表示装置（図示省略）に表示したメモリレイテンシのヒストグラムの例を示す。ここでは、図５（ｂ）のレジスタファイル１１８のデータを使用してヒストグラムを作成する場合を例にしている。
【００７９】
図９の横軸はメモリレイテンシ（ＬＡＴＥＮＣＹ）を表している。レジスタファイル１１８の各エントリのアドレスΔＴ０、ΔＴ１、ΔＴ２、ΔＴ３がそれに対応する。縦軸は各メモリレイテンシの数値の発生回数である度数（ＦＲＥＱＵＥＮＣＹ）を表している。レジスタファイル１１８の各エントリに格納されている値、ここでは、Ｃ０＋１、Ｃ１、Ｃ２、Ｃ３となっている。
【００８０】
このようなグラフを得ることで、ローカルメモリやリモートメモリへのアクセス特性を調査することが出来る。例えば、ローカルメモリへのアクセスが集中するようなアプリケーションの場合には、メインメモリ５のＤＩＭＭの数を増やしてメインメモリ５のチャネル数を増大させることで、ローカルメモリへアクセスが集中する際の性能のボトルネックを改善できる。あるいは、ローカルメモリ及びリモートメモリのアクセスが多いアプリケーションの場合には、メモリアクセスのモードをＮＵＭＡからインターリーブへ切り換えることで、計算機システム１の性能のボトルネックを改善することができる。このように、メモリレイテンシと頻度をヒストグラムとして捕捉することにより、アプリケーション毎のメモリのアクセス特性を容易に把握して、システム管理者が計算機システム１のボトルネックを改善する際の支援を行うことができる。
【００８１】
＜他のレイテンシ測定への応用＞
上述の説明では、ＣＰＵ３−１〜３−Ｍからのメモリアクセス要求のメモリレイテンシのヒストグラムを作成する手段及び動作を説明した。このＣＰＵ３−１〜３−Ｍからのメモリアクセス要求の代わりに、Ｉ／Ｏにおいて、例えばＤＭＡ転送におけるメインメモリの読出し要求（ＤＭＡリードコマンド）を適用することで、ＤＭＡ転送でのメモリアクセス特性を示すヒストグラムを作成が可能であり、ＤＭＡ転送の性能検証に応用できる。例えば、Ｉ／Ｏインターフェース７のＤＭＡ制御部（図示省略）からメインメモリ５へのアクセス要求をノードコントローラ６が受け付けると、上記ＣＰＵ３−１からのメモリアクセス要求と同様に、メモリレイテンシとアクセス頻度を対応付けて測定することができる。
【００８２】
＜メモリアクセス特性の検証方法＞
上述の手段及び方法で得られるヒストグラムを用いてアプリケーションプログラムのメモリアクセス特性の調査を行う方法を説明する。このメモリアクセス特性の調査は、以下の２フェーズから構成される。
（１）事前検証フェーズ：基本ベンチマークを実行して基本特性データベースを作成する。
（２）実計測フェーズ：検証対象のアプリケーションの動作中のメモリレイテンシのヒストグラムを作成し、基本特性データベースと比較してメモリアクセス特性を推定する。
【００８３】
（１）事前検証フェーズ
図１０を用いて事前検証フェーズの処理について説明する。
【００８４】
はじめに、評価対象の計算機システム１で基本ベンチマークを実行する（ステップ３００）。この、事前検証フェーズではアプリケーションを動作させない状態で、基本ベンチマークを実行して、計算機システム１の固有の性能（メモリレイテンシ）を測定する。計算機システム１に固有の性能を測定しておくことで、後のアプリケーションの特性を把握することができる。
【００８５】
基本ベンチマークとしては、メモリレイテンシを測定するプログラムやメモリスループット性能を測定するベンチマークプログラムを使用する。例えば、ＬＭＢＥＮＣＨ（http://www.bitmover.com/lmbench）やＳＴＲＥＡＭ（http://www.cs.virginia.edu/stream/）といったベンチマークプログラムがよく知られている。一般にメモリスループット性能を測定するベンチマークはＣＰＵバス４、チップセット６、メインメモリ５といった部位への負荷が高い。ここで言う「負荷が高い」とは、ＣＰＵバス４の使用率といったシステムリソースの稼働率が高いことをいう。逆に、ＬＭＢＥＮＣＨに含まれるｌａｔ＿ｍｅｍ＿ｒｄのようなメモリレイテンシを測定するプログラムはポインタのリストを手繰るような処理になりＣＰＵバス４等のシステムリソースの使用率は非常に低い。
【００８６】
次に、基本ベンチマークプログラムが操作している最中に、パフォーマンスモニタを用いて、メモリレイテンシのヒストグラムを作成する（ステップ３０１）。
【００８７】
予め用意した基本ベンチマークのすべてについてメモリレイテンシのヒストグラムを作成する（ステップ３０３）。
【００８８】
最後に、基本ベンチマークの結果とシステムの構成情報から評価対象システムの基本特性データベースを作成する（ステップ３０４）。
【００８９】
この基本特性データベースの例を、図１１に示す。基本特性データベース５０６は、ＣＰＵ３−１〜３−Ｍがアクセスするメモリ（ローカルメモリまたはリモートメモリ）の物理的位置を意味する「アクセス対象」（３１０）という項目と、ＣＰＵバス４などのハードウェアリソースの使用率が高いか低いかを意味する「負荷」（３１１）という項目と、メモリレイテンシのヒストグラムを登録した「特性」（３１２）という項目から構成される。
【００９０】
このデータベースに登録するデータの件数は、図１１の例では５件登録されているが、実際は基本ベンチマークの数とメモリアクセスモード（ＮＵＭＡ／インタリーブ）の組み合わせの数で決まる。また、ローカルメモリやリモートメモリが実装されているか等、基本ベンチマークを実行しただけでは分からない情報もある。そのため、管理コンソール１６を操作するシステム管理者などが測定対象の計算機システム１のアーキテクチャも参考にして基本特性データベース５０６を作成することになる。なお、作成した基本特性データベース５０６は、管理コンソール１６のストレージ装置等に格納することができる。
【００９１】
図１１のアクセス対象３１０では、ＬＯＣＡＬはローカルメモリを、ＲＥＭＯＴＥはリモートメモリを指す。これらは、ＮＵＭＡモードで先のＬＭＢＥＮＣＨのメモリレイテンシ測定プログラムを動作させることで容易に測定できる。ただし、レイテンシ測定プログラムを実行するＣＰＵを特定しておく必要がある。ＩＮＴＥＲＬＥＡＶＥは、メモリアクセスをインタリーブモードにしたときにメモリレイテンシを測定することで得られる。これらのメモリレイテンシ測定ではＣＰＵバス４等のシステムリソース使用率は低い為、負荷３１１は負荷が軽いことを示すＬＩＧＨＴが登録されている。
【００９２】
更に、ＳＴＲＥＡＭベンチマークのようなＣＰＵバス４等のシステムリソースの使用率が高いものは、負荷３１１の値をＨＥＡＶＹとして登録している。負荷の項目は、用意した基本ベンチマークのメモリアクセス頻度にあわせて、ＬＩＧＨＴ、ＨＥＡＶＹだけでなく、更に多くの分類を設定することが出来る。
【００９３】
上記図１１の基本特性データベース５０６では、ＣＰＵ３−１〜３−Ｍからの距離に応じたレイテンシとなり、ローカルメモリへのアクセスはリモートメモリへのアクセスに比してレイテンシは低くなる傾向が分かる。また、負荷が増大するにつれてレイテンシが増大する傾向となる。
【００９４】
＜実計測フェーズ＞
次に、図１２を用いて実計測フェーズの処理について説明する。
【００９５】
最初に、評価対象システムで、評価したいアプリケーションプログラム（実業務プログラムやベンチマークなど）を実行する（ステップ３５０）。
【００９６】
次に、前記アプリケーションプログラムが稼動している最中に、パフォーマンスモニタでメモリレイテンシの度数分布を測定し、メモリアクセス特性を表すヒストグラムを作成する（ステップ３５１）。
【００９７】
最後に、管理コンソール１６の表示装置で、基本特性データベース５０６のヒストグラムとステップ３５１で作成したヒストグラムを比較し、アプリケーションプログラムの特性を推定し、表示する（ステップ３５２）。
【００９８】
＜メモリアクセス特性の解析方法＞
基本特性データベース５０６のヒストグラムと、実計測フェーズで作成したヒストグラムを比較する方法としては、様々な手法が考えられる。ここでは、その一例について説明する。
【００９９】
Ｎ個の基本特性データベースのヒストグラムを、メモリレイテンシｌの関数であると仮定し、Ｈｉ（ｌ）（ｉ＝１、…、Ｎ）という式で表せると仮定し、更に、実計測フェーズで作成したヒストグラムを、Ｈｒ（ｌ）とする。Ｈｒ（ｌ）がＨｉ（ｌ）の線形和で近似できるとすると
Ｈｒ（ｌ）≒Ｋ１×Ｈ１（ｌ）＋Ｋ１×Ｈ２（ｌ）＋…＋ＫＮ×ＨＮ（ｌ）
ただし、Ｋｉは０以上の実数
という式が成り立つ。基本特性データベース５０６の要素を増やすことで、より精度の高い近似ができると考えられる。
【０１００】
このＫｉの数値が大きい基本ベンチマークの特性が、評価対象のアプリケーションの特性に近いワークロードであるか推定できる。
【０１０１】
ただし、図１１の基本特性データベース５０６のアクセス対象３１０の内容が同じ要素のグループでは、”０”以外の値を設定できるのは高々１要素である。例えば、同一のローカルメモリアクセス（列３１２がＬＯＣＡＬ）に複数の候補が存在するが、この中で高々１つだけを選択するということを意味している。
【０１０２】
上記推定方法の一例を、図１３を使って説明する。
【０１０３】
図１３において、基本特性データベース５０６に、ローカルメモリアクセスを表すヒストグラム３６１とリモートメモリのヒストグラム３６２があると想定する。今、評価対象アプリケーションのヒストグラム３６０を取得したとする。
【０１０４】
ヒストグラム３６１をＫ１倍、ヒストグラム３６２をＫ２倍して合成した推定ヒストグラム３６５を作成し、評価対象アプリケーションのヒストグラム３６０と比較し（３６６）、その差分がもっとも小さくなるようにＫ１，Ｋ２の値を管理コンソール１６上で稼動する所定のプログラムで探索する。例えば、Ｋ１，Ｋ２を各々０から、微小な増分Δずつ増やして生成したグラフの形状が、ヒストグラム３６０にもっとも近くなるようにプログラムで探索することで実現できる。
【０１０５】
また、図１４のように、計算機システム１の負荷（ＣＰＵバス４の使用率など）が高くなるとレイテンシを示すグラフの傾きが緩やかになる傾向があることは、待ち行列理論の考え方を用いることで容易に推定できる。したがって、グラフの傾きが緩やかになった現象が判明した場合、グラフの高さがもっとも高くなっている部分（図１４の３７０、３７１、３７２）に対応するメモリにアクセス集中が発生してレイテンシが伸びる現象が起きていると推定できる。これに関しても、図１４のような負荷の違いによるパタンをいくつか用意することで上述の方法で、メモリアクセスの特性を推定できる。
【０１０６】
以上のような方法で、アプリケーションのメモリアクセス特性を推定した後、図１５に示すような画面を管理コンソール１６上で表示することで、ユーザに対して性能のボトルネックの推定材料を提供できる。
【０１０７】
図１５の例では、ローカルメモリとリモートメモリのアクセスの比率が３：１でローカルアクセスが多いことと、ローカルメモリへのアクセス集中が起きていることを表示している。
【０１０８】
＜ワークロードに適合したシステム構成の提案手法＞
上述のアプリケーションのメモリアクセス特性を推定する方法を応用し、対象とする計算機システム１の複数のノード２−１〜２−Ｎを、一つのＳＭＰ（Symmetric Multiple Processor）サーバに構成変更できるようにしたサーバの構成変更支援システムについて以下に説明する。
【０１０９】
Ａ．１：システムの概略
図１６は、図１に示した計算機システム１の構成を変更可能にしたもので、同一の部分には同一の符号を付して重複した説明を省略する。
【０１１０】
図１６に示す構成変更システムは、計算機システム５００（図１の計算機システム１に相当）とＳＶＰ５０３（図１のＳＶＰ１５に相当）と管理サーバ５０５（図１のコンソール１６に相当）から構成されている。ＳＶＰ５０３と管理サーバ（Ｍａｎａｇｅｍｅｎｔ  Ｓｅｒｖｅｒ）５０５またはＬＡＮ５０４で接続されている。なお、計算機システム５００及びＳＶＰ５０３の内容は、図１、図２の計算機システム１及びＳＶＰ１５と同様の構成であり、同一の符号を用いて説明する。
【０１１１】
図１６の計算機システム５００は、ノード５０１−１、５０１−２、…、５０１−Ｎから構成されている。これらは、図１のノード２−１〜２−Ｎと等価な装置であり、各ノードは図１のクロスバスイッチ１４で相互接続されている。計算機システム５００は、ＳＶＰ５０３からｋ台（１≦ｋ≦Ｎ）のノードを有効化し、ｋ台のノード５０１−１、５０１−２、…、５０１−ｋから構成されるＳＭＰサーバ５０２として運用できる。
【０１１２】
更に、前記ＳＭＰサーバ５０２に入れなかった余りのノードを組み合わせて別のＳＭＰサーバとして運用することも出来る。これは物理分割機構といわれる。この機構は、ＳＶＰ５０３からノード５０１−１からノード５０１−ｋのノードコントローラ６（図１及び図２参照）に対して、メモリアクセス要求トランザクションの送受信をするノードを、ノードコントローラ６内に実装されているコンフィグレーションレジスタ（図示省略）を通して設定することで実現できる。前記コンフィグレーションレジスタは、メインメモリ５の空間上にマッピングされているメモリマップドレジスタの一種であり、ＳＶＰ５０３からＢＭＣ１０を経由して数値を設定出来る。
【０１１３】
物理分割機構を用いて複数のＳＭＰサーバを運用するケースでも一台のＳＭＰサーバを運用するケースから容易に類推することができるため、以下では、計算機システム５００の中で一台のＳＭＰサーバ５０２のみを運用するケースを扱う。
【０１１４】
管理サーバ５０５は、Ｔｅｌｎｅｔターミナルエミュレータプログラム等でＳＶＰ５０３にＴｅｌｎｅｔ接続している。このＴｅｌｎｅｔ接続を通して管理サーバ５０５からＳＶＰ５０３にノード５０１−１〜５０１−Ｎの設定を変更する管理コマンドを送る。この管理コマンドには、サーバの電源をＯＮ／ＯＦＦするコマンドや、どのノードをＳＭＰ接続するか、メモリアクセスをＮＵＭＡにするのかインタリーブにするのかといった構成を決定するコマンドが含まれている。更に、管理サーバ５０５は、基本特性データベース５０６を管理している。更に、管理サーバ５０５では、計算機システム５００のノードの変更や動作モードの変更など、構成を変更する構成変更支援プログラム（図示省略）が動作しており、この構成変更支援プログラムは、図１７で示される構成のいずれを選択すべきであるか支援するために必要なデータ解析処理を実行する。以下では、管理サーバ５０５で実行される前記構成変更支援プログラムが、ＳＭＰサーバ５０２に対して図１８に示したフローチャートに従って計算機システム５００の性能解析をし、管理サーバ５０５を操作するシステム管理者に対してシステム構成案を提案するまでの動作説明をする。
【０１１５】
Ａ．２：事前準備、基本特性データベースの作成
システム管理者は、図１７に示すようなＳＭＰサーバを構成するノード数と物理メモリ空間の配置の違いを表すメモリアクセスモードの組み合わせで、予めベンチマークプログラムとパフォーマンスモニタで計測したメモリレイテンシのヒストグラムを調査する。このとき、メインメモリ（主記憶）５のレイテンシだけでなく、Ｉ／Ｏデバイスが発行したメインメモリ５からＩ／ＯデバイスへのＤＭＡリードのレイテンシの影響を考慮する場合は、ＤＭＡによる主記憶リードのヒストグラムを採取する。以下ではメインメモリ５のレイテンシを考慮するケースのみを扱う。なお、以下の説明では図１８のフローチャートを参照しながら説明する。
【０１１６】
Ａ．３：評価対象システム
計算機システム５００で、評価対象であるＳＭＰサーバ５０２上でアプリケーションプログラム（実業務プログラムやベンチマークなど）を実行する（図１８のステップ４００）。
【０１１７】
Ａ．４：ヒストグラムの計測
次に、管理サーバ５０５上で稼動する構成変更支援プログラムはＳＶＰ５０３を通して、前記アプリケーションプログラムが稼動中にＳＭＰサーバ５０１を構成する各ノード５０１−１、…、５０１−ｋにパフォーマンスモニタ１１の操作コマンドを送り、メモリレイテンシのヒストグラムを測定する。
【０１１８】
操作コマンドは、採取するトランザクションタイプやパフォーマンスモニタ１１の開始及び停止等を、図２のメモリマップドレジスタ１０６に、調査するトランザクションタイプをトランザクションタイプレジスタ１０８に設定し、パフォーマンスモニタ１１の開始及び停止を指示するための値をイネーブルレジスタ１０７等に設定する。パフォーマンスモニタ１１の測定結果は、図２のレジスタファイル１１８に書き込まれているので、管理サーバ５０５は、ＳＶＰ５０３を通して図２のリードアドレスレジスタ１０９に設定されたアドレスと、レジスタファイル１１８の読み出しアドレスを書き込み、レジスタファイル１１８から読み出されたデータを度数レジスタ１１０から順次読み出す。この読み出しデータを元に管理サーバ５０５の前記構成変更支援プログラムが、メモリアクセス特性を表すヒストグラムを作成する（図１８のステップ４０１）。
【０１１９】
例えば、ヒストグラムのグラフの形状が急峻な山でなくなだらかに広がっている場合は、メインメモリ５あるいはＣＰＵバス４のビジー（使用）率が高いことが原因の一つと考えられる。この場合は、メモリアクセスモードをＮＵＭＡからインタリーブモードにしたり、ＳＭＰサーバを構成するノード数を増やしてメモリアクセスの分散を図ったりする構成変更案が考えられる。また、ＯＳのモニタが計測するＣＰＵ使用率などの性能統計情報も同時に考慮して構成変更案を考えることも可能である。
【０１２０】
Ａ．５：メモリアクセス特性の解析
次に、基本特性データベースのヒストグラムとステップ４０１で作成したヒストグラムを比較し、アプリケーションプログラムの特性を、上述の＜メモリアクセス特性の解析方法＞で図１２、図１３を使って説明した方法で、メモリアクセスのアクセスがローカルノードに集中しているかリモートノードに多く行っているのか、アクセスの頻度が高いか低いかなどを解析する。（図１８のステップ４０２）。
【０１２１】
Ａ．６：システム構成案の表示
上記図１８のステップ４００からステップ４０２までの処理で、管理サーバ５０５の表示装置（図示省略）には図１５のメッセージが表示され、システムのメモリアクセス特性が表示される。図１５の表示は、ステップ４０２の解析結果に基づいて、管理サーバ５０５の構成変更支援プログラムがローカルメモリとリモートメモリのアクセス頻度（図中Locality）と負荷の測定結果を集計したものである。この例では、ローカルメモリへのアクセス頻度が高く、また、負荷も高いことを示し、逆にリモートメモリのアクセス頻度は低く、かつ、負荷も低いことを示している。
【０１２２】
次に、図１８のステップ４０３では、ステップ４０２で得られたメモリアクセス特性から、図１９の対応表を検索し、システム構成案を選択し、システム構成案を管理サーバ５０５の表示装置上に図２０で示すような提案を表示する。図１９は、計算機システムのアーキテクチャと、パフォーマンスモニタ１１が測定したメモリのアクセス特性に対応する構成の変更案が予め設定されたもので、例えば、構成変更支援プログラムで予め設定したテーブルとして管理サーバ５０５に設定される。
【０１２３】
今回のパフォーマンスモニタ１１による測定結果から、図１５のように、ローカルメモリへアクセスが集中し、リモートメモリのアクセスは少ないことから、変更案としては図１９の「ＮＵＭＡ、アクセス集中」の変更案「ＤＩＭＭの枚数を増加させメモリのチャネル数を増やす。または、インタリーブモードに変更。」と、「ＮＵＭＡ、ローカルアクセス大、リモートアクセス微少」の変更案「プログラムがクラスタ化に対応していればクラスタ構成に変更する。」を構成変更支援プログラムが選択し、図２０で示すように表示する。
【０１２４】
Ａ．７：システム構成変更
図２０で示した構成案を元に、システム管理者はサーバのノード数やメモリアクセスモードを変更する。
（１）ＳＭＰサーバ５０２のアプリケーションプログラムのシャットダウン及びＯＳのシャットダウン。
（２）管理サーバ５０５からＳＶＰ５０３（図１のＳＶＰ１５）にブレードサーバ数の変更、メモリアクセスモードの設定コマンドを発行する。前記設定コマンドの入力でＳＶＰ５０３は、各ノードのＢＭＣ１０を経由してノードコントローラ６のコンフィグレーションレジスタ（図示省略）に、ＳＭＰサーバ５０２を構成するノードを有効化、ＮＵＭＡ等の設定を行う。
（３）ＯＳを再起動。アプリケーションプログラムを起動する。このとき、ノードの追加あるいは削除によりＣＰＵ数やメモリ量が変わっているので、アプリケーションプログラムのＣＰＵ数やメモリ量の設定を変更する。この変更はシステム管理者が手動でチューニングするか、あらかじめノード数などハードウェア構成ごとの設定パタンを用意して、自動的に設定を入れ替えるようにしてもよい。
【０１２５】
一方、図１９の変更案でクラスタ構成を推薦された場合、アプリケーションプログラムが複数のＯＳインスタンス上で別々に稼働することになる。そのため、アプリケーションプログラムがクラスタ化したシステムに対応するように変更しなければならない。例えば、データベースマネージメントシステムの場合は、データベースのデータ分割等変更をする必要がある。また、構成変更したシステムに接続するアプリケーションサーバやＷｅｂサーバ等の設定も変更する必要がある。
【０１２６】
以上のように、本発明では、パフォーマンスモニタ１１がハードウェアで測定したメモリレイテンシのヒストグラムによって、内部構造を変更することができないＣＰＵ３−１〜３−Ｍや、コーディングの最適化を行うことのできないアプリケーションプログラムの性能のボトルネックが、メモリやチップセットであるか否かを迅速に判定することが可能となる。
【０１２７】
また、パフォーマンスモニタ１１は、ノードコントローラ（チップセット）６のハードウェアで性能測定を実行するので、ＣＰＵ３−１〜３−Ｍのリソースを使用する必要がない。このため、サーバなどの計算機の性能情報を採取する際に、性能情報を取得するソフトウェアが、測定対象のアプリケーションからＣＰＵ時間などのリソースを奪ってしまうのを防止でき、測定対象とするシステムに評価の為の負荷が加わるのを防いで精度の高い性能測定を実現できるのである。
【０１２８】
さらに、実際のアプリケーションでのワークロードに適合したシステム構成を、メモリレイテンシの測定を基準にして自動的にシステム管理者に提案することができ、システム管理者の判断を支援することができ、迅速かつ有効なシステム変更を実現することが可能となる。特に、多数のノードや多数のＣＰＵを備えた計算機システムでは、アプリケーション毎のメモリアクセスの特性に応じた構成を提供することが可能となって、計算機システムのリソースを効率よく利用することが可能となる。
【０１２９】
＜第２実施形態＞
図２１は、第２の実施形態を示し、前記第１実施形態の計算機システム１のノード２−１〜２−Ｎに代わって、ブレードサーバ５０−１〜５０−Ｎとして、ブレードサーバ５０−１〜５０−Ｎにそれぞれ設けたノードコントローラ５６で性能測定を行うようにしたものである。その他の構成は前記第１実施形態と同様である。
【０１３０】
前記第１実施形態の計算機システムは、多数のノードから構成される計算機システムを物理的に分割するケースであったが、逆に、小規模の計算機システムを基本構成にした例を説明する。
【０１３１】
図２１は、本発明のハードウェアモニタを実装したブレードサーバの一例を示すブロック図である。
【０１３２】
計算機システム１Ａは、複数のブレードサーバ５０−１、５０−２、…、５０−Ｎ（Ｎは１以上の整数）とＩ／Ｏボード（またはＩ／Ｏブレード）６０と、ブレードサーバ５０−１〜５０−Ｎを相互に接続するバックプレーンボード６６から構成され、すべて同様のユニットから構成される。以下では、ブレードサーバ５０−１を例にして構成について説明する。
【０１３３】
ブレードサーバ５０−１は、複数のＣＰＵ５１−１〜５１−Ｍ（Ｍは１以上の整数）、メインメモリ５２、Ｉ／Ｏブリッジ５３、ネットワークインタフェース５４、チップセット５６（以下、ノードコントローラ５６と呼ぶことにする）、ボードマネジメントコントローラ５５（以降、ＢＭＣと略す）から構成される。
【０１３４】
Ｉ／Ｏボード６０には、ストレージ装置６２−１〜６２−Ｎに接続されたＩ／Ｏインタフェース６１−１、６１−２、…、６１−Ｎと、管理コンソール６５に接続されたＳＶＰ６４が搭載されている。これらのＩ／Ｏインターフェース６１−１〜６１−Ｎは、それぞれブレードサーバ５０−１〜５０−ＮのＩ／Ｏブリッジ５３に接続されて、ＣＰＵ５１−１〜５１−ＭからのＩ／Ｏアクセスを受け付ける。
【０１３５】
バックプレーンボード６６には、内蔵ＬＡＮ６７とＳＭＰリンク６８が搭載されている。内蔵ＬＡＮ６７は各ブレードサーバ５０−１〜５０−Ｎを相互に接続し、ＳＭＰリンク６８は、各ブレードサーバ５０−１〜５０−Ｎのノードコントローラ５６同士を接続してＳＭＰ（Symmetric Multiple Processor）サーバの構成を可能にする。
【０１３６】
Ｉ／Ｏブリッジ５３は、Ｉ／Ｏボード６０に搭載されたＩ／Ｏインタフェース６１−１に接続されている。Ｉ／Ｏインタフェース６１−２〜６１−Ｎは、同様に、ブレードサーバ５０−２、…、５０−ＮのＩ／Ｏブリッジ（図示省略）と接続されている。ＢＭＣ５５は、Ｉ／Ｏボード６０に搭載されたＳＶＰ６４に接続されている。同様にブレードサーバ５０−２、…、５０−ＮのＢＭＣ（図示せず）は、ＳＶＰ６４に接続されている。ＳＶＰ６４は、管理コンソール６５に接続されている。
【０１３７】
Ｉ／Ｏインタフェース６１、６１−２〜６１−Ｎは、ストレージ装置６２−１、６２−２、…、６２−Ｎとそれぞれ接続されている。ただし、ストレージ装置の代わりに、ネットワーク等のＩ／Ｏ装置を用いるようにしてもよい。
【０１３８】
ブレードサーバ５０−１に搭載されているノードコントローラ５６のトランザクション処理ユニット５７は、ＳＭＰリンク６８と接続されている。同様に、ブレードサーバ５０−２、…、５０−Ｎのトランザクション処理ユニット（図示せず）は、ＳＭＰリンク６８と接続されている。
【０１３９】
ブレードサーバ５０−１に搭載されているネットワークインタフェース５４は、内蔵ＬＡＮ６７と接続されている。同様に、ブレードサーバ５０−２、…、５０−Ｎのネットワークインタフェース（図示せず）は、計算機システム１Ａの内蔵ＬＡＮ６７と接続されている。
【０１４０】
ノードコントローラ５６は、トランザクション処理ユニット５７とトランザクション処理制御ユニット５８とパフォーマンスモニタ５９から構成され、これらはノードコントローラ５６の中で相互に接続されている。トランザクション処理制御ユニット５８は、ＢＭＣ５５と接続されている。
【０１４１】
なお、計算機システム１Ａを構成するＣＰＵ５１−１〜５１−Ｍと、メインメモリ５２、ノードコントローラ５６と、ＢＭＣ５５及び管理コンソール６５は、それぞれ前記第１実施形態のＣＰＵ３−１〜３−Ｍ、メインメモリ５、ノードコントローラ６、ＢＭＣ１０及び管理コンソール１６と同様の構成である。また、ノードコントローラ５６のパフォーマンスモニタ５９、トランザクション処理ユニット５７と、トランザクション処理制御ユニット５８は、第１実施形態の図２に示したノードコントローラ６のパフォーマンスモニタ１１と、トランザクション処理ユニット８と、トランザクション処理制御ユニット９と同一の構成である。
【０１４２】
＜動作概要＞
以下に、ブレードサーバ５０−１〜５０−ＮのＣＰＵ５１−１〜５１−Ｍによる通常のメモリアクセス動作及び管理コンソール６５から計算機システム１Ａへのアクセスについて説明する。なお、以下の説明では、ＣＰＵ５１−１〜５１−Ｍは同一の構成、動作であるので、ＣＰＵ５１−１のみについて説明し、他のＣＰＵの説明は省略する。
【０１４３】
ＣＰＵ５１−１が内蔵するキャッシュメモリ（図示省略）に必要なデータが存在しない場合、メインメモリ５２に必要なデータを取りに行く為、メモリアクセス要求をＣＰＵバス６９に発行する。同一ＣＰＵバス６９に接続された他のＣＰＵのキャッシュに要求するデータが存在する場合は、ＣＰＵ間でＣＰＵバス６９を介してデータが転送される。同一ＣＰＵバス６９上にデータが存在しない場合は、当該メモリアクセス要求はノードコントローラ５６内部のトランザクション処理ユニット５７に発行される。
【０１４４】
トランザクション処理ユニット５７は、メインメモリ５２にメインメモリ読出しの要求を転送する。メインメモリ５２読み出されたデータは、トランザクション処理ユニット５７とＣＰＵバス６９を介して、メモリアクセス要求発行元のＣＰＵ５１−１に転送される。
【０１４５】
システム管理者は、管理コンソール６５からＳＶＰ６４に対して、システムのリセット、立ち上げ等の要求を発行する。ＳＶＰ６４は、これらの要求を対象となるブレードサーバ５０−１〜５０−ＮのＢＭＣ５５に伝える。ＢＭＣ５５は、トランザクション処理制御ユニット９に対して前記要求を転送する。そして、トランザクション処理制御ユニット５８は、トランザクション処理ユニット５７及びパフォーマンスモニタ５９の初期化や動作モード変更の為のメモリマップドレジスタ１０６（図２参照）へのデータの読み書きを行い、システムの初期化や動作モードの切り替えを行う。
【０１４６】
各ブレードサーバ５１−１〜５１−Ｍは、それぞれ別々のサーバとして運用するものであるが、本発明でのブレードサーバは、ＳＶＰ６４からの設定コマンドで、一個の計算機システムとして動作するように設定できる。つまり、第１の実施形態のクロスバスイッチ１４の役目をＳＭＰリンク６８が実行するとみなせばよい。複数のブレードサーバ５１−１〜５１−Ｍを一個のＳＭＰ（Ｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉ  Ｐｒｏｃｅｓｓｏｒ）サーバとして運用する場合のメモリアクセス動作は、前記第１の実施形態の＜パフォーマンスモニタの動作＞及び＜メモリアクセス特性の検証方法＞に記載した動作と同じ動作である為、説明は省略する。
【０１４７】
次に、性能の測定対象とする計算機システム１Ａの複数のブレードサーバ５０−１〜５０−Ｎを、一つのＳＭＰサーバに構成変更できるようにしたサーバの構成変更支援システムについて図２２を参照しながら以下に説明する。
【０１４８】
Ｂ．１：システム概略
図２２は、前記図２１のブレードサーバ５０−１〜５０−Ｎからなる計算機システム１Ａの構成を変更可能にした構成変更システムを示す。
【０１４９】
図２２において、計算機システム６００は、ブレードサーバ６０１−１、６０１−２、…、６０１−Ｎ（図２１のブレードサーバ５０−１、…、５０−Ｎに相当）とＩ／Ｏボード６０７（図２１のＩ／Ｏボード６０）上に搭載されたＳＶＰ６０３（図２１のＳＶＰ６４に相当）とマネージメントサーバ６０５（図２１の管理コンソール６５に相当）から構成されている。ＳＶＰ６０３と管理サーバ（Ｍａｎａｇｅｍｅｎｔ  Ｓｅｒｖｅｒ）６０５はＬＡＮ６０４で接続されている。各ブレードサーバはバックプレーンボード６０８（図２１のバックプレーンボード６６に相当）で相互接続されている。また、図２１で示したように、バックプレーンボード６６上に搭載されているＳＭＰリンク６８で各ブレードを接続している。ＳＭＰリンク６８は、ブレード間を接続する内部ネットワークで、基板上の配線として実装されているケースと、図１のクロスバスイッチ１４と等価なクロスバスイッチが実装されているケースがある。
【０１５０】
ブレードサーバ５０−１〜５０−Ｎ上のノードコントローラ５６には、メインメモリ５２の空間上にマッピングされているコンフィグレーションレジスタ（図示省略）が実装されている。前記コンフィグレーションレジスタは、ＳＶＰ６４からアクセス出来、ブレードサーバ５０−１、…、５０−Ｎの各ノードコントローラ５６に対して、メモリアクセス要求トランザクションを送受信するブレードサーバを設定できる。この機構を用いて図２２では、ブレードサーバ６０１−１、６０１−２、…、６０１−ｋを一台のＳＭＰサーバ６０２として運用している。
【０１５１】
更に、前記コンフィグレーションレジスタの設定でメモリアクセスをインタリーブモードかＮＵＭＡモードか選択できるようになっている。
【０１５２】
更に、ブレードサーバ６０１−ｋ＋１、…、６０１−Ｎから別のＳＭＰサーバを構成、あるいは個別のブレードサーバとして運用し、複数のＳＭＰサーバを運用するケースが考えられるが、一台のＳＭＰサーバ６０２を運用するケースから他のケースを容易に類推することができるため、以下では、一台のＳＭＰサーバ６０２のみを運用するケースを扱う。
【０１５３】
管理サーバ６０５は、Ｔｅｌｎｅｔターミナルエミュレータプログラム等でＳＶＰ６０３にＴｅｌｎｅｔ接続している。このＴｅｌｎｅｔ接続を通して管理サーバ６０５からＳＶＰ６０３にブレードサーバ６０１−１〜６０１−Ｎの管理用コマンドを送る。この管理コマンドには、サーバの電源をＯＮ／ＯＦＦするコマンドや、どのブレードサーバをＳＭＰ接続するか、メモリアクセスをＮＵＭＡにするのかインタリーブにするのか構成を決定するコマンドが含まれている。
【０１５４】
更に、管理サーバ６０５は、基本特性データベース５０６を管理している。更に、管理サーバ６０５では、構成変更支援プログラム（図示省略）が動作しており、この構成変更支援プログラムは、前記第１実施形態の図１７で示される構成のいずれを選択すべきであるか支援するために必要なデータ解析処理を実行する。以下では、前記構成変更支援プログラムが、ＳＭＰサーバ６０２に対して図１８に示したフローチャートに従って計算機システム６００の性能解析を行い、管理サーバ６０５を操作するシステム管理者に対してシステム構成案を提案するまでの動作説明をする。
【０１５５】
Ｂ．１：事前準備、基本特性データベースの作成
システム管理者は、図１７に示すようなＳＭＰサーバを構成するブレードサーバ数と物理メモリ空間の配置の違いを表すメモリアクセスモードの組み合わせで、予めベンチマークプログラムとパフォーマンスモニタで計測したメモリレイテンシのヒストグラムを調査する。このとき、メインメモリ（主記憶）５２のレイテンシだけでなく、Ｉ／Ｏデバイスが発行した主記憶からＩ／ＯデバイスへのＤＭＡリードのレイテンシの影響を考慮する場合は、ＤＭＡによる主記憶リードのヒストグラムを採取する。以下ではメインメモリ５２のレイテンシを考慮するケースのみを扱う。なお、以下の説明では前記第１実施形態に示した図１８のフローチャートを参照しながら説明する。
【０１５６】
Ｂ．２：評価対象システム
評価対象であるＳＭＰサーバ６０２上でアプリケーションプログラム（実業務プログラムやベンチマークなど）を実行する（図１８のステップ４００）。
【０１５７】
Ｂ．３：ヒストグラムの計測
次に、管理サーバ６０５上で稼動する構成変更支援プログラムはＳＶＰ６０３を通して、前記アプリケーションプログラムが稼動中にＳＭＰサーバ６０２を構成する各ブレードサーバ６０１−１、…、６０１−ｋにパフォーマンスモニタ（図２１のパフォーマンスモニタ５９）の操作コマンドを送り、メモリレイテンシのヒストグラムを測定する。
【０１５８】
操作コマンドは、採取するトランザクションタイプやパフォーマンスモニタの開始及び停止等を、図２のメモリマップドレジスタ１０６に、調査するトランザクションタイプをトランザクションタイプレジスタ１０８に設定し、パフォーマンスモニタ１１の開始及び停止を指示するための値をイネーブルレジスタ１０７等に設定する。パフォーマンスモニタ１１の測定結果は、図２のレジスタファイル１１８に書き込まれているので、管理サーバ６０５は、ＳＶＰ６０３を通して図２のリードアドレス１０９にレジスタファイル１１８の読み出しアドレスを書き込み、レジスタファイル１１８から読み出されたデータを度数レジスタ１１０から順次読み出す。この読み出しデータを元に管理サーバ６０５の前記構成変更支援プログラムが、メモリアクセス特性を表すヒストグラムを作成する（図１８のステップ４０１）。
【０１５９】
Ｂ．４：メモリアクセス特性の解析
次に、基本特性データベースのヒストグラムとステップ４０１で作成したヒストグラムを比較し、アプリケーションプログラムの特性を、前記第１実施形態の＜メモリアクセス特性の解析方法＞で図１２、図１３を使って説明した方法で、メモリアクセスのアクセスがローカルノードに集中しているかリモートノードに多く行っているのか、アクセスの頻度が高いか低いかなどを解析する。（図１８のステップ４０２）。
【０１６０】
例えば、ヒストグラムのグラフの形状が急峻な山でなくなだらかに広がっている場合は、メモリあるいはＣＰＵバスのビジー率が高いことが原因の一つと考えられる。この場合は、メモリアクセスモードをＮＵＭＡからインタリーブモードにしたり、ＳＭＰサーバ６０２を構成するブレード数を増やしてメモリアクセスの分散を図ったりする構成変更案が考えられる。また、ＯＳが計測するＣＰＵ使用率などの性能統計情報も同時に考慮して構成変更案を考えることも可能である。
【０１６１】
Ｂ．５：システム構成案の表示
図１８のステップ４００からステップ４０２までの処理で、管理コンソール６０５には前記第１実施形態と同様の図１５のメッセージが表示され、システムのメモリアクセス特性が表示される。
【０１６２】
ステップ４０３では、上記ステップ４０２で得られたメモリアクセス特性から、図１９の対応表を検索し、システム構成案を選択し、システム構成案を管理サーバ６０５の表示装置上に前記第１実施形態で示した図２０で示すような提案を表示する。
【０１６３】
Ｂ．６：システム構成変更
図２０で示した構成案を元に、システム管理者はサーバのブレードサーバ数やメモリアクセスモードを変更する。
（１）ＳＭＰサーバ６０２のアプリケーションプログラムのシャットダウン及びOSのシャットダウン。
（２）管理サーバ６０５からＳＶＰ６０３（図１のＳＶＰ１５）にノード数変更、メモリアクセスモードの設定コマンドを発行する。前記設定コマンドの入力でＳＶＰ１５は、各ノードのＢＭＣ１０を経由してノードコントローラ６のコンフィグレーションレジスタ（図示無し）に、ＳＭＰサーバ６０２を構成するノードを有効化、ＮＵＭＡ等の設定を行う。
（３）ＯＳを再起動。アプリケーションプログラムを起動する。このとき、ノードの追加あるいは削除によりＣＰＵ数やメモリ量が変わっているので、アプリケーションプログラムのＣＰＵ数やメモリ量の設定を変更する。この変更はシステム管理者が手動でチューニングするか、あらかじめノード数などハードウェア構成ごとの設定パタンを用意して、自動的に設定を入れ替えるようにしてもよい。一方、図１９の変更案でクラスタ構成を推薦された場合、アプリケーションをクラスタ化に対応するように変更しなければならない。例えば、データベースマネージメントシステムの場合は、データベースのデータ分割や、接続するアプリケーションサーバやＷｅｂサーバ側の設定も変更する場合もある。
【０１６４】
＜第３実施形態＞
図２３は第３の実施形態を示し、図２に示したパフォーマンスモニタ１１が測定するレイテンシの範囲や間隔を任意に設定し、測定の自由度を向上させるものである。
【０１６５】
前記第１実施形態に示した図２のパフォーマンスモニタ１１に、図２３で示す回路を追加することで、測定するレイテンシの範囲や間隔を任意に設定してレイテンシ計測の自由度を増やすことができる。なお、図２３では、パフォーマンスモニタ１１のレジスタファイル１１７〜レジスタファイル１１８の部分のみを示し、その他の構成については前記第１実施形態の図２と同様である。また、前記第１実施形態の図２と同一のものに同一の符号を付した。
（１）回路の概略
図２３の回路の概略を説明する。レジスタファイル１１７の読み出しデータと、フリーランカウンタ１１９の出力は減算器１２０に入力される。減算器１２０の出力（＝フリーランカウンタ１１９の値−レジスタファイル１１７の読み出しデータ）は、減算器７０４に出力されている。
【０１６６】
また、メモリマップドレジスタとして、ベースレジスタ７０５と、測定レンジレジスタ７０８を追加する。ベースレジスタ７０５の値は、減算器７０４と比較器７０５に入力される。減算器７０４では、減算器１２０の出力値からベースレジスタ７０５の値を引いた値が出力される。比較器７０５では、ベースレジスタ７０５の値が減算器１２０の出力値以上であれば“１”を出力し、そうでなければ“０”を出力する。
【０１６７】
測定レンジレジスタ７０８の値は、シフタ７１０とパタンジェネレータ７０７に入力される。パタンジェネレータ７０７は、図２４に示したテーブルでシフト幅「ｂｉｔ」と上界値（ＵＰＰＥＲ  ＢＯＵＢＮＤ）の関係に基づいて上界値を生成する。パタンジェネレータ７０７で生成された上界値は上界値レジスタ７０６に格納される。上界値レジスタ７０６の値はセレクタ７０９と比較器７０６に入力される。比較器７０６では、減算器１２０の出力値が上界値レジスタ７０６よりも大きな値であれば、“１”を、そうでなければ“０”を出力する。
【０１６８】
セレクタ７０９には、減算器７０４と比較器７０５とオール“０”の値が入力され、比較器７０５と比較器７０６の入力パタンで、前記３入力のうち一つが選択され、シフタ７１０に入力される。シフタ７１０は、測定レンジレジスタ７０８に格納されているシフト幅（図２４）だけ右シフトされ、レジスタファイル７０１の書き込みアドレス入力に入力される。
【０１６９】
セレクタ７０９では、図２５に示した真理値表に従って入力信号を選択する。図２５のＢＳは比較器７０５の出力で、ＵＢは比較器７０６の出力である。セレクタ７０９は、ＢＳとＵＳの値に応じて図２５の「ＳＥＬＥＣＴ」欄の端子の信号を選択するもので、「Ａ」の場合では減算器７０４の出力を選択し、「Ｂ」の場合には上界値レジスタ７０６の値を選択し、「Ｃ」であれば固定値の「０」を選択する。
【０１７０】
以上の回路によって計測されたヒストグラムの例を図２６に示す。図２６の横軸８００は、メモリレイテンシの大きさであり、例えばパフォーマンスモニタ１１の動作するクロックで計測したサイクル数を示している。縦軸８０１は、それぞれのレイテンシの発生頻度を表しており、例えばメモリアクセストランザクション数を示している。ベース（ＢＡＳＥ）８０２はベースレジスタ７０５に格納されている数値であり、ＵＰＰＥＲ  ＢＯＵＮＤ８０５は、上界値レジスタ７０６に格納されている数値である。測定対象のレイテンシ８０４は、ＢＡＳＥ８０２からＵＰＰＥＲ  ＢＯＵＮＤ８０３までである。測定するレイテンシの間隔８０５は、測定レンジレジスタ７０８に格納されている数値で与えられる。
（２）追加回路動作例
（２−１）計測レンジの変更
測定可能なレイテンシの観測範囲とシフト幅の関係を図２４に示す。減算器１２０の出力であるメモリレイテンシのデータをシフタ７１０で右シフトすることで、計測可能なレイテンシの幅が変更できる。例えば、レジスタファイル７０１が１２８エントリある場合、０サイクルから１２７サイクルのレイテンシまで測定可能である。
【０１７１】
ここで、１ビット右シフトすることで、一つのエントリに格納されるレイテンシの幅が２サイクル分に広がり（図２４の測定レンジ列を参照）、全体として０サイクルから２５５サイクルまでのレイテンシの測定が可能となる。また、２ビット右シフトすることで、一つのエントリに格納されるレイテンシの幅が４サイクル分になり（図２４の測定レンジ列を参照）、全体として０サイクルから２５５サイクルまでのレイテンシの測定が可能となる。この右シフトするビット数は、測定レンジレジスタ７０８に設定される。
【０１７２】
観測範囲の最大値を超えるレイテンシの発生数を調査するときは、各レンジでの上界値（図２４参照）を超えたレイテンシは測定範囲の最大値のエントリの数値としてカウントするという対処も可能である。例えば、シフト幅が０ｂｉｔのとき、１２８サイクル以上のレイテンシはすべて１２７サイクルとみなしてカウントするということである。これは、比較器７０６の追加とセレクタ７１０の選択判定を図２５のようにすることで実現できる。
（２−２）測定する範囲の変更
観測範囲の最小測定値が０サイクルではなく、特定のサイクル数（以降、ベースサイクル数と呼ぶ）から測定したいケースもある。この場合、ベースサイクル数を測定開始前にベースレジスタ７０５に設定しておき、減算器１２０の出力にもう一つの減算器７０４を接続してベースサイクル数とレイテンシの差分をとることで測定対象とするレイテンシのサイクル数を変更できる。例えば、ベースサイクル数（＝ベースレジスタ７０５の値）を２５５と設定することで、０サイクルから２５５サイクルの測定範囲が２５５サイクルから５１１サイクルに測定する範囲変更できる。このとき、上記（２−１）で述べたように２５４サイクル以下のレイテンシの発生数を調査したい場合、ベースレジスタ７０５より小さいレイテンシを２５５サイクルの測定値としてカウントすることで対処ができる。これは、比較器７０５の追加とセレクタ７１０の選択判定を図２５のようにすることで実現できる。
【０１７３】
このように、測定するレイテンシの範囲と、レイテンシの間隔を任意に選択することで、性能を測定する対象を絞り込むことができる。例えば、ローカルメモリのレイテンシを重点的に測定したり、あるいは、リモートメモリのレイテンシを重点的に測定することが可能となるのである。
【０１７４】
なお、上記各実施形態において、ＣＰＵバス４と、メモリチャネル（メモリバス）１２４とを接続するノードコントローラ６、５６にパフォーマンスモニタ１１を配置した例を示したが、これに限定されるものではない。例えば、ＣＰＵとメモリコントローラを一体にしたプロセッサの場合には、メモリコントローラに本発明のパフォーマンスモニタ１１を設けるようにすればよい。
【０１７５】
＜捕捉＞
少なくとも１つのＣＰＵと、前記ＣＰＵとメモリ及びＩ／Ｏインターフェースを接続するコントローラにおいて、
前記コントローラは、
前記メモリに対するアクセス要求を受け付けると、当該メモリアクセス要求に対する応答時間を測定する応答時間測定部と、
前記メモリアクセス要求の発行回数を測定する度数カウント部と、
前記応答時間に対応する前記発行回数とを関連づけた測定結果を格納する測定結果記憶部と、
前記測定結果の読み出し要求があったときには、前記測定結果記憶部に格納された測定結果を出力する測定結果制御部と、
を備えたことを特徴とするコントローラ。
【０１７６】
または、少なくとも１つのＣＰＵと、前記ＣＰＵとメモリを接続するコントローラにおいて、
前記コントローラは、
前記メモリに対するアクセス要求を受け付けると、当該メモリアクセス要求に対する応答時間を測定する応答時間測定部と、
前記メモリアクセス要求の発行回数を測定する度数カウント部と、
前記応答時間に対応する前記発行回数とを関連づけた測定結果を格納する測定結果記憶部と、
前記測定結果の読み出し要求があったときには、前記測定結果記憶部に格納された測定結果を出力する測定結果制御部と、
を備えたことを特徴とするコントローラ。
【産業上の利用可能性】
【０１７７】
以上のように、本発明は性能情報を取得する必要がある計算機システムに適用することができ、特に、取得した性能情報に基づいてノードやサーバブレードの構成を変更可能なクラスタサーバやブレードサーバに適用することができる。また、ＣＰＵとメモリを接続するコントローラに適用することができる。
【図面の簡単な説明】
【０１７８】
【図１】本発明の第１の実施形態を示し、物理分割可能な計算機システムのブロック図。
【図２】ノードコントローラの構成を示すブロック図。
【図３】ノードコントローラのパフォーマンスモニタで実行される処理の一例を示すフローチャート。
【図４】図３のステップ０で行われる処理の一例を示すフローチャート。
【図５】メモリレイテンシの測定の様子を示すブロック図で、（ａ）はメモリアクセス要求トランザクションの開始時のＣＡＭとレジスタファイル１１７の様子を示し、（ｂ）は応答トランザクションのＣＡＭ、レジスタファイル１１７、１１８の様子を示す。
【図６】図３のステップ１で行われる処理の一例を示すフローチャート。
【図７】図３のステップ２で行われる処理の一例を示すフローチャート。
【図８】図３のステップ３で行われる処理の一例を示すフローチャート。
【図９】メモリレイテンシとアクセス頻度の測定結果の一例を示し、管理コンソールでヒストグラムとして出力した場合の説明図。
【図１０】計算機システムの固有の性能情報（基本特性データベース）を測定する事前検証フェーズの手順を示すフローチャート。
【図１１】基本特性データベースの一例を示す説明図。
【図１２】計算機システムで実行するアプリケーションの性能情報を測定する実計測フェーズの手順を示すフローチャート。
【図１３】基本特性データベースと測定結果のアプリケーション。
【図１４】メモリレイテンシと負荷の関係を示すヒストグラム。
【図１５】メモリレイテンシの測定結果を管理コンソールで表示した場合の画面イメージ。
【図１６】ノードの構成を変更可能にした計算機システムのブロック図。
【図１７】構成変更の一例を示す説明図。
【図１８】構成変更支援の処理の一例を示すフローチャート。
【図１９】構成変更支援の変更案を示すテーブル。
【図２０】メモリレイテンシの測定結果に基づく構成変更案を管理コンソールで表示した場合の画面イメージ。
【図２１】第２の実施形態を示し、ブレードサーバで構成された計算機システムのブロック図。
【図２２】同じく、第２の実施形態を示し、ノードの構成を変更可能にした計算機システムのブロック図。
【図２３】第３の実施形態を示し、ノードコントローラの一部を示すブロック図。
【図２４】同じく、第３の実施形態を示し、観測範囲と測定レンジとシフト幅及び上界値の関係を示すテーブル。
【図２５】同じく、第３の実施形態を示し、セレクタ７０９の動作を規定した真理テーブル。
【図２６】同じく、第３の実施形態を示し、メモリレイテンシと負荷の関係を示すヒストグラム。
【符号の説明】
【０１７９】
１  計算機システム
２−１〜２−Ｎ  ノード
３−１〜３−Ｍ、５１−１〜５１−Ｍ  ＣＰＵ
５、５２  メインメモリ
６、５６  ノードコントローラ（チップセット）
８、５７  トランザクション処理ユニット
９、５８  トランザクション処理制御ユニット
１１、５９  パフォーマンスモニタ
１６、６５  管理コンソール
５０−１〜５０−Ｎ    ブレードサーバ
１０５  パフォーマンスモニタ制御ユニット
１０６  メモリマップドレジスタ
１０７  イネーブルレジスタ
１０８  トランザクションタイプレジスタ
１０９  リードアドレスレジスタ
１１０  度数レジスタ
１１１  メモリアクセス要求トランザクションレジスタ
１１２  メモリアクセス応答トランザクションレジスタ
１１３、１１４  セレクタ
１１５  ＣＡＭ
１１６  ＣＡＭ書き込み制御ユニット
１１７、１１８  レジスタファイル
１１９  フリーランカウンタ
１２０  減算器
１２１  ＡＮＤゲート
１２２  インクリメンタ
【図１】
2008071237.tif 000003
【図２】
2008071237.tif 000004
【図３】
2008071237.tif 000005
【図４】
2008071237.tif 000006
【図５】
2008071237.tif 000007
【図６】
2008071237.tif 000008
【図７】
2008071237.tif 000009
【図８】
2008071237.tif 000010
【図９】
2008071237.tif 000011
【図１０】
2008071237.tif 000012
【図１１】
2008071237.tif 000013
【図１２】
2008071237.tif 000014
【図１３】
2008071237.tif 000015
【図１４】
2008071237.tif 000016
【図１５】
2008071237.tif 000017
【図１６】
2008071237.tif 000018
【図１７】
2008071237.tif 000019
【図１８】
2008071237.tif 000020
【図１９】
2008071237.tif 000021
【図２０】
2008071237.tif 000022
【図２１】
2008071237.tif 000023
【図２２】
2008071237.tif 000024
【図２３】
2008071237.tif 000025
【図２４】
2008071237.tif 000026
【図２５】
2008071237.tif 000027
【図２６】
2008071237.tif 000028