(57)【要約】【課題】迅速かつロバストな作業負荷の配置を可能とする。【解決手段】  マルチプロセッシング・コンピュータ・システムにおいて作業負荷の処理を最適化するように構成された自動システム最適化装置を開示する。【選択図】図２
2014523598.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッシング・コンピュータ・システムにおいて作業負荷を管理するための方法であって、
複数のプロセッサ・コアのための親和性ドメイン・セットを定義するステップであって、各前記親和性ドメインが前記プロセッサ・コアのセットを含む、ステップと、
所与の作業負荷を、もっと少数のプロセッサ・コアを含むもっと小さい親和性ドメインに移動させなければならない場合を指示するように構成された親和性測定値を定義するステップと、
所与の作業負荷の性能を指示するように構成された性能測定値を定義するステップと、
前記親和性測定値および前記性能測定値に従って所与の作業負荷を測定するステップと、
前記親和性測定値によって、所与の作業負荷をもっと小さい親和性ドメインに移動させなければならないことが指示された場合、前記作業負荷をもっと小さい親和性ドメインに移動させるステップと、
前記性能測定値によって性能の低下が指示された場合、前記作業負荷をもっと大きい親和性ドメインに移動させるステップと、
を含む、方法。
【請求項２】
前記親和性測定値および前記性能測定値からの前記指示が対立する場合、所定のプロトコルに関連して前記対立を解決するステップを更に含む、請求項１に記載の方法。
【請求項３】
前記所定のプロトコルが、前記性能測定値からの前記指示に従って前記作業負荷をもっと大きい親和性ドメインに移動させることを含む、請求項２に記載の方法。
【請求項４】
前記親和性ドメイン・セットが、所与の親和性ドメインにおいてプロセッサ・コアの数によって配列された親和性ドメインの階層を含む、前出の請求項のいずれかに記載の方法。
【請求項５】
前記親和性または性能測定値からの前記指示に従って作業負荷配置手段に命令するステップを更に含む、前出の請求項のいずれかに記載の方法。
【請求項６】
前記親和性測定値および前記性能測定値が相互に排他的な測定値を含む、前出の請求項のいずれかに記載の方法。
【請求項７】
前記親和性測定値が、合計処理時間の割合として、データを待機している所与の作業負荷が費やす処理時間の測定値を含む、前出の請求項のいずれかに記載の方法。
【請求項８】
前記性能測定値が、所与の作業負荷についての記憶命令の実行レートの測定値を含む、前出の請求項のいずれかに記載の方法。
【請求項９】
前記親和性測定値および前記性能測定値に従った所与の作業負荷の前記測定が周期的に実行される、前出の請求項のいずれかに記載の方法。
【請求項１０】
ドメイン間の所与の作業負荷の移動を減衰させる、前出の請求項のいずれかに記載の方法。
【請求項１１】
オペレーティング・システム・デーモンによって実行される、前出の請求項のいずれかに記載の方法。
【請求項１２】
マルチプロセッシング・コンピュータ・システムにおいて作業負荷を管理するための装置であって、
複数のプロセッサ・コアのための親和性ドメイン・セットを定義し、各前記親和性ドメインが前記プロセッサ・コアのセットを含み、
所与の作業負荷を、もっと少数のプロセッサ・コアを含むもっと小さい親和性ドメインに移動させなければならない場合を指示するように構成された親和性測定値を定義し、
所与の作業負荷の性能を指示するように構成された性能測定値を定義し、
前記親和性測定値および前記性能測定値に従って所与の作業負荷を測定し、
前記親和性測定値によって、所与の作業負荷をもっと小さい親和性ドメインに移動させなければならないことが指示された場合、前記作業負荷をもっと小さい親和性ドメインに移動させ、
前記性能測定値によって性能の低下が指示された場合、前記作業負荷をもっと大きい親和性ドメインに移動させる、
ように動作可能である、装置。
【請求項１３】
前記親和性測定値および前記性能測定値からの前記指示が対立する場合、所定のプロトコルに関連して前記対立を解決するように更に動作可能である、請求項１２に記載の装置。
【請求項１４】
前記所定のプロトコルが、前記性能測定値からの前記指示に従って前記作業負荷をもっと大きい親和性ドメインに移動させることを含む、請求項１３に記載の装置。
【請求項１５】
前記親和性ドメイン・セットが、所与の親和性ドメインにおいてプロセッサ・コアの数によって配列された親和性ドメインの階層を含む、請求項１２から１４のいずれかに記載の装置。
【請求項１６】
前記親和性または性能測定値からの前記指示に従って作業負荷配置手段に命令するように更に動作可能である、請求項１２から１５のいずれかに記載の装置。
【請求項１７】
前記親和性測定値および前記性能測定値が相互に排他的な測定値を含む、請求項１２から１６のいずれかに記載の装置。
【請求項１８】
前記親和性測定値が、合計処理時間の割合として、データを待機している所与の作業負荷が費やす処理時間の測定値を含む、請求項１２から１７のいずれかに記載の装置。
【請求項１９】
前記性能測定値が、所与の作業負荷についての記憶命令の実行レートの測定値を含む、請求項１２から１８のいずれかに記載の装置。
【請求項２０】
前記親和性測定値および前記性能測定値に従った所与の作業負荷の前記測定が周期的に実行される、請求項１２から１９のいずれかに記載の装置。
【請求項２１】
ドメイン間の所与の作業負荷の移動を減衰させる、請求項１２から２０のいずれかに記載の装置。
【請求項２２】
オペレーティング・システム・デーモンによって実行される、請求項１２から２１のいずれかに記載の装置。
【請求項２３】
コンピュータ読み取り可能媒体上に記憶され、コンピュータの内部メモリにロードすることができるコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行された場合に請求項１から１１のいずれかの方法を実行するように構成されたソフトウェア・コード部分を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッシング・コンピュータ・システムにおける作業負荷の管理に関する。
【背景技術】
【０００２】
マルチプロセッサ・コンピュータ・システムにおいて、メモリ内のデータにアクセスする処理コストは、メモリにアクセスするプロセッサに対するメモリの物理的位置に依存する。他のスレッドと共有されるメモリ領域に頻繁にアクセスしてこれを変更する多数のスレッドは、全てが物理的に近接していると有利である。この場合、遠隔プロセッサのキャッシュに存在するキャッシュ・ラインを取得するために必要なノード間トラフィックの量が低減する。しかしながら、そういったキャッシュ親和性（cache affinity）を増大させるような作業負荷の配置は、システム全体の全ての利用可能リソースに作業を均衡化させるというもっと一般的な要望と相反する。更に、全ての作業を単一ノード上に配置し、全てのメモリをローカルに割り当てることは、キャッシュ親和性を増大させるが、一般に全ての作業負荷に高い性能を提供するものではない。そのノード上のリソースに対する競合が増すからである。
【０００３】
いくつかの自動最適化システムは、親和性測定値、作業負荷サイズ、またはリソース競合等の作業負荷特性に基づいて、最良の作業負荷配置の予測を試みるように構成されている。かかる予測最適化装置によって、作業負荷の迅速な配置が可能となり、従って迅速な性能向上が可能となる。そのメリットを享受できない作業負荷は、関連付けられたかまたはリンクされた作業負荷が変更されたことの結果として間接的にでない限り、影響を受けることはない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、予測最適化装置によって行われる分析は複雑である。これは、様々なタイプのドメイン、複雑な性能特性に対する作業負荷の実行可能な配置が多数あるからである。更に、大きい変更を行う場合の作業負荷配置の結果を予測すること、または他の作業負荷の影響を識別することは困難である。予測最適化装置の試験は複雑であり、このシステムがロバストであると判定することは難しい。このため、予測最適化装置の適切な試験は、許容可能な信頼度レベルを与える広範なものである必要がある。更に、発見的方法を変更するたびに多数の試験を実行する必要があり得る。予測最適化装置は一般に、性能劣化の可能性を避けるため、最適化において積極的でない（conservative）。
【０００５】
他の自動最適化システムでは、検索または実験によって作業負荷配置の最適化を試みる。かかる検索ベースの最適化装置は、充分な時間および安定した性能の作業負荷が与えられれば、最適に近い作業負荷配置に到達することができる。検索ベースの最適化装置は比較的単純なシステムである。しかしながら、検索ベースの最適化装置では、分析が必要であり得る多数の実行可能な配置の組み合わせがあり、これらが作業負荷数と共に指数的に増大するために、実行時コストが高い。また、検索ベースの最適化装置は破壊的である可能性がある。なぜなら、実験が行われる限り、この実験対象の作業負荷だけでなく他の作業負荷も悪影響を受ける恐れがあるからである。また、検索ベースの最適化装置は、正確な性能測定値に依存する。
【課題を解決するための手段】
【０００６】
本発明の実施形態は、マルチプロセッシング・コンピュータ・システムにおいて作業負荷を管理するための方法を提供する。この方法は、
複数のプロセッサ・コアのための親和性ドメイン・セットを定義するステップであって、各親和性ドメインがプロセッサ・コアのセットを含む、ステップと、
所与の作業負荷を、もっと少数のプロセッサ・コアを含むもっと小さい親和性ドメインに移動させなければならない場合を指示するように構成された親和性測定値を定義するステップと、
所与の作業負荷の性能を指示するように構成された性能測定値を定義するステップと、
親和性測定値および性能測定値に従って所与の作業負荷を測定するステップと、
親和性測定値によって、所与の作業負荷をもっと小さい親和性ドメインに移動させなければならないことが指示された場合、この作業負荷をもっと小さい親和性ドメインに移動させるステップと、
性能測定値によって性能の低下が指示された場合、作業負荷をもっと大きい親和性ドメインに移動させるステップと、
を含む。
【０００７】
この方法は、親和性測定値および性能測定値からの指示が対立する場合、所定のプロトコルに関連して対立を解決するステップを更に含むことができる。所定のプロトコルが、性能測定値からの指示に従って作業負荷をもっと大きい親和性ドメインに移動させることを含むことができる。親和性ドメイン・セットが、所与の親和性ドメインにおいてプロセッサ・コアの数によって配列された親和性ドメインの階層を含むことができる。この方法は、親和性または性能測定値からの指示に従って作業負荷配置手段に命令するステップを更に含むことができる。親和性測定値および性能測定値が相互に排他的な測定値を含むことができる。親和性測定値が、合計処理時間の割合として、データを待機している所与の作業負荷が費やす処理時間の測定値を含むことができる。性能測定値が、所与の作業負荷についての記憶命令の実行レートの測定値を含むことができる。親和性測定値および性能測定値に従った所与の作業負荷の測定を周期的に実行することができる。ドメイン間の所与の作業負荷の移動を減衰させることができる。この方法は、オペレーティング・システム・デーモンによって実行することができる。
【０００８】
別の実施形態は、マルチプロセッシング・コンピュータ・システムにおいて作業負荷を管理するための装置を提供する。この装置は、
複数のプロセッサ・コアのための親和性ドメイン・セットを定義し、各親和性ドメインがプロセッサ・コアのセットを含み、
所与の作業負荷を、もっと少数のプロセッサ・コアを含むもっと小さい親和性ドメインに移動させなければならない場合を指示するように構成された親和性測定値を定義し、
所与の作業負荷の性能を指示するように構成された性能測定値を定義し、
親和性測定値および性能測定値に従って所与の作業負荷を測定し、
親和性測定値によって、所与の作業負荷をもっと小さい親和性ドメインに移動させなければならないことが指示された場合、この作業負荷をもっと小さい親和性ドメインに移動させ、
性能測定値によって性能の低下が指示された場合、作業負荷をもっと大きい親和性ドメインに移動させる、
ように動作可能である。
【０００９】
更に別の実施形態は、コンピュータ読み取り可能媒体上に記憶され、コンピュータの内部メモリにロードすることができるコンピュータ・プログラムを提供する。このコンピュータ・プログラムは、コンピュータ上で実行された場合にマルチプロセッシング・コンピュータ・システムにおいて作業負荷を管理するための方法を実行するように構成されたソフトウェア・コード部分を含む。この方法は、
複数のプロセッサ・コアのための親和性ドメイン・セットを定義するステップであって、各親和性ドメインがプロセッサ・コアのセットを含む、ステップと、
所与の作業負荷を、もっと少数のプロセッサ・コアを含むもっと小さい親和性ドメインに移動させなければならない場合を指示するように構成された親和性測定値を定義するステップと、
所与の作業負荷の性能を指示するように構成された性能測定値を定義するステップと、
親和性測定値および性能測定値に従って所与の作業負荷を測定するステップと、
親和性測定値によって、所与の作業負荷をもっと小さい親和性ドメインに移動させなければならないことが指示された場合、この作業負荷をもっと小さい親和性ドメインに移動させるステップと、
性能測定値によって性能の低下が指示された場合、作業負荷をもっと大きい親和性ドメインに移動させるステップと、
を含む。
【００１０】
これより本発明の実施形態について、添付図面を参照して、一例としてのみ説明する。
【図面の簡単な説明】
【００１１】
【図１】自動システム最適化プログラム（ＡＳＯ：automatic system optimizing）を含むコンピュータの概略図である。
【図２】図１のコンピュータにおけるＡＳＯのコンポーネントの概略図である。
【図３】図２のＡＳＯの測定基準データ規定を示す表である。
【図４】図２のＡＳＯの測定基準定義を示す表である。
【図５】図２のＡＳＯによって実行される処理を示すフローチャートである。
【図６】図２のＡＳＯによって実行される処理を示すフローチャートである。
【図７】図２のＡＳＯによって実行される処理を示すフローチャートである。
【図８】図２のＡＳＯによって実行される処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
図１を参照すると、コンピュータ１０１は、マルチプロセッシング・プロセッサ１０２を含み、作業負荷１０４の形態の１つ以上のアプリケーション・プログラムに処理プラットフォームを提供するように構成されたオペレーティング・システム１０３がロードされている。プロセッサ１０２は、プロセッサ１０２のための所定のパラメータ・セットを監視するように構成された性能監視ユニット（ＰＭＵ：performance-monitoring unit）１０５が設けられている。更に、オペレーティング・システム（ＯＳ）１０３は、ＯＳ１０３のコア機能を提供するカーネル１０６と、アクティブ・システム最適化装置（ＡＳＯ：active system optimizer）１０７と、を含む。本実施形態において、ＡＳＯ１０７は、ユーザ空間デーモンであり、ＰＭＵ１０５からの選択されたパラメータおよびカーネル１０６からのカーネル統計データ１０８を入力するように構成されている。ＡＳＯ１０７は、入力されたＰＭＵ１０５パラメータおよびカーネル統計データ１０８に基づいて、監視された各作業負荷１０４の性能を最適化するように構成されている。これについては以下で更に詳細に説明する。ＡＳＯ１０７に入力されたＰＭＵ１０５パラメータおよびカーネル統計データ１０８は、最初はデフォルト値に設定されているが、ＯＳ１０３のセットアップ時にシステム・アドミニストレータによって変更可能である。
【００１３】
図２を参照すると、本実施形態においてＡＳＯ１０７は、測定基準収集モジュール２０１、ＡＳＯデータおよび測定基準記憶２０２、予測モジュール２０３、検証モジュール２０４、調停（arbiter）モジュール２０５、作業負荷配置管理モジュール２０６、および親和性ドメイン・セット２０７を含む。親和性ドメイン２０７は、プロセッサ１０２のために定義されたプロセッサ・コアの所定のセットまたはグループである。１つの親和性ドメインは、単一のプロセッサ・コアから利用可能な全てのプロセッサ・コアまでのいかなる数のコアも含むことができる。本実施形態では、各親和性ドメイン２０７は、プロセッサ・コアの数に基づいた階層を含む。本実施形態では、プロセッサ１０２は２つのチップを含み、その各々が８個のコアを与えるので、結果として合計で１６のプロセッサ・コアとなる。プロセッサ１０２は、以下のように５個の親和性ドメインに分割される。
各々が単一のコアを含む１６個の第５レベル・ドメイン。
各々が２個のコアを含む８個の第４レベル・ドメイン。
各々が４個のコアを含む４個の第３レベル・ドメイン。
各々が８個のコアを含む２個のソケット・レベル・ドメイン。
１６個のコアを含む１個のブック・レベル・ドメイン。
【００１４】
測定基準収集モジュール２０１は、ＰＭＵ１０５からの性能データおよびカーネル１０６からのカーネル統計データ１０８の形態で所定のデータ・セットを収集するように構成されている。収集したデータはＡＳＯデータおよび測定基準記憶２０２に記憶される。データは監視対象の作業負荷１０４ごとに収集される。本実施形態では、図３に示すように、以下のカーネル統計データ１０８を収集する。
命令ごとのデータ待機に費やされるクロック・サイクル（ＣＣＷＤ）、および
命令ごとのクロック・サイクル（ＣＰＩ）の合計。
【００１５】
ＰＭＵ１０５からは以下の性能データを収集する。
実行された記憶命令レート（ＥＳＩ／ｓ）。
【００１６】
各データ・セットは、一意の作業負荷識別子（ＷＬＩＤ：workload identifier）によって識別される当該作業負荷１０４のＡＳＯデータ・レコード３０１に記憶される。
【００１７】
図４を参照すると、ＡＳＯは更に測定基準セット３０２を含む。ＡＳＯ測定基準３０２は親和性測定値（ＡＭ：affinity measure）３０３を含む。これは、クロック・サイクル合計数に対する、命令を完了させるためにデータ待機に費やされるプロセッサ・クロック・サイクルの比率という形態である。ＡＭ３０３は、本実施形態では３０％である親和性測定閾値に関連付けられている。ＡＳＯ測定基準は更に、実行された記憶命令レート（ＥＳＩ／ｓ）の形態である性能測定値（ＰＭ：performance measure）３０４を含む。ＰＭ３０４は、本発明では所与の作業負荷についてＡＳＯ１０７が算出するピークＥＳＩ／ｓを含む性能閾値３０５に関連付けられている。
【００１８】
予測モジュール２０３は、当該作業負荷ごとに親和性測定値（ＡＭ）３０３を周期的に監視し、そのＡＭ３０３を３０％のＡＭ閾値と比較するように構成されている。本実施形態では、測定周期は５秒である。所与の測定周期のＡＭ３０３がＡＭ閾値未満である場合、予測モジュール２０３はそれ以上のアクションを行わないように構成されている。しかしながら、所与の測定周期のＡＭ３０３がＡＭ閾値以上である場合、予測モジュール２０３は調停モジュール２０５に命令を発し、可能であれば当該作業負荷を親和性ドメイン２０７のうちもっと小さいものに割り当てることを推薦するように構成されている。
【００１９】
検証モジュール２０４は、予測モジュール２０３と並列に動作し、当該作業負荷ごとに性能測定値（ＰＭ）３０４を周期的に監視し、このＰＭ３０４をＰＭ閾値３０５と比較するように構成されている。所与の測定周期のＰＭ３０４がＰＭ閾値３０５以上である場合、検証モジュール２０４はそれ以上のアクションを行わないように構成されている。しかしながら、所与の測定周期のＰＭ３０４がＰＭ閾値３０５未満である場合、検証モジュール２０４は調停モジュール２０５に命令を発し、当該作業負荷を親和性ドメイン２０７のうちもっと大きいものに割り当てることを推薦するように構成されている。所与の作業負荷について、検証モジュール２０４はＰＭ閾値をピークＥＳＩ／ｓとして算出し、これを当該作業負荷１０４の測定に用いるように構成されている。
【００２０】
調停モジュール２０５は、各データ周期において、予測モジュール２０３および検証モジュール２０４から受信した命令を調停するように構成されている。所与の作業負荷をもっと大きいかまたは小さい親和性ドメイン２０７に割り当てるための命令が予測モジュール２０３および検証モジュール２０４の一方のみから受信された場合、対立は存在せず、この命令は作業負荷配置管理モジュール２０６に渡される。所与の作業負荷をもっと大きいかまたは小さい親和性ドメイン２０７に割り当てるための対立する命令が予測モジュール２０３および検証モジュール２０４の各々から受信された場合、調停モジュール２０５は作業負荷配置管理モジュール２０６に転送するために適切な命令を選択するように構成されている。本実施形態では、かかる対立に応答して、調停モジュール２０５は常に、所与の作業負荷をもっと大きい親和性ドメイン２０７に割り当てるための検証モジュール２０４からの命令を選択して作業負荷配置管理モジュール２０６に転送するように構成されている。
【００２１】
本実施形態において、作業負荷配置管理モジュール２０６は、測定周期を管理し、各測定周期の終了時に予測モジュール２０３および検証モジュール２０４に対して各測定基準の測定の実行を命令するように構成されている。作業負荷配置管理モジュール２０６は更に、調停モジュール２０５を介して受信した予測モジュール２０３または検証モジュール２０４からの推薦に応じて、その推薦を実施可能であるか否かを判定し、実施可能である場合にはそのようにカーネル１０６に命令するように構成されている。場合によっては、作業負荷配置管理モジュール２０６は、所与の作業負荷に対する親和性ドメインの拡大または縮小の推薦を実施することができないことがある。作業負荷配置管理モジュール２０６は更に、監視対象の作業負荷ごとに減衰率（damping factor）を提供するように構成されている。減衰率は、所与の作業負荷が親和性ドメインを変更することができる頻度を低下させるために与えられる。一般に、減衰率は、所与の作業負荷が最近離れたばかりの所与の親和性ドメインに戻ることを回避するように構成されている。
【００２２】
本実施形態において、作業負荷配置管理モジュール２０６が作業負荷をもっと大きい親和性ドメインに配置する場合、この所与の作業負荷について減衰率は所定値に設定される。本実施形態では所定値は２０である。各測定周期において、各作業負荷の減衰率は、ゼロより大きい場合、１ずつ低下する。作業負荷配置管理モジュール２０６は、減衰率がゼロより大きいならば、もっと小さいドメインに作業負荷を配置することができないが、減衰率値とは無関係にもっと大きいドメインに配置することができる。
【００２３】
従って、ＡＳＯ１０７は、親和性測定値（ＡＭ）および性能測定値（ＰＭ）の形態である所定の測定基準セット３０２を各所定閾値に対して比較して、選択した作業負荷１０４の性能を監視するように構成されている。所与の作業負荷について親和性測定値が親和性測定閾値を超えている場合、ＡＳＯ１０７はカーネル１０６に、作業負荷が実行されている親和性ドメインのサイズを小さくするように命令する。所与の作業負荷について性能測定値が性能測定閾値を満たさない場合、ＡＳＯ１０７はカーネル１０６に、作業負荷が実行されている親和性ドメインのサイズを大きくするように命令する。
【００２４】
これより、測定基準収集モジュール２０１が実行する処理について、図５のフローチャートを参照して更に説明する。処理は、ＡＳＯ１０７の初期化に応じてステップ４０１において開始し、ステップ４０２に移る。ステップ４０２において、ＡＳＯデータ３０１から監視対象の作業負荷１０４を識別し、処理はステップ４０３に移る。ステップ４０３において、データを収集するデータ・ソースをＡＳＯデータ３０１から識別し、処理はステップ４０４に移る。ステップ４０４において、当該作業負荷ごとに、ＣＣＷＤ、ＣＣＰＩ、およびＥＳＩ／ｓをＡＳＯデータ３０１にログし、このログ・プロセスはＡＳＯ１０７の処理の持続時間だけ継続する。
【００２５】
これより、予測モジュール２０３が実行する処理について、図６のフローチャートを参照して更に説明する。処理は、ＡＳＯの起動に応じてステップ５０１において開始し、ステップ５０２に移る。ステップ５０２において、監視対象の作業負荷の親和性測定値（ＡＭＩ）をＡＳＯ測定基準３０２から識別し、処理はステップ５０３に移る。ステップ５０３において、収集したＡＳＯデータ３０１について監視作業負荷１０４ごとにＡＭを算出し、処理はステップ５０４に移る。ステップ５０４において、算出したＡＭをＡＭ閾値と比較し、処理はステップ５０５に移る。ステップ５０５において、現在の算出ＡＭ値がＡＭ閾値を超えている場合、処理はステップ５０６に移る。ステップ５０６において、当該作業負荷の処理をもっと小さい親和性ドメインに割り当てるための推薦を調停モジュール２０５に伝達し、処理はステップ５０７に移る。ステップ５０７において、処理は、次のデータ・サイクルを示す作業負荷配置管理モジュール２０６からの信号を待つ。かかる信号を受信すると処理はステップ５０３に戻り、上述のように進行する。ステップ５０５において現在の算出ＡＭ値がＡＭ閾値を超えていない場合、調停モジュール２０５に応答を伝達せず、処理はステップ５０７に移って上述のように進行する。
【００２６】
これより、検証モジュール２０４が実行する処理について、図７のフローチャートを参照して更に説明する。処理は、ＡＳＯ１０７の起動に応答してステップ６０１において開始し、ステップ６０２に移る。ステップ６０２において、監視対象の作業負荷の性能測定値（ＰＭ）をＡＳＯ測定基準３０２から識別し、処理はステップ６０３に移る。ステップ６０３において、収集したＡＳＯデータ３０１について監視作業負荷１０４ごとにＰＭを算出し、処理はステップ６０４に移る。ステップ６０４において、算出したＰＭをＰＭ閾値と比較し、処理はステップ６０５に移る。ステップ６０５において、現在の算出ＰＭ値がＰＭ閾値未満である場合、処理はステップ６０６に移る。ステップ６０６において、当該作業負荷の処理をもっと大きいドメインに割り当てるための推薦を調停モジュール２０５に伝達し、処理はステップ６０７に移る。ステップ６０７において、処理は、次のデータ・サイクルを示す作業負荷配置管理モジュール２０６からの信号を待つ。かかる信号を受信すると、処理はステップ６０８に移ってＰＭ閾値を更新し、その後ステップ６０３に戻って上述のように進行する。ステップ６０５において、現在の算出ＰＭ値がＰＭ閾値以上である場合、調停モジュール２０５に応答を伝達せず、処理はステップ６０７に移って上述のように進行する。
【００２７】
これより、調停モジュール２０５および作業負荷配置管理モジュール２０６の組み合わせが実行する処理について、図８のフローチャートを参照して更に説明する。ステップ７０６および７１１は、調停モジュール２０５の機能を構成する。処理は、ＡＳＯ１０７の起動時にステップ７０１で開始し、ステップ７０２に移る。ステップ７０２において、監視対象の作業負荷１０４を識別する。以降の処理は各監視作業負荷について実行する。次いで処理はステップ７０３に移って所定のデータ・サイクル周期が経過するのを待ち、次いでステップ７０４に移る。ステップ７０４において、予測モジュール２０３および検証モジュール２０４は、データ・サイクルについて信号で通知され、処理はステップ７０５に移る。ステップ７０５において、予測モジュール２０３および検証モジュール２０４から結果を受信すると、処理はステップ７０６に移る。ステップ７０６において、それらの結果に対立が存在しない場合、処理はステップ７０７に移る。ステップ７０７において、当該作業負荷についての減衰率を調べて、親和性ドメインに変更が可能であるか否かを判定し、可能な場合には処理はステップ７０８に移る。ステップ７０８において、適切な命令をカーネル１０６に発することによって当該する命令を実施し、処理はステップ７０９に移る。ステップ７０９において、当該作業負荷の減衰率を更新して親和性ドメインの変更を反映させ、処理はステップ７０３に戻って上述のように進行する。ステップ７０５において、予測モジュール２０３または検証モジュール２０４から応答が受信されない場合、処理はステップ７１０に移って当該作業負荷の減衰率を減少させ、その後ステップ７０３に戻って上述のように処理を行う。ステップ７０６において、対立する結果を受信した場合、処理はステップ７１１に移る。ステップ７１１において、検証モジュール２０４からの結果を選択し、処理はステップ７０７に移って上述のように進行する。ステップ７０７において、所与の作業負荷が現在の減衰率のために移動することができない場合、処理はステップ７１０に移って減衰率を減少させ、その後ステップ７０３に戻って上述のように進行する。
【００２８】
別の実施形態において、調停モジュールは、予測モジュールと検証モジュールとの間の対立を解決する場合に他の入力を考慮するように構成されている。換言すると、調停モジュールによる解決は、多数の要因に基づく場合がある。更に別の実施形態では、調停モジュールおよび作業負荷配置管理モジュールの機能は別個のモジュールによって与えることができる。
【００２９】
更に別の実施形態において、不適切な環境のために性能を最適化することができないことをＡＳＯが発見した場合、ＡＳＯは休止モードに入り、ＡＳＯが性能改善を提供可能であることが環境によって示された場合にのみ立ち上がるように構成することができる。別の実施形態では、小さい性能変動に対するシステムの感度を抑えるために、所定数の測定周期にわたってＡＭまたはＰＭの平均化を行う。所定数の連続周期で平均ＡＭがＡＭ閾値以上である場合、予測モジュールによってもっと小さい親和性ドメインが推薦される。これとは逆に、所定数の連続周期で平均ＰＭがＰＭ閾値未満である場合、検証モジュールによってもっと大きい親和性ドメインが推薦される。
【００３０】
別の実施形態において、減衰率は乗数（multiplier factor）を用いて拡張される。作業負荷配置管理モジュールがもっと大きいドメインに作業負荷を配置する場合、減衰率をＸ＋古い減衰率＊乗数に設定し、次いで乗数を１だけ増大する（例えばＸ＝２０、初期乗数＝０）。作業負荷配置管理モジュールは、減衰率がゼロを超えている限り、もっと小さいドメインに作業負荷を配置することができないが、減衰率値とは無関係にもっと大きいドメインに配置することができる。各測定周期ごとに、減衰率はゼロを超えているならば１だけ低減される。減衰率がゼロに達すると、乗数はゼロにリセットされる。これによって、ＡＳＯが頻繁に移動させようとする作業負荷の減衰率は増大するが、徐々に変動する作業負荷は移動させ続けることができる。
【００３１】
更に別の実施形態において、もっと小さいドメインに移動する場合に減衰率はもっと小さい値に設定され、乗数は適用されない。この構成によって、もっと小さいドメインへの移動速度が低下する。例えば、ブック親和性ドメインから単一のコア親和性ドメインまでの各移動間には、５測定周期が必要であり得る。
【００３２】
更に別の実施形態では、予測モジュールおよび検証モジュールのイネーブルを遅延させること、また、予測モジュールおよび検証モジュールの動作周期を制限することによって、親和性ドメイン間の変化の頻度を限定する。
【００３３】
当業者には理解されるであろうが、予測モジュールおよび検証モジュールからのいくつかの推薦が作業負荷配置管理モジュールによって実施されない場合がある。例えば、１コア・ドメインおよび２コア・ドメインを含む２つの親和性ドメインが与えられ、２つの作業負荷ＡおよびＢが実行されている。作業負荷Ａはすでに２コア・ドメインに圧縮され、作業負荷Ｂは現在全ての３つのコア上で実行している。予測モジュールは、作業負荷Ｂをもっと小さいドメインに配置することを推薦する可能性があるが、作業負荷配置管理モジュールは、双方の作業負荷を２コア・ドメインに配置することは許容可能でないこと、および双方の作業負荷は１つのみのコア上に配置するには大きすぎることを判定する場合がある。従って、作業負荷配置管理モジュールは、作業負荷Ａを２つのコア上に圧縮し、作業負荷Ｂを全ての３つのコア上で実行したままとするように構成することができる。
【００３４】
更に別の実施形態では、所与の作業負荷について親和性ドメインのサイズを小さくするか否かを判定する場合に、予測モジュールが更に別の測定基準を考慮に入れるように構成されている。このような更に別の測定基準は、検証モジュールによる親和性ドメイン変更反転の数を低減するように構成することができる。例えば、ＣＰＩ−スタック・ブレークダウン（CPI-stack breakdown）を用いて、親和性ドメイン変更の潜在的な欠点に対する潜在的な利点を比較検討することができる。
【００３５】
別の実施形態において、予測モジュールには、プロセッサ・トポロジの非均一要素を識別するデータが与えられる。例えば、あるソケット上に６個のコアが与えられ、別のソケット上に２つのコアが与えられる場合がある。予測モジュールは、トポロジを認識し、現ドメインの子のサイズを考慮することができる。次いで予測モジュールは、最小ドメイン・サイズを作業負荷配置管理モジュールに伝達して、作業負荷配置管理モジュールが小さすぎるドメインに配置するのを回避することができるように構成されている。
【００３６】
更に別の実施形態において、検証モジュールは、各ドメイン上の作業負荷の性能の履歴を保持するように構成されている。検証モジュールは更に、以前のもっと大きいドメインに戻ることを推薦することなく、所与のドメインの５％等のわずかな性能低下を許容するように構成されている。わずかな性能低下の容認によって、作業負荷は、中間ドメインを越えて移動して、性能の著しい向上が可能である他のドメインに到達することができる。親和性ドメインの範囲で性能を効果的にサンプリングした後、検証モジュールは、収集した履歴性能データを用いて、作業負荷が最良の性能を発揮するドメインに移動するための推薦を生成するように構成することができる。例えば、下方向に３の減衰率は、各親和性ドメインについて性能測定値の３つのサンプルを提供する。いったん各レベルがサンプリングされると、検証モジュールは、最良の平均性能を有する親和性ドメインへの移動を推薦するように構成されている。
【００３７】
別の実施形態において、検証モジュールおよび予測モジュールは、作業負荷の最適化を試みる前のある時間期間だけ作業負荷の当該性能関連属性が安定していることを保証するように構成されている。考えられる属性として、性能測定値、プロセス負荷および利用の３つがある。最適化を適用した後、新しいドメインにおいてこれらの測定基準を同様に監視する。
【００３８】
更に別の実施形態において、ＡＳＯは、プロセッサもしくはメモリの追加等の大きいシステム・イベントまたはパーティション・マイグレーション・イベントを検出するように構成し、これに応じて全ての最適化のリセットを推薦するように構成することができる。
【００３９】
当業者には理解されようが、ＡＳＯの所与の適用に対して適切な親和性測定値および性能測定値を与えるために、いかなる適切な測定基準、統計データ、または測定値も用いることができる。更に、親和性ドメインの定義は変更することができ、階層である必要はなく、ＡＳＯのためのいかなる所与の適用にも適合するように構成することができる。
【００４０】
本発明の実施形態は、単一ソケット・システムに適用可能である。例えば、密接な相互作用を有するスレッドを同一のコア上に配置することが有益である場合がある。ロック競合は、ＡＳＯがシングル・チップ環境で有利である別の機会を提供する。利用可能ハードウェア・スレッドのサブセットに対するロックを求めて競合するソフトウェア・スレッドの配置を制約することで、性能向上が達成される。
【００４１】
本発明の実施形態は、検索ベースの最適化装置よりも迅速で破壊的でない作業負荷配置を可能とするように構成されており、予測最適化装置よりも積極的である。予測モジュールは、親和性ドメインを変更することが有益でなさそうな作業負荷の移動を防ぎ、一般に、適切な時点でもっと小さいドメインへの移動を停止する。一方、検証モジュールは、間違っていることが判明した予測モジュールからの推薦を戻すので、予測モジュールは積極的になることができる。
【００４２】
本発明の実施形態は、予測モジュールにより実験に頼らないことの結果として、検索ベースまたは予測最適化装置よりも効率的に多数の配置を並列処理することができるように構成されている。必要な実験の量は、純粋な実験手法に比べて大幅に低減し、これは多くの作業負荷を有する多忙なシステムで特に有益であり得る。予測最適化装置は、一度に多くの作業負荷を処理する場合に極めて複雑な予測問題に直面する。
【００４３】
本発明の実施形態は、予測最適化装置に比べて試験が容易であり、いっそうロバストである。異なる測定基準を用いた概ね反対の目標を有する２つの簡単なコンポーネントを有することで、試験の労力を軽減し、２つのコンポーネントの試験を並列に実行することを可能とする。ドメイン移動の後、予測モジュールは新しいドメインから測定基準を収集するように構成されている。このため、予測モジュールは、次のドメインに性能改善の可能性があるか否かを予測するという簡略化されたジョブを有する。これは、どのドメインによって最良の性能が得られるかを予測する重大なジョブとは対照的である。
【００４４】
本発明の一部または全てを具現化する装置は、本発明の一実施形態の一部または全てを提供するように構成されたソフトウェアを有する汎用デバイスとすれば良いことは、当業者には理解されよう。このデバイスは、単一のデバイスまたは複数のデバイスのグループとすることができ、ソフトウェアは、単一のプログラムまたは複数のプログラムのセットとすることができる。更に、本発明を実施するために用いられるソフトウェアのあらゆるものは、いずれかの適切な伝送または記憶手段を介して伝達して、ソフトウェアを１つ以上のデバイスにロードすることを可能とすることができる。
【００４５】
本発明について、その実施形態の説明によって例示し、実施形態を相当に詳細に記載したが、そのような詳細に添付の特許請求の範囲を制約することまたはいかなる意味でも限定することは、本出願人の意図するところではない。当業者には、追加の利点および変更が容易に明らかとなろう。従って本発明は、その広い態様において、代表的な装置および方法、図示し記載した例示的な実施例の具体的な詳細に限定されない。従って、本出願人の一般的な本発明の概念の範囲から逸脱することなく、かかる詳細から逸脱することも可能である。
【図１】
2014523598.tif 000003
【図２】
2014523598.tif 000004
【図３】
2014523598.tif 000005
【図４】
2014523598.tif 000006
【図５】
2014523598.tif 000007
【図６】
2014523598.tif 000008
【図７】
2014523598.tif 000009
【図８】
2014523598.tif 000010
【手続補正書】
【提出日】平成26年2月25日(2014.2.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
マルチプロセッシング・コンピュータ・システムにおいて作業負荷を管理するための方法であって、
複数のプロセッサ・コアのための親和性ドメイン・セットを定義するステップであって、各前記親和性ドメインが前記プロセッサ・コアのセットを含む、ステップと、
所与の作業負荷を、もっと少数のプロセッサ・コアを含むもっと小さい親和性ドメインに移動させなければならない場合を指示するように構成された親和性測定値を定義するステップと、
所与の作業負荷の性能を指示するように構成された性能測定値を定義するステップと、
前記親和性測定値および前記性能測定値に従って所与の作業負荷を測定するステップと、
前記親和性測定値によって、所与の作業負荷をもっと小さい親和性ドメインに移動させなければならないことが指示された場合、前記作業負荷をもっと小さい親和性ドメインに移動させるステップと、
前記性能測定値によって性能の低下が指示された場合、前記作業負荷をもっと大きい親和性ドメインに移動させるステップと、
を含む、方法。
【請求項２】
前記親和性測定値および前記性能測定値からの前記指示が対立する場合、所定のプロトコルに関連して前記対立を解決するステップを更に含む、請求項１に記載の方法。
【請求項３】
前記所定のプロトコルが、前記性能測定値からの前記指示に従って前記作業負荷をもっと大きい親和性ドメインに移動させることを含む、請求項２に記載の方法。
【請求項４】
前記親和性ドメイン・セットが、所与の親和性ドメインにおいてプロセッサ・コアの数によって配列された親和性ドメインの階層を含む、前出の請求項のいずれかに記載の方法。
【請求項５】
前記親和性または性能測定値からの前記指示に従って作業負荷配置手段に命令するステップを更に含む、前出の請求項のいずれかに記載の方法。
【請求項６】
前記親和性測定値および前記性能測定値が相互に排他的な測定値を含む、前出の請求項のいずれかに記載の方法。
【請求項７】
前記親和性測定値が、合計処理時間の割合として、データを待機している所与の作業負荷が費やす処理時間の測定値を含む、前出の請求項のいずれかに記載の方法。
【請求項８】
前記性能測定値が、所与の作業負荷についての記憶命令の実行レートの測定値を含む、前出の請求項のいずれかに記載の方法。
【請求項９】
前記親和性測定値および前記性能測定値に従った所与の作業負荷の前記測定が周期的に実行される、前出の請求項のいずれかに記載の方法。
【請求項１０】
ドメイン間の所与の作業負荷の移動を減衰させる、前出の請求項のいずれかに記載の方法。
【請求項１１】
オペレーティング・システム・デーモンによって実行される、前出の請求項のいずれかに記載の方法。
【請求項１２】
マルチプロセッシング・コンピュータ・システムにおいて作業負荷を管理するための装置であって、
複数のプロセッサ・コアのための親和性ドメイン・セットを定義し、各前記親和性ドメインが前記プロセッサ・コアのセットを含み、
所与の作業負荷を、もっと少数のプロセッサ・コアを含むもっと小さい親和性ドメインに移動させなければならない場合を指示するように構成された親和性測定値を定義し、
所与の作業負荷の性能を指示するように構成された性能測定値を定義し、
前記親和性測定値および前記性能測定値に従って所与の作業負荷を測定し、
前記親和性測定値によって、所与の作業負荷をもっと小さい親和性ドメインに移動させなければならないことが指示された場合、前記作業負荷をもっと小さい親和性ドメインに移動させ、
前記性能測定値によって性能の低下が指示された場合、前記作業負荷をもっと大きい親和性ドメインに移動させる、
ように動作可能である、装置。
【請求項１３】
前記親和性測定値および前記性能測定値からの前記指示が対立する場合、所定のプロトコルに関連して前記対立を解決するように更に動作可能である、請求項１２に記載の装置。
【請求項１４】
前記所定のプロトコルが、前記性能測定値からの前記指示に従って前記作業負荷をもっと大きい親和性ドメインに移動させることを含む、請求項１３に記載の装置。
【請求項１５】
前記親和性ドメイン・セットが、所与の親和性ドメインにおいてプロセッサ・コアの数によって配列された親和性ドメインの階層を含む、請求項１２から１４のいずれかに記載の装置。
【請求項１６】
前記親和性または性能測定値からの前記指示に従って作業負荷配置手段に命令するように更に動作可能である、請求項１２から１５のいずれかに記載の装置。
【請求項１７】
前記親和性測定値および前記性能測定値が相互に排他的な測定値を含む、請求項１２から１６のいずれかに記載の装置。
【請求項１８】
前記親和性測定値が、合計処理時間の割合として、データを待機している所与の作業負荷が費やす処理時間の測定値を含む、請求項１２から１７のいずれかに記載の装置。
【請求項１９】
前記性能測定値が、所与の作業負荷についての記憶命令の実行レートの測定値を含む、請求項１２から１８のいずれかに記載の装置。
【請求項２０】
前記親和性測定値および前記性能測定値に従った所与の作業負荷の前記測定が周期的に実行される、請求項１２から１９のいずれかに記載の装置。
【請求項２１】
ドメイン間の所与の作業負荷の移動を減衰させる、請求項１２から２０のいずれかに記載の装置。
【請求項２２】
オペレーティング・システム・デーモンによって実行される、請求項１２から２１のいずれかに記載の装置。
【請求項２３】
コンピュータ読み取り可能媒体上に記憶され、コンピュータの内部メモリにロードすることができるコンピュータ・プログラムであって、前記コンピュータに、請求項１から１１のいずれか１項に記載の方法の各ステップを実行させる、コンピュータ・プログラム。
【国際調査報告】
2014523598.tif 000011
2014523598.tif 000012