JPWO2012120655A1 - スケジューリング方法およびスケジューリングシステム - Google Patents

スケジューリング方法およびスケジューリングシステム Download PDF

Info

Publication number
JPWO2012120655A1
JPWO2012120655A1 JP2013503286A JP2013503286A JPWO2012120655A1 JP WO2012120655 A1 JPWO2012120655 A1 JP WO2012120655A1 JP 2013503286 A JP2013503286 A JP 2013503286A JP 2013503286 A JP2013503286 A JP 2013503286A JP WO2012120655 A1 JPWO2012120655 A1 JP WO2012120655A1
Authority
JP
Japan
Prior art keywords
cpu
application
threshold
thread
load
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.)
Granted
Application number
JP2013503286A
Other languages
English (en)
Other versions
JP5790758B2 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2012120655A1 publication Critical patent/JPWO2012120655A1/ja
Application granted granted Critical
Publication of JP5790758B2 publication Critical patent/JP5790758B2/ja
Expired - Fee Related 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/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
    • 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]

Landscapes

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

Abstract

CPU(#1)は、アプリケーション(AP)の起動時に、アプリケーション(AP)の実行のためのアプリ情報(110)をメモリ(101)から読み出す。CPU(#1)は、メモリ(101)から読み出したアプリケーション(AP)の実行のためのアプリ情報(110)を、CPU(#2)〜CPU(#N)にブロードキャストする。各CPU(#2)〜CPU(#N)は、アプリ情報(110)に基づいて、アプリケーション(AP)の実行可否を判定する。各CPU(#2)〜CPU(#N)は、アプリケーション(AP)を実行可能な場合、アプリケーション(AP)が実行できる旨をCPU(#1)に通知する。CPU(#1)は、アプリケーション(AP)が実行できる旨の通知があったCPUに、アプリケーション(AP)を割り当てる。

Description

本発明は、スケジューリング方法およびスケジューリングシステムに関する。
携帯端末などの組込システムにおいて、複数のコアが搭載されたマルチコアプロセッサやメニーコアプロセッサが適用されるようになっている。マルチコア・メニーコアシステムでは、新たなアプリケーションが起動されると、例えば、スケジューリングを行うプロセッサが、システム内の各プロセッサの負荷情報を収集して割当先を求め、アプリケーションのディスパッチを行う。
関連する先行技術として、アプリケーションのディスパッチを行うまでにかかる時間を算出するものがある。また、情報処理システムにおいて、エージェントシステムにおける処理能力の余剰状態を監視し、該余剰状態が生じたエージェントシステムにジョブを実行させる技術がある。
また、クライアントサーバシステムにおいて、各サーバが、CPU(Central Processing Unit)負荷、ジョブ優先順位、実行ジョブ数などのそれぞれに重み付けを行って閾値を割り当て、この閾値と負荷情報を比較することにより負荷判断を行う技術がある。また、マスタ計算機が、各計算機の負荷情報の通知を受けて余剰能力を評価し、余剰能力が最も高い計算機を選択してジョブを実行させる技術がある。
特開2005−284966号公報 特開2000−268012号公報 特開平9−212467号公報
笠原博徳著 「並列処理技術」コロナ社 1991年 P156
しかしながら、従来技術では、マルチコアやメニーコアの組込システムにおけるアプリケーションのスケジューリングにかかる時間が増大してしまうという問題がある。例えば、コア数やコア間の通信時間が増えると、アプリケーションのディスパッチが完了するまでにかかる時間が仕様で定められたディスパッチ周期よりも長くなり、性能ボトルネックとなってしまう場合がある。
本発明は、上述した従来技術による問題点を解消するため、スケジューリングを効率的に行うことができるスケジューリング方法およびスケジューリングシステムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、第1アプリケーションの起動時に第1CPUが前記第1アプリケーションの実行のための第1閾値を取得し、前記第1CPUが前記第1閾値を第2CPUに送信し、前記第2CPUの実行能力が前記第1閾値以上であるときは前記第2CPUは前記第1CPUに前記第1アプリケーションを実行できる旨を通知し、前記第2CPUの実行能力が前記第1閾値よりも小さいときは前記第2CPUは前記第1CPUへの通知を行わないスケジューリング方法が提案される。
また、上述した課題を解決し、目的を達成するため、本発明の一側面によれば、第1アプリケーションの実行のための第1閾値を格納するメモリと、前記第1アプリケーションの起動時に前記第1閾値を取得する第1CPUと、実行能力が前記第1CPUから供給される前記第1閾値以上であるときは前記第1CPUに前記第1アプリケーションを実行できる旨を通知し、前記実行能力が前記第1閾値よりも小さいときは前記第1CPUに通知しない第2CPUとを含むスケジューリングシステムが提案される。
本発明の一側面によれば、スケジューリングを効率的に行うことができるという効果を奏する。
図1は、実施の形態にかかるスケジューリング方法の一実施例を示す説明図である。 図2は、実施の形態にかかるマルチコアシステムのシステム構成例を示す説明図である。 図3は、アプリケーションテーブルの記憶内容の一例を示す説明図である。 図4は、実施の形態にかかるマスタCPUの機能的構成を示すブロック図である。 図5は、第1の応答通知リストの具体例を示す説明図である。 図6は、第2の応答通知リストの具体例を示す説明図である。 図7は、スレッド負荷情報の具体例を示す説明図である。 図8は、実施の形態にかかるスレーブCPUの機能的構成を示すブロック図である。 図9は、実施の形態にかかるマスタCPUの割当処理手順の一例を示すフローチャートである。 図10は、実施の形態にかかるスレーブCPUの判定処理手順の一例を示すフローチャートである。
以下に添付図面を参照して、この発明にかかるスケジューリング方法およびスケジューリングシステムの実施の形態を詳細に説明する。本実施の形態において、スケジューリングシステムは、コアが複数搭載されたマルチコアプロセッサを含むマルチコアシステムである。マルチコアプロセッサは、コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。ただし、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
(スケジューリング方法の一実施例)
図1は、実施の形態にかかるスケジューリング方法の一実施例を示す説明図である。図1において、マルチコアシステム100は、CPU#1〜CPU#Nと、メモリ101と、を含むスケジューリングシステムである。
CPU#1は、マスタCPUであり、マルチコアシステム100の全体の制御を司る。CPU#1は、アプリケーションをどのCPUに割り当てるかを制御する。また、CPU#1は、割り当てられたアプリケーションを実行する。CPU#2〜CPU#Nは、スレーブCPUであり、割り当てられたアプリケーションを実行する。メモリ101は、CPU#1〜CPU#Nに共有されるメモリである。
以下、アプリケーションの起動時に実行されるマルチコアシステム100のスケジューリング処理の一実施例について説明する。
(1)CPU#1は、アプリケーション(図1中、「アプリ」)APの起動時に、アプリケーションAPの実行のためのアプリ情報110をメモリ101から読み出す。ここで、アプリ情報110は、例えば、アプリケーションAPに含まれるスレッド数や、アプリケーションAPの実行に必要なCPUの実行能力を示す情報である。
(2)CPU#1は、メモリ101から読み出したアプリケーションAPの実行のためのアプリ情報110を、CPU#2〜CPU#Nにブロードキャストする。
(3)各CPU#2〜CPU#Nは、アプリ情報110に基づいて、アプリケーションAPの実行可否を判定する。具体的には、例えば、各CPU#2〜CPU#Nは、自CPUの実行能力と、アプリ情報110が示すアプリケーションAPの実行に必要なCPUの実行能力とを比較して、アプリケーションAPの実行可否を判定する。
(4a)各CPU#2〜CPU#Nは、アプリケーションAPを実行可能な場合、アプリケーションAPが実行できる旨をCPU#1に通知する。具体的には、例えば、各CPU#2〜CPU#Nは、自CPUの実行能力が、アプリケーションAPの実行に必要なCPUの実行能力以上の場合、アプリケーションAPが実行できる旨をCPU#1に通知する。
図1の例では、CPU#2の実行能力がアプリケーションAPの実行に必要なCPUの実行能力以上のため、CPU#2が、アプリケーションAPが実行できる旨をCPU#1に通知している。
(4b)各CPU#2〜CPU#Nは、アプリケーションAPを実行不能な場合、アプリケーションAPの実行可否に関するCPU#1への通知を行わない。具体的には、例えば、各CPU#2〜CPU#Nは、自CPUの実行能力が、アプリケーションAPの実行に必要なCPUの実行能力よりも小さい場合、アプリケーションAPの実行可否に関するCPU#1への通知を行わない。
図1の例では、CPU#Nの実行能力がアプリケーションAPの実行に必要なCPUの実行能力よりも小さいため、CPU#NからCPU#1へのアプリケーションAPの実行可否に関する通知は行われていない(図1中、「非通知」)。
(5)CPU#1は、アプリケーションAPが実行できる旨の通知があったCPU(例えば、CPU#2)に、アプリケーションAPを割り当てる。この結果、例えば、割当先のCPU#2により、アプリケーションAPが実行される。
このように、マルチコアシステム100によれば、新たに起動されたアプリケーションAPの実行可否を各CPU#2〜CPU#Nに判定させることができる。これにより、CPU#1が各CPU#2〜CPU#Nの実行可否を判定する場合に比べて、スケジューリング時におけるCPU#1の負荷を軽減させることができる。また、スケジューリング時に各CPU#2〜CPU#Nの負荷情報(実行能力)をCPU#1に集約しないため、CPU#1への通信コンフリクトを回避することができる。
また、マルチコアシステム100によれば、新たに起動されたアプリケーションAPの実行のためのアプリ情報110をCPU#1がメモリ101から取得して、各CPU#2〜CPU#Nにブロードキャストすることができる。これにより、メモリ101上の同一データへのCPU#2〜CPU#Nのアクセスコンテンションを回避することができる。すなわち、各CPU#2〜CPU#Nが、アプリケーションAPの実行可否を判定する際に、メモリ101からアプリ情報110をそれぞれ読み出す必要がないため、メモリ101上のアプリ情報110へのアクセスコンテンションを回避することができる。
また、マルチコアシステム100によれば、CPU#2〜CPU#NのうちアプリケーションAPを実行可能なCPU(例えば、CPU#2)のみがCPU#1への返答を行うため、スケジューリング時のCPU#1への通信コンフリクトを回避することができる。
これらのことから、マルチコアシステム100によれば、スケジューリング時の通信コストを削減して、効率的なスケジューリングを行うことができる。
(マルチコアシステム100のシステム構成)
つぎに、実施の形態にかかるマルチコアシステム100のシステム構成について説明する。
図2は、実施の形態にかかるマルチコアシステムのシステム構成例を示す説明図である。図2において、マルチコアシステム100は、CPU#1〜CPU#Nと、メモリ101と、1次キャッシュ201−1〜201−Nと、スヌープ回路202と、2次キャッシュ203と、I/F(InterFace)204と、メモリコントローラ205と、を有している。マルチコアシステム100において、2次キャッシュ203と、I/F204と、メモリコントローラ205とは、バス220を介して接続されている。また、メモリ101は、メモリコントローラ205を介して各部と接続されている。
CPU#1は、OS(Operating System)210−1を実行し、マルチコアシステム100の全体の制御を司る。OS210−1は、マスタOSであり、アプリケーションをどのCPUに割り当てるかを制御するスケジューラ210を備えている。また、CPU#1は、割り当てられたアプリケーションを実行する。CPU#2〜CPU#Nは、それぞれOS#210−2〜210−Nを実行し、各OSに割り当てられたアプリケーションを実行する。OS#210−2〜210−Nは、スレーブOSである。
CPU#1〜CPU#Nは、それぞれレジスタとコアとを有している。各レジスタには、プログラムカウンタやリセットレジスタがある。また、各CPU#1〜CPU#Nは、各々の1次キャッシュ201−1〜201−Nと、スヌープ回路202と、2次キャッシュ203とを介して各部に接続されている。
1次キャッシュ201−1〜201−Nは、それぞれキャッシュメモリとキャッシュコントローラとを有している。例えば、1次キャッシュ201−1は、OS210−1が実行するアプリケーションからメモリ101への書込処理を一時的に記憶する。1次キャッシュ201−1は、メモリ101から読み出されたデータを一時的に記憶する。
スヌープ回路202は、CPU#1〜CPU#Nがアクセスする1次キャッシュ201−1〜201−Nの整合性を取る。具体的には、例えば、スヌープ回路202は、1次キャッシュ201−1〜201−Nの間で共有するデータがいずれかの1次キャッシュで更新された場合、該更新を検出して、他の1次キャッシュを更新する。
2次キャッシュ203は、キャッシュメモリとキャッシュコントローラとを有している。2次キャッシュ203では、各1次キャッシュ201−1〜201−Nから追い出されたデータを記憶する。具体的には、例えば、2次キャッシュ203は、OS210−1〜210−Nで共有するデータを記憶する。
I/F204は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークに接続され、ネットワークを介して他の装置に接続される。そして、I/F204は、ネットワークと内部のインターフェースを司り、外部の装置からのデータの入出力を制御する。
メモリコントローラ205は、メモリ101に対するデータのリード/ライトを制御する。メモリ101は、CPU#1〜CPU#Nに共有されるメモリである。メモリ101は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有している。
より具体的には、例えば、フラッシュROMが各OSのプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU#1〜CPU#Nのワークエリアとして使用される。メモリ101に記憶されているプログラムは、各CPUにロードされることで、コーディングされている処理を該各CPUに実行させることになる。
ファイルシステム207は、例えば、アプリケーションの命令コードや、画像および映像などのコンテンツデータを記憶している。ファイルシステム207は、例えば、ハードディスクや光ディスクなどの補助記憶装置により実現される。なお、図示は省略するが、マルチコアシステム100は、各部に電源電圧を供給するPMU(Power Management Unit)のほか、ディスプレイやキーボードなどを有することにしてもよい。
(アプリケーションテーブル300の記憶内容)
つぎに、マスタCPU(CPU#1)がアクセスするアプリケーションテーブル300の記憶内容について説明する。アプリケーションテーブル300は、例えば、図2に示したメモリ101に記憶されている。
図3は、アプリケーションテーブルの記憶内容の一例を示す説明図である。図3において、アプリケーションテーブル300は、アプリID、Lmin、Lmaxおよびmのフィールドを有する。各フィールドに情報を設定することで、アプリケーションAP1〜APKごとのアプリ情報300−1〜300−Kがレコードとして記憶されている。
ここで、アプリIDは、各アプリケーションAP1〜APKの識別子である。Lminは、各アプリケーションAP1〜APKに含まれる1以上のスレッド群のうち最小負荷のスレッドの負荷である。スレッドの負荷とは、該スレッドの実行にかかるCPUの負荷である。Lmaxは、各アプリケーションAP1〜APKに含まれる1以上のスレッド群のうち最大負荷のスレッドの負荷である。mは、各アプリケーションAP1〜APKに含まれるスレッド数である。
なお、本明細書において、CPUの最大計算能力、余剰計算能力、負荷、スレッドの負荷は、統一的な価値基準に従って、設定または算出される値によって表現される。ここでは、マスタCPUであるCPU#1の最大計算能力を「1.0」とする。また、スレーブCPUである各CPU#2〜CPU#Nの最大計算能力は、CPU#1の動作周波数を基準として設定される。
例えば、CPU#2の動作周波数がCPU#1の動作周波数と同じであれば、CPU#2の最大計算能力は「1.0」となる。例えば、CPU#2の動作周波数がCPU#1の動作周波数の2倍であれば、CPU#2の最大計算能力は「2.0」となる。例えば、CPU#2の動作周波数がCPU#1の動作周波数の半分であれば、CPU#2の最大計算能力は「0.5」となる。
また、CPUの負荷は、一定期間の間に該CPUの処理時間が占める割合によって表す。例えば、一定期間の間、常にCPU#1が処理を行っている場合、CPU#1の負荷は「1.0」となる。また、一定期間のうちの半分の時間、CPU#1がアイドル状態となっている場合、CPU#1の負荷は「0.5」となる。
また、CPUの余剰計算能力は、CPUの最大計算能力からCPUの負荷を減算した値によって表す。すなわち、CPUの余剰計算能力は、該CPUが有する残余の計算能力を表している。例えば、CPU#1の負荷が「0.5」の場合、CPU#1の余剰計算能力は「0.5」となる。
ここで、アプリ情報300−1を例に挙げると、アプリケーションAP1に含まれるスレッドの最小負荷Lminは「0.1」、最大負荷Lmaxは「0.7」、スレッド数mは「2」である。すなわち、最大計算能力がCPU#1と同一のCPUが、最小負荷Lmin「0.1」のスレッドを実行するためには、該CPUの余剰計算能力が「0.1以上」である必要がある。同様に、最大負荷Lmax「0.7」のスレッドを実行するためには、該CPUの余剰計算能力が「0.7以上」である必要がある。
なお、以下の説明では、アプリケーションAP1〜APKのうち任意のアプリケーションを「アプリケーションAPk」と表記する(k=1,2,…,K)。また、アプリケーションAPkに含まれるスレッドの最小負荷を「最小負荷Lkmin」、最大負荷を「最大負荷Lkmax」、スレッド数を「スレッド数mk」と表記する。
(マスタCPUの機能的構成例)
つぎに、マスタCPU(CPU#1)の機能的構成例について説明する。図4は、実施の形態にかかるマスタCPUの機能的構成を示すブロック図である。図4において、マスタCPUは、受付部401と、読出部402と、通知部403と、判定部404と、割当部405と、を含む構成である。この制御部となる機能(受付部401〜割当部405)は、具体的には、例えば、メモリ101に記憶されたスケジューラ210をCPU#1に実行させることにより、その機能を実現する。なお、各機能部の処理結果は、例えば、CPU#1のレジスタ、1次キャッシュ201−1、2次キャッシュ203およびメモリ101などの記憶装置に記憶される。
受付部401は、新たなアプリケーションAPkの起動要求を受け付ける。アプリケーションAPkの起動要求には、例えば、アプリケーションAPkのアプリIDが含まれている。具体的には、例えば、受付部401が、アプリケーションAPkの起動要求をOS210−1から受け付ける。
読出部402は、アプリケーションAPkの起動要求が受け付けられた場合、アプリケーションAPkの実行のためのCPUの計算能力に関する閾値をメモリ101から読み出す。ここで、CPUの計算能力に関する閾値とは、例えば、アプリケーションAPkに含まれるスレッドの実行にかかるCPUの負荷である。より具体的には、例えば、CPUの計算能力に関する閾値は、アプリケーションAPkに含まれるスレッドの最小負荷Lkminや最大負荷Lkmaxである。
具体的には、例えば、読出部402が、メモリ101にアクセスして、アプリケーションテーブル300の中から、起動要求に含まれるアプリケーションAPkのアプリIDに対応するアプリ情報300−kを読み出す。アプリ情報300−kには、アプリケーションAPkのスレッドの最小負荷Lkminおよび最大負荷Lkmaxが含まれている。
通知部403は、アプリケーションAPkの実行のためのCPUの計算能力に関する閾値をCPU#2〜CPU#Nに通知する。具体的には、例えば、通知部403が、アプリ情報300−kから特定されるスレッドの最小負荷Lkminおよび最大負荷Lkmaxを、CPU#2〜CPU#Nにブロードキャストする。
また、受付部401は、アプリケーションAPkの実行のためのCPUの計算能力に関する閾値がCPU#2〜CPU#Nに通知された結果、アプリケーションAPkを実行できる旨の応答をCPU#jから受け付ける(j=2,3,…,N)。具体的には、例えば、受付部401が、第1の応答通知または第2の応答通知をCPU#jから受け付ける。
ここで、第1の応答通知とは、アプリケーションAPkに含まれる最大負荷Lkmaxのスレッドを実行できる旨の応答である。すなわち、第1の応答通知は、アプリケーションAPkに含まれるどのスレッドでもCPU#jが実行できることを示すものである。
第2の応答通知とは、アプリケーションAPkに含まれる最小負荷Lkminのスレッドを実行できる旨の応答である。すなわち、第2の応答通知は、アプリケーションAPkに含まれるスレッド群のうち、少なくとも最小負荷LkminのスレッドをCPU#jが実行できることを示すものである。また、第2の応答通知には、例えば、CPU#jの余剰計算能力を示す情報が含まれている。
受け付けられた第1の応答通知は、例えば、図5に示す第1の応答通知リスト500に記憶される。また、受け付けられた第2の応答通知は、例えば、図6に示す第2の応答通知リスト600に記憶される。第1および第2の応答通知リスト500,600は、例えば、CPU#1のレジスタ、1次キャッシュ201−1、2次キャッシュ203およびメモリ101などの記憶装置により実現される。ここで、第1の応答通知リスト500の具体例について説明する。
図5は、第1の応答通知リストの具体例を示す説明図である。図5において、第1の応答通知リスト500は、アプリケーションAPkに含まれる最大負荷Lkmaxのスレッドを実行できる旨の第1の応答通知があったCPUごとのCPU情報(例えば、CPU情報500−1〜500−3)をリスト化して示す情報である。
ここで、最大負荷は、起動要求があったアプリケーションAPkに含まれるスレッドの最大負荷Lkmaxである。図5の例では、アプリケーションAP1に含まれるスレッドの最大負荷L1max「0.7」が示されている。CPU名は、第1の応答通知のあったCPUの識別子である。
割当フラグは、第1の応答通知のあったCPUの割当状態を示すフラグである。割当フラグは、CPUにアプリケーションAPkのスレッドが割り当てられていない場合は「0」、CPUにアプリケーションAPkのスレッドが割り当てられた場合は「1」となる。なお、割当フラグは初期状態では「0」である。
CPU情報500−1を例に挙げると、アプリケーションAP1に含まれる最大負荷L1max「0.7」のスレッドを実行できる旨の第1の応答通知があったCPUのCPU名「CPU#2」および割当フラグ「0」が示されている。このCPU情報500−1は、CPU#2から第1の応答通知があった際に作成されて、第1の応答通知リスト500に登録される。
つぎに、第2の応答通知リスト600の具体例について説明する。
図6は、第2の応答通知リストの具体例を示す説明図である。図6において、第2の応答通知リスト600は、アプリケーションAPkに含まれる最小負荷Lkminのスレッドを実行できる旨の第2の応答通知があったCPUごとのCPU情報(例えば、CPU情報600−1〜600−3)をリスト化して示す情報である。
ここで、最小負荷は、起動要求があったアプリケーションAPkに含まれるスレッドの最小負荷Lkminである。図6の例では、アプリケーションAP1に含まれるスレッドの最小負荷L1min「0.1」が示されている。CPU名は、第2の応答通知のあったCPUの識別子である。余剰計算能力は、第2の応答通知のあったCPUの余剰計算能力である。
CPU情報600−1を例に挙げると、アプリケーションAP1に含まれる最小負荷L1min「0.1」のスレッドを実行できる旨の第2の応答通知があったCPUのCPU名「CPU#3」および余剰計算能力「0.3」が示されている。このCPU情報600−1は、CPU#3から第2の応答通知があった際に作成されて、第2の応答通知リスト600に登録される。
なお、第1の応答通知リスト500および第2の応答通知リスト600の記憶内容は、例えば、アプリケーションAPkのスレッドの最小負荷Lkminおよび最大負荷LkmaxがCPU#2〜CPU#Nにブロードキャストされると、その都度初期化される。
図4の説明に戻り、判定部404は、アプリケーションAPkを実行できる旨の応答が受け付けられたCPUの数が、アプリケーションAPkに含まれるスレッド数mk以上となったか否かを判定する。スレッド数mkは、アプリケーションAPkの起動要求から特定される。
具体的には、例えば、判定部404は、アプリケーションAPkに含まれる最大負荷Lkmaxのスレッドを実行できる旨の第1の応答通知があったCPUの数(以下、「CPU数X」という)が、スレッド数mk以上となったか否かを判定する(以下、「第1の判定処理」という)。
より具体的には、例えば、判定部404が、図5に示した第1の応答通知リスト500を参照して、割当フラグが「0」のCPU情報を計数することにより、第1の応答通知があったCPU数Xを算出する。そして、判定部404が、算出したCPU数Xが、アプリケーションAPkに含まれるスレッド数mk以上となったか否かを判定する。
また、判定部404は、アプリケーションAPkに含まれる最小負荷Lkminのスレッドを実行できる旨の第2の応答通知があったCPUの数(以下、「CPU数Y」という)が、スレッド数mk以上となったか否かを判定する(以下、「第2の判定処理」という)。
より具体的には、例えば、判定部404が、図6に示した第2の応答通知リスト600を参照して、CPU情報を計数することにより、第2の応答通知があったCPU数Yを算出する。そして、判定部404が、算出したCPU数Yが、アプリケーションAPkに含まれるスレッド数mk以上となったか否かを判定する。
第2の判定処理は、例えば、スレッドの最小負荷Lkminおよび最大負荷Lkmaxが通知されてから一定時間Tが経過しても、第1の判定処理においてCPU数Xがスレッド数mk未満であると判定された場合に実行されることにしてもよい。一定時間Tは、例えば、予め設定されてCPU#1のレジスタ、1次キャッシュ201−1、2次キャッシュ203およびメモリ101などの記憶装置に記憶されている。
割当部405は、判定された判定結果に基づいて、アプリケーションAPkに含まれるスレッド群をCPU#2〜CPU#Nに割り当てる。具体的には、例えば、割当部405が、アプリケーションAPkを実行できる旨の応答があったCPU#jに、アプリケーションAPkに含まれるスレッドを割り当てる。
以下、マスタCPU(CPU#1)のスケジューリング方法の具体的な処理内容について説明する。
<スケジューリング方法1>
まず、マスタCPU(CPU#1)のスケジューリング方法1について説明する。スケジューリング方法1は、上述した第1の判定処理の判定結果に基づいて、アプリケーションAPkに含まれるスレッド群の割り当てを行うものである。
割当部405は、CPU数Xがスレッド数mk以上の場合(第1の判定処理)、第1の応答通知リスト500を参照して、割当フラグが「0」のCPUに、アプリケーションAPkに含まれるスレッド群をランダムに割り当てる。なお、スレッドをランダムに割り当てるとは、任意の選択アルゴリズムに基づいて、母集団となるCPU群の中からいずれかのCPUを選択してスレッドを割り当てることである。
これにより、アプリケーションAPkに含まれるスレッド群を、余剰計算能力が最大負荷Lkmax以上のCPU#jに割り当てることができる。なお、アプリケーションAPkのスレッドがCPU#jに割り当てられた場合、第1の応答通知リスト500内のCPU#jの割当フラグが「0」から「1」に変更される。
一方、割当部405は、CPU数Xがスレッド数mk未満の場合(第1の判定処理)、アプリケーションAPkに含まれるスレッド群を、CPU#2〜CPU#Nにランダムに割り当てる。この際、割当部405は、CPU#2〜CPU#Nのうち第1の応答通知リスト500内の割当フラグが「0」のCPUを優先的に選択して、アプリケーションAPkのスレッドを割り当てることにしてもよい。
これにより、CPU#2〜CPU#Nの中から余剰計算能力が最大負荷Lkmax以上のCPU#jを優先的に選択して、アプリケーションAPkに含まれるスレッドを割り当てることができる。
さらに、割当部405は、優先的に選択した第1の応答通知リスト500内の割当フラグが「0」のCPUに、アプリケーションAPkの高負荷のスレッドを割り当てることにしてもよい。ここで、アプリケーションAPkの各スレッドの負荷は、例えば、アプリケーションAPkのスレッド負荷情報から特定される。
アプリケーションAPkのスレッド負荷情報は、例えば、図3に示したアプリケーションAPkのアプリ情報300−kと関連付けてメモリ101に記憶されている。ここで、スレッド負荷情報の具体例について説明する。
図7は、スレッド負荷情報の具体例を示す説明図である。図7において、スレッド負荷情報700は、アプリケーションAP2に含まれる各スレッドt1〜t5の負荷を示す情報である。具体的には、スレッドt1の負荷は「0.3」、スレッドt2の負荷は「0.45」、スレッドt3の負荷は「0.5」、スレッドt4の負荷は「0.35」、スレッドt5の負荷は「0.4」である。
この場合、割当部405は、優先的に選択した第1の応答通知リスト500内の割当フラグが「0」のCPUに、高負荷のスレッド(例えば、スレッドt3)を割り当てる。これにより、余剰計算能力が最大負荷Lkmax以上のCPU#jに高負荷のスレッドを割り当てることができる。
<スケジューリング方法2>
つぎに、マスタCPU(CPU#1)のスケジューリング方法2について説明する。スケジューリング方法2は、上述した第2の判定処理の判定結果に基づいて、アプリケーションAPkに含まれるスレッド群の割り当てを行うものである。
割当部405は、CPU数Yがスレッド数mk以上の場合(第2の判定処理)、第2の応答通知リスト600を参照して、第2の応答通知があったCPUに、アプリケーションAPkに含まれるスレッド群をランダムに割り当てる。これにより、アプリケーションAPkに含まれるスレッド群を、余剰計算能力が最小負荷Lkmin以上のCPU#jに割り当てることができる。
また、割当部405は、CPU数Yがスレッド数mk以上の場合(第2の判定処理)、第2の応答通知リスト600を参照して、余剰計算能力が大きいCPUから順に、アプリケーションAPkの高負荷のスレッドを割り当てることにしてもよい。
具体的には、例えば、割当部405が、スレッド負荷情報700を参照して、余剰計算能力が大きいCPUから順に、高負荷のスレッド(高:t3→t2→t5→t4→t1:低)をそれぞれ割り当てる。これにより、余剰計算能力が最小負荷Lkmin以上のCPUの中から余剰計算能力が高いCPU#jを優先的に選択して高負荷のスレッドを割り当てることができる。
一方、割当部405は、CPU数Yがスレッド数mk未満の場合(第2の判定処理)、アプリケーションAPkに含まれるスレッド群を、CPU#2〜CPU#Nにランダムに割り当てる。この際、割当部405は、第2の応答通知リスト600を参照して、第2の応答通知があったCPUを優先的に選択して、アプリケーションAPkのスレッドを割り当てることにしてもよい。
これにより、CPU#2〜CPU#Nの中から余剰計算能力が最小負荷Lkmin以上のCPU#jを優先的に選択して、アプリケーションAPkに含まれるスレッドを割り当てることができる。
さらに、割当部405は、優先的に選択した第2の応答通知があったCPUに、アプリケーションAPkの高負荷のスレッドを割り当てることにしてもよい。これにより、余剰計算能力が最小負荷Lkmin以上のCPU#jに高負荷のスレッドを割り当てることができる。
<スケジューリング方法3>
つぎに、マスタCPU(CPU#1)のスケジューリング方法3について説明する。スケジューリング方法3は、後述する第3の判定処理の判定結果に基づいて、アプリケーションAPkに含まれるスレッド群の割り当てを行うものである。
判定部404は、上述した一定時間T経過後において、CPU数Xがスレッド数mk未満の場合(第1の判定処理)、CPU数Yが、スレッド数mkからCPU数Xを減算した値以上となったか否かを判定する(以下、「第3の判定処理」という)。なお、以下の説明では、スレッド数mkからCPU数Xを減算した値を「残余のスレッド数(mk−X)」という。
割当部405は、CPU数Yが残余のスレッド数(mk−X)以上の場合(第3の判定処理)、CPU#2〜CPU#Nのうち第1の応答通知リスト500内の割当フラグが「0」のCPUを優先的に選択して、アプリケーションAPkのスレッドを割り当てる。この際、割当部405は、優先的に選択したCPUにアプリケーションAPkの高負荷のスレッドを割り当てることにしてもよい。
つぎに、割当部405は、第2の応答通知リスト600を参照して、第2の応答通知があったCPUに、アプリケーションAPkのスレッド群のうち割り当てられていない残余のスレッドを割り当てる。この際、割当部405は、余剰計算能力が大きいCPUから順に、高負荷のスレッドを割り当てることにしてもよい。
これにより、CPU#2〜CPU#Nの中から余剰計算能力が最大負荷Lkmax以上のCPU#jを優先的に選択して、アプリケーションAPkのスレッドを割り当てることができる。さらに、残余のスレッドを、余剰計算能力が最小負荷Lkmin以上のCPU#jに割り当てることができる。
一方、割当部405は、CPU数Yが残余のスレッド数(mk−X)未満の場合(第3の判定処理)、CPU#2〜CPU#Nのうち第1の応答通知リスト500内の割当フラグが「0」のCPUを優先的に選択して、アプリケーションAPkのスレッドを割り当てる。
つぎに、割当部405は、第2の応答通知リスト600を参照して、第2の応答通知があったCPUを優先的に選択して、割り当てられていない残余のスレッドを割り当てる。そして、割当部405は、割り当てられていない残余のスレッドを、CPU#2〜CPU#Nにランダムに割り当てる。
これにより、CPU#2〜CPU#Nの中から余剰計算能力が最大負荷Lkmax以上のCPU#jを優先的に選択して、アプリケーションAPkのスレッドを割り当てることができる。さらに、余剰計算能力が最小負荷Lkmin以上のCPU#jを優先的に選択して残余のスレッドを割り当てることができる。すなわち、アプリケーションAPkのスレッド群を、CPU#2〜CPU#Nのうちできるだけ余剰計算能力が高いCPU#jに割り当てることができる。
なお、上記判定部404は、通知部403によるアプリケーションAPkのスレッドの最小負荷Lkminおよび最大負荷Lkmaxのブロードキャストに先立って、第1の応答通知リスト500を参照して、第1の判定処理を実行することにしてもよい。すなわち、判定部404は、アプリケーションAPkよりも前に割り当てられたアプリケーションAPr(r≠k)に関する第1の応答通知を利用して、アプリケーションAPkの第1の判定処理を実行する。
具体的には、例えば、まず、判定部404は、前回割り当てられたアプリケーションAPrのスレッドの最大負荷Lrmaxが、新たなアプリケーションAPkのスレッドの最大負荷Lkmax以上か否かを判定する。なお、前回割り当てられたアプリケーションAPrのスレッドの最大負荷Lrmaxは、例えば、第1の応答通知リスト500から特定される。
ここで、最大負荷Lrmaxが最大負荷Lkmax以上の場合、判定部404は、第1の応答通知リスト500を参照して、割当フラグが「0」のCPU情報を計数することによりCPU数Xを算出する。そして、判定部404は、算出したCPU数Xが、アプリケーションAPkに含まれるスレッド数mk以上か否かを判定する。
これにより、アプリケーションAPkのスレッドの最小負荷Lkminおよび最大負荷Lkmaxを、CPU#2〜CPU#Nにブロードキャストすることなく、第1の判定処理を行うことができる。
ただし、最大負荷Lrmaxが最大負荷Lkmax未満の場合は、通知部403により、アプリケーションAPkのスレッドの最小負荷Lkminおよび最大負荷Lkmaxを、CPU#2〜CPU#Nにブロードキャストすることになる。同様に、CPU数Xがスレッド数mk未満の場合は、通知部403により、アプリケーションAPkのスレッドの最小負荷Lkminおよび最大負荷Lkmaxを、CPU#2〜CPU#Nにブロードキャストすることになる。
(スレーブCPUの機能的構成例)
つぎに、スレーブCPU(CPU#2〜CPU#N)の機能的構成例について説明する。図8は、実施の形態にかかるスレーブCPUの機能的構成を示すブロック図である。図8において、スレーブCPUは、受付部801と、判定部802と、通知部803と、を含む構成である。この制御部となる機能(受付部801〜通知部803)は、具体的には、例えば、メモリ101に記憶されたプログラムを各CPU#2〜CPU#Nに実行させることにより、その機能を実現する。なお、各機能部の処理結果は、例えば、各CPU#2〜CPU#Nのレジスタ、1次キャッシュ201−2〜201−N、2次キャッシュ203およびメモリ101などの記憶装置に記憶される。
受付部801は、アプリケーションAPkの実行のためのCPUの計算能力に関する閾値をCPU#1から受け付ける。具体的には、例えば、受付部801が、アプリケーションAPkのスレッドの最小負荷Lkminおよび最大負荷LkmaxをCPU#1から受け付ける。
判定部802は、自CPUの計算能力が、受け付けられたアプリケーションAPkの実行のためのCPUの計算能力に関する閾値以上か否かを判定する。具体的には、例えば、判定部802が、自CPUの余剰計算能力が、アプリケーションAPkのスレッドの最大負荷Lkmax以上か否かを判定する。また、判定部802が、自CPUの余剰計算能力が、アプリケーションAPkのスレッドの最小負荷Lkmin以上か否かを判定する。
通知部803は、自CPUの計算能力がアプリケーションAPkの実行のためのCPUの計算能力に関する閾値以上の場合、アプリケーションAPkを実行できる旨の応答をCPU#1に通知する。具体的には、例えば、自CPUの余剰計算能力が最大負荷Lkmax以上の場合、通知部803が、第1の応答通知をCPU#1に通知する。
また、自CPUの余剰計算能力が最小負荷Lkmin以上の場合、通知部803が、第2の応答通知をCPU#1に通知する。この際、通知部803が、自CPUの余剰計算能力を含む第2の応答通知をCPU#1に通知することにしてもよい。
(マスタCPUの割当処理手順)
つぎに、マスタCPU(CPU#1)の割当処理手順について説明する。ここでは、上述したスケジューリング方法1とスケジューリング方法2とを組み合わせた場合のマスタCPU(CPU#1)の割当処理手順について説明する。
図9は、実施の形態にかかるマスタCPUの割当処理手順の一例を示すフローチャートである。図9のフローチャートにおいて、まず、CPU#1により、新たなアプリケーションAPkの起動要求を受け付けたか否かを判断する(ステップS901)。ここで、CPU#1により、起動要求を受け付けるのを待つ(ステップS901:No)。
そして、CPU#1により、起動要求を受け付けた場合(ステップS901:Yes)、アプリケーションテーブル300の中から、起動要求に含まれるアプリケーションAPkのアプリIDに対応するアプリ情報300−kを読み出す(ステップS902)。
つぎに、CPU#1により、第1の応答通知リスト500を参照して、前回割り当てられたアプリケーションAPrのスレッドの最大負荷Lrmaxが、新たなアプリケーションAPkのスレッドの最大負荷Lkmax以上か否かを判定する(ステップS903)。
ここで、最大負荷Lrmaxが最大負荷Lkmax未満の場合(ステップS903:No)、CPU#1により、アプリケーションAPkのスレッドの最小負荷Lkminおよび最大負荷Lkmaxを、CPU#2〜CPU#Nにブロードキャストする(ステップS904)。なお、スレッドの最小負荷Lkminおよび最大負荷Lkmaxは、ステップS902において読み出したアプリ情報300−kから特定される。
このあと、CPU#1により、CPU#jから第1の応答通知または第2の応答通知を受け付けたか否かを判断する(ステップS905)。ここで、CPU#1により、第1の応答通知または第2の応答通知を受け付けていない場合(ステップS905:No)、ステップS909に移行する。
一方、CPU#1により、第1の応答通知または第2の応答通知を受け付けた場合(ステップS905:Yes)、第1の応答通知リスト500内の割当フラグが「0」のCPU情報を計数することで第1の応答通知があったCPU数Xを算出する(ステップS906)。そして、CPU#1により、算出したCPU数Xが、アプリケーションAPkに含まれるスレッド数mk以上か否かを判定する(ステップS907)。
ここで、CPU数Xがスレッド数mk以上の場合(ステップS907:Yes)、CPU#1により、第1の応答通知リスト500内の割当フラグが「0」のCPUに、アプリケーションAPkのスレッド群をランダムに割り当てて(ステップS908)、本フローチャートによる一連の処理を終了する。
また、ステップS907において、CPU数Xがスレッド数mk未満の場合(ステップS907:No)、CPU#1により、最小負荷Lkminおよび最大負荷Lkmaxをブロードキャストしてから一定時間T経過したか否かを判断する(ステップS909)。ここで、一定時間T経過していない場合(ステップS909:No)、ステップS905に戻る。
一方、一定時間T経過した場合(ステップS909:Yes)、CPU#1により、第2の応答通知リスト600内のCPU情報を計数することで第2の応答通知があったCPU数Yを算出する(ステップS910)。そして、CPU#1により、算出したCPU数Yが、アプリケーションAPkに含まれるスレッド数mk以上となったか否かを判定する(ステップS911)。
ここで、CPU数Yがスレッド数mk以上の場合(ステップS911:Yes)、CPU#1により、第2の応答通知リスト600内の余剰計算能力が大きいCPUから順に高負荷のスレッドを割り当てて(ステップS912)、本フローチャートによる一連の処理を終了する。
一方、CPU数Yがスレッド数mk未満の場合(ステップS911:No)、CPU#1により、アプリケーションAPkのスレッド群をCPU#2〜CPU#Nにランダムに割り当てて(ステップS913)、本フローチャートによる一連の処理を終了する。
また、ステップS903において、最大負荷Lrmaxが最大負荷Lkmax以上の場合(ステップS903:Yes)、CPU#1により、第1の応答通知リスト500内の割当フラグが「0」のCPU情報を計数してCPU数Xを算出する(ステップS914)。
そして、CPU#1により、算出したCPU数Xが、アプリケーションAPkに含まれるスレッド数mk以上か否かを判定する(ステップS915)。ここで、CPU数Xがスレッド数mk以上の場合(ステップS915:Yes)、ステップS908に移行する。一方、CPU数Xがスレッド数mk未満の場合(ステップS915:No)、ステップS904に移行する。
これにより、CPU#2〜CPU#Nの中から第1の応答通知があったCPU#jを優先的に選択して、アプリケーションAPkのスレッドを割り当てることができる。また、CPU#2〜CPU#Nの中から第2の応答通知があったCPU#jを優先的に選択して、アプリケーションAPkのスレッドを割り当てることができる。
なお、ステップS903において、前回割り当てられたアプリケーションAPrが存在しない場合は、ステップS904に移行する。
(スレーブCPUの判定処理手順)
つぎに、スレーブCPU(CPU#2〜CPU#N)の判定処理手順について説明する。ここでは、CPU#2〜CPU#NのうちのCPU#jを例に挙げて、スレーブCPUの判定処理手順について説明する。
図10は、実施の形態にかかるスレーブCPUの判定処理手順の一例を示すフローチャートである。図10のフローチャートにおいて、まず、CPU#jにより、アプリケーションAPkのスレッドの最小負荷Lkminおよび最大負荷LkmaxをCPU#1から受け付けたか否かを判断する(ステップS1001)。
ここで、CPU#jにより、最小負荷Lkminおよび最大負荷Lkmaxを受け付けるのを待つ(ステップS1001:No)。そして、CPU#jにより、最小負荷Lkminおよび最大負荷Lkmaxを受け付けた場合(ステップS1001:Yes)、自CPUの余剰計算能力が、アプリケーションAPkのスレッドの最大負荷Lkmax以上か否かを判定する(ステップS1002)。
ここで、自CPUの余剰計算能力が最大負荷Lkmax以上の場合(ステップS1002:Yes)、CPU#jにより、第1の応答通知をCPU#1に通知して(ステップS1003)、本フローチャートによる一連の処理を終了する。
一方、自CPUの余剰計算能力が最大負荷Lkmax未満の場合(ステップS1002:No)、CPU#jにより、自CPUの余剰計算能力が、アプリケーションAPkのスレッドの最小負荷Lkmin以上か否かを判定する(ステップS1004)。
ここで、自CPUの余剰計算能力が最小負荷Lkmin以上の場合(ステップS1004:Yes)、CPU#jにより、第2の応答通知をCPU#1に通知して(ステップS1005)、本フローチャートによる一連の処理を終了する。一方、自CPUの余剰計算能力が最小負荷Lkmin未満の場合(ステップS1004:No)、本フローチャートによる一連の処理を終了する。
これにより、自CPUの余剰計算能力が最大負荷Lkmax以上の場合に第1の応答通知をCPU#1に通知することができる。また、自CPUの余剰計算能力が最小負荷Lkmin以上の場合に第2の応答通知をCPU#1に通知することができる。
以上説明した実施の形態にかかるマルチコアシステム100によれば、CPU#1からCPU#jにアプリケーションAPkのスレッドの最大負荷Lkmaxを通知して、最大負荷Lkmaxのスレッドの実行可否をCPU#jに判定させることができる。また、マルチコアシステム100によれば、CPU#2〜CPU#Nの中から第1の応答通知があったCPU#jを優先的に選択して、アプリケーションAPkのスレッドを割り当てることができる。これにより、アプリケーションAPkのスレッドを、余剰計算能力が最大負荷Lkmax以上のCPU#jに割り当てることができる。
また、マルチコアシステム100によれば、CPU#1からCPU#jにアプリケーションAPkのスレッドの最小負荷Lkminを通知して、最小負荷Lkminのスレッドの実行可否をCPU#jに判定させることができる。また、マルチコアシステム100によれば、CPU#2〜CPU#Nの中から第2の応答通知があったCPU#jを優先的に選択して、アプリケーションAPkのスレッドを割り当てることができる。これにより、アプリケーションAPkのスレッドを、余剰計算能力が最小負荷Lkmin以上のCPU#jに割り当てることができる。
また、マルチコアシステム100によれば、まず、第1の応答通知があったCPUを選択してアプリケーションAPkのスレッドを割り当て、つぎに、第2の応答通知があったCPUを選択して残余のスレッドを割り当てることができる。これにより、アプリケーションAPkのスレッドをできるだけ余剰計算能力が高いCPU#jに割り当てることができ、負荷分散の適正化を図ることができる。
また、マルチコアシステム100によれば、できるだけ余剰計算能力が高いCPU#jに高負荷のスレッドを割り当てることにより、負荷分散の適正化を図ることができる。
また、マルチコアシステム100によれば、前回割り当てたアプリケーションAPrの最大負荷Lrmaxのスレッドを実行できる旨の第1の応答通知があったCPU#jを優先的に選択して、アプリケーションAPkのスレッドを割り当てることができる。この際、アプリケーションAPrの最大負荷LrmaxがアプリケーションAPkの最大負荷Lkmax以上の場合に、CPU#1が前回第1の応答通知があったCPU#jを優先的に選択する。これにより、アプリケーションAPkのスレッドの最大負荷Lkmaxをブロードキャストすることなく、余剰計算能力が最大負荷Lkmax以上のCPU#jを選択でき、通信コスト(通信量、通信処理)を削減することができる。
これらのことから、スケジューリング方法およびスケジューリングシステムによれば、新たに起動されたアプリケーションのスケジューリングを効率的に行うことができる。この結果、スケジューリングにかかる処理時間や通信時間が性能ボトルネックとなることを防いで、スケジューリングシステムの高性能化を図ることができる。
なお、本実施の形態で説明したスケジューリング方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本スケジューリングプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本スケジューリングプログラムは、インターネット等のネットワークを介して配布してもよい。
100 マルチコアシステム
101 メモリ
300 アプリケーションテーブル
401,801 受付部
402 読出部
403,803 通知部
404,802 判定部
405 割当部
500 第1の応答通知リスト
600 第2の応答通知リスト
700 スレッド負荷情報
#1〜#N CPU

Claims (12)

  1. 第1アプリケーションの起動時に第1CPUが前記第1アプリケーションの実行のための第1閾値を取得し、
    前記第1CPUが前記第1閾値を第2CPUに送信し、
    前記第2CPUの実行能力が前記第1閾値以上であるときは前記第2CPUは前記第1CPUに前記第1アプリケーションを実行できる旨を通知し、
    前記第2CPUの実行能力が前記第1閾値よりも小さいときは前記第2CPUは前記第1CPUへの通知を行わないこと
    を特徴とするスケジューリング方法。
  2. 前記第1CPUは、前記第1閾値以上の実行能力を有するCPUの数が前記第1アプリケーションで生成されるスレッドの数未満であるとき、前記第1閾値を前記第2CPUに送信すること
    を特徴とする請求項1に記載のスケジューリング方法。
  3. 前記第1CPUは、前記第1閾値が第2アプリケーションの起動時に取得した第2閾値以上であるときは、前記第1閾値を前記第2CPUに送信すること
    を特徴とする請求項1または請求項2に記載のスケジューリング方法。
  4. 前記第1閾値が前記第2CPUに送信されないとき、前記第1CPUは前記第1アプリケーションをCPUにランダムに割り当てること
    を特徴とする請求項1乃至請求項3の何れか一に記載のスケジューリング方法。
  5. 前記第2CPUの実行能力が前記第1閾値より大きいとき前記第2CPUは前記第1CPUに前記第1アプリケーションを実行する旨を通知し、
    前記第2CPUの実行能力が前記第1閾値より小さいときに前記実行能力を第3閾値と比較すること
    を特徴とする請求項1乃至請求項4の何れか一に記載のスケジューリング方法。
  6. 前記第1閾値は前記第1アプリケーションの実行のための最大能力に対応し、
    前記第3閾値は前記第1アプリケーションの実行のための最小能力に対応すること
    を特徴とする請求項5に記載のスケジューリング方法。
  7. 前記第1閾値の通知から所定期間経過後に、前記第3閾値以上の実行能力を有する第3CPUの数が前記第1アプリケーションで生成されるスレッドの数以上であるとき、前記第3CPUの内の実行能力の大きいCPUに前記第1アプリケーションを割り当てること
    を特徴とする請求項5または請求項6に記載のスケジューリング方法。
  8. 前記第3閾値以上の実行能力を有する第3CPUの数が前記第1アプリケーションで生成されるスレッドの数より少ないとき、前記第1アプリケーションをCPUにランダムに割り当てること
    を特徴とする請求項5または請求項6に記載のスケジューリング方法。
  9. 第1アプリケーションの実行のための第1閾値を格納するメモリと、
    前記第1アプリケーションの起動時に前記第1閾値を取得する第1CPUと、
    実行能力が前記第1CPUから供給される前記第1閾値以上であるときは前記第1CPUに前記第1アプリケーションを実行できる旨を通知し、前記実行能力が前記第1閾値よりも小さいときは前記第1CPUに通知しない第2CPUと
    を含むことを特徴とするスケジューリングシステム。
  10. 前記第1CPUは、前記第1閾値以上の実行能力を有するCPUの数が前記第1アプリケーションで生成されるスレッドの数未満であるとき、前記第1閾値を前記第2CPUに送信すること
    を特徴とする請求項9に記載のスケジューリングシステム。
  11. 前記第1CPUは、前記第1閾値が第2アプリケーションの起動時に取得した第2閾値以上であるときは、前記第1閾値を前記第2CPUに送信すること
    を特徴とする請求項9または請求項10に記載のスケジューリングシステム。
  12. 前記第2CPUは、前記第2CPUの実行能力が前記第1閾値より大きいとき前記第1CPUに前記第1アプリケーションを実行する旨を通知し、前記第2CPUの実行能力が前記第1閾値より小さいときに前記実行能力を第3閾値と比較すること
    を特徴とする請求項9乃至請求項11の何れか一に記載のスケジューリングシステム。
JP2013503286A 2011-03-08 2011-03-08 スケジューリング方法およびスケジューリングシステム Expired - Fee Related JP5790758B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/055416 WO2012120655A1 (ja) 2011-03-08 2011-03-08 スケジューリング方法およびスケジューリングシステム

Publications (2)

Publication Number Publication Date
JPWO2012120655A1 true JPWO2012120655A1 (ja) 2014-07-07
JP5790758B2 JP5790758B2 (ja) 2015-10-07

Family

ID=46797658

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013503286A Expired - Fee Related JP5790758B2 (ja) 2011-03-08 2011-03-08 スケジューリング方法およびスケジューリングシステム

Country Status (3)

Country Link
US (1) US9384050B2 (ja)
JP (1) JP5790758B2 (ja)
WO (1) WO2012120655A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019071026A (ja) * 2017-10-11 2019-05-09 日本電信電話株式会社 計算機およびcpuコア割当方法
JP2019179415A (ja) * 2018-03-30 2019-10-17 株式会社デンソー マルチコアシステム

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5467172B1 (ja) * 2013-09-18 2014-04-09 オリバー カルトシュタイン 情報処理システム、および情報処理方法
CN106354561B (zh) * 2016-08-24 2020-01-24 禄可科技集团有限公司 移动终端运行内存的控制方法及移动终端
JP6757708B2 (ja) * 2017-10-31 2020-09-23 株式会社日立製作所 情報処理装置及び構成要素の管理方法
KR102641520B1 (ko) * 2018-11-09 2024-02-28 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 태스크 스케줄링 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6227856A (ja) * 1985-07-30 1987-02-05 Agency Of Ind Science & Technol 負荷分散装置
JPH07152698A (ja) * 1993-11-30 1995-06-16 Fuji Xerox Co Ltd ローカル・エリア・ネットワーク
JPH09212467A (ja) 1996-01-30 1997-08-15 Fujitsu Ltd 負荷分散制御システム
JP2000268012A (ja) 1999-03-12 2000-09-29 Nec Corp クライアントサーバシステムにおけるサーバ負荷の分散方法ならびに装置
US20050188087A1 (en) 2002-05-28 2005-08-25 Dai Nippon Printing Co., Ltd. Parallel processing system
JP2005284966A (ja) 2004-03-30 2005-10-13 Nec Corp 情報処理システム及び情報記録媒体
US20090119673A1 (en) * 2007-11-06 2009-05-07 Credit Suisse Securities (Usa) Llc Predicting and managing resource allocation according to service level agreements
US7801994B2 (en) * 2007-11-29 2010-09-21 Hitachi, Ltd. Method and apparatus for locating candidate data centers for application migration
US9106591B2 (en) * 2009-12-24 2015-08-11 Delphix Corporation Adaptive resource management using survival minimum resources for low priority consumers

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019071026A (ja) * 2017-10-11 2019-05-09 日本電信電話株式会社 計算機およびcpuコア割当方法
JP2019179415A (ja) * 2018-03-30 2019-10-17 株式会社デンソー マルチコアシステム

Also Published As

Publication number Publication date
JP5790758B2 (ja) 2015-10-07
WO2012120655A1 (ja) 2012-09-13
US9384050B2 (en) 2016-07-05
US20140007131A1 (en) 2014-01-02

Similar Documents

Publication Publication Date Title
Praveenchandar et al. RETRACTED ARTICLE: Dynamic resource allocation with optimized task scheduling and improved power management in cloud computing
US9442760B2 (en) Job scheduling using expected server performance information
JP5790758B2 (ja) スケジューリング方法およびスケジューリングシステム
JP6294586B2 (ja) 命令スレッドを組み合わせた実行の管理システムおよび管理方法
Li et al. Feedback dynamic algorithms for preemptable job scheduling in cloud systems
US8381215B2 (en) Method and system for power-management aware dispatcher
US20160210174A1 (en) Hybrid Scheduler and Power Manager
US9875139B2 (en) Graphics processing unit controller, host system, and methods
CN109564528B (zh) 分布式计算中计算资源分配的系统和方法
US11467874B2 (en) System and method for resource management
KR20110075297A (ko) 병렬도를 고려한 병렬 처리 장치 및 방법
WO2020125396A1 (zh) 一种共享数据的处理方法、装置及服务器
Kao et al. Data-locality-aware mapreduce real-time scheduling framework
CN111104219A (zh) 虚拟核心与物理核心的绑定方法、装置、设备及存储介质
CN111459622B (zh) 调度虚拟cpu的方法、装置、计算机设备和存储介质
JP2008226023A (ja) ジョブ割当装置、及びジョブ割当方法
US20150212859A1 (en) Graphics processing unit controller, host system, and methods
CN113254179A (zh) 基于高响应比的作业调度方法、系统、终端、存储介质
JP5737298B2 (ja) スケジューリング方法およびスケジューリングシステム
JP2010191567A (ja) 情報管理装置及び情報管理方法等
CN115629854A (zh) 分布式任务调度方法、系统、电子设备和存储介质
JP5447666B2 (ja) マルチプロセッサシステムおよびスケジューリング方法
Du et al. A combined priority scheduling method for distributed machine learning
US20160110221A1 (en) Scheduling system, scheduling method, and recording medium
JP2014078214A (ja) スケジュールシステム、スケジュール方法、スケジュールプログラム、及び、オペレーティングシステム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150324

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150525

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: 20150707

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150720

R150 Certificate of patent or registration of utility model

Ref document number: 5790758

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees