(57)【特許請求の範囲】
【請求項１】
演算コア各々上で複数の演算処理単位が内部ハードウェア資源を共有しながら並列に稼働可能なコンピュータ・システムにおける応答性能を評価する計算方法であって、コンピュータが、
前記コンピュータ・システムの利用状況を、演算処理単位の並列状態で正規化して評価するステップと、
正規化された前記利用状況から、求めようとする演算処理単位の並列状態での応答性能の期待値を、並列稼働状況に応じた前記演算処理単位の平均的な単一性能の変化を考慮した待ち行列理論に基づいて計算するステップと
を含む、計算方法。
【請求項２】
前記平均的な単一性能の変化を考慮するとは、ある瞬間の演算コア内での演算処理単位の同時稼働数に応じた平均的な単一性能の変化を平均サービス率の変動として取り込んで待ち行列における待ち時間を計算することである、請求項１に記載の計算方法。
【請求項３】
前記コンピュータ・システムは、複数の演算コアを含み、前記応答性能の期待値を計算するステップは、前記コンピュータが、
演算コア毎の演算処理単位数を窓口数とした待ち行列での待ち時間を計算するステップと、
前記複数の演算コアにわたる窓口数の待ち行列で、他の演算コアからタスクを受け入れ可能な少なくとも１つ演算コアが存在する移行可能な確率を計算するステップと、
前記待ち時間および前記移行可能な確率に基づき、前記応答性能として平均応答時間の期待値を計算するステップと
を含む、請求項１または２に記載の計算方法。
【請求項４】
前記待ち時間を計算するステップは、前記コンピュータが、演算コア上で同時稼働可能な演算処理単位の２以上の並列度に関して、
前記演算処理単位の平均的な単一性能の初期値を与えるステップと、
前記演算処理単位の平均的な単一性能が平均サービス率であるとして、演算コア毎の演算処理単位数を窓口数とした待ち行列で、各演算コア内に存在するタスク数の確率の分布を計算するステップと、
前記各演算コア内に存在するタスク数の確率の分布に基づき、前記演算処理単位の平均的な単一性能を更新するステップと、
前記確率の分布を計算するステップおよび前記更新するステップの繰り返しの終了条件を判定するステップと
を含む、請求項３に記載の計算方法。
【請求項５】
前記移行可能な確率を計算するステップは、前記コンピュータが、
前記演算処理単位の平均的な単一性能が平均サービス率であるとして、前記複数の演算コアにわたる演算処理単位の総数を窓口数とした待ち行列で、前記複数の演算コア内に存在するタスク数の確率の分布を計算するステップと、
前記複数の演算コア内に存在するタスク数の確率の分布に基づき、前記複数の演算コアのうちの少なくとも１つの演算コアで閾値以下のタスク数である確率を前記移行可能な確率として計算するステップと
を含む、請求項３または４に記載の計算方法。
【請求項６】
前記応答性能の期待値を計算するステップは、演算コアの並列度または複数の演算コアでの並列度の組み合わせの各々について、応答性能の期待値を計算するステップであり、前記計算方法は、前記コンピュータが、
算出された前記応答性能の期待値が最適化される並列度または並列度の組み合わせを、前記利用状況下で使用する演算処理単位の並列状態として決定するステップ
をさらに含む、請求項１〜５のいずれか１項に記載の計算方法。
【請求項７】
前記評価するステップは、各並列度での演算処理単位の単一性能と、各演算処理単位の利用率とに基づいて、前記コンピュータ・システムの正規化されたＣＰＵ利用率を計算するステップである、請求項１〜６のいずれか１項に記載の計算方法。
【請求項８】
前記コンピュータが前記コンピュータ・システムに含まれ、
前記評価するステップは、当該コンピュータ・システムで取得される現在のＣＰＵ利用情報に基づき、正規化された現在の利用状況を評価するステップであり、前記計算方法は、前記コンピュータが、
計算された並列状態での応答性能の期待値の結果に基づき、使用する演算処理単位の並列状態の設定を更新するステップ
をさらに含む、請求項１〜７のいずれか１項に記載の計算方法。
【請求項９】
前記コンピュータが、評価対象のコンピュータ・システムから分離されたものであり、
前記評価するステップは、前記コンピュータ・システムの複数の利用状況を仮定するステップであり、前記計算方法は、前記コンピュータが、
仮定された前記複数の利用状況各々に対応付けて、決定された使用する演算処理単位の並列状態の設定を記録するステップ
をさらに含む、請求項１〜７のいずれか１項に記載の計算方法。
【請求項１０】
前記コンピュータ・システムは、同時マルチスレッディング環境を提供するものであり、前記演算処理単位は、ハードウェア・スレッドである、請求項１〜９のいずれか１項に記載の計算方法。
【請求項１１】
演算コア各々上で複数の演算処理単位が内部ハードウェア資源を共有しながら並列に稼働可能なコンピュータ・システムにおける応答性能を評価する計算装置であって、
前記コンピュータ・システムの利用状況を、演算処理単位の並列状態で正規化して評価する利用状況評価部と、
正規化された前記利用状況から、求めようとする並列状態での応答性能の期待値を、並列稼働状況に応じた前記演算処理単位の平均的な単一性能の変化を考慮した待ち行列理論に基づいて計算する応答性能計算部と
を含む、計算装置。
【請求項１２】
前記コンピュータ・システムは、複数の演算コアを含み、前記応答性能計算部は、
演算コア毎の演算処理単位数を窓口数とした待ち行列での待ち時間を計算するコア内モデル計算部と、
前記複数の演算コアにわたる窓口数の待ち行列で、他の演算コアからタスクを受け入れ可能な少なくとも１つ演算コアが存在する移行可能な確率を計算し、前記待ち時間および前記移行可能な確率に基づき前記応答性能として平均応答時間の期待値を計算するコア間モデル計算部と
を含む、請求項１１に記載の計算装置。
【請求項１３】
前記コア内モデル計算部は、演算コア上で同時稼働可能な演算処理単位の２以上の並列度に関して、
前記演算処理単位の平均的な単一性能の初期値を与える初期値設定部と、
前記演算処理単位の平均的な単一性能がサービス率であるとして、演算コア毎の演算処理単位数を窓口数とした待ち行列で、各演算コア内に存在するタスク数の確率の分布を計算するコア内タスク分布計算部と、
前記各演算コア内に存在するタスク数の確率の分布に基づき、前記演算処理単位の平均的な単一性能を更新する単一性能更新部と、
前記確率の分布の計算および前記更新を繰り返す終了条件を判定する終了条件判定部と
を含む、請求項１２に記載の計算装置。
【請求項１４】
前記コア間モデル計算部は、
前記演算処理単位の平均的な単一性能が平均サービス率であるとして、前記複数の演算コアの演算処理単位総数を窓口数とした待ち行列で、前記複数の演算コア内に存在するタスク数の確率の分布を計算するシステム内タスク分布計算部と、
前記複数の演算コア内に存在するタスク数の確率の分布に基づき、前記複数の演算コアのうちの少なくとも１つの演算コアで閾値以下のタスク数である確率を前記移行可能な確率として計算する移行可能確率計算部と
を含む、請求項１２または１３に記載の計算装置。
【請求項１５】
前記計算装置は、前記コンピュータ・システムであり、
前記利用状況評価部は、当該コンピュータ・システムで取得される現在の演算装置利用情報に基づき、正規化された現在の利用状況を評価することを特徴とし、前記計算装置は、
計算された並列状態での応答性能の期待値の結果に基づき、使用する演算処理単位の並列状態の設定を更新する設定更新部
をさらに含む、請求項１１〜１４のいずれか１項に記載の計算装置。
【請求項１６】
前記計算装置は、評価対象の前記コンピュータ・システムから分離されたものであり、
前記利用状況評価部は、前記コンピュータ・システムの複数の利用状況を仮定するものであり、前記計算装置は、
仮定された前記複数の利用状況各々に対応付けて、決定された使用する演算処理単位の並列状態の設定を記録する記録部
をさらに含む、請求項１１〜１４のいずれか１項に記載の計算装置。
【請求項１７】
演算コア各々上で複数の演算処理単位が内部ハードウェア資源を共有しながら並列に稼働可能なコンピュータ・システムであって、
前記コンピュータ・システムの現在の利用状況を、演算処理単位の並列状態で正規化して評価する利用状況評価部と、
正規化された前記現在の利用状況から、前記利用状況に対し使用する演算処理単位の並列状態を対応付ける対応付け情報に基づき、使用する演算処理単位の並列状態の設定を更新する設定更新部と
を含み、前記対応付け情報は、並列稼働状況に応じた前記演算処理単位の平均的な単一性能の変化を考慮した待ち行列理論に基づき計算される応答性能の期待値が最適化される並列状態を、前記利用状況各々に対応付ける情報である、コンピュータ・システム。
【請求項１８】
演算コア各々上で複数の演算処理単位が内部ハードウェア資源を共有しながら並列に稼働可能なコンピュータ・システムにおける応答性能を評価するコンピュータを実現するためのプログラムであって、コンピュータに、
前記コンピュータ・システムの利用状況を、演算処理単位の並列状態で正規化して評価するステップ、および
正規化された前記利用状況から、求めようとする演算処理単位の並列状態での応答性能の期待値を、並列稼働状況に応じた前記演算処理単位の平均的な単一性能の変化を考慮した待ち行列理論に基づいて計算するステップ
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算コア上で複数の演算処理単位が稼働可能なコンピュータ・システムに関し、より詳細には、演算コア上で複数の演算処理単位が稼働可能なコンピュータ・システムにおける応答性能を評価する計算方法、計算装置、コンピュータ・システムおよびコンピュータを実現するためのプログラムに関する。
【背景技術】
【０００２】
現在、多くの高性能プロセッサは、同時マルチ・スレッド（ＳＭＴ：Simultaneous Multi-Threading）技術を用いて各演算コア上で複数のハードウェア・スレッドをスレッド・レベルで並列化させる機能を有している。上記ＳＭＴ機能により、プロセッサにおけるハードウェア資源の利用率を高めることで、サーバのピークスループットを向上させることができる。
【０００３】
アプリケーションを実システム上で稼働させる場合、システムに必要なＣＰＵ数を見積もったり、所与のシステムで予測される時間性能を評価したりすることが行われる。例えば、特開２０１２−１２８７７１号公報（特許文献１）は、１つのシステムの中に同時並行して複数のユーザのサービスのプログラムが動作するマルチテナント環境における性能の予測方法を開示する。特開２００４−２１３６２４号公報（特許文献２）は、スレッド・プールのスレッド数を調整する目的で待ち行列時間を計算する技術を開示する。さらに、特開２０００−２９８５９３号公報（特許文献３）は、マルチタスク環境における並列計算機の並列度に対する性能の向上度や性能指標を正しく予測することを目的として、複数のタスクによるプロセッサ競合を考慮した待ち行列モデルを開示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１２８７７１号公報
【特許文献２】特開２００４−２１３６２４号公報
【特許文献３】特開２０００−２９８５９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述したように、システムでの時間性能の評価などを行う上で、待ち行列理論がしばしば利用される。しかしながら、従来技術の待ち行列理論では、上記ＳＭＴ機能を有するようなコンピュータ・システムにおいては、その挙動を適切に予測することができなかった。例えば、システムにおける論理ＣＰＵ数（コア数×単位コアあたりのスレッド数）を窓口数とした待ち行列モデルでは、実際のシステムの振る舞いに整合する予測結果を与えることができなかった。
【０００６】
これは、ＳＭＴ技術では、論理ＣＰＵ数が増えるが、複数ハードウェア・スレッドが同時並列に実行されることにより、単一スレッド性能が、他のスレッドとの内部ハードウェア資源の競合により、低下する可能性があるためであると考えられる。また、オペレーティング・システムのタスクスケジューラのはたらきの影響も受ける可能性がある。
【０００７】
特にＷｅｂアプリケーションのような短時間タスクが多数発生する用途では、ピークスループットに加えて、応答時間も重要となる。応答時間を改善することにより、ユーザ・エクスペリエンスを大きく向上させることができるためである。通常、同時実行されるハードウェア・スレッド数を最大化する方が、スループットの向上には良いと考えられる。しかしながら、本発明者が鋭意検討した結果、特に複数の演算コアが含まれる場合において、全体のＣＰＵの利用率が低い場合に、ＳＭＴによるピークスループットの向上の利点よりも、スレッド間競合による単一スレッド性能の低下が大きく影響し、上述した応答時間が悪化することが見出された。
【０００８】
上記特許文献１および特許文献３の従来技術は、待ち行列を用いて、複数のソフトウェアを１つのシステムで同時に実行した際の性能を評価するという技術であり、特許文献２の従来技術は、マルチ・スレッド・プログラミングにおけるスレッド・プールのスレッド数を動的に調整するために待ち行列を用いるというものである。上記特許文献１〜３の従来技術は、各演算コア上で複数のハードウェア・スレッドを並列化させるＳＭＴ環境における上記単一スレッド性能の低下を考慮しているものではない。
【０００９】
このような背景から、演算コア各々上で複数の演算処理単位が内部ハードウェア資源を共有しながら並列に稼働可能なコンピュータ・システムにおいて、その応答性能を予測できる新規なモデルの構築が望まれていた。そして、このような新規なモデルに基づき、コンピュータ・システムの負荷状況に応じて、最適な演算処理単位の並列状態を決定し、スループットの向上および応答時間の改善を両立することができる新たな技術の開発が望まれていた。
【００１０】
本発明は、上記従来技術における不充分な点に鑑みてなされたものであり、本発明は、演算コア各々上で複数の演算処理単位が内部ハードウェア資源を共有しながら並列に稼働可能なコンピュータ・システムにおいて、演算処理単位間の競合を考慮して所定演算処理単位の並列状態での応答性能を評価することができる、計算方法を提供することを目的とする。
【００１１】
本発明の他の目的は、演算コア各々上で複数の演算処理単位が内部ハードウェア資源を共有しながら並列に稼働可能なコンピュータ・システムにおいて、演算処理単位間の競合を考慮して、所定演算処理単位の並列状態での応答性能を評価することができる、計算装置およびプログラムを提供することである。
【００１２】
さらに本発明の他の目的は、演算コア各々上で複数の演算処理単位が内部ハードウェア資源を共有しながら並列に稼働可能なコンピュータ・システムにおいて、システムにかかる負荷に応じて演算処理単位の並列状態を決定し、特に低負荷時における応答性能を改善することができる、コンピュータ・システムを提供することである。
【課題を解決するための手段】
【００１３】
本発明では、上記従来技術における課題を解決するために、演算コア各々上で複数の演算処理単位が内部ハードウェア資源を共有しながら並列に稼働可能なコンピュータ・システムにおける応答性能を評価する、下記特徴を有した計算方法を提供する。すなわち、本計算方法は、コンピュータが、上記コンピュータ・システムの利用状況を、演算処理単位の並列状態で正規化して評価するステップと、コンピュータが、正規化された利用状況から、求めようとする演算処理単位の並列状態での応答性能の期待値を、並列稼働状況に応じた演算処理単位の平均的な単一性能の変化を考慮した待ち行列理論に基づいて計算するステップとを含む。
【００１４】
また、本発明によれば、下記特徴を有するコンピュータ・システムを提供することができる。本コンピュータ・システムは、当該コンピュータ・システムの現在の利用状況を、演算処理単位の並列状態で正規化して評価する利用状況評価部と、正規化された現在の利用状況から、利用状況に対し使用する演算処理単位の並列状態を対応付ける対応付け情報に基づき、使用する演算処理単位の並列状態の設定を更新する設定更新部とを含む。上記対応付け情報は、並列稼働状況に応じた演算処理単位の平均的な単一性能の変化を考慮した待ち行列理論に基づき計算される応答性能の期待値が最適化される並列状態を、利用状況各々に対応付ける情報であることを特徴とする。
【００１５】
さらに、本発明によれば、上記コンピュータ・システムにおける応答性能を評価する計算装置、および、該計算装置としてコンピュータを実現するためのプログラムが提供される。
【発明の効果】
【００１６】
上記構成により、演算コア各々上で複数の演算処理単位が内部ハードウェア資源を共有しながら並列に稼働可能なコンピュータ・システムにおいて、演算処理単位間の競合を考慮して所定演算処理単位の並列状態での応答性能を評価することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態による有効スレッド数調整方法を実行するコンピュータ・システムのハードウェア構成図。
【図２】本発明の実施形態によるコンピュータ・システムのソフトウェア構成図。
【図３】本発明の実施形態による有効スレッド調整部の詳細な機能ブロック図。
【図４】（Ａ）同一演算コア内のスレッド間の内部ハードウェア資源の競合および（Ｂ）タスクスケジューラによる演算コア間のタスク・マイグレーションを説明する図。
【図５】本実施形態によるコンピュータ・システムが実行する有効スレッド数調整方法を示すフローチャート。
【図６】コンピュータ・システムでのアプリケーションの平均応答時間を、スループットを横軸としてプロットしたグラフ。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態について説明するが、本発明の実施形態は、以下に説明する実施形態に限定されるものではない。なお、以下に説明する実施形態では、コンピュータ・システムにおける応答性能を評価する計算方法として、ＳＭＴ機能を有するコンピュータ・システムで実行され、現在の利用状況の下、各ハードウェア・スレッド数でＳＭＴ機能を有効化した場合の応答性能を評価するとともに、最適な有効スレッド数の設定に調整する、有効スレッド数調整方法を一例として説明する。
【００１９】
図１は、本発明の実施形態による有効スレッド数調整方法を実行するコンピュータ・システムのハードウェア構成を示す図である。図１に示すコンピュータ・システム１０は、サーバ・コンピュータ、ワークステーション、パーソナル・コンピュータなどの汎用コンピュータとして構成される。
【００２０】
コンピュータ・システム１０は、１または複数のプロセッサ１２−１…１２−ｎと、メモリ１６と、ストレージ・システム１８とを含み構成される。プロセッサ１２は、特に限定されるものではないが、典型的には、ＰＯＷＥＲ７（登録商標）、ＰＯＷＥＲ８（登録商標）、ＸＥＯＮ（登録商標）といったＳＭＰ（Symmetric Multi-Processing）構成のマルチコア・プロセッサである。プロセッサ１２は、さらに、演算コア１４各々の上で所定最大数のハードウェア・スレッド（以下、単にスレッドと参照する。）を稼働可能とするＳＭＴ機能をサポートする。なお、説明する実施形態では、演算コア１４各々上で複数のスレッドを並列に同時稼働させることができる、ＳＭＴ機能を有するプロセッサを含んだコンピュータ・システムを評価対象とすることができる。ハードウェア・スレッドは、本実施形態における演算処理単位を構成する。
【００２１】
メモリ１６は、ＤＲＡＭ（Dynamic Random Access Memory）などで構成され、プロセッサ１２に対して作業空間を提供する。ストレージ・システム１８は、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などで構成され、オペレーティング・システム、アプリケーション、本実施形態による有効スレッド数調整方法を実行するソフトウェア・コンポーネントなどの各種プログラムを格納する。
【００２２】
コンピュータ・システム１０は、さらに、ネットワーク・アダプタ２０を含むことができる。ネットワーク・アダプタ２０は、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）や公衆ネットワーク（例えばインターネット）などのネットワークにコンピュータ・システム１０を接続する。コンピュータ・システム１０は、さらに、Ｉ／Ｏインタフェース２２を介して、キーボードやポインティング・デバイスなどの周辺機器２４やディスプレイ２６といった機器と通信していてもよい。
【００２３】
上述したコンピュータ・システム１０を構成するコンポーネント１２〜２４は、ファブリックバス、メモリ・バス、Ｉ／Ｏバスなどを含む各種バスを介して接続される。本実施形態によるコンピュータ・システム１０では、プロセッサ１２が、ストレージ・システム１８から各プログラムを読み出し、メモリ１６が提供する作業空間に展開することによって、後述する各機能部および各処理を実現する。
【００２４】
図２は、本発明の実施形態によるコンピュータ・システムのソフトウェア構成を示す図である。図２（Ａ）は、オペレーティング・システム（以下、ＯＳと参照する。）カーネル１０２上で動作するユーザ空間デーモン１０８として、本発明の実施形態による有効スレッド数調整方法が実装される実施形態を示している。これに対して、図２（Ｂ）は、ＯＳカーネル１０２を構成しているタスクスケジューラ１０4として、直接、本発明の実施形態による有効スレッド数調整方法が実装される他の実施形態を示す。
【００２５】
ＯＳカーネル１０２は、特に限定されるものではないが、ＲｅｄＨａｔ  Ｅｎｔｅｒｐｒｉｓｅ  Ｌｉｎｕｘ（登録商標）などのＬＩＮＵＸ（登録商標）系、ＡＩＸ（登録商標）などのＵＮＩＸ（登録商標）系、Ｗｉｎｄｏｗｓ  Ｓｅｒｖｅｒ（登録商標）などのＷｉｎｄｏｗｓ（登録商標）系のサーバＯＳ、またはクライアントＯＳの中核部分である。両方の実施形態において、ＯＳカーネル１０２は、演算コア１４各々の上で稼働する各ハードウェア・スレッドを論理ＣＰＵとして認識し、これらＣＰＵの利用状況を計測し、記録している。また、ＯＳカーネル１０２は、有効スレッド数を設定するためのインタフェースを提供する。説明する実施形態において、各演算コア１４上で有効化されるスレッド数は、ＳＭＴを無効化した場合に対応する１から、プロセッサ１２が対応している最大数までの範囲で指定可能である。また、説明する実施形態では、説明の便宜上、すべての演算コア１４に対して同一の有効スレッド数が指定されるものとして説明するが、他の実施形態では、演算コア１４毎に独立した有効スレッド数が指定されるように有効スレッド数調整方法を構成してもよい。
【００２６】
ＯＳカーネル１０２に含まれるタスクスケジューラ１０４は、リアルタイム・タスクへの応答時間の最小化、および、全体のＣＰＵ利用効率の最大化を目標とし、プロセス実行に必要なＣＰＵリソースの割り当てを行う。タスクスケジューラ１０４は、例えば、Ｌｉｎｕｘ（登録商標）カーネル２．６．２３以降では、ＣＦＳ（Completely Fair Scheduler）が用いられる。
【００２７】
両方の実施形態において、アプリケーション１０６は、Ｗｅｂアプリケーション、データベース・アプリケーションなど、ＯＳ上で稼働する如何なるアプリケーションまたはこれらの組み合わせとして構成されている。アプリケーション１０６は、プロセッサ１２が提供する複数のスレッドを利用して、クライアントからのリクエストを処理する。
【００２８】
本発明の実施形態による有効スレッド数調整方法は、図２（Ａ）に示すように、ＯＳカーネル１０２とインタフェースを介してＳＭＴ機能にアクセスするユーザ空間デーモン１０８の有効スレッド調整部１１０として実装されてもよい。あるいは、他の実施形態では、図２（Ｂ）に示すように、ＯＳカーネル１０２を構成するタスクスケジューラ１０4内に直接、有効スレッド調整部１１０が実装されてもよい。
【００２９】
以下、図３〜図５を参照しながら、本発明の実施形態による有効スレッド数調整方法について、より詳細に説明する。上述したように、ＳＭＴ技術では、複数スレッドが同時並列に実行されることによりスループットを向上できる反面、単一スレッド性能が、他のスレッドとの内部ハードウェア資源の競合により、低下する可能性がある。特に複数の演算コアが含まれる場合であって、全体のＣＰＵの利用率が低いときに、スレッド間競合による単一スレッド性能の低下が大きく影響し、応答性能が悪化する。つまり、コンピュータ・システム１０においては、負荷によって適切な有効スレッド数が異なり、システムで使用する有効スレッド数を常にプロセッサでサポートされる最大値に固定してしまことが適切ではない可能性がある。
【００３０】
そこで、本実施形態による有効スレッド調整部１１０は、現在のＣＰＵの利用状況に応じて、各有効スレッド数とした場合の応答性能を予測評価し、その予測の下、最適な有効スレッド数に設定を動的に調整する制御を行う。
【００３１】
図３は、本発明の実施形態による有効スレッド調整部の詳細な機能ブロックを示す図である。本実施形態による有効スレッド調整部１１０は、利用状況評価部１１２と、応答性能計算部１１４と、有効スレッド設定更新部１２０とを含み構成される。
【００３２】
利用状況評価部１１２は、ＯＳカーネル１０２からＣＰＵ利用情報を定期的に取得し、当該コンピュータ・システム１０の全ＣＰＵの現在の利用状況を、スレッドの並列度で正規化して評価する。コンピュータ・システム１０は、ある有効スレッド数（ＳＭＴ無効も含まれる。）またはその組み合わせが設定された状態で動作しているところ、利用状況評価部１１２は、このような使用するスレッドの並列状態によらない形で、現在の全ＣＰＵにかかる利用状況を評価する。典型的には、正規化された利用状況は、ＳＭＴ機能を無効とした場合（つまり有効スレッド数が１である場合）に、現在の負荷を処理するために必要であると推定されるＣＰＵ利用率（CPU Utilization）として評価される。
【００３３】
応答性能計算部１１４は、正規化して評価された現在の利用状況から、求めようとするスレッド並列状態での応答性能の期待値を、スレッドの並列稼働状況に応じた平均的な単一スレッド性能の変化を考慮した待ち行列理論に基づいて計算する。典型的には、全演算コアに同一の有効スレッド数が設定されるものとして、各有効スレッド数（１≦ｔ≦ｔｍａｘ；ｔｍａｘは、サポートされる最大スレッド数）について、応答性能の期待値が計算される。
【００３４】
有効スレッド設定更新部１２０は、インタフェースを介してＯＳカーネル１０２にアクセスし、算出された応答性能の期待値に基づき、使用する有効スレッド数の設定を更新する。典型的には、応答性能の期待値が最適化される有効スレッド数が、現在の利用状況下で使用する有効スレッド数として決定される。評価される応答性能は、説明する実施形態では、平均応答時間であり、したがって、平均応答時間の期待値が最小となる有効スレッド数に設定更新される。
【００３５】
より詳細に説明すると、応答性能計算部１１４は、コア内モデル計算部１１６と、コア間モデル計算部１１８とを含み構成される。
【００３６】
図４（Ａ）には、同一演算コア内で並列稼働する複数のスレッド１３０−ｘ１，１３０−ｘ２が、実行ユニット１３２−ｘやキャッシュ１３４−ｘなどのプロセッサ１２内部のハードウェア資源を共有している様子が表されている。同一演算コア上の複数のスレッド１３０−ｘ１，１３０−ｘ２は、内部ハードウェア資源を共有することで、資源利用効率を高めて、全体としての性能向上を図っているが、スレッド１３０間では、内部ハードウェア資源の競合が生じる。このため、ソフトウェアからはスレッド数に応じた論理ＣＰＵとして認識されるが、同時稼働するスレッドの並列度によって、各論理ＣＰＵ（スレッド）の単一性能は低下する。
【００３７】
例えば、ＰＯＷＥＲ７（登録商標）プロセッサでは、有効スレッド数を２とした場合、１５０％程度まで全体性能を向上できるが、それぞれの単一スレッド性能は、ＳＭＴ機能を無効化した場合の７５％程度まで低下する可能性がある。有効スレッド数をサポートされる最大値４とした場合は、１８０％程度まで全体性能を向上できるが、それぞれの単一スレッド性能は、４５％程度まで低下する可能性がある。
【００３８】
そこで、コア内モデル計算部１１６は、図４（Ａ）に示すような演算コア内のスレッド間競合をモデル化した待ち行列モデルを用いて計算する。ここでは、他の演算コアからの影響を考えず、コア内モデル計算部１１６は、演算コア１４毎の有効スレッド数を窓口数とした待ち行列での待ち時間を計算する。このとき、ある瞬間の演算コア１４内での窓口の埋まり方（スレッド同時稼働数）に応じて、平均的な単一スレッド性能が変化することになる。コア内モデル計算部１１６は、この平均単一スレッド性能の変化を、平均サービス率の変動として取り込んで、待ち行列における待ち時間を計算する。
【００３９】
また、図４（Ｂ）には、タスクスケジューラ１０４が、ある演算コアに割り当てたタスク数が有効スレッド数を超えて空き待ちになる場合に、負荷が低い他の演算コアへタスク１４２を移行させる動作が表されている。典型的なＯＳのタスクスケジューラ１０４は、演算コア１４内では、負荷分散のためタスクを積極的に移動させるが、各演算コア１４での実行可能なタスク数に大きな偏りが生じない限りは、他のコアへのタスクの移行は消極的である。そのため、タスクスケジューラ１０４が、単純にタスクを各スレッドに分け隔てなく移動させると仮定し、複数の演算コアにわたるスレッド総数（コア数×コアあたりの有効スレッド数）を窓口数とする待ち行列モデルを用いても、挙動を正しく予測できない。
【００４０】
そこで、本実施形態では、コア間モデル計算部１１８は、さらに、コア内モデル計算部１１６の計算結果に基づいて、図４（Ｂ）に示すようなタスクスケジューラ１０４による演算コア１４間のタスク・マイグレーションをモデル化した待ち行列モデルを用いて計算する。コア間モデル計算部１１８は、複数の演算コア１４にわたる窓口数の待ち行列で、他の演算コアからのタスクを受け入れ可能な演算コア（図４（Ｂ）に示す実行可能なタスクがない演算コア１４−２のようなコア）が存在する確率を計算し、タスクがコア間で移行させられる可能性を加味して応答性能の期待値を計算する。
【００４１】
以下、コア内モデル計算部１１６およびコア間モデル計算部１１８で実行される処理内容について、図５を参照しながら、より詳細に説明する。図５は、本実施形態によるコンピュータ・システム１０が実行する有効スレッド数調整方法を示すフローチャートである。図５に示す処理は、コンピュータ・システム１０が起動したことに応答して、ステップＳ１００から開始される。
【００４２】
ステップＳ１０１では、コンピュータ・システム１０は、利用状況評価部１１２により、全ＣＰＵでの全スレッドの利用状況を計測する。ＯＳは、典型的には、論理ＣＰＵ（スレッド）毎のＣＰＵ利用情報（例えばシステムが消費した時間や利用率自体）を保持しており、これらの情報から、論理ＣＰＵ毎の利用率が求められる。
【００４３】
ステップＳ１０２では、コンピュータ・システム１０は、利用状況評価部１１２により、計測された論理ＣＰＵ毎の利用率に基づいて、有効スレッド数が１である場合を基準とした、正規化された利用率ｕｔｉｌｎｏｒｍを計算する。ここでは、正規化された利用率ｕｔｉｌｎｏｒｍを計算するために、ｎ個のスレッドで同時にプログラムが実行されている際の単一スレッド性能を、ＳＭＴ機能を無効化した場合の値との比率で表した、単一スレッド性能ｔｈｒｅａｄＰｅｒｆ［ｎ］を定義する。１個のスレッドでの単一スレッド性能ｔｈｒｅａｄＰｅｒｆ［１］は、１．０であり、ｎ＞１の場合は、０＜ｔｈｒｅａｄＰｅｒｆ［ｎ］≦１．０となる。そして、演算コア上で動作する全スレッドを合わせた全体性能は、ｔｈｒｅａｄＰｅｒｆ［ｎ］×ｎとなる。
【００４４】
例えば、ｔｈｒｅａｄＰｅｒｆ［２］が０．８であれば、各スレッドの単一性能が８０％になる代わりに、２個のスレッドが並列稼働できるので、演算コアの全体性能としては、１．６倍に向上する可能性がある。単一スレッド性能ｔｈｒｅａｄＰｅｒｆ［ｎ］の値は、現在の負荷に対する値をパフォーマンスカウンタなどの計測手段を用いて動的に求めてもよいし、典型的な値を静的に定めてもよい。複数スレッドを走らせたときに単一性能がどの程度低下するかは、アプリケーションに依存すると考えられるので、好適な実施形態では、ＴｈｒｅａｄＰｅｒｆ［ｎ］を実行時に求めてモデルの考慮に入れることで精度を高めることができる。
【００４５】
ステップＳ１０２においては、利用状況評価部１１２は、より具体的には、単一スレッド性能ｔｈｒｅａｄＰｅｒｆ［ｎ］を用いて、演算コアで計測された各論理ＣＰＵの利用率ｕｔｉｌ［ｎ］（１≦ｎ≦ｔｍａｘ）から、正規化された利用率ｕｔｉｌｎｏｒｍを計算する。スレッド数２以上では、正規化された利用率ｕｔｉｌｎｏｒｍは、１を超える可能性がある。なお、ここでは、コア内をモデルとしているので、演算コア当たりの平均利用率ｕｔｉｌｎｏｒｍとして計算するものとする。
【００４６】
例えば、ＰＯＷＥＲ７（登録商標）プロセッサでは、ＣＦＳ（Ｌｉｎｕｘ（登録商標）カーネル２．６．２３以降の場合）は、演算コア内では、非対称ＳＭＴスケジューリングにより、論理ＣＰＵ識別番号が若いスレッドから順に稼働させるので、ｎ１＜ｎ２についてｕｔｉｌ［ｎ１］＞ｕｔｉｌ［ｎ２］となる。このとき、ｕｔｉｌ［ｎ］−ｕｔｉｌ［ｎ＋１］が、スレッド数（並列度）ｎで消費されたものと考えることができる。例えば、ｕｔｉｌ［１］が８０％でｕｔｉｌ［２］が５０％であり、有効スレッド数が２であるとすると、３０％がスレッド数１で消費され、５０％がスレッド数２で消費されたとみなすことができる。したがって、正規化された利用率ｕｔｉｌｎｏｒｍ＝（ｔｈｒｅａｄＰｅｒｆ［１］×１）×３０％＋（ｔｈｒｅａｄＰｅｒｆ［２］×２）×５０％となる。
【００４７】
一方で、非対称ＳＭＴスケジューリングが使用されないプロセッサでは、上記と同様の条件では、４０％（＝ｕｔｉｌ［１］×ｕｔｉｌ［２］）がスレッド数２で消費され、５０％（＝ｕｔｉｌ［１］＋ｕｔｉｌ［２］−２×ｕｔｉｌ［１］×ｕｔｉｌ［２］）が、スレッド数１で消費されたとみなすことができる。したがって、ｕｔｉｌｎｏｒｍ＝（ｔｈｒｅａｄＰｅｒｆ［１］×１）×５０％＋（ｔｈｒｅａｄＰｅｒｆ［２］×２）×４０％となる。
【００４８】
利用状況が評価された後、ステップＳ１０３〜ステップＳ１１４のループでは、仮定する各有効スレッド数ｔ（１≦ｔ≦ｔｍａｘ）のそれぞれについて、ステップＳ１０４〜ステップＳ１１３で示す処理を実行する。
【００４９】
ステップＳ１０４では、仮定した有効スレッド数ｔが１であるか否かに応じて処理が分岐される。ステップＳ１０４で、仮定した有効スレッド数ｔが１であると判定された場合（ｔ＞１；ＮＯ）は、ステップＳ１０５へ処理が分岐される。この場合は、ＳＭＴによるスレッド競合が起こらないので、ステップＳ１０５では、窓口数ｃのいわゆるＭ／Ｍ／ｃの待ち行列として、平均応答時間の期待値Ｗ［１］を計算する。平均応答時間の期待値Ｗ［１］は、到着してからサービスを受けるまでの平均待ち時間Ｗｑに、窓口の平均サービス時間１／μを加算した値として求められる。ここでは、応答時間が相対的にもっともよいものを選ぶことを趣旨としているので、平均サービス率μ＝１．０を仮定する。ステップＳ１０４で、仮定した有効スレッド数ｔが１を超えると判定された場合（ｔ＞１；ＹＥＳ）は、ステップＳ１０６へ処理が分岐される。
【００５０】
ステップＳ１０６〜ステップＳ１１０では、コア内モデル計算部１１６により、他の演算コアからの影響を考慮せず、演算コア内での有効スレッド数ｔについて、適当な平均的な単一スレッド性能ａｖｇＴｈｒｅａｄＰｅｒｆを仮定し、複数窓口モデルを用いて待ち行列の計算を行い、その結果に応じて平均単一スレッド性能の仮定を反復更新する。
【００５１】
ここで、ＳＭＴ機能を用いて現在の負荷を実行した際の平均的な単一スレッド性能を、ＳＭＴ機能を用いない場合の単一スレッド性能との比率で表し、ａｖｇＴｈｒｅａｄＰｅｒｆとする。有効スレッド数ｔの場合、単一スレッド性能ａｖｇＴｈｒｅａｄＰｅｒｆは、ｔｈｒｅａｄＰｅｒｆ［ｔ］≦ａｖｇＴｈｒｅａｄＰｅｒｆ≦１．０となる。これは、ｔ個のスレッドが有効とされていても、実際には、ｔ個以下のタスクしか実行可能ではないため、より少ない数のスレッドのみが稼働している状況の時間があるためである。したがって、実際にｔ個のスレッドで同時にプログラムが実行されている際の単一スレッド性能ｔｈｒｅａｄＰｅｒｆ［ｔ］よりも、平均単一スレッド性能ａｖｇＴｈｒｅａｄＰｅｒｆの方が高くなる可能性がある。
【００５２】
ステップＳ１０６では、コンピュータ・システム１０は、コア内モデル計算部１１６により、まず平均単一スレッド性能にある初期値を設定する。ここでは、ＳＭＴ機能による性能劣化がないと仮定し、ａｖｇＴｈｒｅａｄＰｅｒｆ＝１．０を設定することができる。ステップＳ１０７では、コンピュータ・システム１０は、コア内モデル計算部１１６により、現在の単一スレッド性能ａｖｇＴｈｒｅａｄＰｅｒｆの仮定の下、正規化された演算コアあたりの利用率ｕｔｉｌｎｏｒｍから、ｔ個のスレッドを使用した場合の平均利用率ρを計算する。平均利用率ρは、下記式（１）により計算することができる。
【００５３】
【数１】
0005946068.tif 000002
【００５４】
ステップＳ１０８では、コンピュータ・システム１０は、コア内モデル計算部１１６により、窓口数ｔ、平均利用率ρ、平均サービス率μ＝ａｖｇＴｈｒｅａｄＰｅｒｆの待ち行列として、演算コア（系）内にｎ個のタスクが存在する確率π１［ｎ］および平均待ち時間Ｗｑを計算する。Ｍ／Ｍ／ｔの待ち行列とすると、確率π１［ｎ］および平均待ち時間Ｗｑは、下記式（２）〜（４）で計算することができる。平均待ち時間Ｗｑは、タスク数がスレッド数を超えた場合に実行権を得るまでの待ち時間を意味する。
【００５５】
【数２】
0005946068.tif 000003
【００５６】
ステップＳ１０９では、コンピュータ・システム１０は、コア内モデル計算部１１６により、所与の単一スレッド性能ｔｈｒｅａｄＰｅｒｆ［ｎ］および計算されたタスク数ｎの確率π１［ｎ］の分布に基づき、平均単一スレッド性能の期待値を計算し、ａｖｇＴｈｒｅａｄＰｅｒｆを更新する。平均単一スレッド性能の期待値は、下記式（５）により計算することができる。なお、有効スレッド数ｔにおけるπ１［ｔ］は、窓口がすべてふさがっている確率π１［ｎ≧ｔ］となる。
【００５７】
【数３】
0005946068.tif 000004
【００５８】
ステップＳ１１０では、コンピュータ・システム１０は、コア内モデル計算部１１６により、収束条件が成立したか否かを判定する。ステップＳ１１０で、収束条件が成立していないと判定された場合（ＮＯ）は、ステップＳ１０７へループさせ、更新された平均単一スレッド性能ａｖｇＴｈｒｅａｄＰｅｒｆの下、再計算する。一方で、ステップＳ１１０で、収束条件が成立したと判定された場合（ＹＥＳ）は、ステップＳ１１１へ処理を分岐させる。
【００５９】
収束条件は、前回の平均単一スレッド性能からの差分の大きさや二乗誤差が所定閾値以下となった場合に成立したものと判定される。あるいは、反復計算に対する一定の打ち切り回数を設けて、誤差等が所定以下とならない場合でも、一定回数以上反復した場合に、収束条件が成立したものと判定し、終了してもよい。なお、コア内モデル計算部１１６は、本実施形態における初期値設定部、コア内タスク分布計算部、単一性能更新部および終了条件判定部を構成する。
【００６０】
引き続いて、ステップＳ１１１〜ステップＳ１１３では、コア間モデル計算部１１８により、収束した平均単一スレッド性能ａｖｇＴｈｒｅａｄＰｅｒｆの下、複数の演算コアにわたる窓口数の待ち行列モデルを用いて、タスクがコア間を移行可能な確率を見積もり、最終的な平均応答時間の期待値を計算する。
【００６１】
ステップＳ１１１では、コンピュータ・システム１０は、コア間モデル計算部１１８により、演算コア数をｃとして、複数の演算コアにわたるスレッド総数ｃ×ｔを窓口数とし、平均利用率ρ、平均サービス率μ＝ａｖｇＴｈｒｅａｄＰｅｒｆの待ち行列として、系（複数の演算コア）内にｎ個のタスクが存在する確率π２［ｎ］を計算する。なお、π２［ｎ］は、窓口数がｃ×ｔとである点を除き、上述したπ１［ｎ］と同様の計算方法で算出することができる。
【００６２】
ステップＳ１１２では、コンピュータ・システム１０は、コア間モデル計算部１１８により、系内に存在するタスク数の確率π２［ｎ］の分布に基づき、ｎ個のタスクが各コアにランダムに配置された場合に、ｃ個の演算コアのうち、少なくとも１つの演算コアでタスク数が閾値以下である確率を、移行可能確率ｍｉｇｒａｔａｂｌｅＲａｔｉｏとして計算する。ここでは、まず、ある演算コアでｓ個（１≦ｓ≦ｔ)のタスクが実行されている確率ａ［ｓ］を下記式（６）および（７）で計算する。
【００６３】
【数４】
0005946068.tif 000005
【００６４】
上記式中、Ｃ（ｋ，ｓ）は、ｋ個からｓ個を取り出す組合せの数である。上記式（６）は、ｎ個のタスクのうちのどのｓ個が現在注目している演算コアに存在するかの組み合わせの数に、全ｎ個のタスクがｃ個のうちのどのコアに存在するか、選ばれなかったｎ−ｓ個のタスクが、注目しているコア以外のｃ−１個のコアのうちどのコアに存在するかの場合の数から、タスク数がｎ個の場合にｓ個が注目するコアに存在する確率を求め、これをπ２［ｎ］で重み付き平均することで、ａ［ｓ］を計算している。
【００６５】
移行可能な確率ｍｉｇｒａｔａｂｌｅＲａｔｉｏは、注目するコア以外のｃ−１個の全てコアで、受け入れ可能かの閾値ｔｈｒｅｓｈｏｌｄを超えたタスクが実行されている確率（つまり、受け入れ可能なコアが存在しない確率）を、１．０から引いた確率として、下記式（８）により計算される。閾値ｔｈｒｅｓｈｏｌｄは、例えば、実行可能なタスクが無い場合のみマイグレーションを受け入れるとした場合は、０とすればよい。
【００６６】
【数５】
0005946068.tif 000006
【００６７】
ステップＳ１１３では、コンピュータ・システム１０は、コア間モデル計算部１１８により、計算された移行可能確率ｍｉｇｒａｔａｂｌｅＲａｔｉｏと、ステップＳ１０８で最終的に求めた待ち時間Ｗｑとから、下記式（９）により、有効スレッド数ｔにおける平均応答時間の期待値Ｗ［ｔ］を計算する。平均サービス率μは、ａｖｇＴｈｒｅａｄＰｅｒｆである。下記式（９）は、タスクスケジューラ１０４が、混雑した演算コアの待ち行列から、アイドルのコアにタスクを移行することを考慮して、平均待ち時間を与える。
【００６８】
【数６】
0005946068.tif 000007
【００６９】
ステップＳ１０３〜ステップＳ１１４のループがすべての有効スレッド数ｔ（１≦ｔ≦ｔｍａｘ）について行われると、すべての有効スレッド数ｔ各々における平均応答時間の期待値Ｗ［ｔ］がそろう。
【００７０】
ステップＳ１１５では、コンピュータ・システム１０は、有効スレッド設定更新部１２０により、期待値Ｗ［ｔ］が最小となるｔを使用する有効スレッド数とし、インタフェースを介して、ＯＳカーネル１０２の有効スレッド数の設定を更新する。ステップＳ１１６では、所定のインターバル時間を待機し、ステップＳ１０１へ処理をループさせる。ステップＳ１０１〜ステップＳ１１６の処理は、所定インターバル（定期的に行われてもよいし、イベント駆動で不定期に行われてもよい）毎に繰り返されることになる。
【００７１】
［実験例：コンピュータにおける実装］
クロック数３．５５ＧＨｚのＰＯＷＥＲ７（登録商標）プロセッサを２機、１２８ＧＢメモリを用いて、コンピュータ・システム１０を構成した。ＯＳとしては、ＲｅａｄＨａｔ（登録商標）Ｅｎｔｅｒｐｒｉｓｅ  Ｌｉｎｕｘ（登録商標）６．４（Ｋｅｒｎｅｌ  ２．６．３２−３５８．２．１．ｅｌ６）を用いた。各プロセッサは、８コアを有し、４−ｗａｙのＳＭＴ機能を有する。したがって、プロセッサ・コア数は、合計１６個であり、ＳＭＴスレッド数（論理ＣＰＵ数）は、最大で６４である。動的周波数スケーリング機能は、再現性を高めるため無効とした。
【００７２】
上述した有効スレッド調整部１１０を、上記Ｌｉｎｕｘ（登録商標）上で、ユーザ空間のプログラムとして実装し、／ｐｒｏｃ／ＳｔａｔからＣＰＵ利用率データを取得し、Ｓｙｓｆｓインタフェース（/sys/devices/system/cpu/cpuN/online）を用いて、各論理ＣＰＵの有効または無効を切り替え、各演算コアで指定数のＳＭＴスレッドのみが有効となるように制御した。実験では、すべてのコアで、有効スレッド数を同一とした。
【００７３】
ＣＰＵ利用率データの取得は、５秒毎に行い、過剰な有効スレッド数の変更を避けるため、過去６０秒間におけるピークＣＰＵ利用率を用いて利用状況を評価し、最適な有効スレッド数を計算した。ＳＭＴでの各並列度での実行効率は、典型的なアプリケーションでの観測結果に基づき、プロセッサの典型的な値を静的に用いた、ｔｈｒｅａｄＰｅｒｆ［１−４］＝｛１．０，０．７５，０．５７，０．４５｝とした。したがって、ＳＭＴスレッドの合計性能としては、｛１．０，１．５，１．７，１．８}となる。
【００７４】
また、アプリケーションとして、データベースに格納されたビジネスデータを分析および視覚化するＩＢＭ（登録商標）Ｃｏｇｎｏｓ（登録商標）Ｂｕｓｉｎｅｓｓ  Ｉｎｔｅｌｌｉｇｅｎｃｅ（ＢＩ）ｖ１０．２を、ＩＢＭ（登録商標）ＷｅｂＳｐｈｅｒｅ（登録商標）Ａｐｐｌｉｃａｔｉｏｎ  Ｓｅｒｖｅｒ  ｖ８．５上で稼働させた。
【００７５】
図６は、上記コンピュータ・システムでのＣｏｇｎｏｓ（登録商標）ＢＩの平均応答時間を、スループットを横軸としてプロットしたグラフである。負荷は、指数分布の乱数値で規定される待ち時間の間隔でリクエストを送信する模擬的なクライアントを用いて発生させた。図６中、実験例１は、上述した有効スレッド数調整法を実行する場合の応答時間を示し、実験例２および実験例３は、それぞれ、有効スレッド数を４および１で固定した場合の応答時間を示す。
【００７６】
図６を参照すると、実験例２は、有効スレッド数が最大の場合であるが、負荷が低い場合に対応する低スループットの領域では、ＳＭＴ機能を無効（ＳＭＴ＝１）の場合よりも、応答時間が劣化していることが理解される。一方、実験例３では、負荷が低い場合に対応する低スループットの領域では、最大スレッド数の場合（ＳＭＴ＝４）よりも応答時間が改善されているが、高スループットに対応しきれていないことが理解される。
【００７７】
これに対して、有効スレッド数調整法を実行する実験例１では、図６を参照すると明らかなように、全域のスループット領域で、最大スレッド数の場合（ＳＭＴ＝４）よりも応答時間が改善されたことが理解される。このとき、低スループットの領域では、ＳＭＴスレッド数が、最大値４から１に減らされており、応答時間は最大で１２％向上した。そして、負荷が増加するにしたがって、段階的に多くのＳＭＴスレッドが使用されるようになり、最終的に最大スレッド数の場合と同等となった。
【００７８】
よって、本有効スレッド数調整法により、最適な有効スレッド数を成功裏に選択し、応答時間を改善できることが示された。なお、Ｃｏｇｎｏｓ（登録商標）ＢＩ以外のアプリケーションでも、同様の傾向が観測され、広くアプリケーションに適用できるといえる。また、本有効スレッド数調整法の計算によるオーバーヘッドは、計算の頻度が低いため、パフォーマンス上無視できる程度であった。また、単純な論理ＣＰＵ数を窓口数とした待ち行列理論に基づき、有効スレッド数を調整する同様なアルゴリズムを構成しても、有効スレッド数は最大値を強く指向し、応答時間を改善する効果は見られなかった。
【００７９】
また、ＡＩＸ（登録商標）７．１以降では、各コアの複数のスレッドのうち最初のスレッドの利用率が５０％になるまでは、他のスレッドを使用しないモードも知られている。しかしながら、このような単純な静的閾値に基づく調整方法では、必ずしも応答時間が最小となるスレッド数を選択できるものではなかった。
【００８０】
以上説明したように、本発明の実施形態によれば、複数の演算コア各々上で複数の演算処理単位が内部ハードウェア資源を共有しながら並列に稼働可能なコンピュータ・システムにおいて、演算処理単位間の競合を考慮して、所定演算処理単位の並列状態での応答性能を評価する計算方法、計算装置およびプログラムを提供することができる。また、本発明の実施形態によれば、システムにかかる負荷に応じて、使用する演算処理単位の並列状態を決定し、特に低負荷時における応答性能を改善することができる、コンピュータ・システムを提供することができる。
【００８１】
実際に稼働しているサーバシステムでは、通常時のＣＰＵ利用率が必ずしも高くないことが知られている。このため、多くの実システムにおいて、応答性能の悪化が生じていると予測される。また、Ｗｅｂアプリケーションなどのアプリケーションは、クライアントからの要求に応答して処理を実行するという比較的短時間なタスクが多数あるという特徴がある。したがって、本実施形態による計算方法は、このような短時間タスクが多数発生する用途において、好適に適用することができるといえる。
【００８２】
なお、説明までの実施形態では、コンピュータ・システムを構成するすべての演算コアは、同一の有効スレッド数ｔ（１≦ｔ≦ｔｍａｘ）にあるものとして、最適な並列状態を決定していた。しかしながら、他の実施形態では、コンピュータ・システムを構成する複数の演算コアにおける各並列度（各有効スレッド数）の組み合わせ各々について評価し、最適な並列度の組み合わせを決定することができる。また、システム中のコア数は、稼働中変動がないものとしているが、変更されることを妨げない。また、演算コアの動作周波数は、稼働中変動がないものとしているが、動的周波数スケーリング機能を有効化することにより、動作周波数が変更されることを妨げない。
【００８３】
また、上述した実施形態では、コア内モデルにおいて、反復計算により平均単一スレッド性能を更新するものとした。しかしながら、他の実施形態では、収束計算なしで待ち時間の計算を行うモデルを構築し、それを用いて単一スレッド性能と待ち時間を求めてもよい。
【００８４】
さらに、上述した実施形態では、ＳＭＴ機能を有するコンピュータ・システム自身が、現在の利用状況の下、各スレッド数でＳＭＴ機能を有効化した場合の応答性能を評価するとともに、最適な有効スレッド数に設定を更新するものとして説明した。しかしながら、他の実施形態では、評価対象のコンピュータ・システムから分離された別のコンピュータで、評価対象のコンピュータ・システムの複数の利用状況を仮定し、それぞれ、仮定された複数の利用状況各々に対して、最適な有効スレッド数を決定し、正規化されたＣＰＵ利用率またはその範囲に対応して、最適な有効スレッド数の設定をテーブル化して記録するようにしてもよい。この場合、このテーブルを実装したコンピュータ・システムは、当該コンピュータ・システムの現在の利用状況を正規化して評価する利用状況評価部１１２と、当該コンピュータ・システムの有効スレッド数の設定を更新する有効スレッド設定更新部とを備え、応答性能計算部１１４の代わりに、上記記録されたテーブルを参照して、正規化された利用率が該当する最適な有効スレッド数を読み出し、有効スレッド設定更新部がその有効スレッド数に設定するように構成すればよい。また、上記テーブルは、複数の演算コアを有する任意のコンピュータ・システムに一般化して、コア数およびＣＰＵ利用率またはその範囲に対応して、最適な有効スレッド数の設定を対応付ける情報であってもよい。
【００８５】
本発明の上記機能は、アセンブラ、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（登録商標）などのレガシープログラミング言語またはオブジェクト指向プログラミング言語などで記述された装置実行可能なプログラムにより実現でき、装置可読な記録媒体に格納して頒布または伝送して頒布することができる。
【００８６】
これまで本発明を、特定の実施形態をもって説明してきたが、本発明は、実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【符号の説明】
【００８７】
１０…コンピュータ・システム、１２…プロセッサ、１４…コア、１６…メモリ、１８…ストレージ・システム、２０…ネットワーク・アダプタ、２２…ＩＯインタフェース、２６…ディスプレイ、２４…周辺機器、１００…ソフトウェア構成、１０２…ＯＳカーネル、１０４…タスクスケジューラ、１０６…アプリケーション、１０８…デーモン、１１０…有効スレッド調整部、１１２…利用状況評価部、１１４…応答性能計算部、１１６…コア内モデル計算部、１１８…コア間モデル計算部、１２０…有効スレッド設定更新部、１３０…スレッド、１３２…実行ユニット、１３４…キャッシュ、１３６…キュー、１４２…タスク
【図１】
0005946068.tif 000008
【図２】
0005946068.tif 000009
【図３】
0005946068.tif 000010
【図４】
0005946068.tif 000011
【図５】
0005946068.tif 000012
【図６】
0005946068.tif 000013