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

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

Info

Publication number
JPWO2012098684A1
JPWO2012098684A1 JP2012553538A JP2012553538A JPWO2012098684A1 JP WO2012098684 A1 JPWO2012098684 A1 JP WO2012098684A1 JP 2012553538 A JP2012553538 A JP 2012553538A JP 2012553538 A JP2012553538 A JP 2012553538A JP WO2012098684 A1 JPWO2012098684 A1 JP WO2012098684A1
Authority
JP
Japan
Prior art keywords
application
cpu
app
switching
assigned
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
JP2012553538A
Other languages
English (en)
Other versions
JP5737298B2 (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 JPWO2012098684A1 publication Critical patent/JPWO2012098684A1/ja
Application granted granted Critical
Publication of JP5737298B2 publication Critical patent/JP5737298B2/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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Abstract

スケジューラ(101)は、アプリ(#5)の起動通知を受け付ける。スケジューラ(101)は、アプリケーション情報テーブル(102)を参照して、CPU(#0)およびCPU(#1)に割り当てられているアプリ(#0)〜アプリ(#4)のうち、新たに起動されたアプリ(#5)と同時に実行され得るアプリを特定する。スケジューラ(101)は、マルチコアプロセッサシステム(100)内のCPU(#0)およびCPU(#1)のうち、アプリ(#5)と同時に実行され得るアプリ(#0)およびアプリ(#1)が割り当てられていないCPU(#1)を検出する。スケジューラ(101)は、アプリ(#5)をCPU(#1)に割り当てる。これにより、新たに起動されたアプリ(#5)を、アプリ(#5)と同時に実行される可能性が高いアプリ(#0)およびアプリ(#1)が割り当てられていないCPU(#1)に割り当てることができる。

Description

本発明は、スケジューリング方法およびスケジューリングシステムに関する。
近年、多くの情報機器において、高性能および低消費電力に対する要求は大きく、高性能および低消費電力化を実現するための手段として、マルチコアプロセッサを用いたシステム開発が行われるようになってきた。
関連する先行技術としては、例えば、マイクロコンピュータにおけるタスクの切り替えに関するものがある(例えば、下記特許文献1,2参照。)。また、複数のプロセッサコアの電力制御に関する技術がある(例えば、下記特許文献3参照。)。
特開2004−272894号公報 特開平10−207717号公報 特許第4413924号公報
しかしながら、従来のマルチコアプロセッサシステムでは、マルチタスク動作時に、同一CPUに頻繁に切り替えられるアプリケーションが割り当てられる場合があり、アプリケーションの切り替えにかかる時間の増大化を招くという問題があった。
本発明は、上述した従来技術による問題点を解消するため、アプリケーションの切り替えの高速化を図ることができるスケジューリング方法およびスケジューリングシステムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、複数のプロセッサを管理するスケジューラが、第1アプリケーションが起動されたときに、アプリケーション情報テーブルに基づいて、前記第1アプリケーションと同時に実行されることのない第2アプリケーションを実行するプロセッサを検出し、前記プロセッサに前記第1アプリケーションを割り当てるスケジューリング方法が提案される。
また、上述した課題を解決し、目的を達成するため、本発明の一側面によれば、複数のプロセッサを管理するスケジューラが、第1アプリケーションが起動されたときに、アプリケーション情報テーブルに基づいて、前記複数のプロセッサの少なくとも一のプロセッサで実行される第2アプリケーションを前記第1アプリケーションに切り替えるときの負荷を計算し、前記負荷に基づいて前記第1アプリケーションを実行する第1プロセッサを選択するスケジューリング方法が提案される。
また、上述した課題を解決し、目的を達成するため、本発明の一側面によれば、複数のプロセッサと、前記複数のプロセッサを管理するスケジューラと、を含み、前記スケジューラは、第1アプリケーションの起動タスクを受信したときに、アプリケーション情報テーブルに基づいて、前記複数のプロセッサの少なくとも一のプロセッサで実行される第2アプリケーションを前記第1アプリケーションに切り替えるときの負荷を計算し、前記負荷に基づいて前記第1アプリケーションを実行する第1プロセッサを選択するスケジューリングシステムが提案される。
本発明の一側面によれば、アプリケーションの切り替えの高速化を図ることができるという効果を奏する。
図1は、実施の形態にかかるスケジューリング処理の一実施例を示す説明図(その1)である。 図2は、実施の形態にかかるスケジューリング処理の一実施例を示す説明図(その2)である。 図3は、実施の形態にかかるマルチコアプロセッサシステムのシステム構成例を示す説明図である。 図4は、ユースケーステーブルの記憶内容の一例を示す説明図である。 図5は、実施の形態にかかるスケジューラの機能的構成を示すブロック図である。 図6は、割当テーブルの記憶内容の一例を示す説明図である。 図7は、アプリケーションの割当例を示す説明図である。 図8は、割当先候補コストテーブルの記憶内容の一例を示す説明図である。 図9は、マイグレーション先候補コストテーブルの記憶内容の一例を示す説明図である。 図10は、実施の形態にかかるスケジューラによるスケジューリング処理手順の一例を示すフローチャート(その1)である。 図11は、実施の形態にかかるスケジューラによるスケジューリング処理手順の一例を示すフローチャート(その2)である。 図12は、マイグレーション処理の具体的処理手順の一例を示すフローチャートである。
以下に添付図面を参照して、この発明にかかるスケジューリング方法およびスケジューリングシステムの実施の形態を詳細に説明する。本実施の形態において、スケジューリングシステムは、コアが複数搭載されたマルチコアプロセッサを含むマルチコアプロセッサシステムである。マルチコアプロセッサは、コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。ただし、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
(スケジューリング処理の一実施例)
図1および図2は、実施の形態にかかるスケジューリング処理の一実施例を示す説明図である。図1および図2において、マルチコアプロセッサシステム100は、CPU(Central Processing Unit)#0と、CPU#1と、を含むスケジューリングシステムである。
CPU#0は、OS(Operating System)#0を実行し、マルチコアプロセッサシステム100の全体の制御を司る。OS#0は、マスタOSであり、アプリケーションをどのCPUに割り当てるかを制御するスケジューラ101を備えている。また、CPU#0は、割り当てられたアプリケーションを実行する。CPU#1は、OS#1を実行し、OS#1に割り当てられたアプリケーションを実行する。OS#1は、スレーブOSである。なお、アプリ(アプリケーション)が割り当てられているCPUとアプリが割り当てられているOSとは同一の意味である。
以下、図1を用いて、新たなアプリ#5が起動された場合を例に挙げて、マルチコアプロセッサシステム100のスケジューリング処理の第1の実施例について説明する。
(1−1)スケジューラ101は、アプリ#5の起動通知を受け付ける。
(1−2)スケジューラ101は、アプリケーション情報テーブル102を参照して、CPU#0およびCPU#1に割り当てられているアプリ#0〜アプリ#4のうち、新たに起動されたアプリ#5と同時に実行され得るアプリを特定する。
ここで、アプリケーション情報テーブル102は、アプリケーションごとに、該アプリケーションと同時に実行され得る他のアプリケーション情報を含むものである。例えば、アプリ#5をゲームアプリとすると、動画再生アプリや音楽再生アプリなどは、同時に実行される可能性が低いアプリである。一方、アプリ#5を音楽再生アプリとすると、電子メールアプリやウェブブラウザなどは、上述したゲームアプリと動画再生アプリのような組合せに比べて、同時に実行される可能性が高いアプリである。
アプリケーション情報テーブル102は、音楽再生アプリと電子メールアプリのような、同時に実行される可能性が高いアプリの組合せを示す。図1の例では、アプリ#5と同時に実行され得るアプリとして、アプリ#0およびアプリ#1が特定されている。なお、アプリケーション情報テーブル102の詳細な説明は、図4を用いて後述する。
(1−3)スケジューラ101は、マルチコアプロセッサシステム100内のCPU#0およびCPU#1のうち、アプリ#5と同時に実行されることのないアプリを実行するCPUを検出する。具体的には、例えば、スケジューラ101が、CPU#0およびCPU#1のうち、アプリ#5と同時に実行され得るアプリ#0およびアプリ#1が割り当てられていないCPU#1を検出する。
(1−4)スケジューラ101は、アプリ#5をCPU#1に割り当てる。これにより、新たに起動されたアプリ#5を、アプリ#5と同時に実行される可能性が高いアプリ#0およびアプリ#1が割り当てられているCPU#0とは異なるCPU#1に割り当てることができる。
このように、実施の形態にかかるスケジューラ101によれば、同時に実行される可能性が高いアプリを異なるCPUにそれぞれ割り当てることができる。この結果、例えば、アプリ#5とアプリ#0(またはアプリ#1)との切り替えが発生した際に、アプリ#5,アプリ#0のコンテキスト情報の退避やロードが不要となるため、アプリ#5,アプリ#0間の切り替えを高速に行うことができる。
つぎに、図2を用いて、アプリ#5が起動された場合を例に挙げて、マルチコアプロセッサシステム100のスケジューリング処理の第2の実施例について説明する。
(2−1)スケジューラ101は、アプリ#5の起動通知を受け付ける。
(2−2)スケジューラ101は、アプリケーション情報テーブル102を参照して、CPU#0およびCPU#1に割り当てられているアプリ#0〜アプリ#4のうち、新たに起動されたアプリ#5と同時に実行され得るアプリを特定する。図2の例では、アプリ#5と同時に実行され得るアプリとして、アプリ#0、アプリ#1、アプリ#3およびアプリ#4が特定されている。
(2−3)スケジューラ101は、アプリケーション情報テーブル102を参照して、CPU#0およびCPU#1の少なくとも一のCPUで実行されるアプリを、新たに起動されたアプリ#5に切り替えるときの負荷を計算する。
ここで、アプリケーション情報テーブル102は、アプリケーションごとに、該アプリケーションのコンテキスト負荷情報を含むものである。コンテキスト負荷情報は、実行中の一のアプリケーションを他のアプリケーションに切り替えるときにかかる負荷に関する情報である。
具体的には、例えば、スケジューラ101が、新たに起動されたアプリ#5のコンテキスト負荷情報に基づいて、CPU#0に割り当てられているアプリ#0およびアプリ#1を、アプリ#5に切り替えるときの各々の負荷の合計を計算する。アプリ#0およびアプリ#1は、アプリ#5と同時に実行され得るアプリである。
また、スケジューラ101が、新たに起動されたアプリ#5のコンテキスト負荷情報に基づいて、CPU#1に割り当てられているアプリ#3およびアプリ#4を、アプリ#5に切り替えるときの各々の負荷の合計を計算する。アプリ#3およびアプリ#4は、アプリ#5と同時に実行され得るアプリである。
(2−4)スケジューラ101は、計算した負荷に基づいて、CPU#0およびCPU#1の中からアプリ#5を実行するCPUを選択して、アプリ#5を割り当てる。具体的には、例えば、スケジューラ101が、CPU#0およびCPU#1のうち、計算した負荷の合計が最小となるCPUを選択して、アプリ#5を割り当てる。ここでは、CPU#0が選択されて、アプリ#5が割り当てられている。
このように、実施の形態にかかるスケジューラ101によれば、アプリ間の切り替えにかかる負荷を考慮して、新たに起動されたアプリの割当先となるCPUを選択することができる。この結果、例えば、アプリ#5とアプリ#0との切り替えが発生した際の負荷を抑えることができ、アプリ間の切り替えの高速化を図ることができる。
(マルチコアプロセッサシステム300のシステム構成)
つぎに、実施の形態にかかるマルチコアプロセッサシステム300のシステム構成について説明する。なお、図1および図2に示したマルチコアプロセッサシステム100は、以下に説明するマルチコアプロセッサシステム300の一例である。
図3は、実施の形態にかかるマルチコアプロセッサシステムのシステム構成例を示す説明図である。図3において、マルチコアプロセッサシステム300は、CPU#0〜CPU#nと、1次キャッシュ301−1〜301−nと、スヌープ回路302と、2次キャッシュ303と、I/F(InterFace)304と、メモリコントローラ305と、メモリ306と、を有している。マルチコアプロセッサシステム300において、2次キャッシュ303と、I/F304と、メモリコントローラ305とは、バス320を介して接続されている。また、メモリ306は、メモリコントローラ305を介して各部と接続されている。
CPU#0は、OS#0を実行し、マルチコアプロセッサシステム300の全体の制御を司る。OS#0は、マスタOSであり、アプリケーションをどのCPUに割り当てるかを制御するスケジューラ101を備えている。また、CPU#0は、割り当てられたアプリケーションを実行する。CPU#1〜CPU#nは、それぞれOS#1〜OS#nを実行し、各OSに割り当てられたアプリケーションを実行する。OS#1〜OS#nは、スレーブOSである。
CPU#0〜CPU#nは、それぞれレジスタとコアとを有している。各レジスタには、プログラムカウンタやリセットレジスタがある。また、各CPU#0〜CPU#nは、各々の1次キャッシュ301−1〜301−nと、スヌープ回路302と、2次キャッシュ303とを介して各部に接続されている。
1次キャッシュ301−1〜301−nは、それぞれキャッシュメモリとキャッシュコントローラとを有している。例えば、1次キャッシュ301−1は、OS#0が実行するアプリケーションからメモリ306への書込処理を一時的に記憶する。1次キャッシュ301−1は、メモリ306から読み出されたデータを一時的に記憶する。
スヌープ回路302は、CPU#0〜CPU#nがアクセスする1次キャッシュ301−1〜301−nの整合性を取る。具体的には、例えば、スヌープ回路302は、1次キャッシュ301−1〜301−nの間で共有するデータがいずれかの1次キャッシュで更新された場合、該更新を検出して、他の1次キャッシュを更新する。
2次キャッシュ303は、キャッシュメモリとキャッシュコントローラとを有している。2次キャッシュ303では、各1次キャッシュ301−1〜301−nから追い出されたデータを記憶する。具体的には、例えば、2次キャッシュ303は、OS#0〜OS#nで共有するデータを記憶する。
I/F304は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークに接続され、ネットワークを介して他の装置に接続される。そして、I/F304は、ネットワークと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F304には、例えば、モデムやLANアダプタなどを採用することができる。
メモリコントローラ305は、メモリ306に対するデータのリード/ライトを制御する。メモリ306は、CPU#0〜CPU#nに共有されるメモリである。メモリ306は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有している。
より具体的には、例えば、フラッシュROMが各OSのプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU#0〜CPU#nのワークエリアとして使用される。メモリ306に記憶されているプログラムは、各CPUにロードされることで、コーディングされている処理を該各CPUに実行させることになる。
ファイルシステム307は、例えば、アプリケーションの命令コードや、画像および映像などのコンテンツデータを記憶している。ファイルシステム307は、例えば、ハードディスクや光ディスクなどの補助記憶装置により実現される。なお、図示は省略するが、マルチコアプロセッサシステム300は、各部に電源電圧を供給するPMU(Power Management Unit)のほか、ディスプレイやキーボードなどを有することにしてもよい。
(ユースケーステーブル400の記憶内容)
つぎに、図3に示したスケジューラ101が用いるユースケーステーブル400について説明する。ユースケーステーブル400は、図1および図2に示したアプリケーション情報テーブル102に相当する。ユースケーステーブル400は、例えば、1次キャッシュ301−1、2次キャッシュ303、メモリ306などに記憶されている。
図4は、ユースケーステーブルの記憶内容の一例を示す説明図である。図4において、ユースケーステーブル400は、アプリ名、コンテキストコスト、同時実行アプリおよび期待値のフィールドを有する。各フィールドに情報を設定することで、アプリごとのアプリケーション情報(例えば、アプリケーション情報400−1〜400−6)がレコードとして記憶されている。
アプリ名は、アプリを識別する名称である。コンテキストコストは、アプリのコンテキストスイッチにかかる負荷を表す指標値であり、例えば、アプリの起動や停止にかかる時間によって表される。より具体的には、例えば、コンテキストコストは、アプリのコンテキスト情報のメモリ306への退避(または、メモリ306からのロード)にかかる時間によって表される。なお、コンテキスト情報とは、各CPUのプログラムカウンタの値や、関数内の変数の値を格納する汎用レジスタの値などの情報である。
同時実行アプリは、各アプリと同時に実行される可能性が高いアプリを識別する情報である。期待値は、各アプリが同時実行アプリに切り替わる割合を示すものであり、例えば、各アプリを1回実行している間に、該アプリが同時実行アプリに切り替わる割合によって表されている。
一例として、アプリケーション情報400−1を例に挙げると、アプリ#0のコンテキストコスト『100[us]』が示されている。すなわち、アプリ#0のコンテキスト情報の退避(または、ロード)にかかる時間は100[us]である。また、アプリ#0の同時実行アプリ『アプリ#3、アプリ#4、アプリ#5』が示されている。すなわち、アプリ#0と同時に実行される可能性が高いアプリは、アプリ#3、アプリ#4およびアプリ#5である。また、同時実行アプリごとの期待値が示されている。具体的には、例えば、アプリ#0を実行中に、アプリ#0からアプリ#3に切り替わる割合は『0.4』である。また、例えば、アプリ#0を実行中に、アプリ#0からアプリ#4に切り替わる割合は『0.6』である。また、例えば、アプリ#0を実行中に、アプリ#0からアプリ#5に切り替わる割合は『0.5』である。
なお、ユースケーステーブル400内の各アプリのコンテキストコストは、例えば、マルチコアプロセッサシステム300の設計時に、シミュレーションによって各アプリのコンテキスト情報の退避時間を測定することにより求めることにしてもよい。また、ユースケーステーブル400内の各アプリの同時実行アプリおよび期待値は、例えば、ユーザがアプリを使用するたびに、OS#0が、アプリの切り替え回数の期待値を計算して更新することにしてもよい。
なお、以下の説明において、特に指定する場合を除き、マルチコアプロセッサシステム300内のCPU#0〜CPU#nのうち任意のCPUを「CPU#i」と表記する(i=0,1,…,n)。
(スケジューラ101の機能的構成例)
つぎに、スケジューラ101の機能的構成例について説明する。図5は、実施の形態にかかるスケジューラの機能的構成を示すブロック図である。図5において、スケジューラ101は、受付部501と、特定部502と、検出部503と、割当部504と、第1の算出部505と、第2の算出部506と、第3の算出部507と、を含む構成である。各機能部(受付部501〜第3の算出部507)は、具体的には、例えば、メモリ306に記憶されたスケジューラ101をCPU#0に実行させることにより、その機能を実現する。なお、各機能部の処理結果は、例えば、CPU#0のレジスタ、1次キャッシュ301−1、2次キャッシュ303およびメモリ306などに記憶される。
受付部501は、新たなアプリ(以下、「アプリ#j」という)の起動通知を受け付ける。具体的には、例えば、受付部501が、アプリ#jの起動通知をOS#0から受け付ける。
特定部502は、ユースケーステーブル400(図4参照)を参照して、起動通知が受け付けられたアプリ#jと同時に実行され得るアプリ(以下、「アプリ#k」という)を特定する。
一例として、アプリ#5の起動通知を受け付けた場合を想定する(j=5)。この場合、特定部502が、ユースケーステーブル400の中から、アプリ#5に対応するアプリケーション情報400−6を特定する。そして、特定部502が、アプリケーション情報400−6を参照して、アプリ#5と同時に実行され得るアプリ#0,アプリ#1,アプリ#3,アプリ#4を特定する。
検出部503は、マルチコアプロセッサシステム300内のCPU#0〜CPU#nの中から、新たなアプリ#jと同時に実行され得るアプリ#kが割り当てられていないCPUを検出する。具体的には、例えば、検出部503が、図6に示す割当テーブル600を参照して、アプリ#kが割り当てられていないCPUを検出する。
割当テーブル600は、CPU#0〜CPU#nにそれぞれ割り当てられているアプリ、具体的には、各CPU#0〜CPU#nの待ち行列に登録されているアプリを示す情報である。割当テーブル600は、例えば、1次キャッシュ301−1、2次キャッシュ303およびメモリ306などにより実現される。ここで、割当テーブル600について説明する。
図6は、割当テーブルの記憶内容の一例を示す説明図である。図6において、割当テーブル600には、各CPU#0〜CPU#nに割り当てられているアプリ名が示されている。CPU#0を例に挙げると、アプリ#0,アプリ#1およびアプリ#2が割り当てられている。なお、割当テーブル600の記憶内容は、各CPU#0〜CPU#nに割り当てられるアプリの変更に合わせて、その都度更新される。
図5の説明に戻り、割当部504は、検出された、新たなアプリ#jと同時に実行され得るアプリ#kが割り当てられていないCPU(以下、「CPU#A」という)にアプリ#jを割り当てる。具体的には、例えば、割当部504が、CPU#Aの待ち行列にアプリ#jを登録する。
これにより、新たなアプリ#jを、同時に実行される可能性が高いアプリ#kが割り当てられていないCPU#Aに割り当てることができる。この結果、アプリ#jとアプリ#kとの切り替えが発生した際に、アプリ#j,アプリ#kのコンテキスト情報の退避やロードが不要となるため、アプリ間の切り替えを高速に行うことができる。
第1の算出部505は、新たなアプリ#jと同時に実行され得るアプリ#kが割り当てられていないCPUが複数検出された場合、検出された各CPUの負荷を算出する。具体的には、例えば、第1の算出部505が、検出された各CPUに割り当てられているアプリの数や各アプリの実行時間に基づいて、該各CPUの負荷を算出する。より具体的には、例えば、第1の算出部505が、検出された各CPUに割り当てられているアプリの数を、該各CPUの負荷として算出することにしてもよい。
また、割当部504は、算出された各CPUの負荷に基づいて、検出された複数のCPUの中から、新たなアプリ#jの割当先となるCPU#Aを選択する。具体的には、例えば、割当部504が、検出された複数のCPUの中から、算出された負荷が最小となるCPU#Aを選択する。そして、割当部504は、選択したCPU#Aにアプリ#jを割り当てる。
これにより、新たなアプリ#jを、同時に実行される可能性が高いアプリ#kが割り当てられていないCPUのうち、負荷が最小のCPU#Aに割り当てることができる。この結果、アプリ間の切り替えを高速に行うとともに、CPU#0〜CPU#nに負荷を分散してシステム全体の性能を向上させることができる。
第2の算出部506は、新たなアプリ#jと同時に実行され得るアプリ#kが割り当てられていないCPUが検出されなかった場合、新たなアプリ#jと、CPU#iに割り当てられているアプリ#kとを切り替えるときの負荷(以下、「切替コスト」という)を算出する。
具体的には、例えば、第2の算出部506が、CPU#iに割り当てられているアプリ#kのコンテキストの切替時間と、該アプリ#kと新たなアプリ#jとの切替回数の期待値とに基づいて、切替コストを算出する。ここで、アプリ#kのコンテキストの切替時間は、ユースケーステーブル400内の「コンテキストコスト」に相当する。また、アプリ#jとアプリ#kとの切替回数の期待値は、ユースケーステーブル400内の「期待値」に相当する。
より具体的には、例えば、第2の算出部506が、ユースケーステーブル400を参照して、CPU#iに割り当てられているアプリ#kのコンテキストコストと、アプリ#kがアプリ#jに切り替わる割合を示す期待値とを乗算して切替コストを算出する。ここで、上記切替コストは、CPU#iに割り当てられているアプリ#kごとに算出される。
そこで、第2の算出部506は、CPU#iに割り当てられているアプリ#kごとの切替コストを加算して、アプリ#kごとの切替コストの合計を表すコスト(以下、「合計コストSi」という)を算出することにしてもよい。なお、第2の算出部506の具体的な処理内容については、図7および図8を用いて後述する。
また、割当部504は、算出された各CPU#iのアプリ#kごとの切替コストに基づいて、CPU#0〜CPU#nの中から、新たなアプリ#jの割当先となるCPUを選択する。具体的には、例えば、割当部504が、算出されたCPU#0〜CPU#nごとの合計コストS0〜Snに基づいて、新たなアプリ#jの割当先となるCPUを選択することにしてもよい。
より具体的には、例えば、まず、割当部504が、CPU#0〜CPU#nごとの合計コストS0〜Snの中から、最小の合計コスト(以下、「合計コストSmin」という)を特定する。そして、割当部504が、CPU#0〜CPU#nの中から、合計コストSminのCPU(以下、「CPU#B」という)を選択する。そして、割当部504は、選択したCPU#Bにアプリ#jを割り当てる。
これにより、新たに起動されたアプリ#jの割り当てにともなって発生するアプリ間の切り替えにかかる負荷が最小となるCPU#Bに、アプリ#jを割り当てることができる。この結果、アプリ#j,#k間の切り替えが発生しにくく、たとえアプリ#j,#k間の切り替えが発生してもコンテキストスイッチにかかる時間が短いCPU#Bにアプリ#jを割り当てることができ、アプリ間の切り替えの高速化を図ることができる。
第3の算出部507は、新たに起動されたアプリ#jと同時に実行され得るアプリ#kと、CPU#iに割り当てられているアプリ#mとを切り替えるときの切替コストを算出する。ここで、アプリ#mは、例えば、アプリ#kと同時に実行され得るアプリである。
具体的には、例えば、第3の算出部507が、アプリ#jがCPU#Bに割り当てられた結果、CPU#Bに割り当てられているアプリ#kと、CPU#Bとは異なるCPU#iに割り当てられているアプリ#mとを切り替えるときの切替コストを算出する。
より具体的には、例えば、第3の算出部507が、ユースケーステーブル400を参照して、CPU#iに割り当てられているアプリ#mのコンテキストコストと、アプリ#mがアプリ#kに切り替わる割合を示す期待値とを乗算して切替コストを算出する。ここで、上記切替コストは、CPU#i(ただし、i≠B)に割り当てられているアプリ#mごとに算出される。
そこで、第3の算出部507は、CPU#iに割り当てられているアプリ#mごとの切替コストを加算して、アプリ#mごとの切替コストの合計を表すコスト(以下、「合計コストS(i)」という)を算出することにしてもよい。なお、第3の算出部507の具体的な処理内容については、図7および図9を用いて後述する。
また、割当部504は、算出された各CPU#iのアプリ#mごとの切替コストに基づいて、CPU#0〜CPU#nの中から、CPU#Bに割り当てられているアプリ#kの割当先となるCPUを選択する。具体的には、例えば、割当部504が、算出されたCPU#iの合計コストS(i)に基づいて、CPU#Bに割り当てられているアプリ#kの割当先となるCPUを選択することにしてもよい。
より具体的には、例えば、CPU#i(ただし、i≠B)の合計コストS(i)が、上述した合計コストSmin未満の場合、割当部504が、CPU#Bに割り当てられているアプリ#kの割当先としてCPU#iを選択する。そして、割当部504は、CPU#Bに割り当てられているアプリ#kを、選択したCPU#iに移行(いわゆる、マイグレーション)する。すなわち、アプリ#kをCPU#Bから他のCPUに移行することで、アプリ間の切り替えにかかるシステム全体の負荷が少なくなる場合に、アプリ#kのマイグレーションを行う。
これにより、新たに起動されたアプリ#jと同時に実行され得るCPU#Bのアプリ#kを、アプリ#kの割り当てにともなって発生するアプリ間の切り替えにかかる合計コストS(i)が合計コストSmin未満のCPU#iに割り当てることができる。この結果、各CPU#iにおけるアプリ間の切り替えにかかる負荷を最適化することができ、システム全体の性能を向上させることができる。
また、割当部504が、CPU#Bとは異なるCPUのうち、算出された合計コストS(i)が、最小かつ合計コストSmin未満のCPU#iを、CPU#Bに割り当てられているアプリ#kの割当先として選択することにしてもよい。これにより、各CPU#iにおけるアプリ間の切り替えにかかる負荷をより最適化することができ、システム全体の性能を向上させることができる。
なお、上述した説明では、第2の算出部506は、CPU#iに割り当てられているアプリ#kのコンテキストコストと、アプリ#kがアプリ#jに切り替わる割合を示す期待値とを乗算して切替コストを算出することにしたが、これに限らない。例えば、第2の算出部506は、新たなアプリ#jのコンテキストコストと、アプリ#jがアプリ#kに切り替わる割合を示す期待値とを乗算して切替コストを算出することにしてもよい。
また、上述した説明では、第3の算出部507は、CPU#i(i≠B)に割り当てられているアプリ#mのコンテキストコストと、アプリ#mがアプリ#kに切り替わる割合を示す期待値とを乗算して切替コストを算出することにしたが、これに限らない。例えば、第3の算出部507は、CPU#i(i≠B)に割り当てられているアプリ#kのコンテキストコストと、アプリ#kがアプリ#mに切り替わる割合を示す期待値とを乗算して切替コストを算出することにしてもよい。
(第2の算出部506の具体的な処理内容)
つぎに、図7および図8を用いて、第2の算出部506の具体的な処理内容について説明する。ここでは、実施の形態にかかるマルチコアプロセッサシステム300の一例として、図1および図2に示したマルチコアプロセッサシステム100を例に挙げて説明する(n=1)。
図7は、アプリケーションの割当例を示す説明図である。図7において、マルチコアプロセッサシステム100内のCPU#0にアプリ#0,アプリ#1およびアプリ#2が割り当てられ、CPU#1にアプリ#3およびアプリ#4が割り当てられている。アプリ#5は、新たに起動されたアプリである。
ここで、アプリ#0〜アプリ#4のうち、アプリ#0,アプリ#1,アプリ#3およびアプリ#4は、新たに起動されたアプリ#5と同時に実行され得るアプリである。以下、CPU#0,CPU#1の合計コストS0,S1を算出する第2の算出部506の具体的な処理内容の一例について説明する。
・CPU#0の合計コストS0
まず、第2の算出部506は、ユースケーステーブル400を参照して、CPU#0に割り当てられているアプリ#0のコンテキストコスト『100[us]』と、アプリ#0がアプリ#5に切り替わる割合を示す期待値『0.5』とを乗算して切替コストを算出する。この結果、下記式(1)に示すように、切替コスト『50[us]』が算出される。
アプリ#0:100[us]×0.5=50[us] ・・・(1)
つぎに、第2の算出部506は、ユースケーステーブル400を参照して、CPU#0に割り当てられているアプリ#1のコンテキストコスト『1[ms]』と、アプリ#1がアプリ#5に切り替わる割合を示す期待値『0.1』とを乗算して切替コストを算出する。この結果、下記式(2)に示すように、切替コスト『100[us]』が算出される。
アプリ#1:1[ms]×0.1=100[us] ・・・(2)
そして、第2の算出部506は、CPU#0に割り当てられているアプリ#0,アプリ#1ごとの切替コストを加算して合計コストS0を算出する。ここでは、合計コストS0『150[us]』が算出される。
・CPU#1の合計コストS1
まず、第2の算出部506は、ユースケーステーブル400を参照して、CPU#1に割り当てられているアプリ#3のコンテキストコスト『500[us]』と、アプリ#3がアプリ#5に切り替わる割合を示す期待値『0.25』とを乗算して切替コストを算出する。この結果、下記式(3)に示すように、切替コスト『125[us]』が算出される。
アプリ#3:500[us]×0.25=125[us] ・・・(3)
つぎに、第2の算出部506は、ユースケーステーブル400を参照して、CPU#1に割り当てられているアプリ#4のコンテキストコスト『250[us]』と、アプリ#4がアプリ#5に切り替わる割合を示す期待値『0.3』とを乗算して切替コストを算出する。この結果、下記式(4)に示すように、切替コスト『75[us]』が算出される。
アプリ#4:250[us]×0.3=75[us] ・・・(4)
そして、第2の算出部506は、CPU#1に割り当てられているアプリ#3,アプリ#4ごとの切替コストを加算して合計コストS1を算出する。ここでは、合計コストS1『200[us]』が算出される。
算出された合計コストS0,S1は、例えば、図8に示す割当先候補コストテーブル800に記憶される。割当先候補コストテーブル800は、例えば、1次キャッシュ301−1、2次キャッシュ303およびメモリ306などにより実現される。ここで、割当先候補コストテーブル800について説明する。
図8は、割当先候補コストテーブルの記憶内容の一例を示す説明図である。図8において、割当先候補コストテーブル800は、CPU#0,CPU#1ごとの合計コストS0,S1を記憶している。上記割当部504は、例えば、割当先候補コストテーブル800を参照して、CPU#0およびCPU#1のうち、合計コストSiが最小のCPU#0にアプリ#5を割り当てる。
(第3の算出部507の具体的な処理内容)
つぎに、図7および図9を用いて、第3の算出部507の具体的な処理内容について説明する。ここでは、アプリ#5がCPU#0に割り当てられた結果、CPU#0に割り当てられているアプリ#0,アプリ#1を、CPU#1にマイグレーション(移行)するか否かを判断する場合を例に挙げて説明する。
以下、CPU#0に割り当てられているアプリ#0,アプリ#1ごとに、CPU#1に割り当てられているアプリ#mとの切り替えが行われるときの合計コストS(1)を算出する第3の算出部507の具体的な処理内容の一例について説明する。
・アプリ#0の合計コストS(1)
まず、第3の算出部507は、ユースケーステーブル400を参照して、CPU#1に割り当てられているアプリ#3のコンテキストコスト『500[us]』と、アプリ#3がアプリ#0に切り替わる割合を示す期待値『0.4』とを乗算して切替コストを算出する。この結果、下記式(5)に示すように、切替コスト『200[us]』が算出される。
アプリ#3:500[us]×0.4=200[us] ・・・(5)
つぎに、第3の算出部507は、ユースケーステーブル400を参照して、CPU#1に割り当てられているアプリ#4のコンテキストコスト『250[us]』と、アプリ#4がアプリ#0に切り替わる割合を示す期待値『0.6』とを乗算して切替コストを算出する。この結果、下記式(6)に示すように、切替コスト『150[us]』が算出される。
アプリ#4:250[us]×0.6=150[us] ・・・(6)
そして、第3の算出部507は、CPU#1に割り当てられているアプリ#3,アプリ#4ごとの切替コストを加算して合計コストS(1)を算出する。ここでは、アプリ#0の合計コストS(1)『350[us]』が算出される。
・アプリ#1の合計コストS(1)
まず、第3の算出部507は、ユースケーステーブル400を参照して、CPU#1に割り当てられているアプリ#3のコンテキストコスト『500[us]』と、アプリ#3がアプリ#1に切り替わる割合を示す期待値『0.5』とを乗算して切替コストを算出する。この結果、下記式(7)に示すように、切替コスト『250[us]』が算出される。
アプリ#3:500[us]×0.5=250[us] ・・・(7)
つぎに、第3の算出部507は、ユースケーステーブル400を参照して、CPU#1に割り当てられているアプリ#4のコンテキストコスト『250[us]』と、アプリ#4がアプリ#1に切り替わる割合を示す期待値『0.6』とを乗算して切替コストを算出する。この結果、下記式(8)に示すように、切替コスト『150[us]』が算出される。
アプリ#4:250[us]×0.6=150[us] ・・・(8)
そして、第3の算出部507は、CPU#1に割り当てられているアプリ#3,アプリ#4ごとの切替コストを加算して、アプリ#1の合計コストS(1)を算出する。ここでは、合計コストS(1)『400[us]』が算出される。
算出されたアプリ#0,アプリ#1それぞれの合計コストS(1)は、例えば、図9に示すマイグレーション先候補コストテーブル900に記憶される。マイグレーション先候補コストテーブル900は、例えば、1次キャッシュ301−1、2次キャッシュ303およびメモリ306などにより実現される。ここで、マイグレーション先候補コストテーブル900について説明する。
図9は、マイグレーション先候補コストテーブルの記憶内容の一例を示す説明図である。図9において、マイグレーション先候補コストテーブル900は、CPU#0に割り当てられているアプリ#0,アプリ#1をCPU#1に移行する場合のそれぞれの合計コストS(1)を記憶している。
上記割当部504は、マイグレーション先候補コストテーブル900を参照して、CPU#0に割り当てられているアプリ#0の割当先となるCPUを選択することにしてもよい。ここで、合計コストSminは、上述した合計コストS0『150[us]』である。このため、アプリ#0の合計コストS(1)『350[us]』は、合計コストSminより大きい。この場合、割当部504は、CPU#0に割り当てられているアプリ#0の割当先を変更しない。すなわち、アプリ#0のマイグレーションは行われない。
また、割当部504は、マイグレーション先候補コストテーブル900を参照して、CPU#0に割り当てられているアプリ#1の割当先となるCPUを選択する。ここで、アプリ#1の合計コストS(1)『400[us]』は、合計コストSminより大きい。この場合、割当部504は、CPU#0に割り当てられているアプリ#1の割当先を変更しない。すなわち、アプリ#1のマイグレーションは行われない。
(スケジューラ101によるスケジューリング処理手順)
つぎに、実施の形態にかかるスケジューラ101によるスケジューリング処理手順について説明する。
図10および図11は、実施の形態にかかるスケジューラによるスケジューリング処理手順の一例を示すフローチャートである。図10のフローチャートにおいて、まず、受付部501により、新たなアプリ#jの起動通知を受け付けたか否かを判断する(ステップS1001)。
ここで、新たなアプリ#jの起動通知を受け付けるのを待って(ステップS1001:No)、受け付けた場合(ステップS1001:Yes)、特定部502により、ユースケーステーブル400を参照して、起動通知が受け付けられたアプリ#jと同時に実行され得るアプリ#kを特定する(ステップS1002)。
つぎに、検出部503により、マルチコアプロセッサシステム300内のCPU#0〜CPU#nの中から、新たなアプリ#jと同時に実行され得るアプリ#kが割り当てられていないCPUを検出する(ステップS1003)。
このあと、割当部504により、新たなアプリ#jと同時に実行され得るアプリ#kが割り当てられていないCPUが検出されたか否かを判断する(ステップS1004)。ここで、CPUが検出されなかった場合(ステップS1004:No)、図11に示すステップS1101に移行する。
一方、CPUが検出された場合(ステップS1004:Yes)、割当部504により、複数のCPUが検出されたか否かを判断する(ステップS1005)。ここで、複数のCPUが検出されなかった場合(ステップS1005:No)、割当部504により、検出されたCPU#Aにアプリ#jを割り当てて(ステップS1006)、本フローチャートによる一連の処理を終了する。
一方、複数のCPUが検出された場合(ステップS1005:Yes)、第1の算出部505により、検出された各CPUの負荷を算出する(ステップS1007)。そして、割当部504により、検出された複数のCPUの中から、算出された負荷が最小となるCPU#Aにアプリ#jを割り当てて(ステップS1008)、本フローチャートによる一連の処理を終了する。
図11のフローチャートにおいて、まず、第2の算出部506により、CPU#iの「i」を「i=0」とする(ステップS1101)。そして、第2の算出部506により、CPU#0〜CPU#nの中からCPU#iを選択する(ステップS1102)。つぎに、第2の算出部506により、CPU#iに割り当てられているアプリの中からアプリ#kを選択する(ステップS1103)。
このあと、第2の算出部506により、新たなアプリ#jと、選択したアプリ#kとを切り替えるときの切替コストを算出する(ステップS1104)。そして、第2の算出部506により、CPU#iに割り当てられているアプリの中から選択されていない未選択のアプリ#kがあるか否かを判断する(ステップS1105)。
ここで、未選択のアプリ#kがある場合(ステップS1105:Yes)、ステップS1103に戻る。一方、未選択のアプリ#kがない場合(ステップS1105:No)、第2の算出部506により、算出したアプリ#kごとの切替コストの合計を表す合計コストSiを算出する(ステップS1106)。
つぎに、第2の算出部506により、CPU#iの「i」をインクリメントして(ステップS1107)、「i」が「n」より大きいか否かを判断する(ステップS1108)。ここで、「i」が「n」以下の場合(ステップS1108:No)、ステップS1102に戻る。
一方、「i」が「n」より大きい場合(ステップS1108:Yes)、割当部504により、CPU#0〜CPU#nごとの合計コストS0〜Snの中から、最小の合計コストSminを特定する(ステップS1109)。そして、割当部504により、CPU#0〜CPU#nのうち合計コストSminのCPU#Bにアプリ#jを割り当てる(ステップS1110)。
最後、割当部504により、CPU#Bに割り当てられているアプリ#kのマイグレーション処理を実行して(ステップS1111)、本フローチャートによる一連の処理を終了する。
これにより、新たなアプリ#jを、同時に実行される可能性が高いアプリ#kが割り当てられていないCPU#Aに割り当てることができる。また、CPU#Aが存在しない場合は、新たに起動されたアプリ#jの割り当てにともなって発生するアプリ間の切り替えにかかる負荷が最小となるCPU#Bに、アプリ#jを割り当てることができる。
つぎに、図11に示したステップS1111のマイグレーション処理の具体的な処理手順について説明する。
図12は、マイグレーション処理の具体的処理手順の一例を示すフローチャートである。図12において、まず、第3の算出部507により、CPU#Bに割り当てられているアプリの中からアプリ#kを選択する(ステップS1201)。このあと、第3の算出部507により、ユースケーステーブル400を参照して、アプリ#kと同時に実行され得るアプリ#mを特定する(ステップS1202)。
つぎに、第3の算出部507により、CPU#iの「i」を「i=0」とする(ステップS1203)。そして、第3の算出部507により、CPU#iの「i」がCPU#Bの「B」と同じか否かを判断する(ステップS1204)。ここで、CPU#iの「i」がCPU#Bの「B」と同じ場合(ステップS1204:Yes)、ステップS1211に移行する。
一方、CPU#iの「i」がCPU#Bの「B」と違う場合(ステップS1204:No)、第3の算出部507により、CPU#0〜CPU#nの中からCPU#iを選択する(ステップS1205)。そして、第3の算出部507により、CPU#iに割り当てられているアプリの中からアプリ#mを選択する(ステップS1206)。
つぎに、第3の算出部507により、アプリ#kと、選択したアプリ#mとを切り替えるときの切替コストを算出する(ステップS1207)。そして、第3の算出部507により、CPU#iに割り当てられているアプリの中から選択されていない未選択のアプリ#mがあるか否かを判断する(ステップS1208)。
ここで、未選択のアプリ#mがある場合(ステップS1208:Yes)、ステップS1206に戻る。一方、未選択のアプリ#mがない場合(ステップS1208:No)、第3の算出部507により、算出したアプリ#mごとの切替コストの合計を表す合計コストS(i)を算出する(ステップS1209)。
そして、割当部504により、CPU#iの合計コストS(i)が、図11に示したステップS1109において特定された合計コストSmin未満となるか否かを判断する(ステップS1210)。ここで、CPU#iの合計コストS(i)が合計コストSmin以上の場合(ステップS1210:No)、第3の算出部507により、CPU#iの「i」をインクリメントして(ステップS1211)、「i」が「n」より大きいか否かを判断する(ステップS1212)。
ここで、「i」が「n」以下の場合(ステップS1212:No)、ステップS1204に戻る。一方、「i」が「n」より大きい場合(ステップS1212:Yes)、ステップS1214に移行する。
また、ステップS1210において、CPU#iの合計コストS(i)が合計コストSmin未満の場合(ステップS1210:Yes)、割当部504により、CPU#Bに割り当てられているアプリ#kをCPU#iに移行する(ステップS1213)。
そして、第3の算出部507により、CPU#Bに割り当てられているアプリの中から選択されていない未選択のアプリ#kがあるか否かを判断する(ステップS1214)。ここで、未選択のアプリ#kがある場合(ステップS1214:Yes)、ステップS1201に戻る。一方、未選択のアプリ#kがない場合(ステップS1214:No)、本フローチャートによる一連の処理を終了する。
これにより、新たに起動されたアプリ#jと同時に実行され得るCPU#Bのアプリ#kを、アプリ#kの割り当てにともなって発生するアプリ間の切り替えにかかる負荷が最小となる他のCPUに割り当てることができる。
以上説明したように、実施の形態にかかるスケジューラ101によれば、新たなアプリ#jを、同時に実行される可能性が高いアプリ#kが割り当てられていないCPU#Aに割り当てることができる。この結果、アプリ#jとアプリ#kとの切り替えが発生した際に、アプリ#j,アプリ#kのコンテキスト情報の退避やロードが不要となるため、アプリ間の切り替えを高速に行うことができる。
また、スケジューラ101によれば、新たなアプリ#jを、同時に実行される可能性が高いアプリ#kが割り当てられていないCPUのうち、負荷が最小のCPU#Aに割り当てることができる。この結果、アプリ間の切り替えを高速に行うとともに、CPU#0〜CPU#nに負荷を分散してシステム全体の性能を向上させることができる。
また、スケジューラ101によれば、CPU#Aが存在しない場合は、新たに起動されたアプリ#jの割り当てにともなって発生するアプリ間の切り替えにかかる負荷が最小となるCPU#Bに、アプリ#jを割り当てることができる。この結果、アプリ#j,#k間の切り替えが発生しにくく、また、たとえアプリ#j,#k間の切り替えが発生してもコンテキストスイッチにかかる時間が短いCPU#Bにアプリ#jを割り当てることができ、アプリ間の切り替えの高速化を図ることができる。
また、スケジューラ101によれば、新たに起動されたアプリ#jと同時に実行され得るCPU#Bのアプリ#kを、アプリ#kの移行にともなって発生するアプリ間の切り替えにかかる合計コストS(i)が合計コストSmin未満のCPU#iに移行することができる。この結果、各CPU#iにおけるアプリ間の切り替えにかかる負荷を最適化することができ、システム全体の性能を向上させることができる。
また、スケジューラ101によれば、CPU#Bのアプリ#kを、アプリ#kの移行にともなって発生するアプリ間の切り替えにかかる合計コストS(i)が最小かつ合計コストSmin未満のCPU#iに移行することができる。これにより、各CPU#iにおけるアプリ間の切り替えにかかる負荷をより最適化することができ、システム全体の性能を向上させることができる。
これらのことから、本スケジューリング方法およびスケジューリングシステムによれば、高性能化および低消費電力化とともに、アプリケーションの切り替えの高速化を図ることができる。
なお、本実施の形態で説明したスケジューリング方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本スケジューリングプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本スケジューリングプログラムは、インターネット等のネットワークを介して配布してもよい。
100,300 マルチコアプロセッサシステム
101 スケジューラ
102 アプリケーション情報テーブル
400 ユースケーステーブル
501 受付部
502 特定部
503 検出部
504 割当部
505 第1の算出部
506 第2の算出部
507 第3の算出部
600 割当テーブル
800 割当先候補コストテーブル
900 マイグレーション先候補コストテーブル

Claims (10)

  1. 複数のプロセッサを管理するスケジューラが、
    第1アプリケーションが起動されたときに、アプリケーション情報テーブルに基づいて、前記第1アプリケーションと同時に実行されることのない第2アプリケーションを実行するプロセッサを検出し、
    前記プロセッサに前記第1アプリケーションを割り当てること
    を特徴とするスケジューリング方法。
  2. 前記アプリケーション情報テーブルは、
    アプリケーション毎に、前記アプリケーションのコンテキスト情報と、前記アプリケーションと同時に実行され得る他のアプリケーション情報とを含むこと
    を特徴とする請求項1に記載のスケジューリング方法。
  3. 前記第1アプリケーションと同時に実行されることのない第2アプリケーションを実行するプロセッサが複数あるときに、前記複数のプロセッサから負荷が最小であるプロセッサが前記第1アプリケーションに割り当てられること
    を特徴とする請求項1に記載のスケジューリング方法。
  4. 複数のプロセッサを管理するスケジューラが、
    第1アプリケーションが起動されたときに、アプリケーション情報テーブルに基づいて、前記複数のプロセッサの少なくとも一のプロセッサで実行される第2アプリケーションを前記第1アプリケーションに切り替えるときの負荷を計算し、
    前記負荷に基づいて前記第1アプリケーションを実行する第1プロセッサを選択すること
    を特徴とするスケジューリング方法。
  5. 前記第2アプリケーションは、前記第1アプリケーションと同時に実行され得ること
    を特徴とする請求項4に記載のスケジューリング方法。
  6. 前記アプリケーション情報テーブルは、
    アプリケーション毎に、前記アプリケーションのコンテキスト情報と、前記アプリケーションと同時に実行され得る他のアプリケーション情報とを含むこと
    を特徴とする請求項4または請求項5に記載のスケジューリング方法。
  7. 前記負荷は、前記第2アプリケーションのコンテキストの切り替え時間と、前記第2アプリケーションと前記第1アプリケーションとの切り替え回数の期待値とに基づいて算出されること
    を特徴とする請求項4乃至請求項6の何れか一に記載のスケジューリング方法。
  8. 前記少なくとも一のプロセッサは2個以上のプロセッサであり、
    前記2個以上のプロセッサで実行される第2アプリケーションを前記第1アプリケーションに切り替えるときの負荷を計算し、
    複数の前記負荷の中で最小の負荷を有するプロセッサを前記第1プロセッサとして選択すること
    を特徴とする請求項4乃至請求項7の何れか一に記載のスケジューリング方法。
  9. 前記アプリケーション情報テーブルに基づいて、前記複数のプロセッサの少なくとも一のプロセッサで実行される第3アプリケーションを前記第2アプリケーションに切り替えるときの負荷を計算し、
    前記負荷に基づいて前記第2アプリケーションを実行する第2プロセッサを選択すること
    を特徴とする請求項4乃至請求項8の何れか一に記載のスケジューリング方法。
  10. 複数のプロセッサと、
    前記複数のプロセッサを管理するスケジューラと、
    を含み、
    前記スケジューラは、
    第1アプリケーションの起動タスクを受信したときに、アプリケーション情報テーブルに基づいて、前記複数のプロセッサの少なくとも一のプロセッサで実行される第2アプリケーションを前記第1アプリケーションに切り替えるときの負荷を計算し、
    前記負荷に基づいて前記第1アプリケーションを実行する第1プロセッサを選択すること
    を特徴とするスケジューリングシステム。
JP2012553538A 2011-01-21 2011-01-21 スケジューリング方法およびスケジューリングシステム Expired - Fee Related JP5737298B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/051118 WO2012098684A1 (ja) 2011-01-21 2011-01-21 スケジューリング方法およびスケジューリングシステム

Publications (2)

Publication Number Publication Date
JPWO2012098684A1 true JPWO2012098684A1 (ja) 2014-06-09
JP5737298B2 JP5737298B2 (ja) 2015-06-17

Family

ID=46515335

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012553538A Expired - Fee Related JP5737298B2 (ja) 2011-01-21 2011-01-21 スケジューリング方法およびスケジューリングシステム

Country Status (3)

Country Link
US (1) US9588817B2 (ja)
JP (1) JP5737298B2 (ja)
WO (1) WO2012098684A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
JP6694138B2 (ja) * 2016-07-26 2020-05-13 富士通株式会社 プログラマブルロジックデバイスの制御プログラム、制御方法及び情報処理装置
JP7259380B2 (ja) * 2019-02-12 2023-04-18 日本電気株式会社 情報処理実行制御装置、情報処理実行制御システム、情報処理実行制御方法、及び、情報処理実行制御プログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3605978B2 (ja) 1997-01-17 2004-12-22 松下電器産業株式会社 マイクロコンピュータ
US7673304B2 (en) 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US20050050310A1 (en) 2003-07-15 2005-03-03 Bailey Daniel W. Method, system, and apparatus for improving multi-core processor performance
US7614055B2 (en) * 2004-06-14 2009-11-03 Alcatel-Lucent Usa Inc. Selecting a processor to run an executable of a distributed software application upon startup of the distributed software application
JP4651671B2 (ja) * 2005-08-09 2011-03-16 富士通株式会社 スケジュール制御プログラム及びスケジュール制御方法
JP4629587B2 (ja) * 2006-01-18 2011-02-09 富士通株式会社 予約管理プログラム
US7444449B2 (en) * 2006-02-09 2008-10-28 Sony Ericsson Mobile Communications Ab Method, computer program product and computer system for controlling execution of an interruption routine
JP4792358B2 (ja) * 2006-09-20 2011-10-12 富士通株式会社 資源ノード選択方法、プログラム、資源ノード選択装置および記録媒体
JP4606404B2 (ja) 2006-12-01 2011-01-05 富士通株式会社 計算資源管理プログラムおよび計算資源管理装置
WO2010010723A1 (ja) * 2008-07-22 2010-01-28 トヨタ自動車株式会社 マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法
TW201009713A (en) * 2008-08-21 2010-03-01 Ind Tech Res Inst Multitasking processor and task switch method thereof
US8005950B1 (en) * 2008-12-09 2011-08-23 Google Inc. Application server scalability through runtime restrictions enforcement in a distributed application execution system

Also Published As

Publication number Publication date
JP5737298B2 (ja) 2015-06-17
WO2012098684A1 (ja) 2012-07-26
US20130312002A1 (en) 2013-11-21
US9588817B2 (en) 2017-03-07

Similar Documents

Publication Publication Date Title
KR101366075B1 (ko) 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치
US20100115510A1 (en) Virtual graphics device and methods thereof
CN108228482B (zh) 用于管理存储系统中的缓存设备的方法和系统
US20120066688A1 (en) Processor thread load balancing manager
TWI503742B (zh) 多核心處理器系統及其排程方法
JP5737298B2 (ja) スケジューリング方法およびスケジューリングシステム
JP5692381B2 (ja) マルチコアプロセッサシステム、および制御方法
JP2007188523A (ja) タスク実行方法およびマルチプロセッサシステム
JP5790758B2 (ja) スケジューリング方法およびスケジューリングシステム
US9189279B2 (en) Assignment method and multi-core processor system
JP5321748B2 (ja) マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
US8862786B2 (en) Program execution with improved power efficiency
US20130298132A1 (en) Multi-core processor system and scheduling method
CN101131654A (zh) 用于分发分派窗内的未使用的处理器循环的方法和系统
JP5158576B2 (ja) 入出力制御システム、入出力制御方法、及び、入出力制御プログラム
US10114649B2 (en) Thermal availability based instruction assignment for execution
JP2015036959A (ja) キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
JP5776776B2 (ja) データ処理システム、およびデータ処理方法
KR20120069364A (ko) 멀티코어 환경에서 코어별 처리 능력 및 전력량을 고려한 프레임 처리장치 및 방법
JP5983623B2 (ja) タスク配置装置及びタスク配置方法
CN114371911A (zh) 虚拟机调度方法、装置、电子设备和可读存储介质
JP6524733B2 (ja) 並列演算装置、並列演算システム、およびジョブ制御プログラム
Qiao et al. An online workflow scheduling algorithm considering license limitation in heterogeneous environment
JPWO2012105000A1 (ja) プログラム実行方法
CN118245218A (zh) 缓存管理方法、缓存管理装置、处理器和电子装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150309

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150406

R150 Certificate of patent or registration of utility model

Ref document number: 5737298

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees