(57)【要約】【課題】負荷とプロセッサの動作レベルとのミスマッチを抑制する。【解決手段】情報処理装置１０は、消費電力の異なる複数の動作レベルの中から動作レベルを切替可能なプロセッサ１１と、プロセッサ１１の動作レベルを制御するプログラム１２ａを記憶する記憶部１２とを有する。プログラム１２ａを実行するプロセッサ１１は、情報処理装置１０の負荷変動の周期性を検出し、負荷変動の周期性に応じて、プロセッサ１１の動作レベルを切り替えるか否か判定する判定周期Ｔを変更する。【選択図】図１
2015082321.tif 000002
【特許請求の範囲】
【請求項１】
消費電力の異なる複数の動作レベルの中から動作レベルを切替可能なプロセッサと、
前記プロセッサの動作レベルを制御するプログラムを記憶する記憶部と、を有し、
前記プログラムを実行する前記プロセッサは、
自装置の負荷変動の周期性を検出し、前記負荷変動の周期性に応じて、前記プロセッサの動作レベルを切り替えるか否か判定する判定周期を変更する、
情報処理装置。
【請求項２】
前記プロセッサは、過去に前記プロセッサの動作レベルが切り替わったタイミングを示す変更履歴に基づいて前記負荷変動の周期性を推定する、請求項１記載の情報処理装置。
【請求項３】
前記プロセッサは、過去に前記プロセッサの動作レベルが閾値以上になったタイミングを前記変更履歴から検出し、前記検出したタイミングの周期に基づいて前記判定周期を算出する、請求項２記載の情報処理装置。
【請求項４】
前記プロセッサは、前記情報処理装置の負荷変動の周期を算出し、前記判定周期を前記負荷変動の周期より短く設定する、請求項１乃至３の何れか一項に記載の情報処理装置。
【請求項５】
前記プロセッサは、前記情報処理装置の負荷変動に周期性がないと判断した場合、前記判定周期の短縮を制限する、請求項１乃至４の何れか一項に記載の情報処理装置。
【請求項６】
前記複数の動作レベルの間では、前記プロセッサのクロック周波数と電圧の少なくとも一方が異なる、請求項１乃至５の何れか一項に記載の情報処理装置。
【請求項７】
消費電力の異なる複数の動作レベルの中から動作レベルを切替可能なプロセッサを有するコンピュータが実行する負荷制御方法であって、
前記コンピュータの負荷変動の周期性を検出し、
前記負荷変動の周期性に応じて、前記プロセッサの動作レベルを切り替えるか否か判定する判定周期を変更する、
負荷制御方法。
【請求項８】
消費電力の異なる複数の動作レベルの中から動作レベルを切替可能なプロセッサを有するコンピュータに、
前記コンピュータの負荷変動の周期性を検出し、
前記負荷変動の周期性に応じて、前記プロセッサの動作レベルを切り替えるか否か判定する判定周期を変更する、
処理を実行させる負荷制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、負荷制御方法および負荷制御プログラムに関する。
【背景技術】
【０００２】
近年、コンピュータの情報処理能力が向上するに伴い、コンピュータに搭載されるプロセッサの消費電力が増大することが問題となっている。プロセッサの消費電力を抑制する技術の１つに、ＤＶＦＳ（Dynamic Voltage and Frequency Scaling）がある。ＤＶＦＳを実装したプロセッサは、演算時の動作レベルとして、クロック周波数や電圧の異なる複数の動作レベルをもつ。この動作レベルはＰ−ｓｔａｔｅと呼ばれることがある。クロック周波数や電圧が小さい（動作レベルが低い）ほど、プロセッサの消費電力は小さくなる。動作レベルを動的に下げることで、プロセッサの不要な電力消費を削減することができる。ただし、動作レベルが低い状態では、プロセッサの演算速度も低下している。
【０００３】
ＢＩＯＳ（Basic Input Output System）やＯＳ（Operating System）などのシステムソフトウェアの中には、プロセッサ使用率に応じてプロセッサの動作レベルを切り替えることができるものがある。例えば、システムソフトウェアは、プロセッサ使用率が低いとき、プロセッサの動作レベルを下げて消費電力を削減する。プロセッサ使用率が高くなると、システムソフトウェアは、動作レベルを上げてプロセッサ使用率が下がるのを待つ。
【０００４】
プロセッサの動作レベルを切り替えるか否かは、所定の固定周期で判定することが多い。例えば、システムソフトウェアは、所定の固定周期でプロセッサ使用率を確認し、確認したプロセッサ使用率に応じて動作レベルを切り替えるか否か判定する。ただし、動作レベルの切替回数が過多にならないように、動作レベルを切り替えるか否か判定する頻度を変更する半導体装置が提案されている。この半導体装置は、クロック周波数および電圧を切り替えた回数をカウントし、過去の切替回数が大きいほど判定する頻度を低く設定し、過去の切替回数が小さいほど判定する頻度を高く設定するようにする。
【０００５】
なお、ＯＳがプロセッサ情報を監視し、プロセッサ情報に応じて、性能の異なる複数の実行状態の中からプロセッサの実行状態を選択する電力管理方法が提案されている。この電力管理方法では、ＯＳはサンプリングした過去のプロセッサ情報に基づいて未来のプロセッサ情報を予測し、過去のプロセッサ情報と未来のプロセッサ情報の平均に基づいて、プロセッサの実行状態を選択する。また、プロセッサがビジーである時間の割合から、目標Ｐ−ｓｔａｔｅを選択するシステムが提案されている。このシステムは、プロセッサが１００％ビジーであるとき、目標Ｐ−ｓｔａｔｅの選択を周期的に減少させる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−２９９８３号公報
【特許文献２】国際公開第２００４／１０２３６３号
【特許文献３】特開２００９−１１０５０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、コンピュータにかかる負荷（例えば、単位時間当たりに他のコンピュータから受信するリクエストの量など）は、定常的でないことが多く周期性をもって変動することがある。このとき、負荷変動の周期によっては、負荷とプロセッサの動作レベルとの間に継続的なミスマッチが発生し、プロセッサの使用効率が低下することがある。
【０００８】
例えば、プロセッサの動作レベルが低いときにコンピュータにかかる負荷が急激に増大したとする。この場合でも、動作レベルを切り替えるか否か判定するタイミングが次に到来するまで低い動作レベルが維持されるため、処理待ちのリクエストが増加してレスポンスの遅延が大きくなる。動作レベルを切り替えるか否か判定するタイミングが到来すると、プロセッサの動作レベルが高くなり、処理待ちのリクエストが減少していく。その後、コンピュータにかかる負荷が急激に低下したとする。この場合でも、動作レベルを切り替えるか否か判定するタイミングが次に到来するまで高い動作レベルが維持されるため、プロセッサの消費電力が負荷に不相応に大きい状態になってしまう。
【０００９】
このような負荷とプロセッサの動作レベルとの間のミスマッチは、負荷変動の周期が動作レベルを切り替えるか否か判定する周期と同じかまたは近似していると、継続して発生する。すなわち、負荷が増大してもプロセッサの動作レベルが低いままの状態と、負荷が低下してもプロセッサの動作レベルが高いままの状態とが、交互に繰り返し現れることになる。このように、プロセッサの省電力化のための技術であるＤＶＦＳが、かえってプロセッサの使用効率を低下させる場合があるという問題がある。一方、動作レベルを切り替えるか否か判定する周期を短い周期に固定してしまうと、動作レベルの制御自体のオーバヘッドが大きくなり、ＤＶＦＳによる省電力化の効果が小さくなってしまう。
【００１０】
１つの側面では、本発明は、負荷とプロセッサの動作レベルとのミスマッチを抑制する情報処理装置、負荷制御方法および負荷制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
１つの態様では、消費電力の異なる複数の動作レベルの中から動作レベルを切替可能なプロセッサと、プロセッサの動作レベルを制御するプログラムを記憶する記憶部と、を有する情報処理装置が提供される。プログラムを実行するプロセッサは、自装置の負荷変動の周期性を検出し、負荷変動の周期性に応じて、プロセッサの動作レベルを切り替えるか否か判定する判定周期を変更する。
【００１２】
また、１つの態様では、消費電力の異なる複数の動作レベルの中から動作レベルを切替可能なプロセッサを有するコンピュータが実行する負荷制御方法が提供される。負荷制御方法では、コンピュータの負荷変動の周期性を検出する。負荷変動の周期性に応じて、プロセッサの動作レベルを切り替えるか否か判定する判定周期を変更する。
【００１３】
また、１つの態様では、コンピュータに実行させる負荷制御プログラムが提供される。
【発明の効果】
【００１４】
１つの側面では、負荷とプロセッサの動作レベルとのミスマッチを抑制できる。
【図面の簡単な説明】
【００１５】
【図１】第１の実施の形態の情報処理装置を示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】Ｗｅｂサーバのハードウェア例を示すブロック図である。
【図４】Ｐ−ｓｔａｔｅとクロック周波数の関係例を示す図である。
【図５】入力負荷とクロック周波数のミスマッチ例を示す図である。
【図６】入力負荷とクロック周波数のミスマッチの伝搬例を示す図である。
【図７】Ｗｅｂサーバの機能例を示すブロック図である。
【図８】履歴テーブルの例を示す図である。
【図９】入力負荷の周期性の例を示す図である。
【図１０】周期調整の手順例を示すフローチャートである。
【図１１】ＣＰＵ動作の第１のシミュレーション例を示すグラフである。
【図１２】ＣＰＵ動作の第２のシミュレーション例を示すグラフである。
【図１３】他の周期調整の手順例を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理装置を示す図である。
【００１７】
第１の実施の形態の情報処理装置１０は、プロセッサ１１および記憶部１２を有する。情報処理装置１０は、コンピュータや物理マシンなどと呼ばれることもある。
プロセッサ１１は、ＢＩＯＳプログラム、ＯＳプログラム、アプリケーションプログラムなどの各種のプログラムを実行する。プロセッサ１１は、並列にプログラムを実行可能な複数のコアを有していてもよい。プロセッサ１１は、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro Processing Unit）などと呼ばれることもある。ただし、プロセッサ１１は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途の集積回路を更に含んでいてもよい。
【００１８】
ここで、プロセッサ１１は、消費電力の異なる複数の動作レベルの中で動作レベルＬを切替可能である。複数の動作レベルの間では、例えば、プログラム実行時のクロック周波数と電圧の少なくとも一方が異なる。例えば、動作レベルＬが低いほど、プロセッサ１１のクロック周波数や電圧が低くなり消費電力が小さくなる。動作レベルＬは、Ｐ−ｓｔａｔｅと呼ばれるものであってもよい。プロセッサ１１は、コアに提供されるクロック信号の周波数や電圧を動的に切り替えるための制御回路を有していてもよい。
【００１９】
記憶部１２は、プログラム１２ａを記憶する。記憶部１２は、ＲＡＭ（Random Access Memory）などの主記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）などの補助記憶装置でもよい。また、記憶部１２は、基盤に取り付けられたＲＯＭ（Read Only Memory）やフラッシュメモリなどであってもよい。プログラム１２ａは、プロセッサ１１の動作レベルＬを制御する。プログラム１２ａは、ＢＩＯＳやＯＳなどのシステムソフトウェアのプログラムであってもよい。プログラム１２ａまたはプログラム１２ａから依頼される他のプログラムは、例えば、プロセッサ１１の制御回路に動作レベルＬの切替を指示する。
【００２０】
プログラム１２ａをプロセッサ１１が実行することで、プロセッサ１１は、以下のように動作レベルＬを制御する。プロセッサ１１は、情報処理装置１０の過去の負荷変動の周期性を検出し、検出した負荷変動の周期性に応じて、プロセッサ１１の動作レベルＬを切り替えるか否か判定する判定周期Ｔを変更する。プロセッサ１１は、例えば、判定周期Ｔでプロセッサ１１の使用率を確認し、プロセッサ１１の使用率に応じて動作レベルＬを切り替えるか判定する。例えば、プロセッサ１１は、プロセッサ１１の使用率が高い場合は動作レベルＬを上げ、プロセッサ１１の使用率が低い場合は動作レベルＬを下げる。
【００２１】
判定周期Ｔを算出するにあたり、例えば、プロセッサ１１は、過去の負荷変動（例えば、直近の所定時間または所定回数の負荷変動）の周期である負荷周期Ｆを算出する。ここで言う負荷は、情報処理装置１０が実行すべき情報処理のストックに対応し、例えば、情報処理装置１０が単位時間当たりに受信するリクエストの数やキューに滞留した未処理のリクエストの数などに対応する。ただし、プロセッサ１１は、動作レベルＬの切替を示す履歴情報を取得し、履歴情報から過去の負荷変動を推定することも可能である。動作レベルＬの履歴情報から負荷変動を推定することで、プロセッサ１１は、キュー長などのアプリケーション層の情報を参照しなくてもよく、システムソフトウェア層において効率的に動作レベルＬを制御することができる。その場合、例えば、プロセッサ１１は、動作レベルＬが閾値以上になったタイミングの周期を負荷周期Ｆとして算出する。
【００２２】
負荷周期Ｆが算出されると、プロセッサ１１は、負荷周期Ｆから判定周期Ｔを算出することができる。例えば、プロセッサ１１は、判定周期Ｔを負荷周期Ｆよりも短くする。負荷周期Ｆの１／ｎ（ｎは２以上の所定の整数）を判定周期Ｔとしてもよい。負荷周期Ｆが変化すると、それに合わせて判定周期Ｔも変更されることが好ましい。例えば、負荷周期Ｆが小さいほど判定周期Ｔを小さくし、負荷周期Ｆが大きいほど判定周期Ｔを大きくする。これにより、負荷と動作レベルＬとのミスマッチを解消できる程度を超えて過度に判定周期Ｔが小さくなるのを抑制できる。なお、負荷変動に周期性がないと判断される場合、プロセッサ１１は、判定周期Ｔを現在の値より小さくすることを制限してもよい。
【００２３】
第１の実施の形態の情報処理装置１０によれば、情報処理装置１０の負荷変動の周期性に応じて、プロセッサ１１の動作レベルＬを切り替えるか判定する判定周期Ｔが変更される。これにより、負荷周期Ｆが判定周期Ｔと同一または近似した場合に継続的に発生し得る、負荷と動作レベルＬとの間のミスマッチを抑制することができる。すなわち、負荷が増大しても動作レベルＬが低い状態と負荷が低下しても動作レベルＬが高い状態とが、交互に繰り返し現れることを抑制できる。よって、ＤＶＦＳを利用してもプロセッサ１１を効率的に運用できる。また、判定周期Ｔを負荷周期Ｆに応じて可変にすることで、判定周期Ｔが過度に小さくなるのを抑制することができ、動作レベルＬの制御のためのオーバヘッドを削減してプロセッサ１１の省電力化を図ることができる。
【００２４】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。
第２の実施の形態の情報処理システムは、いわゆる３階層アーキテクチャと呼ばれる形態のＷｅｂシステムである。この情報処理システムは、クライアント２１、Ｗｅｂサーバ１００、アプリケーションサーバ１００ａおよびデータベースサーバ１００ｂを有する。クライアント２１、Ｗｅｂサーバ１００、アプリケーションサーバ１００ａおよびデータベースサーバ１００ｂは、ネットワーク２０に接続されている。ただし、クライアント２１とネットワーク２０の間に、広域ネットワークが介在していてもよい。
【００２５】
クライアント２１は、ユーザが操作する端末装置としてのクライアントコンピュータである。クライアント２１は、Ｗｅｂページを表示するためのＷｅｂブラウザを実行する。クライアント２１は、ＨＴＴＰ（Hypertext Transfer Protocol）を用いてリクエストをＷｅｂサーバ１００に送信し、リクエストに対するレスポンスをＷｅｂサーバ１００から受信する。通常、ＨＴＴＰのリクエストには要求するＷｅｂページの識別情報が含まれ、ＨＴＴＰのレスポンスには表示するＷｅｂページのデータが含まれる。
【００２６】
Ｗｅｂサーバ１００は、クライアント２１からのリクエストに応じて情報処理を行うサーバコンピュータである。Ｗｅｂサーバ１００は、ＨＴＴＰ通信を制御するアプリケーションソフトウェア（ソフトウェアとしてのＷｅｂサーバ）を実行する。Ｗｅｂサーバ１００は、クライアント２１からＨＴＴＰのリクエストを受信すると、要求されたＷｅｂページのデータを生成するために利用する業務ロジックを特定し、業務ロジックのリクエストをアプリケーションサーバ１００ａに送信する。Ｗｅｂサーバ１００は、リクエストに対して、業務ロジックの実行結果を含むレスポンスをアプリケーションサーバ１００ａから受信する。すると、Ｗｅｂサーバ１００は、業務ロジックの実行結果に基づいてＷｅｂページのデータを生成し、ＨＴＴＰのレスポンスをクライアント２１に送信する。
【００２７】
アプリケーションサーバ１００ａは、Ｗｅｂサーバ１００からのリクエストに応じて情報処理を行うサーバコンピュータである。アプリケーションサーバ１００ａは、業務ロジックを実装したアプリケーションソフトウェアを実行する。アプリケーションサーバ１００ａは、Ｗｅｂサーバ１００からリクエストを受信すると、指定された業務ロジックを実行する。このとき、アプリケーションサーバ１００ａは、業務ロジックで使用するデータを特定し、データアクセスのリクエストをデータベースサーバ１００ｂに送信する。データアクセスには、データの検索・追加・更新・削除などのデータ操作が含まれ得る。アプリケーションサーバ１００ａは、リクエストに対して、データアクセスの結果を示すレスポンスをデータベースサーバ１００ｂから受信する。すると、アプリケーションサーバ１００ａは、データアクセスの結果に基づいて（例えば、検索されたデータに基づいて）、業務ロジックを完了してレスポンスをＷｅｂサーバ１００に送信する。
【００２８】
データベースサーバ１００ｂは、アプリケーションサーバ１００ａからのリクエストに応じて情報処理を行うサーバコンピュータである。データベースサーバ１００ｂは、データを管理するアプリケーションソフトウェア（データベース管理システム（ＤＢＭＳ：Database Management System）など）を実行する。データベースサーバ１００ｂは、ＨＤＤなどの不揮発性の記憶装置にデータを記憶している。データベースサーバ１００ｂは、アプリケーションサーバ１００ａからリクエストを受信すると、要求されたデータアクセスを実行し、データアクセスの結果を示すレスポンスをアプリケーションサーバ１００ａに送信する。要求されたデータアクセスがデータの検索である場合、レスポンスには検索されたデータが含まれる。要求されたデータアクセスがデータの追加・更新・削除などである場合、レスポンスにはデータアクセスの成否を示す情報が含まれる。
【００２９】
なお、３階層アーキテクチャのＷｅｂシステムでは、上記のＷｅｂサーバ１００の機能をプレゼンテーション層、アプリケーションサーバ１００ａの機能をアプリケーション層、データベースサーバ１００ｂの機能をデータ層と言うことがある。図２では、プレゼンテーション層とアプリケーション層とデータ層をそれぞれ異なるサーバコンピュータを用いて実装しているが、２以上の層を同一のサーバコンピュータ上で実装することも可能である。例えば、Ｗｅｂサーバ１００とアプリケーションサーバ１００ａのアプリケーションソフトウェアを、単一のサーバコンピュータに実行させることも可能である。
【００３０】
図３は、Ｗｅｂサーバのハードウェア例を示すブロック図である。
Ｗｅｂサーバ１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＲＯＭ１０３、ＨＤＤ１０４、画像信号処理部１０５、入力信号処理部１０６、媒体リーダ１０７および通信インタフェース１０８を有する。上記のユニットは、Ｗｅｂサーバ１００内でバス１０９に接続されている。クライアント２１、アプリケーションサーバ１００ａおよびデータベースサーバ１００ｂも、Ｗｅｂサーバ１００と同様のハードウェアを用いて実現できる。なお、ＣＰＵ１０１は、第１の実施の形態のプロセッサ１１の一例である。ＲＡＭ１０２、ＲＯＭ１０３またはＨＤＤ１０４は、第１の実施の形態の記憶部１２の一例である。
【００３１】
ＣＰＵ１０１は、Ｗｅｂサーバ１００を制御するプロセッサである。ＣＰＵ１０１は、少なくとも１つのコア（コア１０１ａ）およびＤＶＦＳ回路１０１ｂを有する。
コア１０１ａは、算術論理演算回路やレジスタなどを有し、プログラムの命令を実行する。コア１０１ａは、後述するように、クロック周波数と電圧の組み合わせが異なる複数の「Ｐ−ｓｔａｔｅ」という動作レベルをもつ。なお、ＣＰＵ１０１は、複数のコアを有していてもよい。その場合、複数のコアは並列にプログラムの命令を実行できる。
【００３２】
ＤＶＦＳ回路１０１ｂは、コア１０１ａに対するＤＶＦＳを実現する回路であり、プログラムの命令に応じてコア１０１ａのＰ−ｓｔａｔｅを変更する。すなわち、ＤＶＦＳ回路１０１ｂは、コア１０１ａに供給されるクロック信号の周波数や電圧を制御する。例えば、ＤＶＦＳ回路１０１ｂは、バス１０９から供給されるベースクロック信号に適用する倍率を変更することで、コア１０１ａのクロック周波数を変更する。なお、ＣＰＵ１０１が複数のコアを有する場合、ＤＶＦＳ回路１０１ｂは、複数のコアに共通のＰ−ｓｔａｔｅを適用してもよいし、コア毎に独立にＰ−ｓｔａｔｅを変更してもよい。
【００３３】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやデータを一時的に記憶する揮発性の半導体メモリであり、主記憶装置である。なお、Ｗｅｂサーバ１００は、ＲＡＭ以外の種類の主記憶装置を有してもよく、複数個の主記憶装置を有してもよい。
【００３４】
ＲＯＭ１０３は、ＢＩＯＳプログラムを記憶する不揮発性の半導体メモリである。ただし、ＲＯＭ１０３に代えて、フラッシュメモリなどの書換可能な半導体メモリを用いてもよい。ＢＩＯＳプログラムには、ＯＳを起動する機能が実装されている。Ｗｅｂサーバ１００が起動されると、ＣＰＵ１０１は、ＢＩＯＳプログラムをＲＡＭ１０２に読み出し、ＨＤＤ１０４を含む周辺デバイスをアクセス可能にする。そして、ＣＰＵ１０１は、ＢＩＯＳプログラムに従って、ＯＳプログラムをＨＤＤ１０４からＲＡＭ１０２に読み出す。また、ＢＩＯＳプログラムには、ＤＶＦＳ回路１０１ｂにＰ−ｓｔａｔｅを変更するよう指示する機能や、ＣＰＵ１０１の使用状況をモニタする機能が実装されている。
【００３５】
ＨＤＤ１０４は、ＯＳプログラム、アプリケーションソフトウェアのプログラム、および、ＯＳやアプリケーションソフトウェアによって使用されるデータを記憶する不揮発性の記憶装置であり、補助記憶装置である。ＯＳプログラムには、ＢＩＯＳを介してＣＰＵ１０１の使用状況の情報を収集する機能や、ＣＰＵ１０１の使用率に応じてＰ−ｓｔａｔｅを決定しＢＩＯＳを介してＤＶＦＳ回路１０１ｂを制御する機能が実行されている。なお、Ｗｅｂサーバ１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の補助記憶装置を有してもよく、複数個の補助記憶装置を有してもよい。
【００３６】
画像信号処理部１０５は、ＣＰＵ１０１からの命令に従って、Ｗｅｂサーバ１００に接続されたディスプレイ３１に画像を出力する。ディスプレイ３１としては、例えば、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ（ＰＤＰ：Plasma Display Panel）、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなどを用いることができる。
【００３７】
入力信号処理部１０６は、Ｗｅｂサーバ１００に接続された入力デバイス３２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス３２としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、Ｗｅｂサーバ１００に、複数の種類の入力デバイスが接続されていてもよい。
【００３８】
媒体リーダ１０７は、記録媒体３３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体３３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。媒体リーダ１０７は、例えば、記録媒体３３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０４に格納する。
【００３９】
通信インタフェース１０８は、ネットワーク２０に接続され、ネットワーク２０を介してクライアント２１やアプリケーションサーバ１００ａなどの他のコンピュータと通信を行うインタフェースである。通信インタフェース１０８は、例えば、ケーブルを介して、ネットワーク２０に属するスイッチなどの通信装置と接続される。
【００４０】
なお、Ｗｅｂサーバ１００は、媒体リーダ１０７を有していなくてもよい。また、Ｗｅｂサーバ１００は、ユーザが操作する端末装置（クライアント２１など）からネットワーク２０経由でＷｅｂサーバ１００が制御される場合には、画像信号処理部１０５や入力信号処理部１０６を有していなくてもよい。また、ディスプレイ３１や入力デバイス３２が、Ｗｅｂサーバ１００の筐体と一体に形成されていてもよい。
【００４１】
次に、Ｐ−ｓｔａｔｅの定義およびＤＶＦＳで発生し得る問題について説明する。
図４は、Ｐ−ｓｔａｔｅとクロック周波数の関係例を示す図である。
ＣＰＵ１０１には、動作レベルとしてＰ０〜Ｐ８の９段階のＰ−ｓｔａｔｅが定義されている。Ｐ０はクロック周波数が最も高いＰ−ｓｔａｔｅであり、Ｐ８はクロック周波数が最も低いＰ−ｓｔａｔｅである。すなわち、Ｐ０はＣＰＵ１０１の演算能力が最大であり動作レベルが最も高いことを示しており、Ｐ８はＣＰＵ１０１の演算能力が最小であり動作レベルが最も低いことを示している。クロック周波数が高いほど電圧も高くなり、クロック周波数が低いほど電圧も低く抑えられる。よって、Ｐ０のときにＣＰＵ１０１の消費電力が最大となり、Ｐ８のときにＣＰＵ１０１の消費電力が最小となる。
【００４２】
例えば、Ｐ０のクロック周波数が２２６１ＭＨｚ（２．２６１ＧＨｚ）、Ｐ１のクロック周波数が２１２８ＭＨｚ、Ｐ２のクロック周波数が１９９５ＭＨｚ、Ｐ３のクロック周波数が１８６２ＭＨｚ、Ｐ４のクロック周波数が１７２９ＭＨｚである。また、例えば、Ｐ５のクロック周波数が１５９６ＭＨｚ、Ｐ６のクロック周波数が１４６３ＭＨｚ、Ｐ７のクロック周波数が１３３０ＭＨｚ、Ｐ８のクロック周波数が１１９７ＭＨｚである。このようなクロック周波数の増減と正の相関をもって、電圧も増減する。
【００４３】
ただし、ＯＳによるＰ−ｓｔａｔｅ制御を簡潔にするため、また、以下のＰ−ｓｔａｔｅ制御の説明を簡単にするため、第２の実施の形態では、ＯＳはＰ０〜Ｐ８のうちＰ０，Ｐ４，Ｐ８のみを使用するものとする。すなわち、ＯＳからＢＩＯＳを介してＤＶＦＳ回路１０１ｂに指示され得るＰ−ｓｔａｔｅは、Ｐ０，Ｐ４，Ｐ８の３つに限定される。
【００４４】
ＯＳは、パフォーマンスを考慮しつつＣＰＵ１０１の消費電力を削減するため、ＣＰＵ１０１の使用率に応じてＰ−ｓｔａｔｅを調整する。ＯＳは、ＣＰＵ１０１がＰ８で動作しているときにＣＰＵ使用率が高くなる（例えば、ＣＰＵ使用率が上限閾値以上になる）と、Ｐ−ｓｔａｔｅをＰ８からＰ４に上げる。Ｐ−ｓｔａｔｅをＰ４に上げてもＣＰＵ使用率が十分に下がらない場合（例えば、ＣＰＵ使用率がまだ上限閾値以上の場合）、ＯＳは、Ｐ−ｓｔａｔｅを更にＰ４からＰ０に上げる。段階的にＰ−ｓｔａｔｅを上げるのは、ＣＰＵ使用率が１００％のときに、どの程度の演算能力が不足しているか（どの程度演算能力を上げればＣＰＵ使用率が十分に下がるか）を推定するのが難しいためである。
【００４５】
一方、ＯＳは、ＣＰＵ１０１がＰ０で動作しているときにＣＰＵ使用率が低くなる（例えば、ＣＰＵ使用率が下限閾値未満になる）と、Ｐ−ｓｔａｔｅをＰ０からＰ４またはＰ８に下げる。このとき、ＯＳは、Ｐ−ｓｔａｔｅをＰ８に下げたときのＣＰＵ使用率を、現在のＣＰＵ使用率から推定することが可能である。よって、ＯＳは、Ｐ−ｓｔａｔｅをＰ０からＰ４に下げるかＰ８まで下げるかを、現在のＣＰＵ使用率に応じて選択できる。例えば、ＯＳは、Ｐ−ｓｔａｔｅをＰ８に下げたときのＣＰＵ使用率の推定値が上限閾値未満である場合はＰ８に下げ、それ以外の場合はＰ４に下げればよい。
【００４６】
以上のようなＰ−ｓｔａｔｅの制御は、Ｗｅｂサーバ１００、アプリケーションサーバ１００ａおよびデータベースサーバ１００ｂそれぞれで独立に実行される。
ところで、ＣＰＵ使用率の瞬間的な変化に合わせてＰ−ｓｔａｔｅを過度に高頻度で変更すると、かえってＣＰＵ１０１の省電力化が図れないおそれがある。ある瞬間にＣＰＵ使用率が急増しても、それが一時的であり次の瞬間にはＣＰＵ使用率が急激に低下する可能性がある。その場合、ＣＰＵ使用率の一時的な増加に合わせてＣＰＵ１０１の演算能力を瞬時に上げてしまうと、その後のＣＰＵ１０１の空き時間が増えてしまいＣＰＵ１０１の利用効率が低下してしまう。また、Ｐ−ｓｔａｔｅを過度に高頻度で変更することは、ＣＰＵ１０１への割り込みの発生によってＯＳのオーバヘッドを大きくし、アプリケーションソフトウェアのパフォーマンスを低下させるおそれがある。
【００４７】
そこで、ＯＳは、ＣＰＵ使用率を確認してＣＰＵ１０１のＰ−ｓｔａｔｅを変更するか否か判定することを、一定の周期（例えば、５００ｍｓ周期など）で間欠的に行う。第２の実施の形態において、Ｐ−ｓｔａｔｅを変更するか否か判定するタイミングをＰ−ｓｔａｔｅ制御タイミングと言うことがあり、Ｐ−ｓｔａｔｅ制御タイミングの周期をＰ−ｓｔａｔｅ制御周期と言うことがある。ある瞬間にＣＰＵ使用率が急増しても、次のＰ−ｓｔａｔｅ制御タイミングまでにＣＰＵ使用率が下がっていればＰ−ｓｔａｔｅは上がらない。例えば、Ｗｅｂサーバ１００が一時的に大量のリクエストを受信しても、次のＰ−ｓｔａｔｅ制御タイミングまでにそれらリクエストを処理し終えていれば、Ｐ−ｓｔａｔｅを上げなくてよい。これにより、ＣＰＵ１０１の平均消費電力を削減できる。
【００４８】
ただし、Ｐ−ｓｔａｔｅ制御周期を固定にすると、次のような問題が生じ得る。
図５は、入力負荷とクロック周波数のミスマッチ例を示す図である。
ここでは、アプリケーションサーバ１００ａで実行されるＤＶＦＳについて考える。Ｗｅｂサーバ１００やデータベースサーバ１００ｂでも同様の問題が発生し得る。
【００４９】
外部からアプリケーションサーバ１００ａに与えられる負荷（入力負荷）は、主にＷｅｂサーバ１００から受信されるリクエストの数に比例する。そして、アプリケーションサーバ１００ａがＷｅｂサーバ１００から単位時間当たりに受信するリクエストの数、すなわち、単位時間当たりの入力負荷は、均一ではなく変動することが多い。入力負荷の変動の波には、幾つかの周期の異なる波が含まれ得る。入力負荷の変動の波の中に、周期がアプリケーションサーバ１００ａのＰ−ｓｔａｔｅ制御周期と同一または近似する波が含まれており、その波の振幅が十分に大きいとする。すると、入力負荷とＰ−ｓｔａｔｅとの間に「反同期」（anti-synchronization）と表現できる現象が発生する。
【００５０】
入力負荷とＰ−ｓｔａｔｅとの「反同期」は、入力負荷とＰ−ｓｔａｔｅとが負の相関をもって同期してしまい、入力負荷とＰ−ｓｔａｔｅとのミスマッチが継続的に発生する現象である。「反同期」が生じると、入力負荷が高いのにＰ−ｓｔａｔｅが低い状態と入力負荷が低いのにＰ−ｓｔａｔｅが高い状態とが、継続的に交互に現れる。これにより、アプリケーションサーバ１００ａのＣＰＵの運用が非効率になってしまう。
【００５１】
例えば、まず、（１）アプリケーションサーバ１００ａが、入力負荷が低く（受信するリクエストが少なく）Ｐ−ｓｔａｔｅが低い（ＣＰＵのクロック周波数が低い）状態であるとする。次に、（２）入力負荷が周期的に変動することから、入力負荷が増大する（受信するリクエストが増える）。しかし、アプリケーションサーバ１００ａでは、次のＰ−ｓｔａｔｅ制御タイミングが到来するまでＰ−ｓｔａｔｅが変更されないため、低いＰ−ｓｔａｔｅ（低いクロック周波数）が維持される。すなわち、入力負荷が高いのにＰ−ｓｔａｔｅが低いというミスマッチが発生する。このとき、未処理のリクエストが増加し、Ｗｅｂサーバ１００に対する応答時間が急激に悪化する。
【００５２】
次に、（３）Ｐ−ｓｔａｔｅ制御タイミングが到来すると、ＣＰＵ使用率が高いため、Ｐ−ｓｔａｔｅが上がる（ＣＰＵのクロック周波数が高くなる）。これにより、アプリケーションサーバ１００ａでは、未処理のリクエストが徐々に減少し、Ｗｅｂサーバ１００に対する応答時間が徐々に改善していく。次に、（４）入力負荷が周期的に変動することから、入力負荷が低下する（受信するリクエストが減る）。しかし、アプリケーションサーバ１００ａでは、次のＰ−ｓｔａｔｅ制御タイミングが到来するまでＰ−ｓｔａｔｅが変更されないため、高いＰ−ｓｔａｔｅ（高いクロック周波数）が維持される。すなわち、入力負荷が低いのにＰ−ｓｔａｔｅが高いというミスマッチが発生する。この状態では、ＣＰＵの省電力化が実現できていないことになる。
【００５３】
次に、（５）Ｐ−ｓｔａｔｅ制御タイミングが到来すると、ＣＰＵ使用率が低いため、Ｐ−ｓｔａｔｅが下がる（ＣＰＵのクロック周波数が低くなる）。これにより、ＣＰＵの省電力化が実現でき、上記の状態（１）に戻る。しかし、入力負荷の変動周期とＰ−ｓｔａｔｅ制御周期とが同一または近似しているため、上記の状態（２）のミスマッチと状態（４）のミスマッチとが交互に継続的に発生することになる。
【００５４】
図６は、入力負荷とクロック周波数のミスマッチの伝搬例を示す図である。
上記では、単一のサーバコンピュータに着目して、入力負荷とＰ−ｓｔａｔｅとのミスマッチを説明した。このミスマッチは、３階層アーキテクチャのＷｅｂシステムのように複数のサーバコンピュータが連携するシステムでは増幅されることがある。ここでは、アプリケーションサーバ１００ａとデータベースサーバ１００ｂの連携について考える。Ｗｅｂサーバ１００とアプリケーションサーバ１００ａの間でも同様の問題が発生し得る。
【００５５】
例えば、まず、（１）アプリケーションサーバ１００ａおよびデータベースサーバ１００ｂの両方が、入力負荷が低くＰ−ｓｔａｔｅが高い状態であるとする。次に、（２）アプリケーションサーバ１００ａのＰ−ｓｔａｔｅ制御タイミングが到来したとする。すると、ＣＰＵ使用率が低いため、アプリケーションサーバ１００ａのＰ−ｓｔａｔｅが下がる。その結果、アプリケーションサーバ１００ａのリクエストの処理速度が低下するため、データベースサーバ１００ｂの入力負荷が低下する。しかし、データベースサーバ１００ｂでは、次のＰ−ｓｔａｔｅ制御タイミングが到来するまで高いＰ−ｓｔａｔｅが維持されるため、入力負荷とＰ−ｓｔａｔｅのミスマッチが発生する。
【００５６】
次に、（３）アプリケーションサーバ１００ａの入力負荷が増大する。しかし、アプリケーションサーバ１００ａでは、次のＰ−ｓｔａｔｅ制御タイミングが到来するまで低いＰ−ｓｔａｔｅが維持されるため、入力負荷とＰ−ｓｔａｔｅのミスマッチが発生する。一方、データベースサーバ１００ｂのＰ−ｓｔａｔｅ制御タイミングが到来すると、ＣＰＵ使用率が低いため、データベースサーバ１００ｂのＰ−ｓｔａｔｅが下がる。
【００５７】
次に、（４）アプリケーションサーバ１００ａのＰ−ｓｔａｔｅ制御タイミングが到来する。すると、ＣＰＵ使用率が高いため、アプリケーションサーバ１００ａのＰ−ｓｔａｔｅが上がる。その結果、アプリケーションサーバ１００ａのリクエストの処理速度が上昇するため、データベースサーバ１００ｂの入力負荷が増大する。しかし、データベースサーバ１００ｂでは、次のＰ−ｓｔａｔｅ制御タイミングが到来するまで低いＰ−ｓｔａｔｅが維持されるため、入力負荷とＰ−ｓｔａｔｅのミスマッチが発生する。
【００５８】
次に、（５）アプリケーションサーバ１００ａの入力負荷が減少する。しかし、アプリケーションサーバ１００ａでは、次のＰ−ｓｔａｔｅ制御タイミングが到来するまで高いＰ−ｓｔａｔｅが維持されるため、入力負荷とＰ−ｓｔａｔｅのミスマッチが発生する。一方、データベースサーバ１００ｂのＰ−ｓｔａｔｅ制御タイミングが到来すると、ＣＰＵ使用率が高いため、データベースサーバ１００ｂのＰ−ｓｔａｔｅが上がる。これにより、滞留したリクエストが処理されて上記の状態（１）に戻る。
【００５９】
このように、アプリケーションサーバ１００ａの入力負荷とＰ−ｓｔａｔｅとのミスマッチと、データベースサーバ１００ｂの入力負荷とＰ−ｓｔａｔｅとのミスマッチとが、交互に繰り返し発生する。すなわち、常にミスマッチがＷｅｂシステムの何れかの層で発生していることになる。また、前段のサーバコンピュータ（アプリケーションサーバ１００ａ）におけるミスマッチの影響で、後段のサーバコンピュータ（データベースサーバ１００ｂ）の入力負荷の変動が増幅される。よって、クライアント２１に対するＷｅｂシステムの応答時間が顕著に悪化するという問題がある。
【００６０】
そこで、第２の実施の形態のＷｅｂサーバ１００、アプリケーションサーバ１００ａおよびデータベースサーバ１００ｂは、入力負荷とＰ−ｓｔａｔｅの「反同期」が抑制されるようにＰ−ｓｔａｔｅ制御周期を可変とする。「反同期」を抑制することで、各サーバコンピュータのＣＰＵを効率的に運用することができ、クライアント２１に対する応答時間を改善することができる。以下では、Ｗｅｂサーバ１００がＰ−ｓｔａｔｅ制御を行う場合について説明する。アプリケーションサーバ１００ａおよびデータベースサーバ１００ｂも、Ｗｅｂサーバ１００と同様のＰ−ｓｔａｔｅ制御を行うことができる。
【００６１】
図７は、Ｗｅｂサーバの機能例を示すブロック図である。
Ｗｅｂサーバ１００は、ＣＰＵモニタ１１１、Ｐ−ｓｔａｔｅ指示部１１２、制御情報記憶部１２１、履歴記憶部１２２、Ｐ−ｓｔａｔｅ決定部１２３、周期算出部１２４、リクエストキュー１３１およびリクエスト処理部１３２を有する。
【００６２】
例えば、ＣＰＵモニタ１１１およびＰ−ｓｔａｔｅ指示部１１２は、ＢＩＯＳのプログラムモジュールとして実装できる。制御情報記憶部１２１および履歴記憶部１２２は、ＯＳが使用するＲＡＭ１０２またはＨＤＤ１０４の記憶領域として実現できる。Ｐ−ｓｔａｔｅ決定部１２３および周期算出部１２４は、ＯＳのプログラムモジュールとして実装できる。リクエストキュー１３１は、アプリケーションソフトウェアが使用するＲＡＭ１０２またはＨＤＤ１０４の記憶領域として実現できる。リクエスト処理部１３２は、アプリケーションソフトウェアのプログラムモジュールとして実装できる。
【００６３】
ＣＰＵモニタ１１１は、ＣＰＵ１０１の使用状況をモニタしＰ−ｓｔａｔｅ決定部１２３に報告する。例えば、ＣＰＵモニタ１１１は、幾つかの時点でコア１０１ａが命令を実行しているか否かサンプリングし、サンプリング結果をＰ−ｓｔａｔｅ決定部１２３に報告する。命令を実行しているサンプルの割合を、ＣＰＵ使用率とすることができる。
【００６４】
Ｐ−ｓｔａｔｅ指示部１１２は、Ｐ−ｓｔａｔｅ決定部１２３からの要求に応じて、Ｐ−ｓｔａｔｅの変更を制御する。例えば、Ｐ−ｓｔａｔｅ指示部１１２は、コア１０１ａのＰ−ｓｔａｔｅをＰ−ｓｔａｔｅ決定部１２３で決定されたものに変更するよう、ＤＶＦＳ回路１０１ｂに指示する。これにより、ＤＶＦＳ回路１０１ｂによって、コア１０１ａに供給されるクロック信号の周波数や電圧が変更される。なお、Ｐ−ｓｔａｔｅとクロック周波数および電圧との対応関係は、予めＤＶＦＳ回路１０１ｂに定義されている。
【００６５】
制御情報記憶部１２１は、Ｐ−ｓｔａｔｅ制御に用いられる制御情報を記憶する。制御情報には、Ｐ−ｓｔａｔｅ制御周期、すなわち、ＣＰＵ１０１のＰ−ｓｔａｔｅを変更するか否か判定する周期を示す情報が含まれる。制御情報は周期算出部１２４によって生成され、Ｐ−ｓｔａｔｅ決定部１２３によって参照される。履歴記憶部１２２は、Ｐ−ｓｔａｔｅの変更履歴を示す履歴情報を記憶する。履歴情報には、Ｐ−ｓｔａｔｅを変更した時刻と変更後のＰ−ｓｔａｔｅとを示す情報が含まれる。履歴情報は、Ｐ−ｓｔａｔｅ決定部１２３によって生成され、周期算出部１２４によって参照される。
【００６６】
Ｐ−ｓｔａｔｅ決定部１２３は、制御情報記憶部１２１に記憶された制御情報が示すＰ−ｓｔａｔｅ制御周期に従って間欠的に、Ｐ−ｓｔａｔｅを調整する。Ｐ−ｓｔａｔｅ制御タイミングが到来すると、Ｐ−ｓｔａｔｅ決定部１２３は、ＣＰＵモニタ１１１からの報告に基づいて現在のＣＰＵ使用率を算出し、ＣＰＵ使用率と現在のＰ−ｓｔａｔｅに基づいてＰ−ｓｔａｔｅを変更するか否か判定する。前述のように、例えば、Ｐ−ｓｔａｔｅがＰ８でありＣＰＵ使用率が上限閾値以上である場合にはＰ８からＰ４に変更すると決定され、Ｐ−ｓｔａｔｅがＰ４でありＣＰＵ使用率が上限閾値以上である場合にはＰ４からＰ０に変更すると決定される。また、Ｐ−ｓｔａｔｅがＰ０でありＣＰＵ使用率が下限閾値未満である場合にはＰ０からＰ４またはＰ８に変更すると決定される。
【００６７】
Ｐ−ｓｔａｔｅの変更が決定された場合、Ｐ−ｓｔａｔｅ決定部１２３は、変更後のＰ−ｓｔａｔｅをＰ−ｓｔａｔｅ指示部１１２に通知する。また、Ｐ−ｓｔａｔｅ決定部１２３は、履歴記憶部１２２に記憶された履歴情報に、現在時刻と変更後のＰ−ｓｔａｔｅを示す情報を追加する。このとき、Ｐ−ｓｔａｔｅ決定部１２３は、所定回数以上前または所定時間以上前の古い情報を履歴情報から削除するようにしてもよい。
【００６８】
周期算出部１２４は、Ｗｅｂサーバ１００の入力負荷の変動周期に基づいて、適切なＰ−ｓｔａｔｅ制御周期を算出する。算出したＰ−ｓｔａｔｅ制御周期が現在のＰ−ｓｔａｔｅ制御周期と異なる場合、周期算出部１２４は、制御情報記憶部１２１に記憶された制御情報を更新する。第２の実施の形態では、Ｗｅｂサーバ１００の入力負荷の変動周期は、履歴記憶部１２２に記憶された履歴情報に基づいて推定することとする。具体的には、周期算出部１２４は、ＣＰＵ１０１のＰ−ｓｔａｔｅがＰ０に上がった平均間隔を、入力負荷の変動周期と推定する。周期算出部１２４は、推定した入力負荷の変動周期よりも短い周期を、適切なＰ−ｓｔａｔｅ制御周期として算出する。ただし、入力負荷の変動に周期性がないと判断される場合は、Ｐ−ｓｔａｔｅ制御周期を変更しなくてもよい。
【００６９】
ここで、周期算出部１２４がＰ−ｓｔａｔｅ制御周期を算出する契機は、例えば、履歴情報が更新された（Ｐ−ｓｔａｔｅ決定部１２３がＰ−ｓｔａｔｅの変更を決定した）ことであってもよい。また、Ｐ−ｓｔａｔｅ制御周期を算出する契機は、履歴情報にＰ０の情報が追加された（ＣＰＵ１０１のＰ−ｓｔａｔｅがＰ８またはＰ４からＰ０に上がった）ことであってもよい。また、周期算出部１２４が、Ｐ−ｓｔａｔｅ制御周期よりも長い間隔で定期的にＰ−ｓｔａｔｅ制御周期を算出するようにしてもよい。
【００７０】
リクエストキュー１３１は、Ｗｅｂサーバ１００が受信したリクエストを一時的に記憶するキュー構造のバッファである。リクエストキュー１３１に記憶されたリクエストは、リクエスト処理部１３２によって取り出されて処理される。ＣＰＵ１０１の演算能力の不足によって未処理になっているリクエストは、リクエストキュー１３１に滞留することになる。滞留しているリクエストの数を、キュー長と言うことができる。
【００７１】
リクエスト処理部１３２は、ＣＰＵ１０１を用いて、リクエストキュー１３１に記憶されているリクエストを順次処理する。例えば、リクエスト処理部１３２は、クライアント２１から受信されたＨＴＴＰのリクエストから実行すべき業務ロジックを特定し、特定した業務ロジックを示すリクエストをアプリケーションサーバ１００ａに送信する。リクエスト処理部１３２は、アプリケーションサーバ１００ａから業務ロジックの実行結果を受信すると、ＨＴＴＰのレスポンスを生成してクライアント２１に送信する。
【００７２】
なお、図７では、Ｐ−ｓｔａｔｅを変更するか否かの判定およびＰ−ｓｔａｔｅ制御周期の算出を、ＯＳで行うこととした。これは、「ＯＳ制御型」と言うことができる。これに対し、Ｐ−ｓｔａｔｅを変更するか否かの判定およびＰ−ｓｔａｔｅ制御周期の算出を、ＢＩＯＳで行うことも可能である。これは、「ＢＩＯＳ制御型」と言うことができる。その場合、制御情報記憶部１２１および履歴記憶部１２２は、ＢＩＯＳが使用するＲＡＭ１０２またはＨＤＤ１０４の記憶領域として実現される。また、Ｐ−ｓｔａｔｅ決定部１２３および周期算出部１２４は、ＢＩＯＳのプログラムモジュールとして実装される。
【００７３】
また、ＣＰＵ１０１が複数のコアを有しており、ＤＶＦＳ回路１０１ｂがコア毎に独立にＰ−ｓｔａｔｅを変更できる場合も考えられる。その場合、Ｐ−ｓｔａｔｅ決定部１２３は、コア毎にＰ−ｓｔａｔｅを変更するか否か判定してもよく、周期算出部１２４は、コア毎にＰ−ｓｔａｔｅ制御周期を算出するようにしてもよい。
【００７４】
また、上記の説明では、Ｐ−ｓｔａｔｅがＰ８またはＰ４からＰ０に上がった平均間隔を入力負荷の変動周期と推定することとしたが、Ｐ−ｓｔａｔｅが所定の閾値以上に上がった平均間隔を入力負荷の変動周期と推定してもよい。例えば、ＯＳがＰ−ｓｔａｔｅをＰ０，Ｐ４，Ｐ８の３段階ではなくＰ０〜Ｐ８の９段階で調整できるとする。その場合、Ｐ２を閾値とし、Ｐ−ｓｔａｔｅがＰ３〜Ｐ８からＰ０〜Ｐ２に上がった平均間隔を入力負荷の変動周期と推定することも可能である。また、周期算出部１２４は、履歴情報が示すＰ−ｓｔａｔｅの変化を波動解析してＰ−ｓｔａｔｅのピークの平均間隔を算出し、ピークの平均間隔を入力負荷の変動周期と推定するようにしてもよい。また、周期算出部１２４は、アプリケーションソフトウェアからリクエストキュー１３１のキュー長を示す情報を継続的に収集し、入力負荷の変動周期としてキュー長の変動周期を算出してもよい。
【００７５】
図８は、履歴テーブルの例を示す図である。
履歴テーブル１２５は、履歴記憶部１２２に格納されている。履歴テーブル１２５は、時刻およびＰ−ｓｔａｔｅの項目を含む。時刻の項目には、Ｐ−ｓｔａｔｅ決定部１２３がＰ−ｓｔａｔｅの変更を決定した時刻が登録される。この時刻は、例えば、ミリ秒の精度で表現される。Ｐ−ｓｔａｔｅの項目には、変更後のＰ−ｓｔａｔｅを示す情報（例えば、Ｐ０，Ｐ４，Ｐ８の何れか）が登録される。履歴テーブル１２５に含まれるレコード（時刻とＰ−ｓｔａｔｅの組）のうちＰ−ｓｔａｔｅがＰ０であるレコードが、周期算出部１２４によってＰ−ｓｔａｔｅ制御周期を算出するために利用される。
【００７６】
次に、Ｐ−ｓｔａｔｅ制御周期を算出する手順について説明する。
図９は、入力負荷の周期性の例を示す図である。
周期算出部１２４は、入力負荷の周期性を判断し、入力負荷が周期的に変動していると判断される場合に、入力負荷の変動周期より短いＰ−ｓｔａｔｅ制御周期を算出する。前述のように、入力負荷の周期性は、過去のＰ−ｓｔａｔｅの周期性から推定できる。
【００７７】
Ｐ−ｓｔａｔｅの周期性を判断するにあたり、周期算出部１２４は、履歴テーブル１２５からＰ−ｓｔａｔｅがＰ０であるレコード（Ｐ−ｓｔａｔｅがＰ８またはＰ４からＰ０に上がったことを示すレコード）を抽出する。周期算出部１２４は、抽出したレコードのうち隣接する２つのレコード毎に時刻の差、すなわち、Ｐ−ｓｔａｔｅが前回Ｐ０に上がってから次に再びＰ０に上がるまでの時間を、間隔Ｂjとして算出する。このとき、Ｐ−ｓｔａｔｅがＰ０になった間隔Ｂには古い順に番号ｊが付与され、最新の間隔Ｂには番号ｉが付与されているとする（ｉ，ｊは１≦ｊ≦ｉを満たす正の整数）。
【００７８】
次に、周期算出部１２４は、数式（１）のように直近ｋ個の間隔Ｂjの算術平均ＡＡiを算出する（ｋは２以上の整数）。例えば、周期算出部１２４は、間隔Ｂj，Ｂj-1，Ｂj-2，…，Ｂi-k+1の合計をｋで割ることで算術平均ＡＡiを算出する。次に、周期算出部１２４は、数式（２）のように直近ｋ個の間隔Ｂjの標準偏差ＳＤiを算出する。例えば、周期算出部１２４は、間隔Ｂjと算術平均ＡＡiの差の二乗を合計しｋ−１で割って平方根をとることで、標準偏差ＳＤiを算出する。次に、周期算出部１２４は、数式（３）のように直近ｋ個の間隔Ｂjの変動係数ＣＶiを算出する。例えば、周期算出部１２４は、標準偏差ＳＤiを算術平均ＡＡiで割ることで変動係数ＣＶiを算出する。
【００７９】
【数１】
2015082321.tif 000003
【００８０】
【数２】
2015082321.tif 000004
【００８１】
【数３】
2015082321.tif 000005
【００８２】
算出した変動係数ＣＶiが閾値ＴＨ（例えば、ＴＨ＝０．２）未満である場合、周期算出部１２４は、過去のＰ−ｓｔａｔｅの変更に周期性がある、すなわち、入力負荷に周期性があると判断する。図９の上段の場合、間隔Ｂ1〜Ｂ7のばらつきが小さく変動係数ＣＶ7が小さいため、入力負荷に周期性があると判断される。一方、変動係数ＣＶiが閾値ＴＨ以上である場合、周期算出部１２４は、過去のＰ−ｓｔａｔｅの変更に周期性がない、すなわち、入力負荷に周期性がないと判断する。図９の下段の場合、間隔Ｂ1〜Ｂ3のばらつきが大きく変動係数ＣＶ3が大きいため、入力負荷に周期性がないと判断される。
【００８３】
入力負荷に周期性があると判断した場合、周期算出部１２４は、入力負荷の変動周期を所定の割合で短縮した周期をＰ−ｓｔａｔｅ制御周期として算出する。具体的には、周期算出部１２４は、間隔Ｂjの算術平均ＡＡiのｎ分の１（例えば、ｎ＝１０）をＰ−ｓｔａｔｅ制御周期とする。ただし、周期算出部１２４は、Ｐ−ｓｔａｔｅ制御周期が下限値Ｔlower（例えば、５０ｍｓ）以上かつ上限値Ｔupper（例えば、５００ｍｓ）以下になるように、Ｐ−ｓｔａｔｅ制御周期をクリッピングする。
【００８４】
よって、Ｐ−ｓｔａｔｅ制御周期Ｔiは数式（４）のように定義できる。周期算出部１２４は、ＡＡi／ｎが下限値Ｔlower未満である場合はＴi＝Ｔlowerと設定し、ＡＡi／ｎが下限値Ｔlower以上かつ上限値Ｔupper以下である場合はＴi＝ＡＡi／ｎと設定し、ＡＡi／ｎが上限値Ｔupperを超える場合はＴi＝Ｔupperと設定する。
【００８５】
【数４】
2015082321.tif 000006
【００８６】
図１０は、周期調整の手順例を示すフローチャートである。
前述のように、この周期調整は、ＣＰＵ１０１のＰ−ｓｔａｔｅが変更される毎、または、Ｐ−ｓｔａｔｅがＰ４，Ｐ８からＰ０に上がる毎に実行されてもよい。また、この周期調整は、Ｐ−ｓｔａｔｅ制御周期より長い所定間隔で実行されてもよい。
【００８７】
（Ｓ１０）周期算出部１２４は、履歴記憶部１２２に記憶された履歴テーブル１２５から、Ｐ−ｓｔａｔｅがＰ０であるレコード（変更履歴）を抽出する。
（Ｓ１１）周期算出部１２４は、ステップＳ１０で抽出された変更履歴の中に、図１０の周期制御を前回実行してから追加された変更履歴が存在するか、すなわち、周期制御を前回実行してからＰ−ｓｔａｔｅがＰ０に上がったことがあるか判断する。追加された変更履歴がある場合はステップＳ１２に処理を進め、ない場合は周期調整が終了する。
【００８８】
（Ｓ１２）周期算出部１２４は、抽出された変更履歴が示す時刻から、Ｐ−ｓｔａｔｅがＰ０に上がった間隔Ｂjを算出する。間隔Ｂjは少なくとも直近ｋ個分について算出する。そして、周期算出部１２４は、直近ｋ個の間隔Ｂjの算術平均ＡＡiを算出する。
【００８９】
（Ｓ１３）周期算出部１２４は、直近ｋ個の間隔Ｂjとその算術平均ＡＡiとから、間隔Ｂjの標準偏差ＳＤiを算出する。そして、周期算出部１２４は、算術平均ＡＡiと標準偏差ＳＤiとから、直近ｋ個の間隔Ｂjの変動係数ＣＶiを算出する。
【００９０】
（Ｓ１４）周期算出部１２４は、ステップＳ１３で算出した変動係数ＣＶiが閾値ＴＨ（例えば、０．２）未満か、すなわち、直近ｋ個の間隔Ｂjのばらつきが小さいか判断する。変動係数ＣＶiが閾値ＴＨ未満の場合、周期算出部１２４は入力負荷の変動に周期性があると判断し、ステップＳ１５に処理が進む。変動係数ＣＶiが閾値ＴＨ以上の場合、周期算出部１２４は入力負荷の変動に周期性がないと判断し、周期調整が終了する。周期性がない場合、現在のＰ−ｓｔａｔｅ制御周期Ｔi-1が維持されることになる。
【００９１】
（Ｓ１５）周期算出部１２４は、ステップＳ１２で算出した算術平均ＡＡiのｎ分の１（＝ＡＡi／ｎ）を算出する。ｎは周期調整の速度に影響を与えるパラメータであり、例えば、ｎ＝１０とする。周期算出部１２４は、ＡＡi／ｎが下限値Ｔlower未満であるか判断する。ＡＡi／ｎが下限値Ｔlower未満の場合はステップＳ１６に処理が進み、ＡＡi／ｎが下限値Ｔlower以上の場合はステップＳ１７に処理が進む。
【００９２】
（Ｓ１６）周期算出部１２４は、Ｐ−ｓｔａｔｅ制御周期Ｔiを下限値Ｔlower（例えば、５０ｍｓ）とする。そして、ステップＳ２０に処理が進む。
（Ｓ１７）周期算出部１２４は、ＡＡi／ｎが上限値Ｔupperを超えるか判断する。ＡＡi／ｎが上限値Ｔupperを超える場合はステップＳ１８に処理が進み、ＡＡi／ｎが上限値Ｔupper以下の場合はステップＳ１９に処理が進む。
【００９３】
（Ｓ１８）周期算出部１２４は、Ｐ−ｓｔａｔｅ制御周期Ｔiを上限値Ｔupper（例えば、５００ｍｓ）とする。そして、処理がステップＳ２０に進む。
（Ｓ１９）周期算出部１２４は、Ｐ−ｓｔａｔｅ制御周期ＴiをＡＡi／ｎとする。これにより、所定の範囲内に属するＰ−ｓｔａｔｅ制御周期Ｔiが算出される。
【００９４】
（Ｓ２０）周期算出部１２４は、ステップＳ１６，Ｓ１８またはＳ１９で算出されたＰ−ｓｔａｔｅ制御周期Ｔiが現在のＰ−ｓｔａｔｅ制御周期Ｔi-1と異なるか判断する。現在のＰ−ｓｔａｔｅ制御周期Ｔi-1は、制御情報記憶部１２１に記憶された制御情報を参照して確認できる。ＴiがＴi-1と異なる場合、ステップＳ２１に処理が進む。ＴiがＴi-1と同じ場合、制御情報が更新されずに周期調整が終了する。
【００９５】
（Ｓ２１）周期算出部１２４は、制御情報記憶部１２１に記憶された制御情報を、上記で算出されたＰ−ｓｔａｔｅ制御周期Ｔiを示すように更新する。
次に、Ｐ−ｓｔａｔｅ制御周期を可変にした場合としない場合の動作の違いを示す。
【００９６】
図１１は、ＣＰＵ動作の第１のシミュレーション例を示すグラフである。
このシミュレーション例は、Ｐ−ｓｔａｔｅ制御周期を可変にせずに５００ｍｓに固定した場合を示している。ここでは、入力負荷の変動周期が５００ｍｓであるかまたは５００ｍｓに近いとする。すると、入力負荷とＰ−ｓｔａｔｅの「反同期」が発生する。
【００９７】
図１１に示すように、Ｐ−ｓｔａｔｅがＰ０からＰ８に下がった後、Ｐ−ｓｔａｔｅがＰ８からＰ４に上がるまでの間、キュー長（リクエストキュー１３１に滞留している未処理のリクエストの数）が急増している。一方、Ｐ−ｓｔａｔｅがＰ４からＰ０に上がった後にキュー長が急減し、キュー長が短い時間がしばらく続いている。すなわち、「反同期」によって、キュー長の急激な増加と減少とが繰り返されている。キュー長が急増すると、それに合わせてリクエストに対する応答時間も急激に長くなる。すなわち、リクエストに対する応答時間の変動が大きくなり、パフォーマンスが低下している。
【００９８】
図１２は、ＣＰＵ動作の第２のシミュレーション例を示すグラフである。
このシミュレーション例は、図１０に示したような方法でＰ−ｓｔａｔｅ制御周期を可変にした場合を示している。入力負荷の周期性が検知されると、Ｐ−ｓｔａｔｅ制御周期が５００ｍｓから徐々に短縮される。Ｐ−ｓｔａｔｅ制御周期が短くなると、入力負荷が変動してからＰ−ｓｔａｔｅが変更されるまでのタイムラグが小さくなり、入力負荷がＰ−ｓｔａｔｅに適切に反映されるようになる。すなわち、入力負荷とＰ−ｓｔａｔｅの「反同期」が抑制される。そして、Ｐ−ｓｔａｔｅがＰ０に上がった平均間隔に基づいて算出されるＰ−ｓｔａｔｅ制御周期も収束していく。図１２の例では、Ｐ−ｓｔａｔｅ制御周期が１００ｍｓ程度に収束している。このＰ−ｓｔａｔｅ制御周期は、入力負荷の変動周期が変わったときに、それに追従して変更されることになる。
【００９９】
また、入力負荷とＰ−ｓｔａｔｅのミスマッチが抑制されることで、最大のキュー長が図１１の場合よりも短く抑えられている。キュー長の増加が抑えられることで、リクエストに対する応答時間の増加を抑えられる。すなわち、リクエストに対する応答時間の変動が小さくなり、アプリケーションソフトウェアのパフォーマンスが安定する。
【０１００】
ところで、図１０に示した方法では、入力負荷に周期性がないと判断した場合、現在のＰ−ｓｔａｔｅ制御周期を維持している。よって、Ｐ−ｓｔａｔｅ制御周期を短くした後に入力負荷の周期性が消滅すると、その短いＰ−ｓｔａｔｅ制御周期が当面維持される。一方、入力負荷に周期性がなければ「反同期」が発生する可能性は低いため、Ｐ−ｓｔａｔｅ制御周期は長くてもよい。また、入力負荷の変動周期が長くなるとき、過渡的に入力負荷の周期性が消滅したように見えることがある。このとき、入力負荷の変動周期が安定するのを待たずに、Ｐ−ｓｔａｔｅ制御周期を長くする余地もある。
【０１０１】
そこで、入力負荷に周期性がないと判断される場合であっても、Ｐ−ｓｔａｔｅ制御周期を変更し得る変形例が考えられる。ただし、上記の理由から、Ｐ−ｓｔａｔｅ制御周期を長くすることを許容する一方、Ｐ−ｓｔａｔｅ制御周期を短くすることは制限する。
【０１０２】
具体的には、入力負荷に周期性がないと判断される場合、Ｐ−ｓｔａｔｅ制御周期Ｔiは数式（５）のように定義される。周期算出部１２４は、ＡＡi／ｎが現在のＰ−ｓｔａｔｅ制御周期Ｔi-1以下である場合はＴi＝Ｔi-1と設定する。すなわち、Ｐ−ｓｔａｔｅ制御周期を短くせずに現在のＰ−ｓｔａｔｅ制御周期を維持する。また、周期算出部１２４は、ＡＡi／ｎがＴi-1より大きくかつ上限値Ｔupper以下である場合はＴi＝ＡＡi／ｎと設定し、ＡＡi／ｎが上限値Ｔupperを超える場合はＴi＝Ｔupperと設定する。
【０１０３】
【数５】
2015082321.tif 000007
【０１０４】
図１３は、他の周期調整の手順例を示すフローチャートである。
周期調整の変形例は、図１０のステップＳ１４に代えて、以下のステップＳ１４ａ，Ｓ１４ｂが実行される。他のステップは図１０と図１３とで共通している。
【０１０５】
（Ｓ１４ａ）周期算出部１２４は、ステップＳ１３で算出した変動係数ＣＶiが閾値ＴＨ未満か、すなわち、直近ｋ個の間隔Ｂjのばらつきが小さいか判断する。変動係数ＣＶiが閾値ＴＨ未満の場合、周期算出部１２４は入力負荷の変動に周期性があると判断し、ステップＳ１５に処理が進む。変動係数ＣＶiが閾値ＴＨ以上の場合、周期算出部１２４は入力負荷の変動に周期性がないと判断し、ステップＳ１４ｂに処理が進む。
【０１０６】
（Ｓ１４ｂ）周期算出部１２４は、ステップＳ１２で算出した算術平均ＡＡiのｎ分の１（＝ＡＡi／ｎ）を算出する。周期算出部１２４は、ＡＡi／ｎが現在のＰ−ｓｔａｔｅ制御周期Ｔi-1より大きいか判断する。ＡＡi／ｎがＴi-1より大きい場合はステップＳ１７に処理が進み、ＡＡi／ｎがＴi-1以下の場合はステップＳ２０に処理が進む。
【０１０７】
第２の実施の形態の情報処理システムによれば、Ｗｅｂサーバ１００、アプリケーションサーバ１００ａおよびデータベースサーバ１００ｂそれぞれのＰ−ｓｔａｔｅ制御周期が、入力負荷の変動周期に応じて変更される。特に、Ｐ−ｓｔａｔｅ制御周期が、入力負荷の変動周期の１／ｎに設定される。よって、入力負荷とＰ−ｓｔａｔｅのミスマッチを抑制してＣＰＵを効率的に運用でき、アプリケーションソフトウェアのパフォーマンスを向上できる。また、Ｐ−ｓｔａｔｅ制御周期を短周期に固定する場合と比べて、Ｐ−ｓｔａｔｅ制御のオーバヘッドを抑制でき、ＣＰＵの省電力化を図ることができる。
【０１０８】
また、Ｐ−ｓｔａｔｅの変更履歴から入力負荷の変動周期を推定することで、アプリケーションソフトウェアから情報を収集しなくてもよく、ＯＳやＢＩＯＳが一元的にＰ−ｓｔａｔｅ制御を行える。よって、Ｐ−ｓｔａｔｅ制御の実装が容易となる。なお、Ｐ−ｓｔａｔｅの変更履歴からは、入力負荷とＰ−ｓｔａｔｅのミスマッチを抑制するのに十分な精度で入力負荷の変動周期を推定することができる。例えば、Ｐ−ｓｔａｔｅが変更されない程度の入力負荷の変動は、「反同期」に与える影響が小さいため無視してもよい。
【０１０９】
なお、前述のように、第１の実施の形態の情報処理は、情報処理装置１０にプログラムを実行させることで実現することができる。また、第２の実施の形態の情報処理は、クライアント２１、Ｗｅｂサーバ１００、アプリケーションサーバ１００ａおよびデータベースサーバ１００ｂにプログラムを実行させることで実現することができる。
【０１１０】
プログラムは、コンピュータ読み取り可能な記録媒体（例えば、記録媒体３３）に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、ＦＤおよびＨＤＤが含まれる。光ディスクには、ＣＤ、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）、ＤＶＤおよびＤＶＤ−Ｒ／ＲＷが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からＨＤＤなどの他の記録媒体（例えば、ＨＤＤ１０４）にプログラムを複製して（インストールして）実行してもよい。
【符号の説明】
【０１１１】
１０  情報処理装置
１１  プロセッサ
１２  記憶部
１２ａ  プログラム
【図１】
2015082321.tif 000008
【図２】
2015082321.tif 000009
【図３】
2015082321.tif 000010
【図４】
2015082321.tif 000011
【図５】
2015082321.tif 000012
【図６】
2015082321.tif 000013
【図７】
2015082321.tif 000014
【図８】
2015082321.tif 000015
【図９】
2015082321.tif 000016
【図１０】
2015082321.tif 000017
【図１１】
2015082321.tif 000018
【図１２】
2015082321.tif 000019
【図１３】
2015082321.tif 000020