(57)【要約】【課題】ロッキング機構を用いた効率的なタスク・スケジューリングのための方法、システム、およびコンピュータ・プログラム製品を提供する。【解決手段】複数のスレッド間にロックを必要とする並列操作に関して、ロッキング機構を用いた効率的なタスク・スケジューリングのために、ロッキング機構上でスピンしているタスクの数が所定のしきい値未満である場合、新たなタスクがロッキング機構上でスピンすることが許可される。【選択図】図３
2016530625.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング環境における、プロセッサ・デバイスによるロッキング機構を用いた効率的なタスク・スケジューリングのための方法であって、
複数のスレッド間にロックを必要とする並列操作に関して、前記ロッキング機構上でスピンしているタスクの数が所定のしきい値未満である場合、新たなタスクが前記ロッキング機構上でスピンすることを許可すること
を含む方法。
【請求項２】
前記ロッキング機構上でスピンしている前記タスクの前記数が、前記所定のしきい値以上である場合、前記新たなタスクが前記ロッキング機構上でスピンすることを禁じることをさらに含む、請求項１に記載の方法。
【請求項３】
前記ロッキング機構上で現在スピンしている前記タスクの前記数を、前記新たなタスクが前記ロッキング機構上でスピンすることを許可することの前に取得することをさらに含む、請求項２に記載の方法。
【請求項４】
前記ロッキング機構上でスピンしている前記タスクの前記数が、前記所定のしきい値以上である場合、前記新たなタスクをフェイルさせることをさらに含む、請求項１に記載の方法。
【請求項５】
前記ロッキング機構上でスピンしている前記タスクの前記数が、前記所定のしきい値以上である場合、前記新たなタスクを終了してディスパッチ・キューに向かわせることをさらに含む、請求項１に記載の方法。
【請求項６】
前記ロッキング機構上でスピンしているタスクの前記数が前記所定のしきい値未満であるかどうかを確認するために、前記ロッキング機構を呼び出すことをさらに含む、請求項１に記載の方法。
【請求項７】
前記ロッキング機構上でスピンしているタスクの前記数が前記所定のしきい値未満であるかどうかを確認するための前記ロッキング機構を、チケット・ベース・ロックまたはキュー・ベース・ロックの上に実装することをさらに含み、前記ロッキング機構がロック・トライ・オア・スピンである、請求項１に記載の方法。
【請求項８】
コンピューティング環境における、ロッキング機構を用いた効率的なタスク・スケジューリングのためのシステムであって、
前記ロッキング機構と、
前記コンピューティング環境において前記ロッキング機構と通信して動作可能な、少なくとも１つのプロセッサ・デバイスであって、
複数のスレッド間にロックを必要とする並列操作に関して、前記ロッキング機構上でスピンしているタスクの数が所定のしきい値未満である場合、新たなタスクが前記ロッキング機構上でスピンすることを許可する
前記プロセッサ・デバイスと
を備えるシステム。
【請求項９】
前記ロッキング機構上でスピンしている前記タスクの前記数が、前記所定のしきい値以上である場合、前記新たなタスクが前記ロッキング機構上でスピンすることを前記少なくとも１つのプロセッサ・デバイスが禁じる、請求項８に記載のシステム。
【請求項１０】
前記少なくとも１つのプロセッサ・デバイスが、前記ロッキング機構上で現在スピンしている前記タスクの前記数を、前記新たなタスクが前記ロッキング機構上でスピンすることを許可する前に取得する、請求項９に記載のシステム。
【請求項１１】
前記ロッキング機構上でスピンしている前記タスクの前記数が、前記所定のしきい値以上である場合、前記少なくとも１つのプロセッサ・デバイスが前記新たなタスクをフェイルさせる、請求項８に記載のシステム。
【請求項１２】
前記ロッキング機構上でスピンしている前記タスクの前記数が、前記所定のしきい値以上である場合、前記少なくとも１つのプロセッサ・デバイスが、前記新たなタスクを終了してディスパッチ・キューに向かわせる、請求項８に記載のシステム。
【請求項１３】
前記ロッキング機構上でスピンしているタスクの前記数が前記所定のしきい値未満であるかどうかを確認するために、前記少なくとも１つのプロセッサ・デバイスが前記ロッキング機構を呼び出す、請求項８に記載のシステム。
【請求項１４】
前記少なくとも１つのプロセッサ・デバイスが、前記ロッキング機構上でスピンしているタスクの前記数が前記所定のしきい値未満であるかどうかを確認するための前記ロッキング機構を、チケット・ベース・ロックまたはキュー・ベース・ロックの上に実装し、前記ロッキング機構がロック・トライ・オア・スピンである、請求項８に記載のシステム。
【請求項１５】
コンピューティング環境における、少なくとも１つのプロセッサ・デバイスによるロッキング機構を用いた効率的なタスク・スケジューリングのためのコンピュータ・プログラム製品であって、コンピュータ読取り可能プログラム・コード部分が記憶された非一時的なコンピュータ読取り可能ストレージ媒体を備え、前記コンピュータ読取り可能プログラム・コード部分が、
複数のスレッド間にロックを必要とする並列操作に関して、前記ロッキング機構上でスピンしているタスクの数が所定のしきい値未満である場合、新たなタスクが前記ロッキング機構上でスピンすることを許可する、第１の実行可能部分
を備える、コンピュータ・プログラム製品。
【請求項１６】
前記ロッキング機構上でスピンしている前記タスクの前記数が、前記所定のしきい値以上である場合、前記新たなタスクが前記ロッキング機構上でスピンすることを禁じる、第２の実行可能部分をさらに含む、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１７】
前記ロッキング機構上で現在スピンしている前記タスクの前記数を、前記新たなタスクが前記ロッキング機構上でスピンすることを許可する前に取得する、第３の実行可能部分をさらに含む、請求項１６に記載のコンピュータ・プログラム製品。
【請求項１８】
前記ロッキング機構上でスピンしている前記タスクの前記数が、前記所定のしきい値以上である場合、前記新たなタスクをフェイルさせること、または
前記ロッキング機構上でスピンしている前記タスクの前記数が、前記所定のしきい値以上である場合、前記新たなタスクを終了してディスパッチ・キューに向かわせること
を実施する第２の実行可能部分をさらに含む、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１９】
前記ロッキング機構上でスピンしているタスクの前記数が前記所定のしきい値未満であるかどうかを確認するために前記ロッキング機構を呼び出す、第２の実行可能部分をさらに含む、請求項１５に記載のコンピュータ・プログラム製品。
【請求項２０】
前記ロッキング機構上でスピンしているタスクの前記数が前記所定のしきい値未満であるかどうかを確認するための前記ロッキング機構を、チケット・ベース・ロックまたはキュー・ベース・ロックの上に実装する、第２の実行可能部分をさらに含み、前記ロッキング機構がロック・トライ・オア・スピンである、請求項１５に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、コンピューティング・システムに関し、より詳細には、コンピューティング環境における、複数のスレッド間にロックを必要とする並列操作に関する、ロッキング機構を用いた効率的なタスク・スケジューリングのためのシステム、方法、及びプログラムに関する。
【背景技術】
【０００２】
今日の社会では、コンピュータ・システムが普及している。コンピュータ・システムは、職場、家庭、または学校において見ることができる。コンピュータ・システムは、データを処理し、記憶するための、データ・ストレージ・システムまたはディスク・ストレージ・システムを含むことができる。現代社会におけるコンピュータへの依存度は絶えず高まっていることから、コンピュータ技術は、高まる需要に追随してゆくために、多くの面で進歩してこなければならなかった。研究開発の大きな取組みのうち、１つの具体的な課題が、並列性、すなわち複数のタスクを並列に実施することである。
【０００３】
並列処理の増大を促進するために、いくつかのコンピュータ・ソフトウェア技術およびコンピュータ・ハードウェア技術が開発されてきた。ソフトウェアの観点からは、マルチスレッド・オペレーティング・システムおよびマルチスレッド・カーネルが開発されてきており、これは、コンピュータ・プログラムを複数の「スレッド」において同時に実行できるようにし、その結果、複数のタスクが基本的に同時に実施できるようになるものである。スレッドとは一般に、１つのプログラムについての独立した実行経路を表す。例えば、電子商取引コンピュータ・アプリケーションの場合、異なるスレッドを異なる顧客に割り当てることができ、したがって、各顧客の特定の電子商取引トランザクションが個別のスレッドにおいて取り扱われる。ハードウェアの観点からは、コンピュータは、作業負荷容量（workload capacity）を増大させるべく複数のマイクロプロセッサにますます頼っている。さらに、複数のスレッドを並列に実行することのできる能力をサポートするいくつかのマイクロプロセッサが開発されてきており、複数のマイクロプロセッサを使用することにより達成できるものと同じ性能の向上の多くを、効果的に提供している。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、コンピューティング環境における、少なくとも１つのプロセッサ・デバイスを用いるロッキング機構を用いた効率的なタスク・スケジューリングのための方法を提供する。
【課題を解決するための手段】
【０００５】
一実施形態では、ほんの一例として、複数のスレッド間にロックを必要とする並列操作に関して、ロッキング機構上でスピンしているタスクの数が所定のしきい値未満である場合、新たなタスクがロッキング機構上でスピンすることが許可される。
【０００６】
別の実施形態では、コンピューティング環境における、少なくとも１つのプロセッサ・デバイスを用いるロッキング機構を用いた効率的なタスク・スケジューリングのためのコンピュータ・システムが提供される。コンピュータ・システムは、コンピュータ読取り可能媒体、およびコンピュータ読取り可能媒体と動作可能に通信するプロセッサを含む。一実施形態では、ほんの一例として、複数のスレッド間にロックを必要とする並列操作に関して、ロッキング機構上でスピンしているタスクの数が所定のしきい値未満である場合、新たなタスクがロッキング機構上でスピンすることをプロセッサが許可する。
【０００７】
別の実施形態では、コンピューティング環境における、少なくとも１つのプロセッサ・デバイスを用いるロッキング機構を用いた効率的なタスク・スケジューリングのためのコンピュータ・プログラム製品が提供される。コンピュータ読取り可能ストレージ媒体には、コンピュータ読取り可能プログラム・コード部分が記憶される。コンピュータ読取り可能プログラム・コード部分は、複数のスレッド間にロックを必要とする並列操作に関して、ロッキング機構上でスピンしているタスクの数が所定のしきい値未満である場合、新たなタスクがロッキング機構上でスピンすることを許可する、第１の実行可能部分を含む。
【０００８】
前述の例示的な方法実施形態に加えて、他の例示的なシステム実施形態およびコンピュータ製品実施形態が提供され、関連する利点をそれらがもたらす。前述の概要は、以下に発明を実施するための形態の中でさらに述べる概念の抜粋を、簡単な形で紹介するために提供されたものである。この、課題を解決するための手段は、特許請求の範囲に記載の主題の重要な特徴または基本的な特徴を特定するものでも、特許請求の範囲に記載の主題の範囲を決定する際の助けとして使用されるものでもない。特許請求の範囲に記載の主題は、背景の中で言及したいずれかのまたは全ての欠点を解消する実装形態に限定されない。
【０００９】
本発明の利点が容易に理解されるように、上で簡潔に述べた本発明のより具体的な説明を、添付の図面に示す特定の実施形態に即して提供する。これらの図面は、本発明の典型的な実施形態のみを描いており、したがって本発明の範囲を限定するものと見なすべきではないということを理解して、添付の図面を用いてさらに特定的かつ詳細に本発明について記載し説明する。
【図面の簡単な説明】
【００１０】
【図１】本発明の態様を実現することのできる、例示的ストレージ・デバイスを有するコンピューティング・システム環境を示すブロック図である。
【図２】本発明の態様を実現することのできる、本発明によるコンピュータ・システム内のデータ・ストレージ・システムの例示的ハードウェア構造を示すブロック図である。
【図３】本発明の態様を実現することのできる、ロッキング機構を用いた効率的なタスク・スケジューリングのための例示的方法を示すフローチャートである。
【図４】本発明の態様を実現することのできる、ロッキング機構を用いた効率的なタスク・スケジューリングのためのさらなる例示的方法を示すフローチャートである。
【発明を実施するための形態】
【００１１】
一実施形態では、多重処理コンピュータ・システムにおけるアーキテクチャが、分散共有メモリ・アーキテクチャである。分散共有メモリ・アーキテクチャは、プロセッサおよびメモリが中にある、複数のノードを含む。複数のノードは、それらの間に結合されたネットワークを介して通信する。全体として考えると、複数のノード内に含まれるメモリが、コンピュータ・システムの共有メモリを成す。ディレクトリを使用して、どのノードが、特定のアドレスに対応するデータのキャッシュ・コピーを有しているかを特定することができる。ディレクトリを調べることによって、コヒーレンシ活動（coherency activity）を行うことができる。一実施形態では、分散共有メモリ・システムがスケーラブルであり、共有バス・アーキテクチャに付随するさまざまな制限を克服する。多くのプロセッサ・アクセスがノード内で完結するので、ノードは典型的に、ネットワークに対して、共有バス・アーキテクチャが同等の性能を達成するためにその共有バスに対して実現しなければならない帯域幅の要件に比べて、ずっと低い帯域幅の要件を有する。ノードは、高いクロック周波数および帯域幅で動作し、必要なときにネットワークにアクセスすることができる。ノードのローカルな帯域幅に影響を及ぼすことなく、さらなるノードをネットワークに追加することができる。論理パーティショニングでは、「ハイパーバイザ」またはパーティション・マネージャと呼ばれる共有資源が、論理パーティションを管理し、さまざまな論理パーティションへの資源の割振りを容易にしている。例えば、パーティション・マネージャは、プロセッサ、ワークステーション・アダプタ、ストレージ・デバイス、メモリ空間、ネットワーク・アダプタなどのような資源を、さまざまなパーティションに割り振って、各論理パーティションの相対的に独立した動作を、個別の物理コンピュータとほぼ同じようにサポートすることができる。
【００１２】
さらに、一実施形態では、大規模なデータベースおよびインターネット・トランザクション・アプリケーションに、２０〜１００のプロセッサまたはそれより多くのプロセッサを備えたマシン上で稼働することの可能な並列サーバが必要である。さらに、一実施形態では、何らかの形の並列プログラミングで、最下層レベルでのロッキングの使用を必要とする場合がある。ロックは、データ構造が整合状態を維持し続けることを可能にする相互排他を実現するプリミティブである。一実施形態では、ロッキング機構がないと、実行の複数のスレッドが、データ構造を同時に修正してしまうおそれがある。注意深く考え抜いた、通常は複雑なロック・フリー・アルゴリズムがなければ、意図しないプログラム状態が入力されるので、結果は通常、クラッシュまたはハングとなる。ロック・フリー・アルゴリズムの形成は極めて困難であるので、大多数のプログラムはロックを使用する。データ構造の更新が遅い場合、最適なロックは何らかの類のミューテックス（例えば相互排他）である。それらスレッドは、ブロックするとオペレーティング・システムに制御を移管する。これにより、別のスレッドがランできるようになり、場合によっては、第１のスレッドがスリープしている間に、別のスレッドが進行できるようになる。この制御の移管は、１対のコンテキスト・スイッチから成り立ち、コンテキスト・スイッチは、極めて遅い操作である。したがって、ロック保持時間が短いことが予想される場合、これは最速の方法とはなり得ない。
【００１３】
一実施形態では、並列操作においてスピン・ロック動作を使用することができ、スピン・ロック動作は、確実に一度に１つの並列プロセスだけがメモリのクリティカル・リージョンにアクセスできるようにするためにプログラムで使用される、ソフトウェア・ロックに関連付けることができる。一実施形態では、スピン・ロックを相互排他に使用することができる。スピン・ロックは、ロックを獲得しようと試みるスレッドを、ロックが利用可能かどうかをそのスレッドが繰り返しチェックしながら、ループ内で単に待機（「スピン」）させるロックである。スレッドはアクティブのままではあるものの有益なタスクを実施しないので、そのようなロックを使用すると、一種のビジー・ウェイト状態になる。スピン・ロックは、一旦獲得すると、明示的に解放されるまで保持することができるが、一部の実装形態では、待機状態にあるスレッド（ロックを保持している）がブロックする、または「スリープに入る」場合に、自動的に解放することができる。
【００１４】
一実施形態では、スピン・ロック（例えばセマフォ）を、データ構造への共有ポインタに関連付けられ、ポインタが複数のスレッドのうちの１つによって現在使用されているかどうかを確認するためにそれらのスレッドによって読み取られることの可能な、変数またはトークンとして実装することができる。スレッドは、他のどんなスレッドもポインタを現在使用していないことを示すセマフォを読み取ったときはいつでも、ポインタが現在使用中であることを他の全てのスレッドに対して示す値に、セマフォをセットすることができる（セマフォの「獲得」と呼ばれるプロセス）。したがって、別のスレッドが、データ構造にアクセスしたいものの、セマフォが他のスレッドによって保持されていることを検出したとき、そのスレッドは、他方のスレッドがセマフォを解放して、ポインタ（したがってデータ構造）が再び他のスレッドからアクセス可能であることが分かるまで、待機する必要がある。一実施形態では、任意の所与の時間に１つのスレッドだけがセマフォを保持することが許される。
【００１５】
さらに、一実施形態では、コンテキスト・スイッチの代わりに、スピン・ロックが「スピンし」、ロックがアンロックされているかどうかを繰り返しチェックする。スピン動作（spinning）は非常に高速であり、したがって、アンロック−ロック対間のレーテンシは短い。しかし、スピン動作は、どんな仕事も成し遂げず、したがって、費やす時間が多大になる場合、スリーピング・ミューテックス（sleeping mutex）ほど効率的とはならない可能性がある。したがって、本発明は、１）常にスピンしながら、ＣＰＵサイクルの無駄を減らすことによって、コンピューティング効率を高め、２）タスクがスリープに入らないようにすることを可能にし、タスクが直ちにロックを得ることができない場合には常にタスクを再ディスパッチする、解決策を提供する。
【００１６】
したがって、本発明は、コンピューティング環境における、少なくとも１つのプロセッサ・デバイスを用いるロッキング機構を用いた効率的なタスク・スケジューリングを実現する。一実施形態では、ほんの一例として、複数のスレッド間にロックを必要とする並列操作に関して、ロッキング機構上でスピンしているタスクの数が所定のしきい値未満である場合、新たなタスクがロッキング機構上でスピンすることが許可される。ロッキング機構上でスピンしているタスクの数が、所定のしきい値以上である場合、新たなタスクは、ロッキング機構上でスピンすることができない／スピンすることを禁じられる。ロッキング機構上で現在スピンしているタスクの数は、新たなタスクがロッキング機構上でスピンすることを許可する前に取得される。ロッキング機構上でスピンしているタスクの数が、所定のしきい値以上である場合、新たなタスクはフェイルする。ロッキング機構上でスピンしているタスクの数が、所定のしきい値以上である場合、新たなタスクは終了してディスパッチ・キューに向かう。ロッキング機構上でスピンしているタスクの数が所定のしきい値未満であるかどうかを確認するために、ロッキング機構が呼び出される。一実施形態では、本発明は、ロッキング機構上でスピンしているタスクの数が所定のしきい値未満であるかどうかを確認するためのロッキング機構を、チケット・ベース・ロックまたはキュー・ベース・ロックの上に実装する。ロッキング機構は、新規なロック・トライ・オア・スピン（lock-try-or-spin）である。ロック・トライ・オア・スピンは、所定のしきい値に基づいてロックを求めてスピンするか、またはタスクを終了してディスパッチ・キューに向かわせるか、あるいはその両方を行う。これは、本発明の主要な概念の名称になっており、従来のトライ・ロック機構と類似の作用を有しており、従来のトライ・ロック機構の場合には、コードが何度もロックを取ろうと試み、ロックを得ることができなかった場合には単に終了するが、新規なロック・トライ・オア・スピンは、所定のしきい値基準が満たされている場合はロックを求めてスピンし、そうでない場合は直ちに終了する。一実施形態では、チケット・ベース・ロックは、一種のスピン・ロックであって、「チケット」を使用して、どの実行のスレッドがクリティカル・セクションに進入することができるかを制御する、ロッキング・アルゴリズムである。
【００１７】
一実施形態では、チケット・ロックは、次のように機能する。０から開始する２つの整数値がある。１つ目の値はキュー・チケットであり、２つ目はデキュー・チケットである。スレッドは、到着すると、キュー・チケットをアトミックに取得し、次いでそれをインクリメントする。次いでスレッドは、そのチケットの値（インクリメント前の）を、デキュー・チケットの値とアトミックに比較する。それらが同じである場合、スレッドはクリティカル・セクションに進入することが許される。それらが同じでない場合、別のスレッドがすでにクリティカル・セクションに入っているはずであり、このスレッドは、ビジー・ウェイトするか、明け渡さなければならない。スレッドは、ロックによって制御されているクリティカル・セクションを去るとき、デキュー・チケットをアトミックにインクリメントする。これにより、次に待機しているスレッドがクリティカル・セクションに進入することが許される。
【００１８】
一実施形態では、キュー・ベース・スピン・ロックが、あらゆる待機中のスレッドをメモリ内の個別のローカル・フラグ上でスピンするように手配することによって、競合を回避する。キュー・ベース・スピン・ロックは、ウェイタ（waiter）のキューを維持し、アンロック動作中に最初のウェイタにロックを与えることによって、公平性を保障する。一実施形態では、キュー・ベース・ロックの場合、待機中の各プロセスが、キュー内のその先行要素および後続要素にリンクされる。キュー・ベース・スピン・ロックは、トライ・ロックを呼び出し、プロセスが、ロックを獲得しようとするその試みを、所与の時間の後に放棄できるようにすることもできる。次いで、プロセスは、他の何らかのコード・パスをたどることができる。
【００１９】
一実施形態では、本発明は、キュー・ベース・ロックまたはチケット・ロック、あるいはその両方を使用することができ、それにより、スピン・ロック上でいくつのタスクがスピンしているかが示される。テスト・アンド・セット・スピン・ロックの一実施形態では、プロセスは相互に匿名であり得る。キュー・ベース・ロックでは、プロセスは相互に排他的ではなく、待機中の各プロセスが、キュー内のその先行要素および後続要素にリンクされる。したがって、キュー・ベース・ロックを用いれば、本発明は、ロック上でいくつのタスクがスピンしているかを認識／示すことができる。キュー・ベース・ロックなしでも、本発明は、ロック上でいくつのタスクがスピンしているかを知らせることのできるスピン・ロックを構築する。例えば、チケット・ロックを用いれば、本発明は、最後に与えられたチケット番号および現在サービス中のチケット番号を調べて、いくつのタスクがスピンしているかを確かめることができる。
【００２０】
ここで図１に移ると、コンピューティング・システム環境の例示的なコンピュータ・システム１０が描かれている。コンピュータ・システム１０は、中央処理装置（ＣＰＵ）１２と、それが接続された通信ポート１８およびメモリ・デバイス１６とを含む。通信ポート１８は、通信ネットワーク２０と通信する。通信ネットワーク２０およびストレージ・ネットワークは、コンピュータ・ホスト・システム２４、および大容量ストレージ・デバイス１４を含むことのできるストレージ・システムと通信するように構成することができる。ストレージ・システムは、ハード・ディスク・ドライブ（ＨＤＤ）デバイス、固体デバイス（ＳＳＤ）などを含むことができ、これらは、独立ディスク冗長アレイ（ＲＡＩＤ）として構成することができる。以下に述べる動作は、コンピュータ・システム１０内またはその他の場所にある大容量ストレージ・デバイス１４に対して実行することができ、複数のメモリ・デバイス１６を独立して機能させるか、または他のＣＰＵ１２と一緒に機能させるか、あるいはその両方を行うことができる。メモリ・デバイス１６は、電気的消去可能プログラマブル・リード・オンリ・メモリ（ＥＥＰＲＯＭ）または関連するデバイスのホストのようなメモリを含むことができる。メモリ・デバイス１６および大容量ストレージ・デバイス１４は、信号伝達媒体を介してＣＰＵ１２に接続される。さらに、ＣＰＵ１２は、通信ポート１８を経由して、複数のさらなるコンピュータ・ホスト・システム２４が接続された通信ネットワーク２０に接続される。さらに、メモリ・デバイス１６およびＣＰＵ１２を、コンピュータ・システム１０の各構成要素に埋め込み、含めることができる。各ストレージ・システムが、個別のまたは全く異なる、あるいはその両方のメモリ・デバイス１６およびＣＰＵ１２を含み、それらが一緒に機能し、あるいは個別のメモリ・デバイス１６またはＣＰＵ１２、あるいはその両方として機能することもできる。
【００２１】
図２は、本発明によるコンピュータ・システム内のデータ・ストレージ・システム２００のハードウェア構造を示す、例示的なブロック図である。ホスト２１０、２２０、２２５が図示されており、データ・ストレージ・システム２００の一部としてデータ処理を実施するための中央処理装置の役割をそれぞれが果たす。ホスト（物理デバイスまたは仮想デバイス）２１０、２２０、および２２５は、データ・ストレージ・システム２００において本発明の目的を果たすための、１つまたは複数の新規な物理デバイスまたは論理デバイスとすることができる。一実施形態では、ほんの一例として、データ・ストレージ・システム２００を、ＩＢＭ（Ｒ）Ｓｙｓｔｅｍ  Ｓｔｏｒａｇｅ（商標）ＤＳ８０００（商標）として実装することができる。ネットワーク接続２６０は、ファイバ・チャネル・ファブリック、ファイバ・チャネル・ポイント・ツー・ポイント・リンク、ファイバ・チャネル・オーバ・イーサネット（Ｒ）・ファブリックもしくはファイバ・チャネル・オーバ・イーサネット（Ｒ）・ポイント・ツー・ポイント・リンク、ＦＩＣＯＮ（Ｒ）もしくはＥＳＣＯＮ（Ｒ）Ｉ／Ｏインターフェース、他の任意のＩ／Ｏインターフェース・タイプ、ワイヤレス・ネットワーク、有線ネットワーク、ＬＡＮ、ＷＡＮ、異種、同種、公衆（すなわちインターネット）、私設、またはそれらの任意の組合せとすることができる。ホスト２１０、２２０、および２２５は、ローカルでもよく、１つまたは複数の位置の間で分散させてもよく、また、ファイバ・チャネル、ＦＩＣＯＮ（Ｒ）、ＥＳＣＯＮ（Ｒ）、イーサネット（Ｒ）、光ファイバ、ワイヤレス、または同軸アダプタなど、ストレージ・コントローラ２４０に対する任意のタイプのファブリック（もしくはファブリック・チャネル）（図２には示していない）またはネットワーク接続２６０を装備することができる。データ・ストレージ・システム２００には、それに応じて、通信に適したファブリック（図２には示していない）またはネットワーク接続２６０が装備される。データ・ストレージ・システム２００は、図２に、ストレージ・コントローラ２４０およびストレージ２３０を備えて描かれている。一実施形態では、本明細書で述べる実施形態が、本明細書で述べるさまざまな実施形態を用いた仮想クラスタ管理環境内などで、さまざまなタイプのコンピューティング・アーキテクチャに適用可能であってよい。
【００２２】
本明細書で述べる方法をより明確に理解しやすくする目的で、ストレージ・コントローラ２４０は、図２に、以下により詳細に述べるマイクロプロセッサ２４２、システム・メモリ２４３、および不揮発性ストレージ（「ＮＶＳ：nonvolatile storage」）２１６を含んだ、単一の処理ユニットとして示されている。いくつかの実施形態では、ストレージ・コントローラ２４０が、それぞれがそれ自体のプロセッサ複合体およびシステム・メモリを有し、データ・ストレージ・システム２００内で専用のネットワークによって相互接続される、複数の処理ユニットから構成されることに留意されたい。ストレージ２３０は、ストレージ・ネットワークによってストレージ・コントローラ２４０に接続される、ストレージ・アレイなどの１つまたは複数のストレージ・デバイスから構成することができる。
【００２３】
いくつかの実施形態では、ストレージ２３０内に含まれるデバイスを、ループ・アーキテクチャの形で接続することができる。ストレージ・コントローラ２４０は、ストレージ２３０を管理し、ストレージ２３０に向けた書込み要求および読出し要求の処理を容易にする。ストレージ・コントローラ２４０のシステム・メモリ２４３が、オペレーション・ソフトウェア２５０、プログラム命令、およびデータを記憶し、それにマイクロプロセッサ２４２がアクセスして、ストレージ２３０の管理に関連する機能および方法ステップを実行し、また本発明のステップおよび方法を実行することができる。図２に示すように、システム・メモリ２４３は、それぞれ書込み／読出し要求およびそれらの関連データを指す「書込みデータ」および「読出しデータ」をバッファリングするための、本明細書では「キャッシュ・メモリ」とも呼ばれる、ストレージ２３０用のキャッシュ２４５を含んでもよく、キャッシュ２４５と通信してもよい。一実施形態では、キャッシュ２４５は、システム・メモリ２４３の外部のデバイス内に割り振られるが、依然としてマイクロプロセッサ２４２によってアクセス可能であり、本明細書で述べる動作を実行することに加えて、データ損失に対するさらなるセキュリティを提供する働きをすることができる。
【００２４】
いくつかの実施形態では、キャッシュ２４５は、揮発性メモリおよび不揮発性メモリを用いて実装され、データ・ストレージ・システム２００の性能を向上させるために、ローカル・バス（図２には示していない）を介してマイクロプロセッサ２４２に結合される。データ・ストレージ・コントローラに含まれるＮＶＳ２１６は、マイクロプロセッサ２４２によってアクセス可能であり、他の図中に記載する本発明の動作および実行をさらにサポートする働きをする。ＮＶＳ２１６は、「永続」キャッシュまたは「キャッシュ・メモリ」とも呼ぶことができ、中に記憶されたデータを保持するために外部電力を利用することもしないこともある不揮発性メモリを用いて実装される。ＮＶＳには、本発明の目的を果たすのに適した任意の目的のために、その中に記憶させ、またキャッシュ２４５と共に記憶させることができる。いくつかの実施形態では、データ・ストレージ・システム２００への電力が喪失した場合、バッテリなどのバックアップ電源（図２には示していない）が、ＮＶＳ２１６内に記憶されたデータを保持するのに十分な電力をＮＶＳ２１６に供給する。いくつかの実施形態では、ＮＶＳ２１６の容量が、キャッシュ２４５の総容量以下である。
【００２５】
ストレージ２３０は、ストレージ・アレイなどの１つまたは複数のストレージ・デバイスから物理的に構成することができる。ストレージ・アレイは、ハード・ディスクなどの個々のストレージ・デバイスを論理グループ化したものである。いくつかの実施形態では、ストレージ２３０は、ＪＢＯＤ（単純ディスク束）アレイまたはＲＡＩＤ（独立ディスク冗長アレイ）アレイから構成される。物理ストレージ・アレイの集合体をさらに組み合わせて、ランクを形成することができ、それにより、物理ストレージと論理的構成が切り離される。ランク内の記憶空間は、書込み／読出し要求内で指定される記憶位置を画定する論理ボリュームに割り振ることができる。
【００２６】
一実施形態では、図２に示すストレージ・システムは、論理ボリューム、または単に「ボリューム」を含むことができ、それには、さまざまな種類の割振りがあってよい。ストレージ２３０ａ、２３０ｂ、および２３０ｎは、データ・ストレージ・システム２００内のランクとして示されており、それらを本明細書ではランク２３０ａ、２３０ｂ、および２３０ｎと呼ぶ。ランクは、データ・ストレージ・システム２００にとってローカルでもよく、物理的にリモートの位置にあってもよい。換言すれば、ローカル・ストレージ・コントローラが、リモート・ストレージ・コントローラと接続し、リモート位置にあるストレージを管理することができる。ランク２３０ａは、図では、２つの全体ボリューム２３４および２３６、ならびに１つの部分ボリューム２３２ａを用いて構成されている。ランク２３０ｂは、図では、別の部分ボリューム２３２ｂを備えている。したがって、ボリューム２３２は、ランク２３０ａおよび２３０ｂにまたがって割り振られている。ランク２３０ｎは、ボリューム２３８に完全に割り振られたものとして示されており、すなわち、ランク２３０ｎは、ボリューム２３８の物理ストレージ全体を指す。上記の例から、１つまたは複数の部分ボリュームまたは全体ボリューム、あるいはその両方を含むように、ランクを構成できることが理解されよう。ボリュームおよびランクはさらに、ストレージの固定ブロック（fixed block of storage）を表す、いわゆる「トラック」に分割することができる。したがって、トラックは所与のボリュームに関連付けられ、またトラックには所与のランクを与えることができる。
【００２７】
ストレージ・コントローラ２４０は、並列処理モジュール２５５（例えば並列操作処理モジュール）、ロッキング・モジュール２５７（例えばロック＿トライ＿オア＿スピン・モジュール）、スピニング・タスク・モジュール２５８、および計算モジュール２５９（例えばスピンしているタスクの数を確認するための計算モジュール）を含むことができる。並列処理モジュール２５５、ロッキング・モジュール２５７、スピニング・タスク・モジュール２５８、および計算モジュール２５９は、同時に機能する１つの完全なモジュールであってもよく、個別のモジュールであってもよい。並列処理モジュール２５５、ロッキング・モジュール２５７、スピニング・タスク・モジュール２５８、および計算モジュール２５９は、いくらかの内部メモリ（図示せず）を有することができ、未処理のデータ、処理済みのデータ、または「半処理済みの」データを記憶することができる。並列処理モジュール２５５、ロッキング・モジュール２５７、スピニング・タスク・モジュール２５８、および計算モジュール２５９は、ストレージ・コントローラ２４０、ホスト２１０、２２０、２２５、ならびにネットワーク接続２６０を介してリモート接続することのできる他のストレージ・コントローラ２４０ならびにホスト２１０、２２０および２２５のどの構成要素とも一緒に機能することができる。並列処理モジュール２５５、ロッキング・モジュール２５７、スピニング・タスク・モジュール２５８、および計算モジュール２５９は、構造的に１つの完全なモジュールであってもよく、他の個々のモジュールと関連付けるか、または他の個々のモジュールと共に含めるか、あるいはその両方であってもよい。並列処理モジュール２５５、ロッキング・モジュール２５７、スピニング・タスク・モジュール２５８、および計算モジュール２５９は、キャッシュ２４５内またはストレージ・コントローラ２４０の他の構成要素内にあってもよい。
【００２８】
ストレージ・コントローラ２４０は、ホスト２１０、２２０、２２５に向かうファイバ・チャネル・プロトコルを制御するための制御スイッチ２４１、ストレージ・コントローラ２４０全体を制御するためのマイクロプロセッサ２４２、ストレージ・コントローラ２４０の動作を制御するためのマイクロプログラム（オペレーション・ソフトウェア）２５０を記憶するためのシステム・メモリ２４３、データを一時的に記憶（バッファリング）するためのキャッシュ２４５、ならびにキャッシュ２４５がデータの読出しおよび書込みをし、プロトコルを制御するための制御スイッチ２４１が、情報を中にセットすることのできる並列処理モジュール２５５、ロッキング・モジュール２５７、スピニング・タスク・モジュール２５８、および計算モジュール２５９への、またはそこからのデータ転送を制御するのを助けるための、バッファ２４４を含む。複数のバッファ２４４を実装して、本明細書で述べる方法およびステップを助けることができる。
【００２９】
一実施形態では、ホストまたは１つもしくは複数の物理デバイスもしくは仮想デバイス２１０、２２０、２２５と、ストレージ・コントローラ２４０とが、インターフェースとしてのネットワーク接続（これはファイバ・チャネルとすることができる）２６０を経由して、すなわち「ファブリック」と呼ばれるスイッチを介して、接続される。マイクロプロセッサ２４２が、ホスト（物理または仮想）２１０からのコマンド情報およびホスト（物理または仮想）２１０を特定するための情報を記憶するように、システム・メモリ２４３を制御することができる。制御スイッチ２４１、バッファ２４４、キャッシュ２４５、オペレーション・ソフトウェア２５０、マイクロプロセッサ２４２、システム・メモリ２４３、ＮＶＳ２１６、並列処理モジュール２５５、ロッキング・モジュール２５７、スピニング・タスク・モジュール２５８、および計算モジュール２５９は互いに通信し、それらは個別の、すなわち１つ１つの構成要素とすることができる。また、オペレーション・ソフトウェア２５０などの構成要素のうち、全てではないにしてもいくつかを、システム・メモリ２４３内に含めることもできる。図示のデバイス内の構成要素はそれぞれ、本発明に適した目的のために、互いにリンクすることができ、また互いに通信することができる。
【００３０】
図３に移ると、ロッキング機構を用いた効率的なタスク・スケジューリングのための例示的方法３００を示すフローチャートが描かれている。方法３００が開始する（ステップ３０２）。方法３００は、複数のスレッド間にロックを必要とする並列操作に関して、ロッキング機構上でスピンしているタスクの数が所定のしきい値未満である場合、新たなタスクがロッキング機構上でスピンすることを許可する（ステップ３０４）。方法３００が終了する（ステップ３０６）。
【００３１】
図４に移ると、ロッキング機構を用いた効率的なタスク・スケジューリングのためのさらなる例示的方法４００を示すフローチャートが描かれている。方法４００が開始する（ステップ４０２）。方法４００は、ロック＿トライ＿オア＿スピンを実装し、呼び出す（ステップ４０４）。方法４００は、ロック＿トライ＿オア＿スピン上でスピンしているタスクの数を取得する（ステップ４０６）。次いで、方法４００は、ロック（例えばロック＿トライ＿オア＿スピン）上でスピンしているタスクの数が所定数（例えばＮ、ただしＮは少なくとも、１などの０よりも大きな値とすることができる）を上回っているかどうかを確認する（ステップ４０８）。イエスの場合、方法４００は、ロック＿トライ＿オア＿スピンを求めてスピンしているタスクの数が所定数（例えばＮ、ただしＮは少なくとも、１などの０よりも大きな数とすることができる）を上回っている場合、タスクを再ディスパッチする（ステップ４１０）。ロック＿トライ＿オア＿スピンを求めてスピンしているタスクの数が所定数未満である場合、新たなタスクがロック上でスピンする（ステップ４１２）。方法４００が終了する（ステップ４１４）。
【００３２】
一実施形態では、本発明は、新規なロック＿トライ＿オア＿スピンを、スピン・ロックの上に実装する。新規なロック＿トライ＿オア＿スピンは、次のように機能する。１）スピン・ロックを求めてスピンしているタスクの数が、Ｎ（Ｎは１とすることができる）以上である場合、アルゴリズムはフェイル通知を返す。スピン・ロックを求めてスピンしているタスクの数が、Ｎ（Ｎは１とすることができる）未満である場合、タスクはロック上でスピンする。すでにスピンしているタスクの数は、他のタイプのロック（例えばチケット・ロック）から取得することができる。例えば、チケット・ロックの場合、本発明は、いくつのタスク／ＣＰＵが待機しているかを、与えられた最後のチケット番号および現在サービス中のチケット番号から知らせることができる。
【００３３】
一実施形態では、本発明は、ロック＿トライ＿オア＿スピンを呼び出す。ロック＿トライ＿オア＿スピンがフェイルした場合、本発明は、プロセッサを明け渡し、タスクがディスパッチ・キューに向かう。したがって、本発明は、キュー・ベース・ロックのようにとにかく待機する必要性をなくす。一実施形態では、本発明は、ある一定時間待機する必要性をなくし、その上、キュー・ロック内のタスクを放棄し、それにより、ＣＰＵサイクルの無駄をなくす。
【００３４】
さらに、本発明は、チケット・ロックによって要求されるような、あらゆるタスクがスピンしている必要性をなくし、これは、ＣＰＵサイクルを他のタスクによって使用できることを意味する。したがって、新規なロック＿トライ＿オア＿スピンは、チケット・ベース・ロックまたはキュー・ベース・ロック、あるいはその両方の上に実装することができる。
【００３５】
当業者には理解されるように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。したがって、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロ・コードなどを含む）、またはソフトウェアの態様とハードウェアの態様を組み合わせた実施形態の形をとることができ、それらは全て、本明細書では一般に、「回路」、「モジュール」、または「システム」と呼ぶことができる。さらに、本発明の態様は、コンピュータ読取り可能プログラム・コードがその上に具現化された１つまたは複数のコンピュータ読取り可能媒体として具現化される、コンピュータ・プログラム製品の形をとることができる。
【００３６】
１つまたは複数のコンピュータ読取り可能媒体の任意の組合せを利用することができる。コンピュータ読取り可能媒体は、コンピュータ読取り可能信号媒体でもよく、物理的なコンピュータ読取り可能ストレージ媒体でもよい。物理的なコンピュータ読取り可能ストレージ媒体は、例えば、それらに限定されないが、電子、磁気、光、結晶、ポリマー、電磁気、赤外線、もしくは半導体の、システム、装置、もしくはデバイス、または前述のものの任意の適切な組合せとすることができる。物理的なコンピュータ読取り可能ストレージ媒体の例には、それらに限定されないが、１本または複数本のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、フラッシュ・メモリ、光ファイバ、ＣＤ−ＲＯＭ、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述のものの任意の適切な組合せがある。本書の文脈では、コンピュータ読取り可能ストレージ媒体は、命令実行システム、装置、またはデバイスが使用するための、またはそれらに関連して使用するためのプログラムまたはデータを、収容または記憶することのできる、任意の有形の媒体とすることができる。
【００３７】
コンピュータ読取り可能媒体上に具現化されるコンピュータ・コードは、ワイヤレス、有線、光ファイバ・ケーブル、無線周波数（ＲＦ）など、または前述のものの任意の適切な組合せを含むがそれらに限定されない、任意の適切な媒体を用いて伝送することができる。本発明の態様に関する動作を実行するためのコンピュータ・コードは、「Ｃ」プログラミング言語や他の類似のプログラミング言語などの、任意の静的言語で記述することができる。コンピュータ・コードは、全体がユーザのコンピュータ上で実行されてもよく、一部がスタンド・アロンのソフトウェア・パッケージとしてユーザのコンピュータ上で実行されてもよく、一部がユーザのコンピュータ上かつ一部がリモート・コンピュータ上で実行されてもよく、全体がリモート・コンピュータまたはサーバ上で実行されてもよい。最後のシナリオでは、リモート・コンピュータをユーザのコンピュータに、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）、コンバージド・ネットワークを含むがそれらに限定されない、任意のタイプのネットワークまたは通信システム経由で接続してもよく、（例えばインターネット・サービス・プロバイダを用いてインターネット経由で）外部のコンピュータに接続してもよい。
【００３８】
本発明の態様は、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図、あるいはその両方を参照して、上で述べられている。フローチャート図またはブロック図、あるいはその両方の各ブロック、およびフローチャート図またはブロック図、あるいはその両方内のブロックの組合せを、コンピュータ・プログラム命令によって実装できることが理解されよう。命令がコンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行されると、フローチャートまたはブロック図、あるいはその両方の１つまたは複数のブロック内に指定された機能／動作を実装するための手段が形成されるように、こうしたコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに与えて、マシンを生成することができる。
【００３９】
命令をコンピュータ読取り可能媒体内に記憶させることにより、フローチャートまたはブロック図、あるいはその両方の１つまたは複数のブロック内に指定された機能／動作を実装する命令を含んだ製品が生み出されるように、こうしたコンピュータ・プログラム命令を、コンピュータ読取り可能媒体内に記憶させ、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の方式で機能するように指示することもできる。命令がコンピュータまたは他のプログラマブル装置上で実行されると、フローチャートまたはブロック図、あるいはその両方の１つまたは複数のブロック内に指定された機能／動作を実装するためのプロセスがもたらされるように、コンピュータにより実施されるプロセスを生成するべく、コンピュータ・プログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードして、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実施させることもできる。
【００４０】
上記の図中のフローチャートおよびブロック図は、本発明のさまざまな実施形態によるシステム、方法、およびコンピュータ・プログラム製品の、可能な実装形態のアーキテクチャ、機能性、および動作を示す。この点に関して、フローチャートまたはブロック図中の各ブロックは、指定された論理機能を実装するための１つまたは複数の実行可能命令を備えるコードの、モジュール、セグメント、または部分を表す場合がある。いくつかの代替実装形態では、ブロック内に示された機能が、図中に示された順序から外れて行われる場合があることにも留意されたい。例えば、必要とされる機能性に応じて、連続して示されている２つのブロックが実際にはほぼ同時に実行されることもあり、それらのブロックが時には逆順に実行されることもある。ブロック図またはフローチャート図、あるいはその両方の各ブロック、およびブロック図またはフローチャート図、あるいはその両方内のブロックの組合せを、指定された機能もしくは動作を実施する専用ハードウェア・ベースのシステムによって、または専用ハードウェアとコンピュータ命令の組合せによって実装できることにも留意されよう。
【００４１】
以上、本発明の１つまたは複数の実施形態について詳細に例示してきたが、添付の特許請求の範囲に記載の本発明の範囲から逸脱せずに、それらの実施形態への変更および改造を行えることを、当業者なら理解するであろう。
【図１】
2016530625.tif 000003
【図２】
2016530625.tif 000004
【図３】
2016530625.tif 000005
【図４】
2016530625.tif 000006
【手続補正書】
【提出日】平成28年2月23日(2016.2.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティング環境における、プロセッサ・デバイスによるロッキング機構を用いた効率的なタスク・スケジューリングのための方法であって、
複数のスレッド間にロックを必要とする並列操作に関して、前記ロッキング機構上でスピンしているタスクの数が所定のしきい値未満である場合、新たなタスクが前記ロッキング機構上でスピンすることを許可すること
を含む方法。
【請求項２】
前記ロッキング機構上でスピンしている前記タスクの前記数が、前記所定のしきい値以上である場合、前記新たなタスクが前記ロッキング機構上でスピンすることを禁じることをさらに含む、請求項１に記載の方法。
【請求項３】
前記ロッキング機構上で現在スピンしている前記タスクの前記数を、前記新たなタスクが前記ロッキング機構上でスピンすることを許可することの前に取得することをさらに含む、請求項２に記載の方法。
【請求項４】
前記ロッキング機構上でスピンしている前記タスクの前記数が、前記所定のしきい値以上である場合、前記新たなタスクをフェイルさせることをさらに含む、請求項１に記載の方法。
【請求項５】
前記ロッキング機構上でスピンしている前記タスクの前記数が、前記所定のしきい値より大きい場合、前記新たなタスクを終了してディスパッチ・キューに向かわせることをさらに含む、請求項１に記載の方法。
【請求項６】
前記ロッキング機構上でスピンしているタスクの前記数が前記所定のしきい値未満であるかどうかを確認するために、前記ロッキング機構を呼び出すことをさらに含む、請求項１に記載の方法。
【請求項７】
前記ロッキング機構上でスピンしているタスクの前記数が前記所定のしきい値未満であるかどうかを確認するための前記ロッキング機構を、チケット・ベース・ロックまたはキュー・ベース・ロックの上に実装することをさらに含み、前記ロッキング機構がロック・トライ・オア・スピンである、請求項１に記載の方法。
【請求項８】
コンピューティング環境における、ロッキング機構を用いた効率的なタスク・スケジューリングのためのシステムであって、
前記ロッキング機構と、
前記コンピューティング環境において前記ロッキング機構と通信して動作可能な、少なくとも１つのプロセッサ・デバイスであって、
複数のスレッド間にロックを必要とする並列操作に関して、前記ロッキング機構上でスピンしているタスクの数が所定のしきい値未満である場合、新たなタスクが前記ロッキング機構上でスピンすることを許可する
前記プロセッサ・デバイスと
を備えるシステム。
【請求項９】
前記ロッキング機構上でスピンしている前記タスクの前記数が、前記所定のしきい値以上である場合、前記新たなタスクが前記ロッキング機構上でスピンすることを前記少なくとも１つのプロセッサ・デバイスが禁じる、請求項８に記載のシステム。
【請求項１０】
前記少なくとも１つのプロセッサ・デバイスが、前記ロッキング機構上で現在スピンしている前記タスクの前記数を、前記新たなタスクが前記ロッキング機構上でスピンすることを許可する前に取得する、請求項９に記載のシステム。
【請求項１１】
前記ロッキング機構上でスピンしている前記タスクの前記数が、前記所定のしきい値以上である場合、前記少なくとも１つのプロセッサ・デバイスが前記新たなタスクをフェイルさせる、請求項８に記載のシステム。
【請求項１２】
前記ロッキング機構上でスピンしている前記タスクの前記数が、前記所定のしきい値以上である場合、前記少なくとも１つのプロセッサ・デバイスが、前記新たなタスクを終了してディスパッチ・キューに向かわせる、請求項８に記載のシステム。
【請求項１３】
前記ロッキング機構上でスピンしているタスクの前記数が前記所定のしきい値未満であるかどうかを確認するために、前記少なくとも１つのプロセッサ・デバイスが前記ロッキング機構を呼び出す、請求項８に記載のシステム。
【請求項１４】
前記少なくとも１つのプロセッサ・デバイスが、前記ロッキング機構上でスピンしているタスクの前記数が前記所定のしきい値未満であるかどうかを確認するための前記ロッキング機構を、チケット・ベース・ロックまたはキュー・ベース・ロックの上に実装し、前記ロッキング機構がロック・トライ・オア・スピンである、請求項８に記載のシステム。
【請求項１５】
少なくとも１つのプロセッサ・デバイスによるロッキング機構を用いた効率的なタスク・スケジューリングのためのコンピュータ・プログラムであって、
複数のスレッド間にロックを必要とする並列操作に関して、前記ロッキング機構上でスピンしているタスクの数が所定のしきい値未満である場合、新たなタスクが前記ロッキング機構上でスピンすることを許可する、第１の実行可能部分を、コンピュータに実行させる、コンピュータ・プログラム。
【国際調査報告】
2016530625.tif 000007
2016530625.tif 000008