JP5443709B2 - それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールする方法、コンピュータ・プログラム、データ処理装置 - Google Patents

それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールする方法、コンピュータ・プログラム、データ処理装置 Download PDF

Info

Publication number
JP5443709B2
JP5443709B2 JP2008162853A JP2008162853A JP5443709B2 JP 5443709 B2 JP5443709 B2 JP 5443709B2 JP 2008162853 A JP2008162853 A JP 2008162853A JP 2008162853 A JP2008162853 A JP 2008162853A JP 5443709 B2 JP5443709 B2 JP 5443709B2
Authority
JP
Japan
Prior art keywords
processor
processor unit
task
group
tasks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008162853A
Other languages
English (en)
Other versions
JP2009003942A (ja
Inventor
ネイサン・フォンテノット
マイケル・トーマス・ストロセイカー
ジェイコブ・ロリエン・モイラネン
ジョエル・ハワード・ショップ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2009003942A publication Critical patent/JP2009003942A/ja
Application granted granted Critical
Publication of JP5443709B2 publication Critical patent/JP5443709B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5022Workload threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Power Sources (AREA)

Description

本発明は改良されたデータ処理システムおよび方法に関する。もっと具体的には、本発明はそれぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジューリングすることに関する。
中央処理装置(CPU)はコンピュータの演算部である。また「プロセッサ」と一般に呼ばれるCPUは、コンピュータ・プログラム命令を実行するのに関連する機能を実行する命令デコーダ、スケジューラ、実行ユニット等よりなる。CPU、クロックおよびメイン・メモリが典型的なコンピュータを構成する。完全なコンピュータ・システムは更に制御ユニット、入出力装置、ストレージ装置およびオペレーティング・システムを必要とする。
マルチプロセシング・アーキテクチャは同じメモリを共用しかつローカル・ストレージと呼ばれる専用メモリを有してもよい、一つのキャビネットに常駐する複数のプロセッサ・ユニット(PU)を含む。処理が増加するにつれ、その増加する処理ボリュームを吸収するために追加のPUを加えても良い。マルチプロセシング・アーキテクチャは2個から数千あるいはそれ以上のプロセッサに及ぶ。
異種マルチプロセシング・アーキテクチャは、同じでない複数のPUを含む。ある環境では、PUが同一であるが、異なるオペレーティング・システムで実行することをこれが意味するのでもよい。しかし、ここで使用されるように、異種のマルチプロセシング・アーキテクチャは異なるアーキテクチャもしくは処理能力またはその両方を有する複数のPUを含む。異種マルチプロセシング・システムでは、処理能力の異なるPU上での、時にはプロセスとも呼ぶタスクの最適スケジューリングが困難な問題を提供する。今日のオペレーティング・システムが提供できるものの中には、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクのスケジューリングを処理するための解決策を含まない。
ここで説明している具体例は従来技術の欠点を認識し、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジューリングする機構を提供する。いろいろな速さのプロセッサ・ユニットを備えたマルチプロセッサ・ユニット・システムでは、もっとも処理能力を必要とするタスクをもっとも高い処理能力のプロセッサ・ユニット上で実行させるのが有利である。
図示の実施例では、全てのタスクが最低の処理能力のプロセッサ・ユニット上で最初にスケジュールされる。もっと高い処理能力のプロセッサ・ユニットが遊休時間を持つ可能性が高くなるので、これらの高い処理能力のプロセッサ・ユニットが同じかもしくはもっと低い処理能力のプロセッサ・ユニットからそれらの上に1個もしくはそれ以上のタスクをプルしてもよい。あるプロセッサ・ユニットはこれらの時間スライスの大きい割合を使用するタスクをプルしようとする。高い処理能力のプロセッサ・ユニットにその処理能力を超えるあるいはその処理能力に近いロードがかかると、その高い処理能力のプロセッサ・ユニットは同じかもっと低い処理能力のプロセッサ・ユニットにタスクをプッシュしようとする。プロセッサ・ユニットはそれらの時間スライスのうちの小さい割合を使用するタスクをプッシュしようとするであろう。タスク・プロセッサ使用率が変化するので、タスク・プロセッサのニーズが、対応する処理能力を備えたプロセッサ・ユニットに一致するようになるにつれ、システムの平衡に近い状態( near system equilibrium )が達成されるかもしれない。
一実施例では、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールする方法が、使用率を記録するために所定の期間、第1のプロセッサ・ユニット上で実行しているタスクをモニタするステップと、前記使用率に基づき、前記第1のプロセッサ・ユニットが余分のサイクルを有するか決定するステップと、もし前記第1のプロセッサ・ユニットが前記余分のサイクルを有しているなら、第2のプロセッサ・ユニットからタスクをプルするステップとを含む。上述のように、高い処理能力のプロセッサ・ユニットは、遊休時間を持つ可能性が高く、言い換えれば、余分のサイクルないしは遊休サイクルを持つ可能性が高い。
一実施例では、前記第2のプロセッサ・ユニットが前記第1のプロセッサ・ユニットと同じ処理能力を有する。他の実施例では、前記第2のプロセッサ・ユニットが前記第1のプロセッサ・ユニットよりも低い処理能力を有する。更に他の実施例では、前記第2のプロセッサ・ユニットに記録された前記使用率に基づき、前記タスクが前記第2のプロセッサ・ユニットの処理能力のうちの大きな割合を使用する。
一実施例の方法では、前記使用率に基づき、前記第1のプロセッサ・ユニットが過負荷か決定するステップと、もし前記第1のプロセッサ・ユニットが過負荷であれば、前記第1のプロセッサ・ユニットから第3のプロセッサ・ユニットに軽いタスクをプッシュするステップとを更に含む。更に別の実施例では、前記第3のプロセッサ・ユニットが前記第1のプロセッサ・ユニットと同じ処理能力を有する。更に他の実施例では、前記第3のプロセッサ・ユニットが前記第1のプロセッサ・ユニットよりも低い処理能力を有する。更に他の実施例では、前記第3のプロセッサ・ユニットで記録される使用率に基づき、前記軽いタスクが前記第3のプロセッサ・ユニットの処理能力のうちの小さい割合を使用する。
他の実施例では、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールする方法が、使用率を記録するために所定の期間、第1のプロセッサ・ユニット上で実行しているタスクをモニタするステップと、前記使用率に基づき、前記第1のプロセッサ・ユニットが過負荷か決定するステップと、もし前記第1のプロセッサ・ユニットが過負荷であれば、前記第1のプロセッサ・ユニットから第2のプロセッサ・ユニットに軽いタスクをプッシュするステップとを含む。
他の実施例では、前記第2のプロセッサ・ユニットが前記第1のプロセッサ・ユニットと同じ処理能力を有する。更に他の実施例では、前記第2のプロセッサ・ユニットが前記第1のプロセッサ・ユニットよりも低い処理能力を有する。更に他の実施例では、前記第2のプロセッサ・ユニットに記録された前記使用率に基づき、前記軽いタスクが前記第2のプロセッサ・ユニットの処理能力のうちの小さい割合を使用する。
更に他の実施例では、コンピュータ読み取り可能なコンピュータ・プログラムが以下の諸ステップをコンピュータに実行させることができる。即ちその諸ステップは、使用率を記録するために所定の期間、第1のプロセッサ・ユニット上で実行しているタスクをモニタするステップと、前記使用率に基づき、前記第1のプロセッサ・ユニットが余分のサイクルを有するか決定するステップと、もし前記第1のプロセッサ・ユニットが前記余分のサイクルを有しているなら、第2のプロセッサ・ユニットからタスクをプルするステップとを含む。
一実施例では、前記第2のプロセッサ・ユニットが前記第1のプロセッサ・ユニットと同じ処理能力を有する。更に他の実施例では、前記第2のプロセッサ・ユニットが前記第1のプロセッサ・ユニットよりも低い処理能力を有する。更に他の実施例では、前記第2のプロセッサ・ユニットに記録された前記使用率に基づき、前記タスクが前記第2のプロセッサ・ユニットの処理能力のうちの大きい割合を使用する。
更に他の実施例では、コンピュータ読み取り可能なコンピュータ・プログラムが更に以下の諸ステップをコンピュータに実行させることができる。即ちその諸ステップは、前記使用率に基づき、前記第1のプロセッサ・ユニットが過負荷か決定するステップと、もし前記第1のプロセッサ・ユニットが過負荷であれば、前記第1のプロセッサ・ユニットから第3のプロセッサ・ユニットに軽いタスクをプッシュするステップとを更に含む。更なる実施例では、前記第3のプロセッサ・ユニットが前記第1のプロセッサ・ユニットと同じ処理能力を有する。他の実施例では、前記第3のプロセッサ・ユニットが前記第1のプロセッサ・ユニットよりも低い処理能力を有する。更に他の実施例では、前記第3のプロセッサ・ユニットで記録される使用率に基づき、前記軽いタスクが前記第3のプロセッサ・ユニットの処理能力のうちの小さい割合を使用する。
他の実施例では、データ処理システムが複数のプロセッサ・ユニットを含む。前記複数のプロセッサ・ユニットは、第1の処理能力を有する第1のグループのプロセッサ・ユニットおよび第2の処理能力を有する第2のグループのプロセッサ・ユニットを含む。前記データ処理システムは、更に前記複数のプロセッサ・ユニット内の第1のプロセッサ・ユニットに結合されるメモリを含む。前記メモリは命令を含み、前記命令は前記第1のプロセッサ・ユニットに、使用率を記録するために所定の期間、前記第1のプロセッサ・ユニット上で実行しているタスクをモニタすることと、前記使用率に基づき、前記第1のプロセッサ・ユニットが余分のサイクルを有するか決定することと、もし前記第1のプロセッサ・ユニットが前記余分のサイクルを有しているなら、第2のプロセッサ・ユニットからタスクをプルすることとを実行させる、メモリである
一実施例では、前記第1のプロセッサ・ユニットおよび前記第2のプロセッサ・ユニットが、プロセッサ・ユニットの前記第1のグループ内にある。他の実施例では、前記第1のプロセッサ・ユニットが前記第1のグループ内にあり、前記第2のプロセッサ・ユニットが前記第2のグループ内にあり、かつ前記第2の処理能力が前記第1の処理能力より低い。更に他の実施例では、前記第2のプロセッサ・ユニットに記録された前記使用率に基づき、前記タスクが前記第2のプロセッサ・ユニットの処理能力のうちの大きい割合を使用する。
一実施例では、前記使用率に基づき、前記第1のプロセッサ・ユニットが過負荷か決定し、もし前記第1のプロセッサ・ユニットが過負荷であれば、前記第1のプロセッサ・ユニットから第3のプロセッサ・ユニットに軽いタスクをプッシュする命令を更に含み、実行時に前記第1のプロセッサ・ユニットにより前記命令が実行される。他の実施例では、前記第1のプロセッサ・ユニットおよび前記第3のプロセッサ・ユニットが、プロセッサ・ユニットの前記第1のグループ内にある。更に他の実施例では、前記第1のプロセッサ・ユニットが前記第1のグループ内にあり、前記第3のプロセッサ・ユニットが前記第2のグループ内にあり、かつ前記第1の処理能力が前記第2の処理能力より高い。更に他の実施例では、前記第3のプロセッサ・ユニットで記録される使用率に基づき、前記軽いタスクが前記第3のプロセッサ・ユニットの処理能力のうちの小さい割合を使用する。
本発明のこれらのそしてまた他の特徴および利点は、本発明の実施例の以下の詳細な説明に示され、あるいはその説明から見て当業者には容易に理解できるようになる。
本発明は、その好適な使用モード、更にその目的および効果と同様に、図示の実施例についての以下の詳細な説明を添付図面とともに参照することによってもっともよく理解される。
図面の、特に図1について、本発明の実施例が導入され得るデータ処理システムデータ処理環境の実例が提供される。図示した環境に対し多くの変形例が本発明の趣旨および範囲から逸れることなく行える。
ここで図1を参照すると、説明用の実施例の側面が導入され得る例示的なデータ処理システムのブロック図が示される。データ処理システム100は本発明の説明的な実施例のためのプロセスを導入するコンピュータ使用可能コードもしくは命令が置かれ得るコンピュータの一例である。
図示の例では、データ処理システム100がノース・ブリッジおよびメモリ・コントローラ・ハブ(NB/MCH)102ならびにサウス・ブリッジおよび入出力(I/O)コントローラ・ハブ(SB/ICH)104を含むハブ・アーキテクチャを採用する。プロセッサ152、154および156がNB/MCH102に内部プロセッサ・バス150を介して接続される。メイン・メモリ108およびグラフィックス・プロセッサ110がNB/MCH102に接続される。グラフィックス・プロセッサ110は、例えばAGP(アクセラレーテッド・グラフィックス・ポート)を介してNB/MCH102に接続されてもよい。
図示の例では、LAN(ローカル・エリア・ネットワーク)アダプタ112がSB/ICH104に接続する。オーディオ・アダプタ116、キイボードおよびマウス・アダプタ120、モデム122、読出し専用メモリ(ROM)124、ハード・ディスク・ドライブ(HDD)126、CD−ROMドライブ130、USB(ユニバーサル・シリアル・バス)ポートおよび他の通信ポート132、ならびにPCI/PCIe装置134がバス138および140を介してSB/ICH104に接続する。PCI/PCIe装置134は例えばイーサーネット・アダプタ、アドイン・カードおよびPCカードを含んでもよい。PCIはカード・バス・コントローラを備えるが、PCIeはそうではない。ROM124は、例えばフラッシュ・バイナリ入出力システム(BIOS)であってもよい。
HDD126およびCD−ROMドライブ130はSB/ICH104にバス140を介して接続する。HDD126およびCD−ROMドライブ130は、例えばIDE(インテグレーテッド・ドライブ・エレクトロニクス)もしくはSATA(シリアル・アドバンスド。テクノロジー・アタッチメント)インターフェースを使用してもよい。スーパーI/O(SIO)装置136がSB/ICH104に接続されていてもよい。
オペレーティング・システムはプロセッサ152、154および156上で実行する。オペレーティング・システムは図1のデータ処理システム100内の種々のコンポーネントを統合し制御する。オペレーティング・システムは Microsoft Windows XP(MicrosoftおよびWindowsはマイクロソフト・コーポレーションの商標)などの市販されているオペレーティング・システムであってよい。データ処理システム100は、例えば、IBM eServer pSeries コンピュータ・システムで、Advanced Interactive Executive(AIX)オペレーティング・システムもしくはLINUXオペレーティング・システム(eServer、 pSeries および AIX はIBM社の商標、LINUX は Linus Torvalds の商標)を走らせているようなものであってよい。
オペレーティング・システムおよびアプリケーションもしくはプログラムのための命令はHDD126などのストレージ装置上に位置づけられ、プロセッサ152、154および156による実行のためにメイン・メモリ108中にロードされてもよい。本発明の実施例のプロセスはプロセッサ152、154および156によってコンピュータの使用可能なプログラム・コードを用いて実行されてもよい。そのプログラム・コードは、例えば1個若しくはそれ以上の周辺装置126および130中に、またはメイン・メモリ108、ROM124などのメモリ中にあってもよい。
図1に示すようなバス138もしくはバス140は1個もしくはそれ以上のバスであってもよい。勿論、バス・システムは任意の型の通信ファブリックもしくはアーキテクチャを用いて実施されてもよい。このファブリックまたはアーキテクチャはそれに取り付けられた異なるコンポーネント若しくは装置相互間のデータの転送のために提供される。図1のモデム122もしくはネットワーク112などの通信ユニットがデータを送信し受信するのに使用される1個もしくは複数の装置を含んでもよい。メモリは、例えばメイン・メモリ108、ROM124,もしくは図1のNB/MCH102に見られるようなキャッシュであってもよい。
当業者は図1のハードウエアが実施の仕方に依存して変化し得ることを理解されたい。他の内部のハードウエアもしくは周辺装置、例えばフラッシュ・メモリ、等価な不揮発性メモリ、光ディスク・ドライブ等が図1に示すハードウエアに加えてもしくはその代わりに使用されてもよい。更に、データ処理システム100は、クライアント・コンピューティング装置、サーバー・コンピューティング装置、タブレット・コンピュータ、ラップトップ・コンピュータなどを含むいろいろなデータ処理システムのうちの任意の形式を取ることができる。基本的には、データ処理システム100は任意の既知のもしくは後に開発された、アーキテクチャ的に制限のないデータ処理システムであってよい。
実施例によれば、プロセッサ152、154および156が異種のマルチプロセシング環境を構成していてもよい。例えば、プロセッサ152がもっとも低い速度もしくは処理能力を備えた8個のプロセシング・コアすなわちプロセッサ・ユニット(PU)を含んでいてもよい。プロセッサ154が中間的な速度もしくは処理能力を備えた4個のプロセッサ・ユニットの(PU)を含んでいてもよい。プロセッサ156が最も高い速度もしくは処理能力を備えた2個のPUを含んでいてもよい。
プロセッサおよびプロセシング・ユニットの構成は例示的なものであり、本発明の側面もしくは実施例が実施され得るような環境に関してアーキテクチャ的な限界を暗示することを意味するのではない。本発明の趣旨および範囲から逸れずにここに示した環境に対する多くの変形を行い得る。例えば、実施例若しくは環境次第で処理装置の数はもっと多くても少なくてもよい。もっと具体的に言うと、処理装置の数がたとえば何千であってもよい。他の例として、データ処理システム100がPU8個のプロセッサ、PU4個のプロセッサ、PU2個のプロセッサを幾つか含んでいてもよい。更に、一つのプロセッサ内のプロセッサ・ユニット同士が異種であってもよい。プロセッサはIBMコーポレーションからのCell Broadband Engineのように、チップ上にあるシステムであってもよい。他の実施例は、例えば、各PUは自己内蔵プロセッサであってもよい。
説明の実施例によれば、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールするための機構が提供される。異なる速度の複数のプロセッサ・ユニットを備えたマルチプル・プロセッサ・ユニット・システムでは、処理集約型のタスクを最高の処理能力のプロセッサ・ユニットで実行させることが有利である。ここで説明する実施例では、最も処理能力の低いプロセッサ・ユニット上で全てのタスクが最初はスケジュールされる。各PU上のオペレーティング・システムはそのPU上で実行するタスクをモニタ(監視)する。最初にタスクは時間スライスと称する或る所定の期間、PU上で実行してもよい。一実施例では、正確なプロセッサ使用率を収集するためにそのタスクが1つよりも多くの時間スライスの間実行してもよい。各時間スライスの終わりに、各PUはそのタスク・プロセッサ使用率を記録する。
高い処理能力を備えたプロセッサ・ユニット遊休時間を持ちがちなので、これらの高い処理能力のプロセッサ・ユニットは同じかもしくは低い処理能力のプロセッサ・ユニットから自らの上に1個若しくはそれ以上のタスクをプルするのでもよい。プロセッサ・ユニットは大きな割合の時間スライスを使用するタスクをプルしようとする。
タスクがプロセッサ上で実行する際、それはその時間スライス全体にわたって実行し、あるいはその時間スライスが終わる前にプロセッサを解放する。この後、スケジューラを呼び出したオペレーティング・システムの一片が実行する。この時点でプロセッサ使用率が収集され、そのタスクの一部として保存される。スケジューラがそれから実行キューからの次のタスクを選択し、そのタスクをプロセッサ上で実行させる。実行キューはそのプロセッサで実行することができるタスクのキューである。
説明の実施例は、タスクが種々のプロセッサのための実行キュー相互間で移動される。従って、高い処理能力のプロセッサ・ユニットが遊休時間にあるときは、低い処理能力のプロセッサのための実行キューを調べて処理重視のタスクを「プルする」ことができる。ここでの説明はプロセッサ毎に別個の実行キューがあることを前提としているが、いつもそうとは限らない。オペレーティング・システム中の実行キューの数はオペレーティング・システム特有であってよい。
タスクが「プッシュされ」もしくは「プルされる」と、タスクそれ自体および所与のオペレーティング・システムで使用されるタスク構造が、異なるプロセッサ上で実行するように転送される。このことが異なる実行キューにタスク構造を転送するのを意味するか、もしくは実行すると想定されるプロセッサを参照するタスク構造中にビットをマークするのを意味するかは実施例次第、あるいはもっと具体的にいえばオペレーティング・システム次第である。
高い処理能力のプロセッサ・ユニットが過負荷になるか処理能力の限界近くになると、その高い処理能力のプロセッサ・ユニットは同じか、もしくは低い処理能力を備えるプロセッサ・ユニットにタスクを押し入れても良い。プロセッサ・ユニットはタスクの時間スライスのうちの小さい割合を使用するタスクを押し入れようと試みる。これは2つのレベルよりも多い階層に拡張されるかもしれない。実際、多くの中間的なプロセッサ・ユニットの処理能力のグループがあり得る。タスク・プロセッサ使用率が変化するとシステム平衡に近い状態に到達するかもしれない。タスク・プロセッサのニーズが、対応する処理能力を備えたプロセッサに合致するようになるからである。
図2は、ここに示した実施例に従う新しいタスクの割当てを説明するプロセッサ・ユニット構成のブロック図である。実施例では、プロセッサ210が8個のプロセッサ・ユニット211−218を備え、プロセッサ220が4個のプロセッサ・ユニット221−224を備え、プロセッサ230が2個のプロセッサ・ユニット231−232を備える。ここに示した例ではプロセッサ・ユニット(PU)211−218が最も低い処理能力のプロセッサ・ユニットのグループを形成し、プロセッサ・ユニット221−224が中間的な処理能力のプロセッサ・ユニットのグループを形成し、プロセッサ・ユニット231−232が最も高い処理能力のプロセッサ・ユニットのグループを形成する。
新しいタスク242などのタスクが初期に割当てられると、それは最も低い処理能力のグループ中の或るPU、この場合はプロセッサ210中のPUに割当てられる。複数のPUのうちの一つで稼動するコントローラ・タスクがタスクを割当てる。そのオペレーティング・システムのスケジューラの一片が、例えばコントローラ・タスクであってよい。PU211上のオペレーティング・システムがPU211上で稼動する際にタスク242の実行をモニタする。最初はタスク242がPU211上で、時間スライスと呼ばれる或る所定の期間、稼動してもよい。一実施例では、正確なプロセッサ使用率を収集するために、タスク242が一つよりも多くの時間スライスの間、PU211上で稼動してもよい。各時間スライスのときに各PUは他のPUにそのタスク・プロセッサ使用率を知らせてもよい。
高い処理能力を備えたプロセッサ・ユニットが遊休時間を持ちがちなので、これらの高い処理能力のプロセッサ・ユニットと同じかもっと低い処理能力のプロセッサ・ユニットから1個若しくはそれ以上のタスクをそれらの上にプルしようと試みるかもしれない。図3は図示の実施例に従い高い処理能力のプロセッサ・ユニットに、低い処理能力のプロセッサ・ユニットからタスクをプルしてくることを示す。図示の例では、PU211、PU223およびPU224がそれらの時間スライスのうちの大きな割合を使用する「ハングリな」タスクを有し、PU221、PU222およびPU231が処理能力を使用されていない。時間スライスのうちの大きな割合を使用しているタスクはまた「CPU大食い」タスクもしくは「ハングリ」タスクとも呼ばれる処理集約型のタスクである。従って、処理能力を使用していないPU231はPU223から1個若しくはそれ以上のタスクをプルする。PU222は同じ能力のグループ中にあるPU224から1個若しくはそれ以上のタスクをプルする。PU221はPU211からタスクをプルする
高い処理能力のプロセッサ・ユニットが過負荷になるか処理能力一杯に近づくと、その高い処理能力のプロセッサ・ユニットは同じかもしくは低い処理能力のプロセッサ・ユニットにタスクをプッシュしてもよい。プロセッサ・ユニットはそれらの時間スライスの小さい割合を使用するタスクをプルしようとする。図4は高い処理能力のプロセッサ・ユニットから低い処理能力のプロセッサ・ユニットに図示の実施例に従ってタスクをプッシュする様子を示すプロセッサ・ユニット構成のブロック図である。図示の例ではPU223、224および232は時間スライスのうち小さい割合を使用する「軽い」タスクを有するが、PU216、221および222は処理能力を使用していない。従って、過負荷もしくは処理能力一杯に近いPU232は1個もしくはそれ以上のタスクを、処理能力を使用していないPU222にプッシュする。PU224はその同じ処理能力のグループにあるPU221に1個もしくはそれ以上のタスクをプッシュする。PU223は、処理能力を使用していないPU216に1個もしくはそれ以上のタスクをプッシュする
これは二つのレベルだけの階層から3つ以上のレベルの階層に敷衍してもよい。実際に、多くの中間的なプロセッサ・ユニットの処理能力のグループがあり得る。タスク・プロセッサ使用率が変化する際、システム平衡に近い状態が得られる。タスク・プロセッサのニーズが、対応する処理能力を備えたプロセッサ・ユニットに合致することになるかもしれないからである。実施例の機構が、キャッシュのo恩恵を利用するために同じプロセッサ・グループ内で、例えば分岐するタスクなど関連するタスクを保持しようとすることに留意されたい。
図5は図示の実施例による、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールするためにもっとも低い処理能力のプロセッサ・ユニット中の機構の動作を示すフローチャートである。フローチャートの説明の各ブロックおよびフローチャートの説明中のブロックの組み合わせがコンピュータ・プログラム命令によって実施され得ることを理解されたい。これらのコンピュータ・プログラム命令がマシンを構成するためにプロセッサもしくは他のプログラム可能なデータ処理装置に提供されてもよく、その結果、そのプロセッサもしくはその他のプログラム可能なデータ処理装置上で実行する命令がフローチャートの一つ若しくは複数のブロックに特定した機能を実施するための手段を生じる。これらのコンピュータ・プログラム命令はコンピュータ読み取り可能なメモリもしくはストレージ媒体に格納されてもよく、これによってプロセッサ若しくは他のプログラム可能なデータ処理装置が特定の態様で機能するように指示することができる。そしてその結果、コンピュータ読み取り可能なメモリもしくはストレージ媒体に記憶された命令がフローチャートの1個もしくはそれ以上のブロックに特定された機能を実行する命令手段を含む製品を生じる。
従って、フローチャートの説明のブロックが特定の機能を実行するための手段の組み合わせと、特定の機能を実行するためのステップの組み合わせと、特定の機能を実行するためのプログラム命令手段とをサポートする。そのフローチャートの説明の各ブロックおよびブロックの組み合わせが、その特定の昨日若しくはステップを実行する特定目的のハードウエア・ベースのコンピュータ・システムであって、あるいは特定目的のハードウエアおよびコンピュータ命令の組み合わせによって実施されることができることも理解されたい。
更に、そのフローチャートが、説明の実施例中に実行される動作を行えるように提供される。このフローチャートは特定の動作、もしくはもっと具体的にはその動作順序に関して限定を記述したり暗示したりする意図は無い。フローチャートの動作は本発明の趣旨および範囲から逸れることなしに特定の形態に合うように修正することもできる。
図5によれば、その機構が新しい一つもしくは複数のタスクが割当てられるかどうかをその機構が決定することから動作が開始する(ブロック302)。もし1個もしくはそれ以上の新しいタスクがあれば、その機構は最も低い処理能力のPUグループ中のプロセッサ・ユニット(PU)でその新しく割当てられたタスクを受取る(ブロック304)。その後、あるいはブロック302で新しいタスクがないなら、その機構はPU上で実行するタスクをモニタする(ブロック306)。それから、その機構は現在の時間スライスの終わりに達したかどうかを決定する(ブロック308)。もし現在の時間スライスの終わりに達していなければ、そのPU上で実行するタスクをモニタするためにブロック306に動作が戻る。
もし現在の時間スライスの終わりに達すると(ブロック308)、その機構はそのタスクの使用率を記録する(ブロック310)。次に、その機構はそのPUが余分のサイクルを有するか決定する(ブロック312)。もしPUが余分のサイクルを有するなら、そのPUは追加のタスクをとってもよい。この例では、もし可能なら同じ処理能力のグループ内のPUから1個もしくはそれ以上のハングリなタスクをプルする(ブロック314)。その後、その機構は次に高い処理能力のPUグループ中のPUからプッシュするタスクがあるか決定する(ブロック316)。もし次に高い処理能力のPUグループ中のPUからタスクがプッシュすることがないなら、動作がブロック302に戻り、そのPUに何か新しいタスクが割当てられるかを決定する。
もしブロック316で次に高いPUグループ中のPUからそのPUに1個もしくはそれ以上のタスクがプッシュされるなら、その機構はその次に高い処理能力のPUグループ中のPUからプッシュされられたその1個もしくはそれ以上のタスクを受取る(ブロック318)。その後、動作はブロック302に戻り、何か新しいタスクがそのPUに割当てられるか決定する。
ブロック312に戻って説明すると、もしそのPUが余分のサイクルを持たなければ、その機構はそのPUが過負荷であるか処理能力一杯に近いかを決定する(ブロック320)。もしそのPUが過負荷でなければ、動作はブロック316に進み、その次に高い処理能力のPUグループ中のPUから何らかのタスクがプルされるかを決定する。もしそのPUがブロック320で過負荷であれば、その機構は、もし可能ならその同じ処理能力のPUグループ中のPUに1個もしくはそれ以上の軽いタスクをプッシュする(ブロック322)。その後、動作はブロック302に戻り、何か新しいタスクがそのPUに割当てられるか決定する。
図6は図示の実施例に従って、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールするための中間的な処理能力のプロセッサ・ユニットに於ける機構を説明するフローチャートである。動作が開始し、そのPU上でタスクが実行するのをその機構がモニタする(ブロック402)。それから、現在の時間スライスの終わりに達するか決定する(ブロック404)。もし現在の時間スライスの終わりに達していなければ、動作はブロック402に戻り、PU上で実行されるタスクをモニタする。
ブロック404で現在の時間スライスの終わりに達していれば 、その機構はそのタスクの使用率を記録する(ブロック406)。次に、その機構がそのPUが余分のサイクルを有しているか決定する(ブロック408)。もしそのPUが余分のサイクルを有していれば、そのPUは追加のタスクをとるかもしれない。この例では、もし可能なら次に低い処理能力のPUグループもしくは同じ処理能力のPUグループ中のPUからその機構が1個もしくはそれ以上のハングリなタスクをプルする(ブロック410)。その後、次に高い処理能力のPUグループ中のPUから何らかのタスクがプッシュされるかをその機構が決定する(ブロック412)。もし次に高い処理能力のPUグループ中のPUから何のタスクもプッシュされないなら、動作はブロック402に戻り、そのPU上で実行されるタスクをモニタする。
もし次に高い処理能力のPUグループ中のPUからそのPUに1個もしくはそれ以上のタスクがプッシュされるなら、その機構は次に高い処理能力のPUグループ中のPUからプッシュされる1個もしくはそれ以上のタスクを受取る(ブロック414)。その後、動作はブロック402の戻り、そのPU上で実行されるタスクをモニタする。
ブロック408の説明に戻ると、もしそのPUが余分のサイクルを持たなければ、その機構はそのPUが過負荷もしくは処理能力一杯の近くにあるかどうかを決定する(ブロック416)。もしそのPUが過負荷でなければ、動作はブロック412に進み、次に高い処理能力のPUグループ中のPUから何かタスクがプッシュされるかどうか決定する。もしそのPUがブロック416で過負荷であれば、その機構は、もし可能であれば次に低い処理能力のPUグループもしくは同じ処理能力のPUグループ中のPUに1個もしくはそれ以上の軽いタスクをプッシュする(ブロック418)。その後、動作はブロック402に戻り、そのPU上で実行するタスクをモニタする。
図7は、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨り、説明の実施例に従ってタスクをスケジュールするための最も高い処理能力のプロセッサ・ユニット中の機構の動作を説明するフローチャートである。動作が開始し、その機構はそのPU上で実行されるタスクをモニタする(ブロック502)。それから、その機構は現在の時間スライスの終わりに達するかどうかを決定する(ブロック504)。もし現在の時間スライスの終わりに達していなければ、動作はブロック502に戻り、そのPU上で実行するタスクをモニタする。
ブロック504で現在の時間スライスの終りに達しているなら、その機構はそのタスクの使用率を記録する(ブロック506)。次に、その機構はそのPUが余分のサイクルを有しているか決定する(ブロック508)。もしそのPUが余分のサイクルを有していれば、そのPUは追加のタスクを取ることもできる。この例では、その機構は、もし可能なら次に低い処理能力のPUグループ中もしくは同じ処理能力のPUグループ中のPUから1個もしくはそれ以上のハングリ・タスクをプルする。その後、動作はブロック502に戻り、そのPU上で実行するタスクをモニタする。
ブロック508でもしそのPUが余分のサイクルを持たなければ、その機構はそのPUが過負荷であるかもしくは処理能力の限界の近くにあるかどうかについて決定する(ブロック512)。もしそのPUが過負荷でなければ、動作はブロック502に戻り、そのPU上で実行するタスクをモニタする。ブロック512でもしそのPUが過負荷であれば、その機構は、もし可能なら次に低い処理能力のPUグループもしくは同じ処理能力のPUグループ中のPUに1個もしくはそれ以上の軽いタスクをプッシュする(ブロック514)。その後、動作はブロック502に戻り、そのPU上で実行するタスクをモニタする。
こうして、説明の実施例はそれぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールするための機構を提供することによって従来技術の欠点を解決する。異なる速さを持つプロセッサ・ユニットを備えたマルチ・プロセッサ・ユニット・システムにおいては、もっとも処理集約型のタスクをもっとも高い処理能力を備えた処理装置上で実行させるのが有利である。説明の実施例では、全てのタスクが最初はもっとも低い処理能力のプロセッサ・ユニット上にスケジュールされる。なぜならば、高い処理能力を備えたプロセッサ・ユニットは遊休時間を持ちがちであり、これらの高い処理能力のプロセッサ・ユニットは同じかもしくはもっと低い処理能力のプロセッサ・ユニットから1個もしくはそれ以上のタスクをそれら自身の上にプルできるかもしれないからである。プロセッサ・ユニットはこれらの時間スライスのうちの大きな割合を使用するタスクをプルしがちである。高い処理能力のプロセッサ・ユニットが過負荷であるか処理能力の限界付近であるとき、その高い処理能力のプロセッサ・ユニットは同じかもしくはそれよりも低い処理能力のプロセッサ・ユニットにタスクをプッシュされてもよい。プロセッサ・ユニットはその時間スライスの小さい割合を使用するタスクをプッシュしようとする。これは2レベル以上の階層に敷衍することが出来る。タスク・プロセッサ使用率が変化する際、システムの均衡に近い状態が達成されてもよい。タスク・プロセッサのニーズが対応する処理能力を備えたプロセッサに適合するようになるからである。
説明した実施例が全体としてハードウエアの実施例、もしくはハードウエアおよびソフトウエアの両方の要素を含む実施例の携帯をとることができることを理解されたい。一実施例では、説明の実施例の機構がソフトウエアで実施される。このソフトウエアというのはファームウエア、常駐のソフトウエア、マイクロコードなどを含むがこれらに限定されるものではない。
更に、説明の実施例は、コンピュータもしくは任意の命令実行システムと関係してもしくはそのようなシステムにより使用されるプログラム・コードを提供するコンピュータ使用可能もしくはコンピュータ読み取り可能な媒体からアクセス可能なコンピュータ・プログラム製品の形態をとってもよい。この記述の目的から、コンピュータ使用可能若しくはコンピュータ読み取り可能な媒体は、命令実行システム、装置若しくはデバイスに関連して、もしくはそれによって使用されるプログラムを含み、格納し、通信し、伝播し、もしくは移送することができる任意の装置であってよい。
その媒体は電子的、時期的、光学的、電磁気的、赤外線の、もしくは半導体システム(装置もしくはデバイス)または伝送媒体であってもよい。コンピュータ読み取り可能媒体の例は、半導体もしくは固体素子のメモリ、磁気テープ、取り外し可能なコンピュータ・ディスケット(フロッピー・ディスク)、ランダム・アクセス・メモリ(RAM),読出し専用メモリ(ROM)、ハード磁気ディスクおよび光ディスクである。光ディスクの今日の例はコンパクト・ディスク−読出し専用メモリ(CD−ROM )、コンパクト・ディスク−読出し書き込みメモリ(CD−R/W)およびDVDを含む。
プログラム・コードを格納しもしくは実行しあるいはその両方を行うのに適するデータ処理システムはシステム・バスを介して直接的にもしくは間接的にメモリ素子に結合される少なくとも一つのプロセッサを含む。そのメモリ素子はそのプログラム・コードを実際に実行する間に用いられるローカル・メモリ、バルク・ストレージ(大容量記憶装置)、および実行中にバルク・ストレージからコードが取り出される回数を減らすために少なくとも幾つかのプログラム・コードを一時的に格納するキャッシュ・メモリを含むことができる。
(キイボード、ディスプレイ、ポインティング・デバイスなどを含むがこれらに限定されない)入出力装置すなわちI/O装置がそのシステムに直接に、または介在するI/Oコントローラを介して結合されることができる。ネットワーク・アダプタもまたそのシステムに結合されてもよく、これによってそのデータ処理システムが他のデータ処理システムにもしくは遠隔のプリンタもしくはストレージ装置に、介在する私的なもしくは公的なネットワークを介して結合されるのを可能にしてもよい。モデム、ケーブル・モデムおよびイーサーネット・カードが現在利用できる型のネットワーク・アダプタのうちの例である。
本発明の記載は説明ないし記述目的で提供されたものであり、網羅する意図はなく、開示した形態の発明にのみ限定する意図もない。多くの改変例や変形例は当業者には明らかであろう。実施例は本発明の原理、実際的な応用例をもっともよく説明するように選んで記述し、また企図した特定の用法として適するような種々の変形例とともに種々の実施例について他の当業者が本発明を理解することができるように記述した。
図解の種々の側面の実施例が導入され得る例示のデータ処理システムのブロック図である。 図解の実施例に従って、新しいタスクの割り当てを説明するプロセッサ・ユニット構成のブロック図である。 図解の実施例に従って、低い処理能力のプロセッサ・ユニットから高い処理能力のプロセッサ・ユニットにタスクをプルする点を説明するプロセッサ・ユニット構成のブロック図である。 図解の実施例に従って、高い処理能力のプロセッサ・ユニットから低い処理能力のプロセッサ・ユニットにタスクをプッシュする点を説明するプロセッサ・ユニット構成のブロック図である。 図解の実施例に従い、それぞれ異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールするための低い処理能力のプロセッサ・ユニットに於ける機構の動作を説明するフローチャートである。 実施例に従い、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールするための中間的な処理能力のプロセッサ・ユニットに於ける機構の動作を説明するフローチャートである。 実施例に従い、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールするための最高の処理能力のプロセッサ・ユニットに於ける機構の動作を説明するフローチャートである。
100 データ処理システム
102 NB/MCH(ノース・ブリッジおよびメモリ・コントローラ・ハブ)
104 SB/ICH(サウス・ブリッジおよびI/Oコントローラ・ハブ)
108 メイン・メモリ
110 グラフィックス・プロセッサ
112 LAN(ローカル・エリア・ネットワーク)
116 オーディオ・アダプタ
120 キイボードおよびマウス・アダプタ
122 MODEM
124 ROM
126 ディスク
130 CD−ROM
132 USBおよび他のポート
134 PCI/PCIe装置
136 SIO(スーパーI/O装置)
138、140 バス
150 内部プロセッサ・バス
152、154、156 プロセッサ
210、220、230 プロセッサ
242 新しいタスク

Claims (2)

  1. マルチプロセシング環境において、それぞれが異なる速度で動作する複数のプロセッサ・ユニットに跨りタスクをスケジュールする方法であって、
    前記マルチプロセシング環境が、第1の速度で動作するプロセッサ・ユニットを含む第1のグループと、前記第1の速度よりも高い第2の速度で動作するプロセッサ・ユニットを含む第2のグループと、前記第2の速度よりも高い第3の速度で動作するプロセッサ・ユニットを含む第3のグループとを含み、
    新しいタスクを前記第1のグループ中のプロセッサ・ユニットに割り当てるステップと、
    プロセッサ使用率を記録するために所定の期間、前記第1のグループ、前記第2のグループおよび前記第3のグループのプロセッサ・ユニット上で実行しているタスクをモニタするステップと、
    前記プロセッサ使用率に基づき、前記第2のグループ中のプロセッサ・ユニットが遊休サイクルを有するか決定するステップと、
    前記決定するステップが、前記第2のグループ中の前記プロセッサ・ユニットが前記遊休サイクルを有していると決定した場合に、前記第1のグループ中のプロセッサ・ユニットからタスクをプルするステップと、
    前記プロセッサ使用率に基づき、前記第2のグループまたは前記第3のグループ中のプロセッサ・ユニットが過負荷であるかを決定するステップと、
    前記過負荷であるかを決定するステップが、前記第2のグループ中のプロセッサ・ユニットが過負荷であると決定した場合に、前記第2のグループ中のプロセッサ・ユニットから前記第1のグループ中のプロセッサ・ユニットへタスクをプッシュするステップと
    前記過負荷であるかを決定するステップが、前記第3のグループ中のプロセッサ・ユニットが過負荷であると決定した場合に、前記第3のグループ中のプロセッサ・ユニットから前記第2のグループ中のプロセッサ・ユニットへタスクをプッシュするステップと
    を含む前記方法。
  2. 請求項1に記載の各ステップをコンピュータに実行させるためのコンピュータ・プログラム。
JP2008162853A 2007-06-25 2008-06-23 それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールする方法、コンピュータ・プログラム、データ処理装置 Active JP5443709B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/767,570 US8656405B2 (en) 2007-06-25 2007-06-25 Pulling heavy tasks and pushing light tasks across multiple processor units of differing capacity
US11/767570 2007-06-25

Publications (2)

Publication Number Publication Date
JP2009003942A JP2009003942A (ja) 2009-01-08
JP5443709B2 true JP5443709B2 (ja) 2014-03-19

Family

ID=40137860

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008162853A Active JP5443709B2 (ja) 2007-06-25 2008-06-23 それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールする方法、コンピュータ・プログラム、データ処理装置

Country Status (3)

Country Link
US (1) US8656405B2 (ja)
JP (1) JP5443709B2 (ja)
TW (1) TW200917129A (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011113212A (ja) * 2009-11-25 2011-06-09 Canon Inc 情報処理装置
US8866826B2 (en) * 2011-02-10 2014-10-21 Qualcomm Innovation Center, Inc. Method and apparatus for dispatching graphics operations to multiple processing resources
JP5733389B2 (ja) 2011-04-22 2015-06-10 富士通株式会社 情報処理装置及び情報処理装置の処理方法
JP5783259B2 (ja) * 2011-09-16 2015-09-24 富士通株式会社 コンピュータシステム
US9384055B2 (en) * 2012-04-16 2016-07-05 International Business Machines Corporation Programmatic load-based management of processor population
TWI625622B (zh) 2013-10-31 2018-06-01 聯想企業解決方案(新加坡)有限公司 在多核心處理器系統與運作多核心處理器系統的電腦實施方法
KR102237373B1 (ko) * 2014-07-02 2021-04-07 삼성전자 주식회사 전자 장치의 태스크 스케줄링 방법 및 이를 사용하는 전자 장치
CN105988872B (zh) * 2015-02-03 2020-02-18 阿里巴巴集团控股有限公司 一种cpu资源分配的方法、装置及电子设备
KR102464678B1 (ko) * 2016-03-18 2022-11-11 한국전자통신연구원 매니코어 시스템에서 쓰레드를 스케줄링 하는 방법 및 그 장치
US11704155B2 (en) * 2020-07-01 2023-07-18 International Business Machine Corporation Heterogeneous system on a chip scheduler
US11740933B2 (en) 2020-07-01 2023-08-29 International Business Machines Corporation Heterogeneous system on a chip scheduler with learning agent

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4318174A (en) 1975-12-04 1982-03-02 Tokyo Shibaura Electric Co., Ltd. Multi-processor system employing job-swapping between different priority processors
JP2814880B2 (ja) 1993-06-04 1998-10-27 日本電気株式会社 異なる命令特性を持つ複数のcpuによって構成される計算機システムの制御装置
US5701482A (en) * 1993-09-03 1997-12-23 Hughes Aircraft Company Modular array processor architecture having a plurality of interconnected load-balanced parallel processing nodes
US5835767A (en) 1994-08-19 1998-11-10 Unisys Corporation Method and apparatus for controlling available processor capacity
US6301603B1 (en) * 1998-02-17 2001-10-09 Euphonics Incorporated Scalable audio processing on a heterogeneous processor array
US6985952B2 (en) 2001-10-31 2006-01-10 International Business Machines Corporation Energy-induced process migration
JP4058038B2 (ja) * 2004-12-22 2008-03-05 株式会社日立製作所 負荷監視装置および負荷監視方法
US7694107B2 (en) * 2005-08-18 2010-04-06 Hewlett-Packard Development Company, L.P. Dynamic performance ratio proportionate distribution of threads with evenly divided workload by homogeneous algorithm to heterogeneous computing units

Also Published As

Publication number Publication date
TW200917129A (en) 2009-04-16
US8656405B2 (en) 2014-02-18
JP2009003942A (ja) 2009-01-08
US20080320487A1 (en) 2008-12-25

Similar Documents

Publication Publication Date Title
JP5443709B2 (ja) それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールする方法、コンピュータ・プログラム、データ処理装置
US10877766B2 (en) Embedded scheduling of hardware resources for hardware acceleration
JP5583837B2 (ja) コンピュータ・システム内でタスクを開始するためのコンピュータ実装方法、システム及びコンピュータ・プログラム
US8245236B2 (en) Lock based moving of threads in a shared processor partitioning environment
JP5658365B2 (ja) ハイブリッド・コンピューティング環境における高スループット・コンピューティングの方法、システム及びプログラム
US8838801B2 (en) Cloud optimization using workload analysis
US8914805B2 (en) Rescheduling workload in a hybrid computing environment
TWI494850B (zh) 通透地提供給作業系統之非對稱多核心處理器系統
TWI505080B (zh) 在電腦系統中分派任務之方法、系統及電腦程式
US20080134191A1 (en) Methods and apparatuses for core allocations
US20120084511A1 (en) Ineffective prefetch determination and latency optimization
US20090300399A1 (en) Profiling power consumption of a plurality of compute nodes while processing an application
US9626220B2 (en) Computer system using partially functional processor core
US8862786B2 (en) Program execution with improved power efficiency
US20120144218A1 (en) Transferring Power and Speed from a Lock Requester to a Lock Holder on a System with Multiple Processors
US8447960B2 (en) Pausing and activating thread state upon pin assertion by external logic monitoring polling loop exit time condition
Lv et al. Dynamic I/O-aware scheduling for batch-mode applications on chip multiprocessor systems of cluster platforms

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121204

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130228

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130305

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130402

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130604

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131004

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20131015

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131220

R150 Certificate of patent or registration of utility model

Ref document number: 5443709

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150