JP5765423B2 - マルチコアプロセッサシステム、およびスケジューリング方法 - Google Patents

マルチコアプロセッサシステム、およびスケジューリング方法 Download PDF

Info

Publication number
JP5765423B2
JP5765423B2 JP2013525502A JP2013525502A JP5765423B2 JP 5765423 B2 JP5765423 B2 JP 5765423B2 JP 2013525502 A JP2013525502 A JP 2013525502A JP 2013525502 A JP2013525502 A JP 2013525502A JP 5765423 B2 JP5765423 B2 JP 5765423B2
Authority
JP
Japan
Prior art keywords
thread
scheduling method
interrupt
cpu
cores
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.)
Expired - Fee Related
Application number
JP2013525502A
Other languages
English (en)
Other versions
JPWO2013014767A1 (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 JPWO2013014767A1 publication Critical patent/JPWO2013014767A1/ja
Application granted granted Critical
Publication of JP5765423B2 publication Critical patent/JP5765423B2/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/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
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • G06F9/4837Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority time dependent
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

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)
  • Bus Control (AREA)
  • Multi Processors (AREA)

Description

本発明は、スレッドを割り当てるデータ処理システム、およびスケジューリング方法に関する。
近年、CPU(Central Processing Unit)が1つ搭載されたコンピュータであるシングルコアプロセッサシステムに代わって、CPUが複数搭載されたコンピュータであるマルチコアプロセッサシステムをとる装置が増えている。複数のCPUに複数のスレッドを並列に割り当てることで、マルチコアプロセッサシステムは、高速にデータ処理を実行することができる。ここで、スレッドはプログラムの実行単位である。スレッドをどのCPUに割り当てるかを決定するスケジューリング方法として、たとえば、各CPUの負荷が均等になるようにスケジューリングする技術が存在する。
また、従来から、コンピュータシステムにおいて、デバイスからの割込信号に対して、CPUで実行中のスレッドを退避し、割込信号に対する割込処理を行う技術が存在する。これにより、コンピュータシステムは、デバイスからの割込信号に対する応答速度を向上させることができる。
割込処理を考慮したスケジューリング方法に関連する技術として、たとえば、割込処理を行うCPUを、実行中のスレッドの優先順位が低いCPUに決定する技術が開示されている。また、割込負荷の最も低いCPUが高優先度のプロセスを実行する技術が開示されている(たとえば、下記特許文献1〜4を参照。)。
特開2004−30663号公報 特開2006−243864号公報 特開平09−282188号公報 特開2001−331461号公報
しかしながら、上述した従来技術において、スレッドの負荷が均等になるようにスレッドを各CPUに割り当てた場合、割込が頻発するスレッドが多数割り当てられたCPUでは、スレッドの処理が遅延するという問題があった。具体的に、スレッドが実行される場合、CPUは実行モードの一つであるユーザモードで動作するが、割込処理が実行される場合、CPUはカーネルモードで動作するため、割込処理の処理時間である割込処理時間はスレッドの処理時間に含まれない。したがって、割込が頻発するスレッドが多数割り当てられたCPUでは、スレッドの処理が進みにくくなり、実行状況によっては処理が遅延し、全体の処理が遅延するという問題があった。
本発明は、上述した従来技術による問題点を解消するため、システム全体の処理速度を向上させるデータ処理システム、およびスケジューリング方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、複数のデータ処理装置で実行される複数のスレッドの割込処理の回数をカウントする割込コントローラと、カウントされた割込処理の回数に基づいて複数のスケジューリング方法から一のスケジューリング方法を選択するスケジューリング方法選択ユニットとを含むデータ処理システム、およびスケジューリング方法が提案される。
本発明の一側面によれば、システム全体の処理速度を向上できるという効果を奏する。
図1は、マルチコアプロセッサシステム100が負荷優先スケジューリング方法に従ってスレッドを割り当てた場合の動作を示す説明図である。 図2は、マルチコアプロセッサシステム100が割込平準化優先スケジューリング方法に従ってスレッドを割り当てた場合の動作を示す説明図である。 図3は、マルチコアプロセッサシステム100のハードウェア例を示すブロック図である。 図4は、マルチコアプロセッサシステム100のソフトウェア例を示すブロック図である。 図5は、スケジューリング方法選択部424とマスタスケジューラ425の機能を示すブロック図である。 図6は、割込回数テーブル403の記憶内容の一例を示す説明図である。 図7は、スケジューリング情報テーブル404の一例を示す説明図である。 図8は、割込平準化優先スケジューリング方法に従ったスレッドの割当方法例を示す説明図(その1)である。 図9は、割込平準化優先スケジューリング方法に従ったスレッドの割当方法例を示す説明図(その2)である。 図10は、割込平準化優先スケジューリング方法に従ったスレッドの割当方法例を示す説明図(その3)である。 図11は、負荷優先スケジューリング方法による実行結果の一例を示す説明図である。 図12は、割込平準化優先スケジューリング方法による実行結果の一例を示す説明図である。 図13は、負荷優先スケジューリング方法による実行結果の他の例を示す説明図である。 図14は、割込平準化優先スケジューリング方法による実行結果の他の例を示す説明図である。 図15は、スケジューリング方法切替の判断例を示す説明図である。 図16は、O(M)の設定例を示す説明図である。 図17は、マスタOSのスケジューリング方法切替処理手順の一例を示すフローチャートである。 図18は、スレーブOSのスケジューリング方法切替処理手順の一例を示すフローチャートである。 図19は、割込平準化優先スケジューリング方法に従った割当処理手順の一例を示すフローチャートである。 図20は、本実施の形態にかかるコンピュータを用いたシステムの適用例を示す説明図である。
以下に添付図面を参照して、開示のデータ処理システム、およびスケジューリング方法の実施の形態を詳細に説明する。なお、本実施の形態にかかるデータ処理システムの例として、複数のCPUを有するマルチコアプロセッサシステムにて説明を行う。1つのCPUが、1つのデータ処理装置となる。マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例にあげて説明する。
図1は、マルチコアプロセッサシステム100が負荷優先スケジューリング方法に従ってスレッドを割り当てた場合の動作を示す説明図である。図1で示す、複数のCPUを有するマルチコアプロセッサシステム100は、複数のCPUの負荷が均等になるようにスレッドが割り当てられている。グラフ101では、各スレッドの割込回数を示しており、符号102で示すマルチコアプロセッサシステム100は、負荷優先スケジューリング方法に従った場合のスレッドの割当状態を示している。
図1で示すマルチコアプロセッサシステム100で実行中のスレッドは、スレッド0−0、スレッド0−1、スレッド0−2、スレッド1−0、スレッド1−1、スレッド1−2、スレッド2−0、スレッド3−0である。このうち、スレッド0−0〜スレッド0−2は、プロセス0に属しており、スレッド1−0〜スレッド1−2は、プロセス1に属している。プロセスとは、OSにおける管理単位で、一つのプロセスには複数のスレッドが属することができる。同一のプロセスに属するスレッドは、メモリなどのOS(Operating System)が管理する計算機資源を共有することができる。なお、説明を簡略化するため、図1におけるスレッドの負荷は全て同一とする。
また、CPU#0はスレッド0−0とスレッド3−0を実行し、CPU#1はスレッド0−1とスレッド1−0を実行し、CPU#2はスレッド0−2とスレッド1−1を実行し、CPU#3はスレッド2−0とスレッド1−2を実行している。さらに、スレッド0−0、スレッド0−2、スレッド1−0、スレッド1−1は、割込処理が頻繁に発生するスレッドである。割込処理が頻繁に発生するスレッドの例としては、ハードウェアリソースにアクセスするスレッド等がある。ハードウェアから割込信号が発生すると、割込コントローラが割込信号を受信し、CPUに通知する。CPUは、割込信号に対応した割込処理を実行する。
グラフ101は、負荷優先スケジューリング方法に従ってスレッドを割り当てた場合の各CPUの割込回数の多さを表示したグラフである。グラフ101は、割込回数が多いスレッドが2つ割り当てられたCPU#2が最も割込処理が多いことを示している。なお、割込回数は、割込コントローラによって割込処理の回数をカウントする。具体的に、割込コントローラは、割込信号を受信した際にCPUにて割込処理が1回実行されることとして回数をインクリメントしておき、CPUは、他のスレッドに切り替えるときに、回数を取得することで、スレッドごとの割込回数を取得することができる。
割込回数が多いCPU#2は、スレッド1−1とスレッド0−2の処理が遅延することになる。このとき、スレッド0−2と同一プロセスであるスレッド0−0、スレッド0−1がスレッド0−2の処理を待ち合わせている場合、スレッド0−0、スレッド0−1の処理も停止し、マルチコアプロセッサシステム100全体の処理が遅延することになる。同様に、スレッド1−0、スレッド1−2もスレッド1−1の処理を待ち合わせている場合、スレッド1−0、スレッド1−2の処理も停止する。
図2は、マルチコアプロセッサシステム100が割込平準化優先スケジューリング方法に従ってスレッドを割り当てた場合の動作を示す説明図である。割込平準化優先スケジューリング方法に従った場合、各スレッドは、割込処理時間を含めたスレッドの実行時間が均等になるようにCPUに割り当てられている。グラフ201では、各スレッドの割込回数を示しており、符号202で示すマルチコアプロセッサシステム100は、割込平準化優先スケジューリング方法に従った場合のスレッドの割当状態を示している。なお、図2におけるスレッド、プロセスの関係については、図1と同様であるとし、説明を省略する。
図2において、CPU#0は、スレッド0−0とスレッド0−1を実行し、CPU#1は、スレッド1−0とスレッド3−0を実行し、CPU#2はスレッド0−2とスレッド2−0を実行し、CPU#3はスレッド1−1とスレッド1−2を実行している。このように、マルチコアプロセッサシステム100は、割込処理の回数が多いスレッド群を、CPU#0〜CPU#3で分散するように割り当てることで、CPU#0〜CPU#3での割込回数を均等にしている。
グラフ201は、割込平準化優先スケジューリング方法に従ってスレッドを割り当てた場合の各CPUの割込回数の多さを表示したグラフである。グラフ201は、各CPUでの割込回数が均等となっていることを示している。
なお、スレッドの負荷が異なる場合、負荷優先スケジューリング方法に従ってスレッドの割当を行った方が効率がよいときもある。したがって、マルチコアプロセッサシステム100は、割込処理の回数から予測される実行時間に基づいて、負荷優先スケジューリング方法と割込平準化優先スケジューリング方法のいずれかのスケジューリング方法を選択する。これにより、マルチコアプロセッサシステム100は、実行状況に応じて効率のより良いスケジューリング方法を選ぶことで、システム全体の処理速度を向上することができる。
(マルチコアプロセッサシステム100のハードウェア)
図3は、マルチコアプロセッサシステム100のハードウェア例を示すブロック図である。本実施の形態におけるマルチコアプロセッサシステム100は、携帯電話などの携帯端末を想定している。図3において、マルチコアプロセッサシステム100は、CPUs301と、ROM(Read‐Only Memory)302と、RAM(Random Access Memory)303と、を含む。また、マルチコアプロセッサシステム100は、フラッシュROM304と、フラッシュROMコントローラ305と、フラッシュROM306と、を含む。また、マルチコアプロセッサシステム100は、ユーザやその他の機器との入出力装置として、ディスプレイ307と、I/F(Interface)308と、キーボード309と、を含む。また、各部はバス310によってそれぞれ接続されている。
ここで、CPUs301は、マルチコアプロセッサシステム100の全体の制御を司る。CPUs301は、CPU#0〜CPU#3を含む。また、CPUs301は、専用のキャッシュメモリを有してもよい。また、マルチコアプロセッサシステム100は、複数のコアを含むマルチコアプロセッサシステムであってもよい。なお、マルチコアプロセッサシステムとは、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、シングルコアのプロセッサであるCPUが並列されている形態を例にあげて説明する。
ROM302は、ブートプログラムなどのプログラムを記憶している。RAM303は、CPUs301のワークエリアとして使用される。フラッシュROM304は、読出し速度が高速なフラッシュROMであり、たとえば、NOR型フラッシュメモリである。たとえば、フラッシュROM304は、OSなどのシステムソフトウェアやアプリケーションソフトウェアなどを記憶している。たとえば、OSを更新する場合、マルチコアプロセッサシステム100は、I/F308によって新しいOSを受信し、フラッシュROM304に格納されている古いOSを、受信した新しいOSに更新する。
フラッシュROMコントローラ305は、CPUs301の制御に従ってフラッシュROM306に対するデータのリード/ライトを制御する。フラッシュROM306は、データの保存、運搬を主に目的としたフラッシュROMであり、たとえば、NAND型フラッシュメモリである。フラッシュROM306は、フラッシュROMコントローラ305の制御で書き込まれたデータを記憶する。データの具体例としては、マルチコアプロセッサシステム100を使用するユーザがI/F308を通して取得した画像データ、映像データや、また本実施の形態にかかるスケジューリング方法を実行するプログラムなどである。フラッシュROM306は、たとえば、メモリカード、SDカードなどを採用することができる。
ディスプレイ307は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ307は、たとえば、TFT(Thin Film Transistor)液晶ディスプレイなどを採用することができる。
I/F308は、通信回線を通じてLAN、WAN(Wide Area Network)、インターネットなどのネットワーク311に接続され、ネットワーク311を介して他の装置に接続される。そして、I/F308は、ネットワーク311と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F308には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード309は、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード309は、タッチパネル式の入力パッドやテンキーなどであってもよい。
図4は、マルチコアプロセッサシステム100のソフトウェア例を示すブロック図である。図4で示すマルチコアプロセッサシステム100は、CPU#0、CPU#1、共有メモリ401を含む。また、CPU#0、CPU#1は、それぞれ、割込コントローラ402#0、割込コントローラ402#1と通信可能である。また、CPU#0は、スレッド0−0、スレッド3−0を実行しており、CPU#1は、スレッド0−1、スレッド1−0を実行している。
共有メモリ401は、CPUs301からアクセス可能な記憶領域である。記憶領域とは、具体的には、たとえば、RAM303、フラッシュROM304、フラッシュROM306である。また、共有メモリ401は、割込回数テーブル403とスケジューリング情報テーブル404を有する。割込回数テーブル403は、スレッドごとの割込回数を記憶するテーブルである。なお、割込回数テーブル403の詳細については、図6にて後述する。スケジューリング情報テーブル404は、スケジューリング情報を記憶するテーブルである。スケジューリング情報とは、CPUに割り当てられたスレッドの情報である。スケジューリング情報の具体例として、CPU#0にスレッド0−0が割り当てられているという情報である。なお、スケジューリング情報テーブル404の詳細については、図7にて後述する。
割込コントローラ402#0は、フラッシュROMコントローラ305、ディスプレイ307、I/F308、キーボード309、といったデバイスからの割込信号を受信し、CPU#0に通知する。同様に、割込コントローラ402#1は、デバイスからの割込信号を受信し、CPU#1に通知する。また、割込コントローラ402は、デバイスからの割込信号の回数を記録する。記録された情報は、たとえば、割込コントローラ402内部のステータスレジスタ等に記憶される。
なお、割込の種別として、デバイスからの割込信号によるハードウェア割込と、CPU内部の要因で発生するソフトウェア割込とが存在する。ソフトウェア割込による割込処理が発生した場合も、CPUは、割込処理の回数を、たとえば、CPUのレジスタ、RAM303等に記憶してもよい。
続けて、マルチコアプロセッサシステム100で実行するソフトウェアについて説明する。CPU#0はマスタOS411を実行し、CPU#1はスレーブOS412を実行する。マスタOS411は、スケジューラ421#0、割込回数取得部422#0、DB管理部423#0、スケジューリング方法選択部424、マスタスケジューラ425を含む。スレーブOS412は、スケジューラ421#1、割込回数取得部422#1、DB管理部423#1を含む。スケジューラ421#1〜DB管理部423#1は、マスタOS411、スレーブOS412が共に含む機能である。
スケジューラ421は、スレッドの割当を制御する機能を有する。具体的に、スケジューラ421は、予めタイムスライスで決定された時刻の経過後に、CPUに次に割り当てるスレッドを決定し、決定されたスレッドをCPUに割り当てる。たとえば、タイムスライスが2[ms]である場合、スケジューラ421#0は、2[ms]経過する度に、スレッド0−0とスレッド3−0を切り替える。また、スケジューラ421は、スレッドの切替が発生した場合、スレッド切替が発生したことを割込回数取得部422に通知する。
また、スケジューラ421は、割込処理が発生した場合、CPUに割込処理に対応する割込ハンドラを実行するように設定する。割込処理終了後、スケジューラ421は、割込処理にかかった割込処理時間を取得する。スケジューラ421は、割込処理を実行する度に割込処理時間を更新する。具体的な更新方法として、たとえば、スケジューラ421は、レジスタ、RAM303等の記憶領域に記憶されていた割込処理時間と、今回取得した割込処理時間を平均して得られた値を、再度記憶領域に記憶する。また、スケジューラ421は、スレッド切替時、記憶領域に記憶されていた割込処理時間を割込回数取得部422に通知する。
割込回数取得部422は、スレッド切替が通知された場合、スレッドごとの割込回数を取得する。たとえば、スレッド0−0からスレッド3−0に切り替わった場合、割込回数取得部422#0は、割込コントローラ402#0内部のステータスレジスタ等に記憶された割込回数を切替前スレッドとなるスレッド0−0の割込回数として取得する。また、割込回数取得部422は、CPU内部の要因で発生したソフトウェア割込が存在する場合、ソフトウェア割込の回数も併せて割込回数を取得してもよい。この場合、割込回数取得部422は、ハードウェア割込の回数とソフトウェア割込の回数を合算して切替前スレッドの割込回数に設定する。取得後、割込回数取得部422は、切替前スレッドの割込回数と、スレッド切替時に併せて通知された割込処理時間とをDB管理部423に通知する。
DB管理部423は、通知されたスレッドの割込回数、割込処理時間に基づいて、割込回数テーブル403を更新する機能を有する。具体的な更新方法として、DB管理部423は、通知された値をそのまま割込回数テーブル403に格納してもよいし、割込回数テーブル403にある値と通知された値とを平均して割込回数テーブル403に格納してもよい。
また、マスタOS411上のDB管理部423#0は、マスタスケジューラ425から通知されたスケジューリング情報を用いて、スケジューリング情報テーブル404を更新する機能を有する。たとえば、DB管理部423#0は、新たなスレッドがCPU#0に割り当てられたというスケジューリング情報を、スケジューリング情報テーブル404に格納する。
また、DB管理部423#0は、スケジューリング方法選択部424からスレッドごとの割込回数と割込処理時間、スケジューリング情報の参照要求があった場合、割込回数テーブル403、スケジューリング情報テーブル404から対応する情報を取得する。
スケジューリング方法選択部424は、DB管理部423から得たスレッドごとの割込回数と割込処理時間、スケジューリング情報に基づいて、負荷優先スケジューリング方法か割込平準化優先スケジューリング方法のいずれか一方を選択する機能を有する。具体的な選択方法は、図5にて後述する。また、スケジューリング方法選択部424は、選択されたスケジューリング方法をマスタスケジューラ425に通知する。
マスタスケジューラ425は、マルチコアプロセッサシステム100で実行中のスレッドに対して、負荷優先スケジューリング方法か割込平準化優先スケジューリング方法かのうち、選択されたスケジューリング方法に従ったスケジューリングを行う機能を有する。たとえば、負荷優先スケジューリング方法が選択された場合、マスタスケジューラ425は、各スレッドの負荷に基づいて、各CPUの負荷が均等になるようにスケジューリングを行う。また、割込平準化優先スケジューリング方法が選択された場合、マスタスケジューラ425は、割込処理時間を含めたスレッドの実行時間が均等になるようにスケジューリングを行う。なお、割込平準化優先スケジューリング方法の詳細については、図8〜図10にて後述する。
(スケジューリング方法選択部424の機能)
次に、スケジューリング方法選択部424とマスタスケジューラ425の機能について説明する。図5は、スケジューリング方法選択部424とマスタスケジューラ425の機能を示すブロック図である。スケジューリング方法選択部424は、算出部501と、算出部502と、比較部503と、選択部504と、を含む。また、マスタスケジューラ425は、割当部505を含む。この制御部となる機能(算出部501〜割当部505)は、記憶装置に記憶されたプログラムをCPU#0が実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、図3に示したROM302、RAM303、フラッシュROM304、フラッシュROM306などである。
算出部501は、第1の複数の処理を第1スケジューリング方法でスケジューリングしたときの第1実行時間を算出する機能を有する。なお、第1の複数の処理とは、マルチコアプロセッサシステム100で実行中のスレッドであり、第1スケジューリング方法とは、負荷優先スケジューリング方法である。なお、処理とは、スレッドのことであるが、スレッドの一部分であってもよい。また、算出部501は、新たな処理を複数のデータ処理装置に割り当てるとき、新たな処理と第1の複数の処理とを含めた第2の複数の処理を第1スケジューリング方法でスケジューリングしたときの第1実行時間を算出してもよい。
また、算出部501は、CPUに割り当てられた処理の負荷量と処理実行中に発生する割込処理にかかる割込処理時間とのCPUごとの合計値のうち、最も大きい合計値を第1実行時間として算出してもよい。処理の負荷量は、処理が完了するまでの時間で示す。処理すべき量が多いほど、処理が完了するまでの時間が長くなり、負荷量が増大していくことになる。なお、負荷量、割込処理時間は、割込回数テーブル403に格納されている。具体的に、負荷量は、スレッドが完了するまでの時間であってもよいし、スレッドの一部分の処理が完了するまでの時間であってもよい。一部分の処理としては、たとえば、特定の同期ポイントまでの処理である。
たとえば、CPU#0にスレッド0−0とスレッド3−0が割り当てられており、CPU#1にスレッド0−1とスレッド1−0が割り当てられている場合を想定する。さらに、スレッド0−0、スレッド0−1、スレッド1−0、スレッド3−0の負荷量を、それぞれ、2[ms]、4[ms]、4[ms]、6[ms]であると想定する。また、割込処理にかかる割込処理時間について、5[ms]、0[ms]、4.8[ms]、0[ms]と想定する。このとき、算出部501は、CPU#0の合計値を、(2+5)+(6+0)=7+6=13とし、CPU#1の合計値を、(4+0)+(4+4.8)=4+8.8=12.8とし、第1実行時間を13[ms]として算出する。
また、算出部501は、後述する(1)式によって合計時間を算出してもよい。なお、算出された第1実行時間は、CPU#0の汎用レジスタ、RAM303、フラッシュROM304、フラッシュROM306などの記憶領域に格納される。
算出部502は、第1の複数の処理を第1スケジューリング方法とは異なる第2スケジューリング方法でスケジューリングしたときの第2実行時間を算出する機能を有する。なお、第2スケジューリング方法とは、割込平準化優先スケジューリング方法である。また、算出部502は、第2の複数の処理を第2スケジューリング方法でスケジューリングしたときの第2実行時間を算出する。なお、算出部502は、算出部501での説明において、第1スケジューリング方法を第2スケジューリング方法に置き換えた状態に対応するため、説明を省略する。また、算出された第2実行時間は、CPU#0の汎用レジスタ、RAM303、フラッシュROM304、フラッシュROM306などの記憶領域に格納される。
比較部503は、第1実行時間と第2実行時間とを比較する機能を有する。また、比較部503は、現在のスケジューリング方法に対応する実行時間と、もう一方のスケジューリング方法に対応する実行時間と処理割当にかかる時間との和と、を比較してもよい。たとえば、現在のスケジューリング方法が負荷優先スケジューリング方法であり、第1実行時間が12.8[ms]であり、割込平準化優先スケジューリング方法に対応する第2実行時間が12.4[ms]であると想定する。さらに、処理割当にかかる時間が0.3[ms]であると想定する。このとき、比較部503は、12.8[ms]と、12.4+0.3[ms]を比較する。なお、比較結果は、CPU#0の汎用レジスタ、RAM303、フラッシュROM304、フラッシュROM306などの記憶領域に格納される。
選択部504は、第2の複数の処理を複数のデータ処理装置に割り当てるために、比較部503による第1実行時間と第2実行時間との比較結果に基づいて、第1スケジューリング方法または第2スケジューリング方法を選択する機能を有する。たとえば、選択部504は、比較結果が第2実行時間の方が小さいことを示す場合、第2スケジューリング方法を選択する。また、選択部504は、現在のスケジューリング方法に対応する実行時間ともう一方のスケジューリング方法に対応する実行時間と処理割当にかかる時間との和との比較結果に基づいてスケジューリング方法を選択してもよい。なお、選択結果は、CPU#0の汎用レジスタ、RAM303、フラッシュROM304、フラッシュROM306などの記憶領域に格納される。
割当部505は、選択部504によって選択されたスケジューリング方法に従って各データ処理装置に処理を割り当てる機能を有する。たとえば、割当部505は、選択部504によって第2スケジューリング方法が選択された場合、第2スケジューリング方法に従って各CPUにスレッドを割り当てる。
また、割当部505は、第2スケジューリング方法が選択された場合、第2の複数の処理の中で割込処理が第1頻度で発生する処理を第2の複数のデータ処理装置に割り当てる。続けて、割当部505は、第2の複数の処理の中で割込処理が第2頻度で発生する処理を処理と同じプロセスに含まれる処理が割り当てられた複数のデータ処理装置の中のデータ処理装置に割り当てる。なお、第1頻度は、第2頻度より高い。また、割込処理の頻度は、単位時間当たりの割込回数で算出することができる。たとえば、割当部505は、割込処理が高頻度であるスレッドを、CPU#0〜CPU#3に割り当てる。続けて、割当部505は、低頻度のスレッドを、同じプロセスに含まれるスレッドが割り当てられたCPUに割り当てる。
また、割当部505は、第2頻度で発生する処理が割り当てられた後に、第2の複数の処理の中で割り当てられていない処理を、複数のデータ処理装置の負荷が均等になるように複数のデータ処理装置に割り当てる。たとえば、割当部505は、割込処理が低頻度で未割当のスレッドを、CPU#0〜CPU#3の負荷が均等になるように割り当てる。なお、割当部505によって決定した各CPUへの割当情報は、スケジューリング情報として、スケジューリング情報テーブル404に格納される。
図6は、割込回数テーブル403の記憶内容の一例を示す説明図である。割込回数テーブル403は、スレッドごとに割込回数と割込処理時間を記憶するテーブルである。図6で示す割込回数テーブル403には、レコード403−1〜レコード403−8という8つのレコードが登録されている。割込回数テーブル403は、スレッドID、割込回数、割込処理時間、負荷量という4つのフィールドを含む。
スレッドIDフィールドには、スレッドを一意に識別可能な識別情報が格納される。具体的な識別情報としては、マルチコアプロセッサシステム100が一意に採番した値や、スレッドコンテキストへのポインタ等が採用される。本実施の形態で示す割込回数テーブル403は、説明の簡略化のため、スレッドに付与した符号を識別情報として格納している。割込回数フィールドには、スレッド実行中に割込処理が実行された回数が格納される。割込処理時間フィールドには、割込処理1回分の平均時間が格納される。
たとえば、レコード403−1を例にあげると、レコード403−1は、負荷量が2[ms]であり、スレッド0−0が実行中の間に5回の割込処理が実行されており、割込処理1回分の平均時間が1[ms]であることを示している。
また、割込回数テーブル403への更新方法として、マルチコアプロセッサシステム100は、一定期間ごとに初期化して、一定期間の割込回数、割込処理時間を更新してもよい。この場合、マルチコアプロセッサシステム100は、割込の傾向が変わったときにすぐ対応することができる。また、マルチコアプロセッサシステム100は、割込回数テーブル403に格納されている割込回数と割込処理時間と、一定期間の割込回数と割込処理時間とのそれぞれの平均を算出して割込回数テーブル403に格納してもよい。
なお、スケジューリング方法選択部424およびマスタスケジューラ425、とスレッドの開発元は異なる可能性がある。この場合、スケジューリング方法選択部424およびマスタスケジューラ425は、どのスレッドが高頻度で割込を受けるか判断することが困難である。したがって、図6のように、過去の履歴を記憶領域に記憶することで、スケジューリング方法選択部424およびマスタスケジューラ425は、高頻度で割込を受けるスレッドを判断することができる。
図7は、スケジューリング情報テーブル404の一例を示す説明図である。スケジューリング情報テーブル404は、CPUごとに割り当てられたスレッドを記憶するテーブルである。図7で示すスケジューリング情報テーブル404には、レコード404−1〜レコード404−4という4つのレコードが登録されている。スケジューリング情報テーブル404は、CPUID、スレッドIDという2つのフィールドを含む。
CPUIDフィールドには、CPUを一意に識別可能な識別情報が格納される。スレッドIDフィールドには、CPUに割り当てられたスレッドの識別情報が格納される。たとえば、レコード404−1を例にあげると、レコード404−1は、CPU#0にスレッド0−0とスレッド3−0が割り当てられていることを示している。
また、図7の状態で、たとえば、マスタスケジューラ425からスレッド3−0をCPU#1に割り当てるというスケジューリング情報が通知された場合を想定する。このとき、DB管理部423は、レコード404−1のスレッドIDフィールドの値を、“0−0、3−0”から“0−0”に変更し、レコード404−2のスレッドIDフィールドの値を、“0−1、1−0”から“0−1、1−0、3−0”に変更する。
また、スレッドのCPU間の移行方法として、たとえば、移行元CPUが、スレッドの実行中の情報となるスレッドコンテキストを共有メモリ401に退避し、移行先CPUが退避されたスレッドコンテキストを読み込む、といった方法が存在する。
続けて、図8〜図10にて、割込平準化優先スケジューリング方法によるスレッド割当方法の一例について説明する。割込平準化優先スケジューリング方法は、マスタスケジューラ425によって実行される。
図8は、割込平準化優先スケジューリング方法に従ったスレッドの割当方法例を示す説明図(その1)である。初めに、マスタスケジューラ425は、割込が高頻度となるスレッドを各CPUに割り当てる。割込が高頻度であるか否かの判断方法として、たとえば、スケジューリング方法選択部424は、スレッドごとの割込回数を取得した際に、所定の閾値以上である場合、該当のスレッドが高頻度であると判断して記憶領域に記憶する。続けて、マスタスケジューラ425は、記憶された判断結果を用いて割込が高頻度のスレッドを取得する。また、スケジューリング方法選択部424は、割込回数が最多となるスレッドから、所定の個数のスレッドを、割込が高頻度となるスレッドとして判断してもよい。
たとえば、図6に示した割込回数テーブル403にて、所定の閾値=5回とすると、スケジューリング方法選択部424は、高頻度となるスレッド群がスレッド0−0、スレッド0−2、スレッド1−0、スレッド1−1であると判断する。マスタスケジューラ425は、高頻度のスレッド群を、CPU#0〜CPU#3に割り当てる。なお、高頻度のスレッド群のCPU#0〜CPU#3への割当方法として、マスタスケジューラ425は、負荷優先スケジューリング方法を採用してもよい。
たとえば、マスタスケジューラ425は、高頻度となるスレッド群のうち、最も高負荷となったスレッドをCPU#0に割り当て、次に負荷の高いスレッドをCPU#1に割り当て、といったことを行う。全てのCPUに割り当てを行った時点で、高頻度となるスレッド群のうち未割当のスレッドが存在する場合、マスタスケジューラ425は、最も負荷の低いCPUから順に、未割当のスレッドを割り当てる。
図8の例では、マスタスケジューラ425は、スレッド0−0をCPU#0に割り当て、スレッド1−0をCPU#1に割り当て、スレッド0−2をCPU#2に割り当て、スレッド1−1をCPU#3に割り当てる。図8のように、高頻度となるスレッド群を最初に割り当てることで、マルチコアプロセッサシステム100は、割込が高頻度のスレッドが一つのCPUに偏って割り当てられることを防ぐことができる。
図9は、割込平準化優先スケジューリング方法に従ったスレッドの割当方法例を示す説明図(その2)である。図9で示す状態は、図8によって示した割込が高頻度のスレッドを割り当てた後の状態を示している。マスタスケジューラ425は、割込が低頻度のスレッドのうち、同一プロセスのスレッド数が最多となるスレッド群を選択する。選択後、マスタスケジューラ425は、選択されたスレッド群と同一プロセスであり、割込回数が高頻度のスレッドが存在するかを判断する。存在する場合、マスタスケジューラ425は、選択されたスレッド群を、同一プロセス内の割込回数が高頻度のスレッドが割り当てられたCPU群に割り当てる。
具体的には、低頻度のスレッドとなる、スレッド0−1、スレッド1−2、スレッド2−0、スレッド3−0について、マスタスケジューラ425は、同一プロセスのスレッド数が最多となるプロセス0のスレッド群を選択する。続けて、マスタスケジューラ425は、スレッド0−1を、同一プロセス内の割込回数が高頻度のスレッドであるスレッド0−0が割り当てられたCPU#0、スレッド0−2が割り当てられたCPU#2、のうちいずれか一方のCPUに割り当てる。この時の割当方法として、マスタスケジューラ425は、負荷優先スケジューリング方法を採用してもよい。
たとえば、マスタスケジューラ425は、CPU#0とCPU#2のうち、負荷の低いCPUにスレッド0−1を割り当てる。スレッド1−2の割当についても同様に、マスタスケジューラ425は、CPU#1とCPU#3のうち、負荷の低いCPUにスレッド1−2を割り当てる。図9の例では、マスタスケジューラ425は、スレッド0−1をCPU#0に割り当て、スレッド1−2をCPU#3に割り当てる。
図9のように、割込が低頻度のスレッドを、同一プロセスの高頻度のスレッドが割り当てられたCPUに割り当てることで、割込が高頻度のスレッドが割り当てられたCPUに、他のプロセスグループのスレッドが割り当てられる可能性を減らすことになる。したがって、割込が高頻度のスレッドによって発生する処理の遅延による悪影響を、他のプロセスグループのスレッドに与えないようにすることができる。
図10は、割込平準化優先スケジューリング方法に従ったスレッドの割当方法例を示す説明図(その3)である。図10で示す状態は、図9によって示した割込が低頻度のスレッドを、同一プロセスの高頻度のスレッドが割り当てられたCPUに割り当てた状態である。マスタスケジューラ425は、未割当のスレッドを、負荷優先スケジューリング方法に従って割り当てる。
たとえば、マスタスケジューラ425は、未割当であるスレッド2−0、スレッド3−0を、負荷優先スケジューリング方法に従って割り当てる。図10の例では、マスタスケジューラ425は、スレッド3−0をCPU#1に割り当て、スレッド2−0をCPU#2に割り当てる。
次に、図11〜図14にて、マルチコアプロセッサシステム100が負荷優先スケジューリング方法と割込平準化優先スケジューリング方法のいずれかの方法に従った場合のスレッドの実行結果について説明する。図11〜図14に共通する処理情報として、タイムスライスが2[ms]であり、各スレッドの負荷量として、スレッド0−0が2[ms]、スレッド0−1が4[ms]、スレッド0−2が4[ms]、スレッド2−0が4[ms]である。さらに、残りのスレッドの負荷量として、スレッド3−0が6[ms]、スレッド1−0が4[ms]、スレッド1−1が4[ms]、スレッド1−2が6[ms]となる。
また、図11、図12では、割込が高頻度のスレッドに関して、1[ms]に1回、処理時間が1.2[ms]となる割込処理が発生していることを想定している。また、図13、図14では、割込が高頻度のスレッドに関して、1[ms]に1回、処理時間が0.5[ms]となる割込処理が発生していることを想定している。
図11は、負荷優先スケジューリング方法による実行結果の一例を示す説明図である。図11では、負荷優先スケジューリング方法の割当状態を示すスレッド割当状態1101と、スレッドの処理状態を示す処理情報1102と、実行結果を示すタイムチャート1103とを表示している。スレッド割当状態1101で示すスレッドの割当状態は、図1と等しい状態であるため、説明を省略する。また、処理情報1102が示す値は、前述で説明済みであるため、説明を省略する。
タイムチャート1103にて、CPU#0は、スレッド0−0とスレッド3−0の処理を、7.2[ms]で行う。同様に、CPU#1はスレッド0−1とスレッド1−0の処理を、10.4[ms]で行い、CPU#2はスレッド0−2とスレッド1−1の処理を、12.8[ms]で行い、CPU#3はスレッド2−0とスレッド1−2の処理を、10[ms]で行う。したがって、マルチコアプロセッサシステム100は、負荷優先スケジューリング方法を実行した場合、処理情報1102で示されている各スレッドに与えられた負荷量を、12.8[ms]で処理することが可能である。
図12は、割込平準化優先スケジューリング方法による実行結果の一例を示す説明図である。図12では、割込平準化優先スケジューリング方法の割当状態を示すスレッド割当状態1201と、処理情報1102と、実行結果を示すタイムチャート1202とを表示している。図12で示すスレッド割当状態1201は、図2と等しい状態であるため、説明を省略する。
タイムチャート1202にて、CPU#0は、スレッド0−0とスレッド0−1の処理を、7.2[ms]で行う。同様に、CPU#1はスレッド1−0とスレッド3−0の処理を、12.4[ms]で行い、CPU#2はスレッド0−2とスレッド2−0の処理を、10.4[ms]で行い、CPU#3はスレッド1−1とスレッド1−2の処理を、12.4[ms]で行う。したがって、マルチコアプロセッサシステム100は、割込平準化優先スケジューリング方法を実行した場合、処理情報1102で示されている各スレッドに与えられた負荷量を、12.4[ms]で処理することが可能である。
このように、マルチコアプロセッサシステム100は、割込平準化優先スケジューリング方法を実行した場合、処理情報1102で示される状態に対する実行時間が12.4[ms]となり、負荷優先スケジューリング方法より早く処理することになる。
図13は、負荷優先スケジューリング方法による実行結果の他の例を示す説明図である。図13では、負荷優先スケジューリング方法の割当状態を示すスレッド割当状態1101と、処理情報1301と、実行結果を示すタイムチャート1302とを表示している。処理情報1301で示す設定値は、前述で説明済みであるため、説明を省略する。
タイムチャート1302にて、CPU#0は、スレッド0−0とスレッド3−0の処理を、8.5[ms]で行う。同様に、CPU#1はスレッド0−1とスレッド1−0の処理を、9[ms]で行い、CPU#2はスレッド0−2とスレッド1−1の処理を、10.5[ms]で行い、CPU#3はスレッド2−0とスレッド1−2の処理を、10[ms]で行う。したがって、マルチコアプロセッサシステム100は、負荷優先スケジューリング方法を実行した場合、処理情報1301で示されている各スレッドに与えられた負荷量を、10.5[ms]で処理することが可能である。
図14は、割込平準化優先スケジューリング方法による実行結果の他の例を示す説明図である。図14では、割込平準化優先スケジューリングの割当状態を示すスレッド割当状態1201と、処理情報1301と、実行結果を示すタイムチャート1401とを表示している。
タイムチャート1401で示す説明図にて、CPU#0は、スレッド0−0とスレッド0−1の処理を、6.5[ms]で行う。同様に、CPU#1はスレッド1−0とスレッド3−0の処理を、11[ms]で行い、CPU#2はスレッド0−2とスレッド2−0の処理を、9[ms]で行い、CPU#3はスレッド1−1とスレッド1−2の処理を、11[ms]で行う。したがって、マルチコアプロセッサシステム100は、割込平準化優先スケジューリング方法を実行した場合、処理情報1301で示されている各スレッドに与えられた負荷量を、11[ms]で処理することが可能である。
したがって、マルチコアプロセッサシステム100は、負荷優先スケジューリング方法を実行した場合、処理情報1301で示される負荷量に対する実行時間が10.5[ms]となり、割込平準化優先スケジューリング方法より早く処理することになる。
このように、負荷優先スケジューリング方法と割込平準化優先スケジューリング方法とで処理が速くなるか否かは、スレッドの負荷量、割込の頻度、割込処理時間によって左右される。したがって、スケジューリング方法選択部424は、負荷優先スケジューリング方法と割込平準化優先スケジューリング方法とに従って動作した場合に予測される実行時間を算出し、算出された実行時間が短いスケジューリング方法を選択する。図15にて、スケジューリング方法切替の判断例を説明する。
図15は、スケジューリング方法切替の判断例を示す説明図である。図15では、負荷優先スケジューリング方法と割込平準化優先スケジューリング方法を切り替える判断の一例を示している。スケジューリング方法選択部424は、負荷優先スケジューリング方法に従った場合、または割込平準化優先スケジューリング方法に従った場合の実行時間Tを下記(1)式にて算出する。
T=Max(T(N))=Max{Σm{W(X)+C(X)×A×W(X)/Y}} …(1)
ただし、NをCPU番号と定義し、T(N)をスレッドの処理に要する時間と定義し、mをN番目のCPUに割り当てられたスレッドの個数と定義し、W(X)をスレッドXの負荷量と定義する。また、タイムスライスをYと定義し、C(X)をスレッドXの1タイムスライス当たりの割込処理回数と定義し、Aを割込処理に要する平均時間と定義する。なお、(1)式のΣ内の第1項が負荷量に相当し、第2項が割込処理時間に相当する。
スケジューリング方法選択部424は、(1)式によって負荷優先スケジューリング方法に従った場合の実行時間TLと、割込平準化優先スケジューリング方法に従った場合の実行時間TIを算出する。スケジューリング方法選択部424は、負荷優先スケジューリング方法選択中にスケジューリング判断式となる下記(2)式を満たす場合、割込平準化優先スケジューリング方法に切り替える。
TL>TI+O(M) …(2)
ただし、Mをマルチコアプロセッサシステム100内で実行中の総スレッド数とし、O(M)を総スレッド数がMである場合の再スケジューリングに要する時間と定義する。また、スケジューリング方法選択部424は、割込平準化優先スケジューリング方法選択中にスケジューリング判断式となる下記(3)式を満たす場合、負荷優先スケジューリング方法に切り替える。
TI>TL+O(M) …(3)
たとえば、マルチコアプロセッサシステム100が符号1501で示す負荷優先スケジューリング方法であることを想定する。このとき、各スレッドの割当状態は、負荷分散スケジューリングに従っており、処理状態として処理情報1102に従っている。また、スレッド1−2は、起動要求を受けウェイトキュー1504に格納されている。なお、ウェイトキュー1504は、起動要求を受けたがCPUにまだ割り当てていないスレッドを格納しておくキューである。
スレッド1−2がCPU#0〜CPU#3のいずれかに割り当てられる場合、スケジューリング方法選択部424は、CPU#0〜CPU#3での実行時間TL#0〜TL#3を(1)式に従って以下のように算出する。
TL#0=Σm{W(X)+C(X)×A×W(X)/Y}
⇔TL#0=(2+1×1.2×2/2)+(6+0×1.2×6/2)
⇔TL#0=3.2+6=9.2[ms]
同様に、スケジューリング方法選択部424は、TL#1〜TL#3を(1)式に従って算出し、TL#1=10.4[ms]、TL#2=12.8[ms]、TL#3=10.0[ms]を得る。続けて、スケジューリング方法選択部424は、負荷優先スケジューリング方法での実行時間TL=Max(9.2、10.4、12.8、10.0)=12.8を算出する。
また、スケジューリング方法選択部424は、割込平準化優先スケジューリング方法に従い、スレッドの割当状態を図12のようになることを決定した後、CPU#0〜CPU#3での実行時間TI#0〜TI#3を(1)式に従って以下のように算出する。
TI#0=(2+1×1.2×2/2)+(4+0×1.2×4/2)=7.2[ms]
同様に、スケジューリング方法選択部424は、TI#1〜TI#3を(1)式に従って算出し、TI#1=12.4[ms]、TI#2=10.4[ms]、TI#3=12.4[ms]を得る。続けて、スケジューリング方法選択部424は、負荷優先スケジューリング方法での実行時間TI=Max(7.2、12.4、10.4、12.4)=12.4を算出する。
TL、TIの算出後、スケジューリング方法選択部424は、(2)式に従って割込平準化優先スケジューリング方法に切り替えるか負荷優先スケジューリング方法のままとするかを判断する。前述の算出結果を用いると、スケジューリング方法選択部424は、以下のように(2)式を実行する。
12.8>12.4+O(M)
したがって、スケジューリング方法選択部424は、O(M)が0.4[ms]未満であるときに、割込平準化優先スケジューリング方法に従った状態である状態1502に切り替える。また、O(M)が0.4[ms]以上である場合、スケジューリング方法選択部424は、負荷優先スケジューリング方法に従った状態である状態1503に遷移する。続けて、図16にてO(M)の設定例を示す。
図16は、O(M)の設定例を示す説明図である。再スケジューリングにかかるコストは、実行中のスレッドをレディーキューに再キューイングする際のコストとなる。スレッドをキューイングするために要するコストは、スケジューリングアルゴリズムとOSに依存する。
O(M)の設定例として、スレッド数Mに対して静的に設定しておく方法と、動的に設定しておく方法とがある。初めに、静的に設定しておく場合、たとえば、マルチコアプロセッサシステム100は、スレッド数Mが固定値の場合に再スケジューリングにかかる時間を設定しておく。固定値としては、たとえば、マルチコアプロセッサシステム100内で最もよく取り得る値等を採用してもよいし、マルチコアプロセッサシステム100内でスレッドが実行可能な最大値を採用してもよい。
次に、動的に設定しておく場合、マルチコアプロセッサシステム100は、シミュレータ等によりスレッド数を変化させたときのキューイングに要する時間を計測しておく。マルチコアプロセッサシステム100は、計測結果を、スレッド数に依存したオーバーヘッド関数として、スケジューリング方法選択部424に保持させておく。
計測結果は、たとえば、グラフ1601の通りになる。グラフ1601は、横軸がスレッド数であり、縦軸がオーバーヘッド時間を示している。グラフ1601では、スレッド数とオーバーヘッド時間が一次式となっているため、マルチコアプロセッサシステム100は、たとえば、O(M)=B×Mと設定する。Bは、OSとスケジューリングアルゴリズムに依存する値である。
以上説明した機能、記憶内容を使用して、マルチコアプロセッサシステム100は、スケジューリング方法切替処理を実行する。図17、図18にて、スケジューリング方法切替処理の手順を示し、図19では、割込平準化優先スケジューリング方法に従った割当処理手順の一例を示す。なお、図17を実行するCPUはCPU#0であることを想定し、図18を実行するCPUはCPU#1であることを想定する。
図17は、マスタOSのスケジューリング方法切替処理手順の一例を示すフローチャートである。CPU#0は、マスタスケジューラのウェイトキュー1504に新たなスレッドが存在するか否かを判断する(ステップS1701)。新たなスレッドが存在する場合(ステップS1701:Yes)、CPU#0は、負荷優先スケジューリング方法に従った場合の実行時間を算出する(ステップS1702)。さらに、CPU#0は、割込平準化優先スケジューリング方法に従った場合の実行時間を算出する(ステップS1703)。
2つの実行時間の算出後、CPU#0は、スケジューリング方法判断式を基にスケジューリング方法を選択する(ステップS1704)。具体的に、CPU#0は、現在のスケジューリング方法として負荷優先スケジューリング方法が選択されている場合、スケジューリング方法判断式として(2)式を採用する。また、CPU#0は、割込平準化優先スケジューリング方法が選択されている場合、スケジューリング方法判断式として(3)式を採用する。
スケジューリング方法の選択後、CPU#0は、現在選択しているスケジューリング方法とは異なる方法を選択したか否かを判断する(ステップS1705)。異なる方法を選択した場合(ステップS1705:Yes)、CPU#0は、選択したスケジューリング方法に基づいてウエイトキューに存在するスレッドを含めて再スケジューリングを行い(ステップS1706)、ステップS1701の処理に移行する。同じ方法を選択した場合(ステップS1705:No)、CPU#0は、現在選択しているスケジューリング方法に基づいてウェイトキューのスレッドのスケジューリングを行い(ステップS1712)、ステップS1701の処理に移行する。なお、実行中のスレッドが0の状態で、新たなスレッドが起動された場合、現在選択中のスケジューリング方法が存在しない状態である。この場合、CPU#0は、ステップS1705:Yesのルートを通り、スケジューリングを行う。
また、同じ方法を選択した場合(ステップS1705:No)、CPU#0は、ステップS1701の処理に移行する。新たなスレッドが存在しない場合(ステップS1701:No)、CPU#0は、マルチコアプロセッサシステム100内の全スレッドが処理終了したか否かを判断する(ステップS1707)。全スレッドが処理終了した場合(ステップS1707:Yes)、CPU#0は、スケジューリング方法切替処理を終了する。
全スレッドが処理終了していない場合(ステップS1707:No)、CPU#0は、実行中スレッドに割込処理が発生したか否かを判断する(ステップS1708)。割込処理が発生した場合(ステップS1708:Yes)、CPU#0は、割込回数、割込処理時間を計測する(ステップS1709)。計測後、CPU#0は、ステップS1701の処理に移行する。
割込処理が発生していない場合(ステップS1708:No)、CPU#0は、スレッドスイッチが発生したか否かを判断する(ステップS1710)。スレッドスイッチが発生した場合(ステップS1710:Yes)、CPU#0は、計測した割込回数、割込処理時間を用いて、割込回数テーブル403を更新し(ステップS1711)、ステップS1701の処理に移行する。スレッドスイッチが発生していない場合(ステップS1710:No)、CPU#0は、ステップS1701の処理に移行する。
図18は、スレーブOSのスケジューリング方法切替処理手順の一例を示すフローチャートである。CPU#1は、マルチコアプロセッサシステム100内の全スレッドが処理終了したか否かを判断する(ステップS1801)。全スレッドが処理終了した場合(ステップS1801:Yes)、CPU#1は、スケジューリング方法切替処理を終了する。
全スレッドが処理終了していない場合(ステップS1801:No)、CPU#1は、実行中スレッドに割込処理が発生したか否かを判断する(ステップS1802)。割込処理が発生した場合(ステップS1802:Yes)、CPU#1は、割込回数、割込処理時間を計測する(ステップS1803)。計測後、CPU#1は、ステップS1801の処理に移行する。
割込処理が発生していない場合(ステップS1802:No)、CPU#1は、スレッドスイッチが発生したか否かを判断する(ステップS1804)。スレッドスイッチが発生した場合(ステップS1804:Yes)、CPU#1は、計測した割込回数、割込処理時間を用いて、割込回数テーブル403を更新し(ステップS1805)、ステップS1801の処理に移行する。スレッドスイッチが発生していない場合(ステップS1804:No)、CPU#1は、ステップS1801の処理に移行する。
図19は、割込平準化優先スケジューリング方法に従った割当処理手順の一例を示すフローチャートである。なお、割込平準化優先スケジューリング方法を実行するタイミングとしては、ステップS1703にて割り込み平準化優先スケジューリング方法に従った場合の実行時間の算出を行う際に実施される。割込平準化優先スケジューリング方法を実行する実行主体は、マスタCPUで実行中のマスタスケジューラ425である。
CPU#0は、割込回数テーブル403より、割込回数が高頻度のスレッド群を選択する(ステップS1901)。次に、CPU#0は、負荷優先スケジューリング方法に従って、割込回数が高頻度のスレッド群をCPUに割り当てる(ステップS1902)。続けて、CPU#0は、割込回数テーブル403より、割込回数が低頻度のスレッド群を選択する(ステップS1903)。選択後、CPU#0は、割込回数が低頻度のスレッド群のうち、同一プロセスのスレッド数が最多となるスレッド群を選択する(ステップS1904)。
次に、CPU#0は、選択されたスレッド群と同一プロセスであり、割込回数が高頻度のスレッドが存在するか否かを判断する(ステップS1905)。割込回数が高頻度のスレッドが存在する場合(ステップS1905:Yes)、CPU#0は、選択されたスレッド群のCPUの割当先を、同一プロセス内の割込回数が高頻度のスレッドが割り当てられたCPU群に決定する(ステップS1906)。決定後、CPU#0は、負荷優先スケジューリング方法に従って、選択されたスレッド群を決定されたCPU群に割り当てる(ステップS1907)。
CPUへの割当、または、割込回数が高頻度のスレッドが存在しない場合(ステップS1905:No)、CPU#0は、割込回数が低頻度のスレッド群のうち、全てのスレッド群を選択したか否かを判断する(ステップS1908)。全てのスレッド群を選択していない場合(ステップS1908:No)、CPU#0は、同一プロセスのスレッド数が次に多いスレッド群を選択し(ステップS1909)、ステップS1905の処理に移行する。
全てのスレッド群を選択している場合(ステップS1908:Yes)、CPU#0は、負荷優先スケジューリング方法に従って、未割当のスレッド群をCPUに割り当て(ステップS1910)、割込平準化優先スケジューリング方法に従った割当処理を終了する。
図20は、本実施の形態にかかるコンピュータを用いたシステムの適用例を示す説明図である。図20において、ネットワークNWは、サーバ2001、サーバ2002とクライアント2031〜クライアント2034とが通信可能なネットワークであり、たとえば、LAN、WAN、インターネット、携帯電話網などを含む。
サーバ2002は、クラウド2020を有するサーバ群(サーバ2021〜サーバ2025)の管理サーバである。クライアント2031はノート型PC(Personal Computer)である。クライアント2032はデスクトップ型PC、クライアント2033は携帯電話機である。携帯電話機として、クライアント2033は、スマートフォンであってもよいし、PHS(Personal Handyphone System)であってもよい。クライアント2034はタブレット型端末である。
図20のサーバ2001、サーバ2002、サーバ2021〜サーバ2025、クライアント2031〜クライアント2034は、たとえば、実施の形態で説明したデータ処理装置として、本実施の形態にかかるスケジューリング方法を実行する。たとえば、サーバ2001が本実施の形態で説明したマスタOS411の機能を有し、クライアント2031が本実施の形態で説明したスレーブOS412の機能を有した状態で、スケジューリング方法を実行する。
以上説明したように、データ処理システム、およびスケジューリング方法によれば、複数の割込処理の回数をカウントする割込コントローラと、割込回数に基づいて複数のスケジューリング方法のうち一つを選択するスケジューリング方法選択ユニットを含む。これにより、データ処理システムは、割込回数によって変化する実行状況に応じて、効率のより良いスケジューリング方法を選ぶことで、システム全体の処理速度を向上することができる。
また、データ処理システムは、複数のスケジューリング方法として、複数のデータ処理装置の負荷に基づいてスケジューリングを行う第1スケジューリング方法と、割込処理の回数に基づいてスケジューリングを行う第2スケジューリング方法とを含む。これにより、データ処理システムは、第1スケジューリング方法と第2スケジューリング方法のいずれかを選択し、効率のより良いスケジューリング方法を選ぶことで、データ処理システム全体の処理速度を向上することができる。
また、データ処理システムは、第1または第2スケジューリング方法に従ってデータ処理装置に処理を割り当てた場合のそれぞれの実行時間を算出し、実行時間の比較結果に基づいて、スケジューリング方法を選択してもよい。これにより、データ処理システムは、予測される実行時間が短いスケジューリング方法を選択できる。
また、データ処理システムは、第1または第2スケジューリング方法に従った実行時間の算出のタイミングを新たな処理が追加された場合に実行してもよい。これにより、データ処理システムは、スケジューリング方法が変化する可能性があるときに実行時間の算出が行え、無駄なタイミングで実行時間の算出を行うことを避けることができる。同様に、データ処理システムは、システム内の処理が完了した場合に実行時間の算出を行ってもよい。また、データ処理システムは、割込処理の頻度が高い処理が起動された場合、または完了した場合に実行時間の算出を行ってもよい。これにより、データ処理システムは、よりスケジューリング方法が変化する可能性があるときにだけ実行時間の算出が行える。
また、データ処理システムは、複数のデータ処理装置の各々のデータ処理装置に割り当てられる処理の負荷量と前述の処理の実行中に発生する割込処理にかかる時間とのデータ処理装置ごとの合計値のうち、最大の合計値を予測される実行時間として算出してもよい。これにより、データ処理システムは、割込処理が頻繁に処理される影響で処理時間が長くなってしまっているデータ処理装置を検出することができる。
また、データ処理システムは、第2スケジューリング方法において、割込処理が高頻度で発生する処理を複数のデータ処理装置に割り当てて、低頻度の処理を、同じプロセスに含まれる処理が割り当てられたデータ処理装置に割り当ててもよい。このように、高頻度の処理が割り当てられたデータ処理装置に対して、同一プロセスに属する処理を割り当てることで、他のプロセスグループの処理が該当のデータ処理装置に割り当てられにくくなる。したがって、割込処理が高頻度の処理によって発生する処理遅延を、他のプロセスグループに与えにくくすることができる。
また、データ処理システムは、低頻度の処理をデータ処理装置に割り当てた後、未割当の処理を、複数のデータ処理装置の負荷が均等になるように割り当ててもよい。これにより、データ処理システムは、各データ処理装置の割込処理を平準化しつつ、かつ負荷も均等になるように各処理を割り当てることができる。
なお、本実施の形態で説明したスケジューリング方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本スケジューリング方法を実行するプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本スケジューリング方法を実行するプログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)複数のデータ処理装置で実行される複数のスレッドの割込処理の回数をカウントする割込コントローラと、
カウントされた前記割込処理の回数に基づいて複数のスケジューリング方法から一のスケジューリング方法を選択するスケジューリング方法選択ユニットと、
を含むことを特徴とするデータ処理システム。
(付記2)前記複数のスケジューリング方法は、前記複数のデータ処理装置の負荷に基づいてスケジューリングを行う第1スケジューリング方法と、前記割込処理の回数に基づいてスケジューリングを行う第2スケジューリング方法とを含むこと
を特徴とする付記1に記載のデータ処理システム。
(付記3)第1のデータ処理装置が、第1スケジューリング方法にて前記第1のデータ処理装置を含む複数のデータ処理装置に第1の複数の処理を割り当て、
新たな処理を前記複数のデータ処理装置に割り当てるとき、前記新たな処理と前記第1の複数の処理とを含めた第2の複数の処理を前記第1スケジューリング方法でスケジューリングしたときの第1実行時間を算出し、
前記第2の複数の処理を前記第1スケジューリング方法とは異なる第2スケジューリング方法でスケジューリングしたときの第2実行時間を算出し、
前記第2の複数の処理を前記複数のデータ処理装置に割り当てるために、前記第1実行時間と前記第2実行時間との比較結果に基づいて、前記第1スケジューリング方法または前記第2スケジューリング方法を選択すること
を特徴とするスケジューリング方法。
(付記4)前記第1スケジューリング方法においては前記複数のデータ処理装置の負荷に基づいてスケジューリングが行われ、
前記第2スケジューリング方法においては前記第2の複数の処理における割込処理の回数に基づいてスケジューリングが行われること
を特徴とする付記3に記載のスケジューリング方法。
(付記5)前記第1実行時間を算出する処理は、
前記第1スケジューリング方法でスケジューリングしたときに、前記複数のデータ処理装置の各々のデータ処理装置に割り当てられる処理の負荷量と当該処理の実行中に発生する割込処理にかかる時間との前記データ処理装置ごとの合計値のうち、最大の合計値を前記第1実行時間として算出し、
前記第2実行時間を算出する処理は、
前記第2スケジューリング方法でスケジューリングしたときに、前記複数のデータ処理装置の各々のデータ処理装置に割り当てられる処理の負荷量と当該処理の実行中に発生する割込処理にかかる時間との前記データ処理装置ごとの合計値のうち、最大の合計値を前記第2実行時間として算出すること
を特徴とする付記3に記載のスケジューリング方法。
(付記6)前記第2スケジューリング方法において、
前記第2の複数の処理の中で割込処理が第1頻度で発生する処理を第2の複数のデータ処理装置に割り当て、
前記第2の複数の処理の中で割込処理が第2頻度で発生する処理を前記処理と同じプロセスに含まれる処理が割り当てられた前記複数のデータ処理装置の中のデータ処理装置に割り当てること
を特徴とする付記3乃至付記5の何れか一に記載のスケジューリング方法。
(付記7)前記第1頻度は前記第2頻度よりも高いこと
を特徴とする付記6に記載のスケジューリング方法。
(付記8)前記第2頻度で発生する処理が割り当てられた後に、前記第2の複数の処理の中で割り当てられていない処理を、前記複数のデータ処理装置の負荷が均等になるように前記複数のデータ処理装置に割り当てること
を特徴とする付記6または付記7に記載のスケジューリング方法。
(付記9)第1のデータ処理装置が前記第1のデータ処理装置を含む複数のデータ処理装置に複数のスレッドを割り当てるスケジューリング方法において、
前記複数のスレッドの中で割込処理が第1頻度で発生するスレッドを第2の複数のデータ処理装置に割り当て、
前記複数のスレッドの中で割込処理が前記第1頻度よりも低い第2頻度で発生するスレッドを前記スレッドと同じプロセスに含まれるスレッドが割り当てられた前記複数のデータ処理装置の中のデータ処理装置に割り当てること
を特徴とするスケジューリング方法。
(付記10)前記第2頻度で発生するスレッドが割り当てられた後に、新たなスレッドと前記複数のスレッドとの中で割り当てられていないスレッドを、前記複数のデータ処理装置の負荷が均等になるように前記複数のデータ処理装置に割り当てること
を特徴とする付記9に記載のスケジューリング方法。
0−0〜2、1−0〜2、2−0、3−0 スレッド
402 割込コントローラ
403 割込回数テーブル
424 スケジューリング方法選択部
501、502 算出部
503 比較部
504 選択部
505 割当部

Claims (7)

  1. 複数のスレッドを実行する複数のコアを有するマルチコアプロセッサと、
    前記複数のコアの各々のコアで実行されるスレッドの割込処理の回数をカウントする前記各々のコアに対応する割込コントローラと、
    を有するマルチコアプロセッサシステムであって、前記複数のコアのうちの一のコアは、
    前記各々のコアの負荷に基づいてスケジューリングを行う第1スケジューリング方法で前記複数のスレッドをスケジューリングしたときの第1実行時間を算出し、
    前記各々のコアの割込処理の回数に基づいてスケジューリングを行う第2スケジューリング方法で前記複数のスレッドをスケジューリングしたときの第2実行時間を算出し、
    前記第1実行時間と前記第2実行時間との比較結果に基づいて前記第1スケジューリング方法と前記第2スケジューリング方法とから一のスケジューリング方法を選択する
    ことを特徴とするマルチコアプロセッサシステム
  2. 複数の処理を実行する複数のコアを有するマルチコアプロセッサと、前記複数のコアの各々のコアで実行される処理の割込処理の回数をカウントする前記各々のコアに対応する割込コントローラと、を有するマルチコアプロセッサシステムにおけるスケジューリング方法であって、
    前記複数のコアのうちの第1のコアが、
    前記各々のコアの負荷に基づいてスケジューリングを行う第1スケジューリング方法にて前記複数のコアに第1の複数の処理を割り当て、
    新たな処理を前記複数のコアのいずれかに割り当てるとき、前記新たな処理と前記第1の複数の処理とを含めた第2の複数の処理を前記第1スケジューリング方法でスケジューリングしたときの第1実行時間を算出し、
    前記各々のコアの割込処理の回数に基づいてスケジューリングを行う第2スケジューリング方法で前記第2の複数の処理をスケジューリングしたときの第2実行時間を算出し、
    前記第2の複数の処理を前記複数のコアに割り当てるために、前記第1実行時間と前記第2実行時間との比較結果に基づいて、前記第1スケジューリング方法または前記第2スケジューリング方法を選択すること
    を特徴とするスケジューリング方法。
  3. 前記第1のコアが、
    前記第2スケジューリング方法において、
    前記第2の複数の処理の中で割込処理が第1頻度で発生する処理を第2の複数のコアに割り当て、
    前記第2の複数の処理の中で割込処理が第2頻度で発生する処理を前記処理と同じプロセスに含まれる処理が割り当てられた前記複数のコアの中のコアに割り当てること
    を特徴とする請求項2に記載のスケジューリング方法。
  4. 前記第1頻度は前記第2頻度よりも高いこと
    を特徴とする請求項3に記載のスケジューリング方法。
  5. 前記第1のコアが、
    前記第2頻度で発生する処理を割り当てた後に、前記第2の複数の処理の中で割り当てられていない処理を、前記複数のコアの負荷が均等になるように前記複数のコアに割り当てること
    を特徴とする請求項3または請求項4に記載のスケジューリング方法。
  6. 複数のスレッドを実行する複数のコアを有するマルチコアプロセッサと、前記複数のコアの各々のコアで実行されるスレッドの割込処理の回数をカウントする前記各々のコアに対応する割込コントローラと、を有するマルチコアプロセッサシステムにおけるスケジューリング方法であって、
    前記複数のコアのうちの第1のコアが、
    前記複数のスレッドの中で割込処理が第1頻度で発生するスレッドを第2の複数のコアに割り当て、
    前記複数のスレッドの中で割込処理が前記第1頻度よりも低い第2頻度で発生するスレッドを前記スレッドと同じプロセスに含まれるスレッドが割り当てられた前記複数のコアの中のコアに割り当てること
    を特徴とするスケジューリング方法。
  7. 前記第1のコアが、
    前記第2頻度で発生するスレッドを割り当てた後に、新たなスレッドと前記複数のスレッドとの中で割り当てられていないスレッドを、前記複数のコアの負荷が均等になるように前記複数のコアに割り当てること
    を特徴とする請求項6に記載のスケジューリング方法。
JP2013525502A 2011-07-27 2011-07-27 マルチコアプロセッサシステム、およびスケジューリング方法 Expired - Fee Related JP5765423B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/067134 WO2013014767A1 (ja) 2011-07-27 2011-07-27 データ処理システム、およびスケジューリング方法

Publications (2)

Publication Number Publication Date
JPWO2013014767A1 JPWO2013014767A1 (ja) 2015-02-23
JP5765423B2 true JP5765423B2 (ja) 2015-08-19

Family

ID=47600656

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013525502A Expired - Fee Related JP5765423B2 (ja) 2011-07-27 2011-07-27 マルチコアプロセッサシステム、およびスケジューリング方法

Country Status (3)

Country Link
US (2) US9430271B2 (ja)
JP (1) JP5765423B2 (ja)
WO (1) WO2013014767A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6387747B2 (ja) * 2013-09-27 2018-09-12 日本電気株式会社 情報処理装置、障害回避方法およびコンピュータプログラム
JP6445876B2 (ja) * 2015-01-26 2018-12-26 日本電信電話株式会社 リソース割当装置、リソース割当システム、および、リソース割当方法
US9658893B2 (en) * 2015-05-06 2017-05-23 Runtime Design Automation Multilayered resource scheduling
KR102464678B1 (ko) * 2016-03-18 2022-11-11 한국전자통신연구원 매니코어 시스템에서 쓰레드를 스케줄링 하는 방법 및 그 장치
WO2018050243A1 (en) * 2016-09-16 2018-03-22 Huawei Technologies Co., Ltd. Optimize operating system timers for high activation rate
US10496448B2 (en) * 2017-04-01 2019-12-03 Intel Corporation De-centralized load-balancing at processors
US11138037B2 (en) * 2017-11-02 2021-10-05 Mediatek Inc. Switch policy for hybrid scheduling in multi-processor systems
US20210124615A1 (en) * 2019-10-29 2021-04-29 Thomas Klingenbrunn Thread scheduling based on performance metric information
US11620154B2 (en) * 2020-01-02 2023-04-04 International Business Machines Corporation Suppressing interrupts to an application thread

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09282188A (ja) 1996-04-16 1997-10-31 Mitsubishi Electric Corp 割込処理方法およびこの方法を用いたシステム
JP2001331461A (ja) * 2000-05-19 2001-11-30 Nec Corp マルチプロセッサシステム及びプロセッサスケジュリング方法
US7849463B2 (en) * 2000-06-02 2010-12-07 Microsoft Corporation Dynamically variable idle time thread scheduling
US7080379B2 (en) 2002-06-20 2006-07-18 International Business Machines Corporation Multiprocessor load balancing system for prioritizing threads and assigning threads into one of a plurality of run queues based on a priority band and a current load of the run queue
JP4609113B2 (ja) * 2005-03-01 2011-01-12 セイコーエプソン株式会社 プロセッサ
US7689838B2 (en) * 2005-12-22 2010-03-30 Intel Corporation Method and apparatus for providing for detecting processor state transitions
WO2010092483A1 (en) * 2009-02-13 2010-08-19 Alexey Raevsky Devices and methods for optimizing data-parallel processing in multi-core computing systems
US9207943B2 (en) * 2009-03-17 2015-12-08 Qualcomm Incorporated Real time multithreaded scheduler and scheduling method
US9342379B2 (en) * 2011-01-21 2016-05-17 Wind River Systems, Inc. Lock free acquisition and release of a semaphore in a multi-core processor environment

Also Published As

Publication number Publication date
US20160357604A1 (en) 2016-12-08
WO2013014767A1 (ja) 2013-01-31
US9430271B2 (en) 2016-08-30
US20140143790A1 (en) 2014-05-22
JPWO2013014767A1 (ja) 2015-02-23
US9513965B1 (en) 2016-12-06

Similar Documents

Publication Publication Date Title
JP5765423B2 (ja) マルチコアプロセッサシステム、およびスケジューリング方法
EP3401787B1 (en) Analyzing resource utilization of a cloud computing resource in a cloud computing environment
US10536392B2 (en) Monitoring data streams and scaling computing resources based on the data streams
US9027028B2 (en) Controlling the use of computing resources in a database as a service
US9483319B2 (en) Job scheduling apparatus and method therefor
US8806501B2 (en) Predictive dynamic system scheduling
US8615764B2 (en) Dynamic system scheduling
US9852008B2 (en) Computer-readable recording medium storing execution information notification program, information processing apparatus, and information processing system
KR101553650B1 (ko) 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법
EP2613257B1 (en) Systems and methods for use in performing one or more tasks
Tang et al. MTSD: A task scheduling algorithm for MapReduce base on deadline constraints
US20150378782A1 (en) Scheduling of tasks on idle processors without context switching
US9547576B2 (en) Multi-core processor system and control method
JPWO2014208139A1 (ja) 異常検出装置、制御方法、及びプログラム
JPWO2011104823A1 (ja) マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
JP5861715B2 (ja) データ処理装置、送信装置、スケジューリング方法、送信制御方法、スケジューリングプログラム、および送信制御プログラム
JP5708450B2 (ja) マルチコアプロセッサシステム、レジスタ利用方法、およびレジスタ利用プログラム
US8024738B2 (en) Method and system for distributing unused processor cycles within a dispatch window
US20130125131A1 (en) Multi-core processor system, thread control method, and computer product
US9189279B2 (en) Assignment method and multi-core processor system
US9405470B2 (en) Data processing system and data processing method
CN115756866A (zh) 负载均衡方法、装置及存储介质
KR101639947B1 (ko) 하둡 선점 데드라인 제약 스케줄링 방법 및 그 방법을 수행하는 컴퓨터프로그램과, 그 프로그램이 기록된 매체
JP5348315B2 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法
CN113568728A (zh) 一种作业调度方法、装置、设备及介质

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150224

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150427

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150601

R150 Certificate of patent or registration of utility model

Ref document number: 5765423

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees