(57)【要約】【課題】ソフトウェアによる遅延は限界がある。ソースコードがないケースや、いろいろなアプリケーションが複雑に組み合わさっているケースですべてに遅延を入れ込むことは困難である。また、特定のソフトウェアにだけ遅延を入れた場合、データの不一致などシステムの不具合を起こす危険性がある。【解決手段】業務サーバ２で比較的自由な変動幅でサーバのメモリレイテンシを大きくすることを可能にすることで、サーバ全体の性能を期待する性能に調節できるようにする。クライアント１で観測される応答時間と業務サーバ２の稼動状態とメモリレイテンシと応答時間の相関関係から適当なメモリレイテンシの遅延サイクル数を計算し、業務サーバ２のメモリレイテンシを変更する管理サーバ４を設ける。【選択図】図１
2006091946.tif 000002
【特許請求の範囲】
【請求項１】
稼動中にメモリレイテンシを変更可能とするインタフェースを有する１台以上の計算機から構成される業務サーバと、前記業務サーバからの応答時間を計測するエージェントプログラムが稼動する１台以上のクライアントと、前記エージェントプログラムが計測した前記応答時間の統計データを作成し目標性能値の比較を行う性能監視処理とメモリレイテンシと応答時間の相関関係を表したデータから適当なメモリレイテンシを求め、前記業務サーバのメモリレイテンシを変更し、更にメモリレイテンシを変更した後の前記業務サーバの前記応答時間をフィードバックして前記目標性能値を維持するように前記業務サーバのメモリレイテンシを制御する管理サーバとがネットワークを介して接続された計算機システム。
【請求項２】
CPUコアと、
キャッシュメモリと、
CPUコアがアドレスバスに発行するメモリアクセストランザクションを格納する第１のキューと、
メモリ空間上に配置され、前記第１のキューが格納されたメモリアクセストランザクションを送出する間隔を設定するための待ちサイクル指定レジスタと、前記第１のキューのトランザクション送出の待ち時間をカウントする待ちサイクルカウンタと、前記待ちサイクル指定レジスタに格納された値と前記待ちサイクルカウンタの格納された値とを比較する比較回路と、前記比較回路が前記待ちサイクル指定レジスタと前記待ちカウンタの格納した値が一致したと判定したとき前記第１のキュー内の先頭のメモリアクセストランザクションを前記アドレスバスに送出させる第１のキュー制御回路を備え、もってメモリレイテンシを制御するレイテンシ制御回路と、
前記アドレスバスから前記CPUコアに対するメモリアクセストランザクションを格納する第２のキューと、
前記第２のキューを制御する第２のキュー制御回路と、CPUコアからメモリに書き込むデータトランザクションを格納する第３のキューと、
前記第３のキューを制御する第３のキュー制御回路と、
メモリから送られたデータトランザクションを格納する第４のキューと、
前記第４のキューを制御する第４のキュー制御回路を有するCPU。
【請求項３】
CPUと接続するアドレスバスおよびデータバスと、
PCIデバイスと接続するI/Oブリッジと
メモリコントローラと、
他のチップセットとのインタフェースと、
前記CPUが前記アドレスバスに発行したメモリアクセストランザクションを格納するキューと、
メモリ空間上に配置され、前記キューが格納されたメモリアクセストランザクションを送出する間隔を設定するための待ちサイクル指定レジスタと、前記キューのトランザクション送出の待ち時間をカウントする待ちサイクルカウンタと、前記待ちサイクル指定レジスタに格納された値と前記待ちサイクルカウンタの格納された値とを比較する比較回路と、前記比較回路が前記待ちサイクル指定レジスタと前記待ちカウンタの格納した値が一致したと判定したとき前記キュー内の先頭のメモリアクセストランザクションを前記アドレスバスに送出させるキュー制御回路を備え、もってメモリレイテンシを制御するレイテンシ制御回路とを有するチップセット。
【請求項４】
CPUと接続するアドレスバスおよびデータバスと、
PCIデバイスと接続するI/Oブリッジと、
メモリコントローラと、
他のチップセットとのインタフェースと、
前記CPUがアドレスバスに発行したメモリアクセストランザクションを格納する第１のキューと、
メモリ空間上に配置され、前記第１のキューが格納されたトランザクションを発行する間隔を設定するための第１の待ちサイクル指定レジスタと、前記第１のキューのメモリアクセストランザクション送出の待ち時間をカウントする待ち第１のサイクルカウンタと、前記第１の待ちサイクル指定レジスタに格納された値と前記第１の待ちサイクルカウンタの格納された値とを比較する第１の比較回路と、前記第１のが値の一致を判定したとき前記第１のキュー内の先頭のメモリアクセストランザクションを前記アドレスバスに送出させる第１のキュー制御回路を備え、もってメモリレイテンシを制御する第１のレイテンシ制御回路と、
前記I/Oブリッジ経由で前記PCIデバイスが発行したＤＭＡトランザクションを格納する第２のキューと、
メモリ空間上に配置され、前記第２のキューが格納されたトランザクションを発行する間隔を設定するための第２待ちサイクル指定レジスタと、前記第２のキューのＤＭＡトランザクション送出の待ち時間をカウントする第２の待ちサイクルカウンタと、前記第２の待ちサイクル指定レジスタに格納された値と前記待ちサイクルカウンタの格納された値とを比較する第２の比較回路と、前記比較回路が値の一致を判定してたとき前記第２のキュー内の先頭のＤＭＡトランザクションを前記アドレスバスに送出させる第２のキュー制御回路を備え、もってメモリレイテンシを制御する第２のレイテンシ制御回路とを有するチップセット。
【請求項５】
クライアントから業務サーバに対して発行したトランザクションの応答時間と目標応答時間と前記業務サーバが提供するサービス毎に予め集めたメモリレテインシと応答時間の関係表と前記業務サーバのメモリレイテンシの遅延の大きさを示す構成情報と前記応答時間の統計値と前記業務サーバの稼動状態と前記目標性能から前記応答時間の統計値を前記目標応答時間に近づける適当なメモリレイテンシの遅延の大きさを選択をする判断をする手順書である性能ポリシーを入力とし、前記応答時間の統計値が前記目標応答時間を予め決めておいた範囲を逸脱しているとき、前記業務サーバに対してメモリレイテンシの遅延の大きさを設定する命令を出力するサーバ管理プログラム。
【請求項６】
計算機の起動時にプラットフォームを初期化するファームウェアを搭載した計算機システムであって、前記ファームウェアの設定画面に移るためのキー入力の前に前記計算機のメモリレイテンシの遅延を大きくする設定するステップと、前記キー入力表示の後、予め設定したタイミングで前記計算機のメモリレイテンシの遅延を小さくするステップと、前記ファームウェアがメッセージを表示するとき前記計算機のメモリレイテンシの遅延を大きくするステップと前記メッセージ表示の後、予め設定したタイミングで前記計算機のメモリレイテンシの遅延を小さくするステップを有する前記ファームウェアを搭載することを特長とした計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は計算機システムの性能の制御に関し、特にサーバのハードウェアの性能を直接制御することで性能を一定にする方法及び装置に関する。
【背景技術】
【０００２】
１台以上のサーバから構成されるシステム上で稼動するサービスの利用者の端末で、システムに対して要求を入力してから応答が帰ってくるまでの時間を応答時間という。システムの導入初期段階においては、システムへの負荷が小さいため応答時間は小さい。ところが、使用時間の経過とともにデータベースのサイズやサーバに接続するユーザ数が増大する。すると、データベースサイズが増えることで業務サーバがデータを検索する時間が増えたり、接続するユーザ数が増えることでことで業務サーバに対して要求されるスループットが増えることで応答時間が大きくなる。このときの応答時間がシステム開発時に見積もった時間内で収まっていたとしても、新しいシステムを導入したにもかかわらずユーザは不満を感じるようになる。
【０００３】
「データベースチューニング256の法則」Ｃｈｒｉｓ  Ｌｏｏｓｅｌｅｙ  ＆  Ｆｒａｎｋ  Ｄｏｕｇｌａｓ著、間宮あきら訳  日経ＢＰ社  Ｐ．５０(非特許文献１)で示されて技術では、システム導入の初期段階ではアプリケーションのコードにタイマ式遅延を組み込んで応答時間を長くしておく。そして、システムの成長に合わせて、この人工的な遅延を徐々に取り除くことで応答時間の変化を小さくすることができ、ユーザが不満を感じにくくする。
【０００４】
特に、業務システムにユーティリティサービスを適用するケースでは、応答時間を一定に保証するサービスを提供することが必須となると考えられる。
サーバを構成するＣＰＵの単体性能が、動作周波数の高周波数化やマルチＣＰＵコアなどの技術で、著しく性能向上した為、マルチプロセッサのサーバでＣＰＵ数を増やしたときの性能向上の差が大きくなった。
【０００５】
【非特許文献１】「データベースチューニング256の法則」Ｃｈｒｉｓ  Ｌｏｏｓｅｌｅｙ  ＆  Ｆｒａｎｋ  Ｄｏｕｇｌａｓ著、間宮あきら訳  日経ＢＰ社  Ｐ．５０
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記のように、システム導入の初期段階ではアプリケーションのコードにタイマ式遅延を組み込んで応答時間を長くしておく技術は、現在の開発環境では汎用的であるとは言い難い。その理由として以下の３点が挙げられる。
（理由１）現在のシステム開発は、複数のアプリケーションを組み合わせてシステム開発をすることが多く、ソースコードが開示されず実行形式のプログラムのみでパッケージが構成されている。そのため、アプリケーションのコードに遅延を直接入れることは不可能である。
（理由２）ソースコードを開示したアプリケーションプログラムも普及しつつあるが、データベースなどの大規模で複雑なアプリケーションのコードを不用意に改変することはプログラムの不具合を生む可能性がある。
（理由３）複数のアプリケーションが連携してある業務のフローを実現している場合、特定のアプリケーションにだけ遅延をいれると、遅延が入った処理と遅延が入らなかった処理間との間のタイミングがずれ、データの一貫性が保てなることやデッドロックを引き起こす危険性がある。
【０００７】
したがって、応答時間を制御するためにプログラムのソースコードに遅延を入れることには、上記の理由で問題があるといえる。
さらに、ＣＰＵの単体性能が向上することでマルチプロセッサのサーバでＣＰＵ数の違いによる性能差が拡大していくことで、適当な応答時間を与えるシステム構成が得られにくく、上記に示したようなシステム導入の初期段階で過剰性能となる可能性がますます高くなっている。
【０００８】
一方、サーバの開発者や運用管理者が、サーバのＢＩＯＳの設定やデバッグのために、起動時に画面に表示されるメッセージを監視する必要がある。ＣＰＵ単体の速度が向上しているため、ＢＩＯＳの設定画面に入るためのキーを打てなかったり、画面に表示されたメッセージを見逃したりすることがある。このため、従来は、サーバの開発者や運用管理は希望の操作が出来るまで何度も電源ＯＮ・ＯＦＦを繰り返すことになり作業の生産性が落ちることがある。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、以下の点に着目した。
サーバのトランザクション処理のスループットは以下の式で求められる。
（スループット性能）＝（ＣＰＵ数×ＣＰＵ周波数×定数）÷（ＣＰＵの実行ステップ数×ＣＰＩ）
ここで、定数はスループットの値を単位時間当たり、あるいは単位秒あたりに変換する数を指す。ＣＰＩは、ＣＰＵの１命令あたりの実行サイクル数のことである。従来の方法では、プログラムのソースコードに遅延ループを入れることで、ＣＰＵの実行ステップ数を増やして性能を制御した。しかし、その方法では上述の課題１のような問題がある。また、ＣＰＵ数の変更は、課題２の問題がある。しかし、その方法では上述のような問題がある。そこで、変更できるパラメータはＣＰＵ数、ＣＰＵ周波数、ＣＰＩを制御する方法が考えられる。ＣＰＵ数はハードウェアの設計で制限され、あまり自由度がない。ＣＰＵ周波数は、性能の変動幅を大きくするには周波数の変動幅を大きくする必要がある。これは、ＬＳＩのディレイ設計が困難になると考えられる。
【００１０】
ＣＰＩは以下のようにも記述できる。ただし、キャッシュメモリがレベル１とレベル２のみがある場合を例にする。レベル３以降のキャッシュメモリが存在する場合も同様な式で記述できる。
ＣＰＩ＝ＣＰＩ０＋（Ｌ１キャッシュのミス率−Ｌ２キャッシュミス率）×（Ｌ２キャッシュのメモリレイテンシ）×Ｋｃ＋（Ｌ２キャッシュのミス率）×（主記憶のメモリレイテンシ）×Ｋｍ
ＣＰＩ０：１次キャッシュが無限の容量ある場合の１命令あたりの実行サイクル数
Ｋｃ、Ｋｍ：メモリアクセスが多重実行される場合を考慮したときの定数値
ＣＰＩの値を制御することで性能の制御が可能となるが、キャッシュメモリのミス率を制御することはアプリケーションのワーキングセットサイズによっては効果が得られないケースがある。したがって、メモリレイテンシを制御することでＣＰＩを制御する方法が多くの場合で性能を制御することが可能であるといえる。特に、データベースを使ったＯＬＴＰ（Ｏｎｌｉｎｅ  Ｔｒａｎｓａｃｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ）やＯＬＡＰ（Ｏｎｌｉｎｅ  Ａｎａｌｙｔｉｃａｌ  Ｐｒｏｃｅｓｓｉｎｇ）のようなデータが大規模でキャッシュメモリに収まらないケースで有効な手段であると考えられる。
【００１１】
本発明では比較的自由な変動幅でサーバのメモリレイテンシを増加することを可能にすることで、サーバ全体の性能を期待する性能に調節できるようにする。
更に、応答時間の監視と予め指定した応答時間からの逸脱の検出とメモリレイテンシと応答時間の相関関係から適当なメモリレイテンシの増分を計算し、業務サーバのメモリレイテンシを変更する管理サーバを設ける。
【発明の効果】
【００１２】
以上、本発明によれば、メモリレイテンシの遅延を応答時間やサーバの稼動状態をもとに操作することで、どのようなシステムを導入するときでも、汎用的に性能を変更することができる。
また、ＣＰＵの単体性能が向上することでマルチプロセッサのサーバでＣＰＵ数の違いによる性能差が拡大していくことで、適当な応答時間を与えるシステム構成が得られにくく、システム導入の初期段階で過剰性能となる可能性を抑止することができる。
【００１３】
更に、サーバの開発者や運用管理者が、サーバのＢＩＯＳの設定やデバッグのために、起動時に画面に表示されるメッセージが表示されている期間だけサーバの性能を落として速度を落とすことで、ＢＩＯＳの設定画面に入るためのキーを打てなかったり、画面に表示されたメッセージを見逃したりすることを減らすことができ業務効率が改善できる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して本発明の実施の形態について説明する。なお、本明細書で応答時間とは、クライアントでユーザが、Ｅｎｔｅｒキーを押してから（コマンドの実行をしてから）、クライアントまでにデータが最初に帰ってくるまでの時間のことを指す。
【実施例１】
【００１５】
図1は、本発明の第１の実施例を表すシステム構成図である。一クライアント１と業務サーバ２は、ネットワーク１４を介して接続されている。管理サーバ４は、クライアント１や業務サーバ２と接続して、これらの稼動情報の収集や構成管理を行う。ユーザはクライアント１から、業務サーバ２が提供する業務システムなどのサービスを受ける。なお図は単一のクライアント、単一の業務サーバのみ示すが、システム全体はそれぞれ複数台ずつ存在して接続される。
クライアント１には、業務サーバ２のサービスを要求してから応答が帰ってくるまでの応答時間を計測するクライアント監視エージェント３が稼動している。業務サーバ２では、サーバの稼動状態に係わる情報を集めるサーバ監視エージェント２１が動作している。
【００１６】
管理サーバ４では、クライアント１や業務サーバ２を管理する管理プログラム６が稼動している。管理サーバ４は、ハードウェアでメモリレイテンシの遅延を変更できるようになっており。固定された最小メモリレイテンシと最大メモリレイテンシの間でメモリレイテンシを変更することができる。メモリレイテンシの遅延は、メモリ空間上に配置されたコンフィグレーションレジスタにソフトウェアから遅延サイクル数を指定することで変更ができるようになっている。管理プログラム４は、クライアント１や業務サーバ２の稼動状態を監視する性能監視部６とメモリレイテンシの遅延時間の設定をする構成管理部７から構成される。
【００１７】
また、管理サーバ４には、業務サーバ２の目標応答時間を記録した目標性能データ８と、業務サーバ２上で稼動するアプリケーションプログラムごとに応答時間とメモリレイテンシの関係表を格納した性能モデルデータ９と、応答時間が目標を達成していない場合の適切なメモリレイテンシを決定するための判断基準を格納した性能ポリシーデータ１０と、監視する対象のサーバ名や監視するイベントを記述した監視対象データ１１と、応答時間や業務サーバの稼動状況を示すデータの統計を格納した性能統計データ１２と、業務サーバ２で設定しているメモリレイテンシの遅延など構成情報を格納した構成情報データ１３が保持されている。
【００１８】
性能監視部６は、目標性能データ８と性能モデルデータ９と性能ポリシーデータ１０と
監視対象データ１１と性能統計データ１２にアクセスし、データの読み書きをする。構成管理部７は、構成情報データ１３にアクセスし、データの読み書きをする。更に、構成管理部７は業務サーバ２のメモリレイテンシの遅延量を指定する。管理プログラム５の性能監視部６は、応答時間のログの送付要求をクライアント監視エージェント３に送る（矢印１６）。応答時間のログの送付要求を受けたクライアント監視エージェント３は、応答時間のログを管理プログラム５の性能管理部に送付する（矢印１５）。一方、管理プログラム５の性能監視部６は、業務サーバ２の稼動状態のログの送付要求をサーバ監視エージェント２１に送る（１７）。応答時間のログの送付要求を受けたサーバ監視エージェント２１は、業務サーバ２の稼動状態のログを管理プログラム５の性能管理部に送付する（１８）。
ここで、サーバの稼動状態とは、ＣＰＵ待ち行列長やディスクの待ち行列長、稼動しているアプリケーションごとのＣＰＵ使用率などサーバの稼動状態に係わる情報を指す。
【００１９】
次に、管理プログラムが参照するデータ群について説明する。
図２に目標性能データの例を示す。目標性能データは、クライアントから利用するアプリケーション（図２では業務Ａ、業務Ｂ、業務Ｃと例示）ごとに、目標とする応答時間と、応答時間の許容幅を記録したものである。図２の例では業務Ａは（Ａ±ΔＡ）秒、業務Ｂは（Ｂ±ΔＢ）秒、業務Ｃは（Ｃ±ΔＣ）秒の応答時間であればよいことを示している。目標応答時間、許容幅の両者ともサーバの管理者が設定するデータである。
【００２０】
性能モデルデータの例を図３に示す。性能モデルデータは、業務毎に予め用意する。さらに、それぞれの業務に対して、業務サーバの稼動状態と構成情報ごとに業務サーバに接続してサービスを受けているユーザ数と応答時間の関係をメモリレイテンシの遅延量ごとに、予め用意しておく。図３では、ユーザ数と応答時間の関係をグラフにしているが、実際に格納されるデータの形式は、関数あるいは表の形式となっている。
【００２１】
性能ポリシーデータの例を図４に示す。性能ポリシーデータは、ポリシーの集合３０から構成される。ポリシーの集合３０は、更にポリシー１に示されるような、ある目的を達成するための判断方法が記述されている。ポリシー１では、応答時間を予め設定した目的応答時間を遵守しているか検査し、その目的が充足されないときには、メモリレイテンシの遅延を変更してサーバの性能を変更する方法が記述されている。ポリシーが集合となっているのは要求される目的によって判断方法を変えていく必要があるからである。
【００２２】
次に、このポリシー１について詳細を説明する。
ポリシーは、目的と方法から構成される。図４のポリシー１では、目的は、「応答時間を設定時間±許容幅に収める」ことであり、方法はフローチャートで示されている。今回は理解を容易にするためにフローチャートで記述したが、スクリプト言語での記述でも可能である。以下にフローチャートに示した応答時間を制御する方法について説明する。
（ステップ３１）管理サーバ上の管理プログラムが、クライアントや業務サーバから、管理者が予め設定した時間間隔で、応答時間や稼動状態を表す情報（性能統計データ）を収集する。
（ステップ３２）応答時間のヒストグラムを作成し、９０％値を計算する。９０％値とは、応答時間の分布で９０％値以下の応答時間の分布が全データの９０％となる値のことである（図９）
（ステップ３３）（目標応答時間±許容幅）に応答時間の９０％値が収まっているか判定し、収まっている場合はステップ３１を実行し、収まっていない場合はステップ３４を実行する。
（ステップ３４）図５(a)に示す性能モデルデータのグラフにおいて、現在のメモリレイテンシ遅延のグラフＬｂ上の点（Ｕｐ，Ｒｉ）が（Ｕｐ，Ｒｐ）と重なるようにグラフを平行移動する。
（ステップ３５）ステップ３４で操作した後のグラフ（図５(b)）で、現在のユーザ数で目標応答時間Ｒｑを通るグラフを探す。その結果見つかったグラフに対応するメモリレイテンシの遅延Ｌｃを業務サーバに適用することを決定。適当なグラフが見つからなかった場合は、最も目標に近いグラフを選択する。
（ステップ３６）ステップ３５で決定したメモリレイテンシの遅延Ｌｃを業務サーバに設定する。
【００２３】
観測対象データの例を図６に示す。観測対象データは、どのクライアントや業務サーバで何のデータを観測するかサーバの管理者が設定をする。図６では、クライアントｘ０で応答時間を観測、業務サーバｙ０でＣＰＵ使用率、接続ユーザ数、ディスク待ち行列長を観測対象としている。
【００２４】
性能統計データを例を図７と図８に示す。管理者が予め設定した時間間隔で管理サーバが、稼動状態に関するデータをクライアントや業務サーバから収集する。図７に示すようにＣＰＵ使用率、接続ユーザ数、ディスク待ち行列といったデータは管理サーバからデータの要求が到着する間に採取したデータの平均値となっている。クライアントで計測する応答時間は、図８に示すように、クライアントですべての応答時間のログを採取し、管理サーバに送られてきた応答時間の集合（Ｒ００，Ｒ０１，…，Ｒ０ｎ）（Ｒ１０，Ｒ１１，…，Ｒ１ｎ）（Ｒ２０，Ｒ２１，…，Ｒ２ｎ）として記録する。管理サーバ上の管理プログラムは、これらの統計データから図９に示す９０％値Ｒｔｈ０，Ｒｔｈ１、Ｒｔｈ２を算出し、性能統計データとして記録する。この９０％値は上述のポリシーがメモリレイテンシを変更するかどうかの判定に用いている。
【００２５】
構成情報データの例を図１０に示す。構成情報データは図１０(a)に示した各業務サーバのメモリレイテンシの遅延をどのように変更したかのログと、図１０(b)に示したサーバ構成情報からなる。図１０(a)では、業務サーバｙｉ（ｉ＝０，１，２）で、メモリレイテンシの遅延がＤＬｉ０、ＤＬｉ１，ＤＬｉ２と変更してきたことを示している。一番最後に記録されているメモリレイテンシの遅延が現在の遅延の大きさである。図１０(b)の構成情報は、ＣＰＵ数、ＣＰＵ周波数、メモリ搭載量、ディスクドライブ数等が含まれる。
【００２６】
次に、応答時間を一定にする処理の流れを初期化時と稼動時に分けて説明する。
（初期化時）
初期化時の処理の流れを図１１を用いて説明する。
システム管理者がまず、現在の業務サーバの構成情報やメモリレイテンシの遅延の設定状態の調査を管理サーバに要求する（４０）。管理サーバは、業務サーバに情報を問い合わせ（４１）、その結果を構成情報データに記録すし（４２）、同時にシステム管理者に構成情報を表示する（４３）。システム管理者は、目標性能データ（目標応答時間と許容幅）と性能モデルデータと性能ポリシーを管理サーバにを登録する（４４、４５，４６）。
【００２７】
次に、システム管理者は、初期状態でのメモリレイテンシの遅延値を決定し、業務サーバに登録するために、業務サーバの構成変更要求を管理サーバに送る（４７）。管理サーバは、目標性能データ、性能モデルデータ、性能ポリシーデータ、及び構成情報からメモリレイテンシの遅延値を算出する（４８）。そして、業務サーバに対してメモリレイテンシの遅延設定する（４９）。その後、管理サーバは、正しく設定されているか調査（５０）した後、構成情報データを更新すし（５１）、管理者にも変更結果を画面表示する（５２）。正しく書き込めない場合は再度実行する（図示せず）。管理者が指定した回数失敗した場合は、管理者に通知し管理者の指示を待つ（図示せず）。
【００２８】
その後、管理者は、管理サーバに稼動情報の測定を開始する要求を送る（５３）。管理サーバは、クライアントと業務サーバに測定用のエージェントを起動する要求を送る（５４）。その要求を受けたクライアントと業務サーバで、監視エージェントが応答時間や稼動状態の情報の測定を開始する（５５，５６）。
【００２９】
（稼動時）
システム稼動時に応答時間を一定にするためにメモリレテインシを制御する流れを図１２を用いて説明する。
クライアントと業務サーバ上では常に性能の監視エージェントが稼動している。管理サーバ上の管理プログラムは、クライアントと業務サーバの監視エージェントに対して、管理者が予め設定したタイミングで定期的に応答時間の測定結果や稼動状態を送付する要求を発行する（６０）。クライアントでは、監視エージェントが応答時間測定結果を管理サーバに送付する（６１）。業務サーバでは、監視エージェントが稼動状態測定結果を管理サーバに送付する（６２）。これらの応答時間や稼動状態のデータは性能統計情報データとして管理サーバで管理される。
【００３０】
管理サーバ上の管理プログラムは、性能統計情報データと目標性能データから、目標性能の条件を満足しているか判定し（６４）、その結果を管理者に表示する（６３）。
管理プログラムが、目標性能の条件を満足していないと判定した場合、性能統計情報データ、目標性能データ、性能ポリシーデータ、性能モデルデータ、及び構成情報データからメモリレイテンシの遅延の設定値を決める（６５）。そして、業務サーバに対して、（６５）で決めたメモリレイテンシの遅延の値を設定する（６６）。管理プログラムは、正しくメモリレイテンシの遅延が設定されたか、業務サーバに問い合わせて（６８）、正しい値であれば構成情報データを更新し、管理者に変更情報を表示する（７０）。正しく書き込めない場合は再度実行する（図示せず）。管理者が指定した回数失敗した場合は、管理者に通知し管理者の指示を待つ（図示せず）。
以上で、応答時間を一定にする処理の流れを初期化時と稼動時に分けて説明した。
【実施例２】
【００３１】
図１３は、本発明の第２の実施例を表すＣＰＵの構成図である。
ＣＰＵ５０は、ＣＰＵコア１０１、キャッシュメモリ１０２、アドレスキュー１０４、１０６、データキュー１０８、１１０、キュー制御回路１０５，１０７，１０９、レイテンシ可変キュー制御回路１０３から構成される。
【００３２】
ＣＰＵコア１０１は、命令を処理する部分であり、ＣＰＵ内蔵のキャッシュメモリ１０２と接続している。ＣＰＵコア１０１は、命令やデータをキャッシュメモリ１０２から取ってくるが、キャッシュメモリ１０２にＣＰＵコア１０１で必要とするデータが存在しない場合（キャッシュミス）は、キュー１０４を通して、アドレスバス１１１に主記憶あるいは他のキャッシュが持っているデータにアクセスするためのトランザクションを発行する。アドレスバスに発行されたメモリ要求トランザクションは同じアドレスバス１１１に接続している他のＣＰＵ（図示せず）とチップセット１１４で受信する。
他のＣＰＵはＣＰＵ１００と同じ構造なので、ここではＣＰＵ１００を使って説明する。アドレスバス１１１に発行されたメモリ要求トランザクションは、キュー１０６を経由してＣＰＵコア１０１に到着する。ＣＰＵコア１０１は、キャッシュメモリ１０２にトランザクションが要求しているアドレスのデータが無いか調べる。
これは、一般的なバススヌーピングの動作を意味する。キャッシュメモリにメモリ要求トランザクションが要求するデータがあるかアドレスバス１１１あるいは、別の専用線（図示せず）を通して、要求発行元のＣＰＵに通知する。存在している場合は、データバスへキュー１０８を通してデータバス１１２にデータを転送する。
【００３３】
一方、アドレスバス１１１からチップセット１１４へ転送されたメモリ要求トランザクションは、チップセット１１４から主記憶（図示せず）や他のチップセット（図示せず）に接続しているアドレスバスに転送され、そのアドレスバスに接続しているＣＰＵへ問い合わせが行き、バススヌーピングが行われキャッシュにデータが有るか無いか検査した結果が要求発行元のＣＰＵに通知される。また、主記憶からは、メモリ要求トランザクションの要求するアドレスのデータがチップセット１１４に転送される。チップセット１１４では、バススヌーピング結果から、主記憶からのデータか、他のキャッシュから送られたデータを判定してデータバスの１１２にデータを転送する。ＣＰＵ１００は、キュー１１０を経由してこのデータをキャッシュメモリに格納し、ＣＰＵコアでの処理に使用する。
【００３４】
キュー制御回路１０５，１０７，１０９の構成と動作について図１４を用いて説明する。図１４に示すように、キュー制御回路１２０は、ライトポインタ１２１、ポインタ制御回路１２２、リードポインタ制御回路１２３から構成される。ライトポインタ１２１は、カウンタで構成され、新規に到着したトランザクションを格納するキューの位置を示し、ライトポインタ信号を出力する。一方、リードポインタ１２３は、キューから発行するトランザクションが格納されている位置を示し、ライトポインタ信号を出力する。
キュー制御回路は１２０は、キューに格納するトランザクションが来たことを意味するセット信号１２７をトランザクション発行元から受信して、ポインタ制御回路１２２に入力する。ポインタ制御回路は、トランザクションの書き込み後、セット信号が到着したときの値をカウントアップして指す位置を一つずらす。また、リリース信号１２５はトランザクションを発行可能であることをキューの接続先のブロック（図示せず）に通知する。このブロックがトランザクションを受け取ったことを示すリリース完了信号１２８をポインタ制御回路が受け取ると、リードポインタ１２３を一つカウントアップしてポインタの指す位置を一つずらす。
【００３５】
次に、レイテンシ可変キュー制御回路１０３の構成について図１５を用いて説明する。図１５に示すように、レイテンシ可変キュー制御回路１２９は、先に説明したキュー制御回路１２０に遅延制御回路１２０と待ちカウンタ１３１と遅延値レジスタ１３２と比較器１３３を追加した構成となっている。追加した部分は、メモリレイテンシを変更するために、キューのリリースタイミングを遅らせる動作をする。遅延時間は、遅延値レジスタ１３２に設定する。この遅延値レジスタ１３２は、メモリ空間上に配置されたレジスタで、ソフトウェアからアクセスして適当な数値を設定できる構造となっている。
【００３６】
レイテンシ可変キュー制御回路１０３のこの動作を図１６を用いて説明する。
（ステップ１４０）遅延制御回路１２０は、トランザクションを格納するキューに何もトランザクションが格納されている場合、ステップ３１へ、トランザクションが格納されていない場合は、ステップ３２を実行する。
（ステップ３１）遅延制御回路１２０は、キューに格納したトランザクションをリリースするとき、待ちカウンタ１３１をスタートし、トランザクション発行先でトランザクションを受け取らないようにするため、リリース信号はアクティブにしないでおき、ステップ３３へ。
【００３７】
（ステップ３２）遅延制御回路１２０は、キューにトランザクションをセットしたとき、待ちカウンタ１３１をスタートし、トランザクション発行先でトランザクションを受けたら無いようにするため、リリース信号はアクティブにしないでおき、ステップ３３へ。
（ステップ３３）遅延制御回路１２０は、比較器１３３で待ちカウンタ１３１と遅延レジスタ１３２の内容が一致することを検出したとき、キューからトランザクションをリリースする要求をポインタ制御回路１２２に発行してリリース信号をアクティブにする。これと、同時に待ちカウンタ１３１をリセットし、ステップ１４０へ。
上記のレイテンシ可変キュー制御回路１０３によってＣＰＵ５０の発行するメモリ要求トランザクションの発行タイミングを管理者が遅延値レジスタ１３２に設定したサイクル数がけ遅延させることができ、メモリレイテンシの制御が可能となる。
【実施例３】
【００３８】
図１７は、本発明の第３の実施例を表すチップセットの構成図である。チップセット１５０は、アドレスキュー１５４、１５５、１６４、１７０とデータキュー１５６、１５７、１６５、１６６、１７１、１７２とキュー制御回路１５９、１６０、１６１、１６８、１６９、１７３、１７４、１７５とレイテンシ可変キュー制御回路１５８、１６７とマルチプレクサ１６２，１６３、１８３、１８４、１８５、１８６から構成される。
キュー制御回路１５９、１６０、１６１、１６８、１６９、１７３、１７４、１７５は、第２の実施例で説明した図１４と同一の回路である。また、レイテンシ可変キュー制御回路１５８、１６７は、第２の実施例で説明した図１５の回路と同一の回路である。これらのキュー制御回路、レイテンシ可変キュー制御回路の構成及び動作の説明は第２の実施例を参照することにし、ここでは説明を省略する。
【００３９】
次にチップセット１５０と他のモジュールとのインタフェースについて説明する。
第一に、チップセット１５０は、アドレスバス１５２、及びデータバス１５３と接続しており、これらを通して、ＣＰＵ１５０−０、１５０−１、１５０−２、１５０−３とメモリ要求トランザクション、及びデータトランザクションを相互に転送可能となっている。
第二に、チップセット１５０は、メモリコントローラ１８０と相互に接続し、メモリ要求トランザクションをチップセット１５０からメモリコントローラ１８０を経由してメモリモジュール１８１に転送される。メモリモジュール１８１は要求のあったアドレスのデータをメモリコントローラ１８０を経由してチップセットへ転送される。また、ＣＰＵのキャッシュラインのリプレースによって発生するライトバックトランザクションは、チップセット１５０から書き込みアドレスを指定するライトバックトランザクションと、書き込みデータのデータトランザクションがチップセット１５０からメモリコントローラ１８０を経由してメモリモジュール１８１に転送され、データの書き込みが行われる。
【００４０】
第三に、チップセット１５０は、Ｉ／Ｏブリッジ１８３とも相互に接続しており、ネットワークカードやＳＣＳＩカード等のＰＣＩデバイス１８４からに主記憶へのＤＭＡ転送をするインバウンド・トランザクションやＣＰＵからＰＣＩデバイスへのアクセスであるインバウンド・トランザクションをＩ／Ｏブリッジ１８３を経由して相互に転送する。
最後に、チップセット１５０は他のチップセット１８２と相互に接続され、メモリ要求トランザクションやライトバックトランザクション、データトランザクション等が相互に転送される。この接続はチップセット１８２に接続しているＣＰＵやメモリモジュールやＰＣＩデバイスへのアクセスをするために使用される。
【００４１】
また、クロスバスイッチを用いて２個以上のチップセット間を相互接続する場合もある。これまでの例の類推で理解できるため、ここでは説明を省略する。
図１７のチップセット１５０の動作について説明する。
なお、今回対象としているチップセットではキャッシュコヒーレンシ制御のためスヌーピング方式を使っているが、キャッシュコヒーレンシ制御の詳細については、本特許によって変更はないので、本実施例ではトランザクションの流れについてだけ説明をする。ＣＰＵ１５０−ｉ（ｉ＝０，１，２，３）で発行されたメモリ要求トランザクションは、アドレスバス１５２を経由してチップセット１５０のアドレスキュー１５４に格納される。アドレスキュー１５４は、レイテンシ可変キュー制御回路１５８で制御されていて、管理者により、アドレスキュー１５４からトランザクションがリリースされる遅延時間が決められる。アドレスキュー１５４から発行されたメモリ要求トランザクションは、メモリコントローラ１８０とＩ／Ｏブリッジ１８３、チップセット１８２に転送され、キャッシュコヒーレンシ制御が行われる。ＣＰＵのキャッシュメモリなどに最新のデータがある場は、チップセット１８２からデータが、データキュー１７２、マルチプレクサ１６３、データキュー１５７を経由して要求元のＣＰＵのあるデータバス１５３に転送され、要求元ＣＰＵがデータを受け取る。主記憶（メモリモジュール１８１）からのデータは、マルチプレクサ１６３、データキュー１５７を経由して要求元のＣＰＵのあるデータバス１５３に転送され、要求元ＣＰＵがデータを受け取る。
【００４２】
一方、ＰＣＩデバイス１８４発のインバウンド・トランザクションは、Ｉ／Ｏブリッジ１８３を経由してチップセット１５０のアドレスキュー１６４に格納される。このアドレスキュー１６４はレイテンシ可変キュー制御回路１６７でリリースするタイミングが変更される。アドレスキュー１６４で発行されたインバウンド・トランザクションはマルチプレクサ１６２を経由してアドレスキュー１５５を経由してアドレスバス１５２に発行されキャッシュコヒーレンシのための処理が行われる。また、メモリへはマルチプレクサ１８４を経由してメモリコントローラ１８０に転送される。他ヒップセット１８２へのキャッシュコヒーレンシ処理や、メモリへのアクセスのために。マルチプレクサ１８３を経由してチップセット１８２に転送される。ＤＭＡ転送でメモリのデータを読み出す場合は、メモリモジュール１８１からメモリコントローラ１８０、マルチプレクサ１８５、データキュー１６６を経由してＩ／Ｏブリッジへ転送される。ＤＭＡ転送でＩ／Ｏからメモリにデータを書き込む場合は、メモリ要求トランザクションがＩ／Ｏブリッジ１８３からキュー１６４、マルチプレクサ１８４を経由してメモリコントローラ１８０に転送される。一方、データはデータキュー１６５、マルチプレクサ１８６を経由して、メモリコントローラ１８０に転送され、メモリモジュール１８１にデータを書き込む。
以上の動作により、チップセット内のアドレスキューのリリースタイミングを操作してサーバの性能を制御することができる。
【実施例４】
【００４３】
図１８は、本発明の第４の実施例を表すファームウェアの階層構成を示したものである。計算機は、ハードウェア２００、ファームウェア２０１、ＯＳ２０２、アプリケーション２０３の階層構造となっている。ファームウェア２０１は、ハードウェア２００の電源投入後の初期化を行い、ＯＳ２０２が稼動するための環境をハードウェア２００に設定する。
【００４４】
ハードウェア２００は、実施例２または実施例３で示したメモリレイテンシの遅延を変更する機構が備わっている。このメモリレイテンシの遅延のサイクル数は、メモリ空間上に割り当てられたコンフィグレーションレジスタとして備えられている。電源投入後あるいはシステムのリセット後にファームウェア２０１が起動時しているとき、このコンフィグレーションレジスタにアクセスすることでハードウェアの性能を変更する。
計算機の開発時など頻繁にファームウェアのセットアップ画面に切り替える必要がある場合、あるいはファームウェが表示するメッセージを読み取らなければならないとき、ハードウェアの性能を低下させることで、設定画面への切り替えメッセージやその他画面に表示されるエラーメッセージなどを見逃さないようにする。
【００４５】
図１９は、ファームウェア２０１がハードウェア２００のメモリレイテンシの遅延を設定する処理の流れを示している。
計算機の管理者２２０が、ハードウェア２００の電源を投入する（２１０）。すると、ハードウェア２００では、ＢＩＳＴ（Ｂｕｉｌｔ  Ｉｎ  Ｓｅｌｆ  Ｔｅｓｔ）を実行する（２１１）。ＣＰＵ、チップセット、メモリがそれぞれＢＩＳＴを実行する。それらが完了した時点でハードウェア２００は、ＲＯＭに格納されたファームウェア２０１を起動する（２１２）。ファームウェア２０１は起動した後、ハードウェア２００に対してメモリレイテンシの遅延を設定する。この遅延の大きさは、予め管理者２２０が設定しておく。ファームウェア２０１が、ハードウェア２００の初期化の際にメッセージを表示している期間（２１６）やセットアップ画面で切り替えキー入力待ちをしている期間（２１７）だけハードウェア２００のメモリレイテンシの遅延を大きくしておく。これらの期間が終わり、ＯＳのブートローダをメモリ上にロードしようとする前に、ファームウェア２０１はメモリレイテンシの遅延を０に設定し、元の性能に戻す（２１３）。この後、ファームウェア２０１は、ＯＳのブートローダをメモリ上にロードし（２１４）、ＯＳを起動する（２１５）。
【００４６】
以上の動作により、ファームウェが表示するメッセージを読み取らなければならないとき、ハードウェアの性能を低下させて設定画面への切り替えメッセージやその他画面に表示されるエラーメッセージなどを見逃さないようにすることができる。
【産業上の利用可能性】
【００４７】
本発明は情報処理システムの応答性能を稼動状態をもとに安定に制御する手段を提供し、用いているＣＰＵの種類等に影響することなく汎用的に性能を設定できるため、この分野に広く採用が期待される。
【図面の簡単な説明】
【００４８】
【図１】本発明の第１の実施例を表すシステムのブロック図。
【図２】目標性能データの一例。
【図３】性能モデルデータの一例。
【図４】性能ポリシーデータの一例。
【図５】性能モデルデータの変換過程。
【図６】監視対象データの一例。
【図７】性能統計データの一例（応答時間を除く）。
【図８】性能統計データの一例（応答時間）。
【図９】応答時間分布での９０％値。
【図１０】構成情報データの一例。
【図１１】第１の実施例のシステムの動作の流れ（初期化時）。
【図１２】第１の実施例のシステムの動作の流れ（稼動時）。
【図１３】本発明の第２の実施例を表すＣＰＵのブロック図。
【図１４】キュー制御回路のブロック図。
【図１５】レイテンシ可変キュー制御回路のブロック図。
【図１６】レイテンシ可変キュー制御回路の遅延制御回路の論理。
【図１７】本発明の第３の実施例を表すチップセットのブロック図。
【図１８】本発明の第４の実施例を表すファームウェアのブロック図。
【図１９】ファームウェアの処理の流れ。
【符号の説明】
【００４９】
１  クライアント
２  業務サーバ
３  クライアント監視エージェント
４  管理サーバ
５  管理プログラム
８  目標性能データ
９  性能モデルデータ
１０  性能ポリシーデータ
１１  監視対象データ
１２  性能統計データ
１３  構成情報データ
２１  サーバ監視エージェント
１００，１５１−０，１５１−１，１５１−２，１５１−３  ＣＰＵ
１０１  ＣＰＵコア
１０２  キャッシュメモリ
１０３，１２９，１５８，１６７  レイテンシ可変キュー制御回路
１０５，１０７，１０９，１２０，１５９，１６０，１６１，１６７，１６８，１６９，１７３，１７４，１７５  キュー制御回路
１０４，１０６，１５４，１５５，１６４，１７０  アドレスキュー
１０８，１１０，１５６，１５７，１６５，１６６，１７１，１７２  データキュー
１１１，１５２  アドレスバス
１１２，１５３  データバス
１１４，１５０，１８２  チップセット
１２１  ライトポインタ
１２２  ポインタ制御回路
１２３  リードポインタ
１２４  ライトポインタ信号
１２５  リリース信号
１２６  リードポインタ信号
１２７  セット信号
１２８  リリース完了信号
１３０  遅延制御回路
１３１  待ちカウンタ
１３２  遅延値レジスタ
１３３  比較器
１８０  メモリコントローラ
１８１  メモリモジュール
１８３  Ｉ／Ｏブリッジ
１８４  ＰＣＩデバイス
１６２，１６３，１８３，１８４，１８５，１８６  マルチプレクサ
２００  ハードウェア
２０１  ファームウェア
２０２  ＯＳ
２０３  アプリケーション。
【図１】
2006091946.tif 000003
【図２】
2006091946.tif 000004
【図３】
2006091946.tif 000005
【図４】
2006091946.tif 000006
【図５】
2006091946.tif 000007
【図６】
2006091946.tif 000008
【図７】
2006091946.tif 000009
【図８】
2006091946.tif 000010
【図９】
2006091946.tif 000011
【図１０】
2006091946.tif 000012
【図１１】
2006091946.tif 000013
【図１２】
2006091946.tif 000014
【図１３】
2006091946.tif 000015
【図１４】
2006091946.tif 000016
【図１５】
2006091946.tif 000017
【図１６】
2006091946.tif 000018
【図１７】
2006091946.tif 000019
【図１８】
2006091946.tif 000020
【図１９】
2006091946.tif 000021