JP5347451B2 - マルチプロセッサシステム、競合回避プログラム及び競合回避方法 - Google Patents

マルチプロセッサシステム、競合回避プログラム及び競合回避方法 Download PDF

Info

Publication number
JP5347451B2
JP5347451B2 JP2008300896A JP2008300896A JP5347451B2 JP 5347451 B2 JP5347451 B2 JP 5347451B2 JP 2008300896 A JP2008300896 A JP 2008300896A JP 2008300896 A JP2008300896 A JP 2008300896A JP 5347451 B2 JP5347451 B2 JP 5347451B2
Authority
JP
Japan
Prior art keywords
resource
waiting time
avoidance target
avoidance
conflict
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
JP2008300896A
Other languages
English (en)
Other versions
JP2010128664A (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
Priority to JP2008300896A priority Critical patent/JP5347451B2/ja
Publication of JP2010128664A publication Critical patent/JP2010128664A/ja
Application granted granted Critical
Publication of JP5347451B2 publication Critical patent/JP5347451B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)

Description

この発明は、複数のプロセッサによる並列処理を実行するマルチプロセッサを搭載したマルチプロセッサシステム、競合回避プログラム及び競合回避方法に関する。
近年のサーバ製品等においては、複数のCPUを使って並列処理を実行するマルチプロセッサシステムが一般的になりつつある。これらのシステムでは、運用に必要な多数のプロセスが、次々に交代しながら各CPU(central processing unit:中央処理装置)の実行権を握る動作(スケジューリング)がOS(operating system)によって繰返されている。
また、各プロセスは、マルチプロセッサ上で処理を実行する過程において、様々なリソース(メモリ、ディスク、ネットワーク又はバッファ等)を必要とする。
また、休止していたプロセスを起床させる場合には、メモリのキャッシュの有効性を考慮して、前回実行していたCPUにおける実行を優先し、各CPUに対する待ちキューの数に顕著な差がある場合には、各CPUの負荷が均等になるように、繋ぐキューを変更して選択するものである。
例えば、従来のマルチプロセッサシステム用のスケジューリング方法は、マルチプロセッサシステム上で動くプロセスについて、その処理時間等をもとに決定した「処理特性」なる基準を用いてスケジューリングを行なう方式が開示されている。特に、この従来のマルチプロセッサシステム用のスケジューリング方法は、プロセス毎にあらかじめ処理特性を定めておき、運用中に計測したプロセスの処理時間が処理特性をオーバーする傾向が見られた場合には、該当プロセスを停止するか、若しくは該当プロセスに関するスケジューリングのアルゴリズムを変更するという方式が提唱されている(例えば、特許文献1参照)。
また、従来の共有リソースの競合検出方法は、マルチスレッド競合を検知した時点で割込みを発生させ、プロセスの停止(休止)や他プロセススイッチングを行なうことで、競合を回避する方法が開示されている(例えば、特許文献2参照)。
特開平6−119300号公報 特開2004−252670号公報
しかしながら、従来のマルチプロセッサシステム用のスケジューリング方法は、どのリソースに関するリソース競合が遅延に影響しているかを特定できないまま、単に処理時間を超過したことに基づき、他のスケジューリングアルゴリズムに変更するものであり、リソース競合が解消される保障がないという課題があった。
また、従来の共有リソースの競合回避方法は、割込み処理やプロセス切替えを実行する度に生じるオーバーヘッドの影響が大きくなる可能性が高いという課題があった。
特に、従来のマルチプロセッサシステム用のスケジューリング方法及び共有リソースの競合回避方法は、競合を検出した時点において、プロセスの停止や休止を行なうことにより、場当たり的にリソース競合を回避しているのみで、同種のリソース競合がすぐに発生する可能性が高く、恒久的な対策にならないという課題があった。
この発明に係るマルチプロセッサシステムは、複数のプロセッサのうち一のプロセッサ上で動作する一のプロセスがリソースを使用している場合に、他のプロセッサ上で動作する他のプロセスが当該使用されているリソースに対するロックの要求及び/又はロックの要求後の待ち時間に基づいて、リソースの競合を検知する競合検知部と、前記検知したリソース競合における競合対象であるリソースを、リソース競合を回避すべき回避対象として特定する回避対象特定部と、各プロセスの起床にあたり、当該各プロセスが前記回避対象のリソースを使用するプロセスであるかを判定し、当該判定結果に基づき、前記起床される各プロセスに対して、前記複数のプロセッサのうち、一のプロセッサを割り当てる実行CPU決定部と、前記待ち時間に基づき、リソース毎に当該待ち時間を積算する合計待ち時間算出部と、リソース毎のテーブルを有し、当該各テーブルのリソースに対応するプロセッサ情報及び待ち時間情報を格納する情報格納部と、を備え、前記回避対象特定部が、前記合計待ち時間算出部によるリソース毎の積算結果に基づき、合計待ち時間が所定の基準値を超えたリソースを回避対象のリソースとして特定し、前記実行プロセッサ決定部は、前記特定された回避対象のリソースに基づき、前記起床されるプロセスが使用するリソースに対して当該プロセスが回避対象のリソースを使用するプロセスであるかを判断し、当該起床されるプロセスが回避対象のリソースを使用する場合に、当該回避対象のリソースに対応する待ち時間のうち、前記情報格納部に格納される所定の待ち時間に対応するプロセッサを、当該起床されるプロセスに対して割り当てるものである。
この発明は、上述のような課題を解決するためになされたもので、第1の目的は、リソース競合の要因となるリソースを検出したうえで、そのリソースを使用するプロセスに対して、リソース競合を回避するスケジューリングを行なうことができるマルチプロセッサシステム、競合回避プログラム及び競合回避方法を提供するものである。
また、第2の目的は、リソース競合の対象であるリソースを予想して事前にスケジューリングで回避することにより、リソース競合自体を回避することができ、オーバーヘッドになり得る割込み処理やプロセススイッチングを発生させずに、効率の良いシステムの運用を行なうことができるマルチプロセッサシステム、競合回避プログラム及び競合回避方法を提供するものである。
また、第3の目的は、定期的に収集した情報に基づき、プロセスの起床時において、リソース競合を回避するようにスケジューリングすることにより、リソース競合に対する恒久的な対策を実施することができるマルチプロセッサシステム、競合回避プログラム及び競合回避方法を提供するものである。
開示のマルチプロセッサシステムは、リソースの開放待ちに伴う処理(ビジーウェイトによるCPUの占有や、タスク切り替え処理)を削減し、その分のCPU資源を別のプロセスの処理に割り当てることができ、システムの処理効率を向上させることができるという効果を奏する。
ここで、本発明は多くの異なる形態で実施可能である。したがって、下記の各実施形態の記載内容のみで解釈すべきではない。また、各実施形態の全体を通して同じ要素には同じ符号を付けている。
各実施形態では、主にシステムについて説明するが、いわゆる当業者であれば明らかな通り、本発明はコンピュータで使用可能なプログラム、方法としても実施できる。また、本発明は、ハードウェア、ソフトウェア、又は、ソフトウェア及びハードウェアの実施形態で実施可能である。プログラムは、ハードディスク、CD−ROM、DVD−ROM、光記憶装置又は磁気記憶装置等の任意のコンピュータ可読媒体に記録できる。さらに、プログラムはネットワークを介した他のコンピュータに記録することができる。
(本発明の第1の実施形態)
図1は第1の実施形態に係るマルチプロセッサシステムの主要な構成を示す概略図、図2(a)はプロセス実行格納部に記録される情報の一例を示す説明図、図2(b)はリソース排他情報格納部に記録される情報の一例を示す説明図、図2(c)はCPUプロセス情報格納部に記録される情報の一例を示す説明図、図3はマルチプロセッサシステムにおける競合回避前のプロセス稼動例を示す説明図、図4はリソース排他情報格納部及びCPUプロセス情報格納部の更新手順を示すシーケンス図、図5はプロセス実行格納部の更新手順を示すシーケンス図、図6はマルチプロセッサシステムにおける競合回避後のプロセス稼動例を示す説明図、図7(a)はプロセス実行格納部に記録される情報の他の例を示す説明図、図7(b)はリソース排他情報格納部に記録される情報の他の例を示す説明図、図7(c)はCPUプロセス情報格納部に記録される情報の他の例を示す説明図、図8はマルチプロセッサシステムにおけるプロセス起床時の競合回避の手順を示すフローチャートである。
図1において、マルチプロセッサシステム100は、従来のマルチプロセッサシステムと同様の構成要素である、プロセス起床部1、待ちキュー2、実行キュー3、実行キュー接続部4及びプロセッサ(CPU)5を備えている。
プロセス起床部1は、プロセッサ5上で動作しているプロセスによるリソースの開放に基づき、後述する実行CPU決定部7に対して、休止したプロセス(以下、休止プロセス6と称す)の起床を行なうように通知する。
待ちキュー2は、CPUが割り当てられていないプロセスのデータを先入れ先出し(FIFO:First In First Out)のリスト構造で保持するものである。
実行キュー3は、プロセスのデータを先入れ先出し(FIFO)のリスト構造で保持するものであり、保持するプロセスがCPUの実行権を獲得すると、対応するCPUにプロセスのデータを送り出す。
実行キュー接続部4は、後述する実行CPU決定部7によるCPUの割り当て結果に基づき、待ちキュー2から起床対象であるプロセスのデータを読出し、割り当てられたCPUの実行キュー3に、該当する休止プロセス6を繋ぐものである。
また、マルチプロセッサシステム100は、従来のマルチプロセッサシステムの構成要素である実行CPU決定部に対して、後述する新たな機能を追加した実行CPU決定部7を備えている。
実行CPU決定部7は、各プロセスの起床にあたり、起床されるプロセスが使用するリソースに対して、後述するソース排他情報格納部11に格納される、リソース識別情報及び回避対象情報に基づき、当該プロセスが回避対象のリソースを使用するプロセスであるかを判定する。
また、実行CPU決定部7は、起床されるプロセスが回避対象のリソースを使用する場合に、後述するCPUプロセス情報格納部14に格納される、当該回避対象のリソースに対応するテーブルにおける待ち時間情報のうち、最短の待ち時間に対応するCPUを、当該起床されるプロセスに対して割り当てる。すなわち、実行CPU決定部7は、判定結果に基づき、起床させる各プロセスに対して、複数のCPUのうち、一のCPUを割り当てる。
また、マルチプロセッサシステム100は、従来のマルチプロセッサシステムに対して、新たに追加した構成要素である、プロセス実行格納部8、排他情報収集部9、合計待ち時間算出部10、リソース排他情報格納部11、競合検知部12、回避対象特定部13及びCPUプロセス情報格納部14を備えている。
プロセス実行格納部8は、例えば、図2(a)に示すように、各プロセスが、一のCPUの実行権を占有して動作し、任意のリソースを使用する場合に、当該各プロセスを識別する情報(以下、プロセスIDと称す)、当該各プロセスを動作させるCPUを識別する情報(以下、CPUIDと称す)、当該各プロセスが使用するリソースを識別する情報(以下、リソースIDと称す)、及び、当該各プロセスがリソースのロックを要求してロックを獲得するまでの待ち時間の情報(以下、待ち時間情報と称す)を格納する。なお、CPUID及びプロセスIDは、メモリ内に保持されているプロセス情報から取得することが可能である。また、リソースIDとしては、例えば、リソース名、識別番号、又はリソースに対応する排他変数等が挙げられる。
排他情報収集部9は、プロセス実行格納部8にリアルタイムに記録される情報(CPUID、プロセスID、リソースID、待ち時間情報)を定期的に監視しており、一定周期における所定の期間内で記録された情報を、後述するリソース排他情報格納部11及びCPUプロセス情報格納部14におけるテーブルの所定の欄に更新する。
なお、プロセス実行格納部8に、新規のリソースIDが記録された場合には、後述するリソース排他情報格納部11のテーブルに新規の欄を作成して所定の情報を記録し、後述するCPUプロセス情報格納部14に新規のテーブルを作成して所定の情報を記録する。また、プロセス実行格納部8に、リソースIDとプロセスIDとの新規の組み合わせが記録された場合には、後述するCPUプロセス情報格納部14のテーブルに新規の欄を作成して所定の情報を記録する。
合計待ち時間算出部10は、排他情報収集部9からのリソースID及び待ち時間情報に基づき、リソースIDのリソース毎に待ち時間を積算した合計の待ち時間(以下、合計待ち時間と称す)を算出し、リソース排他情報格納部11に更新(新規は記録)する。
リソース排他情報格納部11は、例えば、図2(b)に示すように、合計待ち時間の情報(以下、合計待ち時間情報と称す)、当該合計待ち時間が所定の基準値を超えたリソースに対して回避対象のリソースとして識別する情報(以下、回避対象情報と称す)、及び、当該回避対象のリソースに対応する合計待ち時間を対象値とする対象値の情報(以下、対象値情報と称す)を、リソースIDのリソース毎に対応付けて格納する。なお、所定の基準値は、システム環境によってチューニングされ、例えば、リアルタイム性が要求されるマルチプロセッサシステム100においては、msec〜μsec単位での設定が想定される。
競合検知部12は、リソース排他情報格納部11に記録される合計待ち時間情報に基づき、合計待ち時間が所定の基準値を超えたことを検知して、回避対象特定部13に検知結果を出力する。すなわち、競合検知部12は、複数のCPUによるリソース競合を検知する。
回避対象特定部13は、リソース排他情報格納部11のリソースIDにおける、合計待ち時間が所定の基準値を超えたリソースに対して、回避対象情報を記録し、合計待ち時間を対象値情報として記録する。すなわち、回避対象特定部13は、競合検知部12により検知したリソース競合における競合対象であるリソースを、リソース競合を回避すべき回避対象として特定する。
なお、本実施形態においては、回避対象のリソースを一つとし、リソース排他情報格納部11の回避対象及び対象値の欄に対して初期段階で情報を記録する場合であり、合計待ち時間が所定の基準値を超えたリソースが複数存在する場合には、合計待ち時間が最長である一のリソースに対して、回避対象情報及び対象値情報を記録する。
また、リソース排他情報格納部11の回避対象及び対象値の欄に記録された情報は、回避対象のリソースを使用するプロセスが、その後、他のリソースを使用することになり、当該他のリソースの合計待ち時間が、当該回避対象のリソースの対象値を超えるまでは、保持するものである。
CPUプロセス情報格納部14は、例えば、図2(c)に示すように、リソースIDのリソース毎にテーブルを有し、当該各テーブルのリソースIDに対応する、CPUID、プロセスID及び待ち時間情報を格納する。
つぎに、本実施形態に係るマルチプロセッサシステム100における、リソース競合を回避する処理手順について説明する。
なお、以下の説明においては、本実施形態に係るマルチプロセッサシステム100として、計3個のプロセッサ5(CPU#0、CPU#1、CPU#2)を搭載した場合について説明するが、このプロセッサの個数に限られるものではない。
まず、回避対象情報がリソース排他情報格納部11に未設定の場合であり、本発明によるリソース競合の回避が機能する前における、一般的なプロセスの運用について説明する。
マルチプロセッサシステム100は、各CPU上において、一のプロセスが、一定期間、CPUの実行権を占有し、処理が一段落した時点で、他のプロセスに切り替わるというように、様々なプロセスが切り換わりながら、複数のCPUによる並列処理が行なわれる。
また、処理が一段落したプロセスは、消滅又は休止状態に遷移するのであるが、休止状態に遷移した休止プロセス6は、やがて他のプロセスから起床され、CPU毎に用意された実行キュー3に繋がれて、実行待ち状態に遷移する。
そして、実行キュー3に繋がれたプロセスは、スケジューリングの契機が巡ってくると、実行キュー3から取り出され、該当するCPUの実行権を再び獲得する。一般的には、このような一連の操作のことを、プロセススケジューリングと称し、主にOSのスケジューラ機能が実現している。
なお、異なるCPU上のプロセスが、同一のリソースを同時期に必要とした場合には、プロセス間で排他処理を行なう必要が生じる。
この排他処理として、本実施形態に係るマルチプロセッサシステム100においては、以下に示すようなスピンロックの仕組みを採用している。
まず、各プロセスは、CPU上で動作中であり、リソースを必要とした時点において、スピンロック関数を呼び出す。
このスピンロック関数では、リソースを必要としたプロセスが、グローバルな(どのプロセスからも参照可能な)排他フラグを参照し、現時点において、リソースを獲得しているプロセスの有無をチェックする。
そして、排他フラグがオフである(そのリソースを獲得しているプロセスが他に存在しない)ならば、リソースを必要としたプロセスは、自プロセスに対応する排他フラグをオンにしてリソースを使用し始める。
また、排他フラグがオンである(そのリソースを獲得しているプロセスが他に存在する)ならば、リソースを必要としたプロセスは、ループ処理等でCPUを空転させながら、排他フラグの参照を繰り返す。また、リソースを必要としたプロセスは、他のプロセスからリソースが開放され、排他フラグがオフに変わったことを確認すると、自プロセスに対応する排他フラグをオンにしてリソースを使用し始める。
なお、本実施形態に係るマルチプロセッサシステム100においては、排他処理として、スピンロックを用いる場合について説明するが、スピンロックに限られるものではなく、例えば、ミューテックス(Mutex)やセマフォ(Semaphore)等が挙げられる。このミューテックスは、スピンロックと同様に、待ち時間中のプロセスが、CPUの実行権を保持したままの方式である。
これに対し、セマフォは、リソースの要求時に、そのリソースを獲得しているプロセスが他に存在する場合において、一旦、CPUの実行権を別のプロセスに明け渡し、リソースの要求を行なったプロセスを休止状態に強制的に遷移する点で、スピンロックと異なっている。また、セマフォは、所望のリソースが開放される契機により、休止プロセス6が、再び起床され、CPUの実行権を再獲得し、所望のリソースを使用可能とする方式である。
なお、スピンロックは、プロセスが待ち時間中にループ処理によりビジーウェイトを行なうために、リソース競合が激しくてリソースの確保までの期間が長時間になるような状況下においては、CPU資源を多大に浪費することになり非効率である。
また、セマフォは、プロセスの休止、停止及び起床といった操作に、タスクスイッチングに伴う処理的なオーバーヘッドが伴うために、リソース競合が頻繁に起きる状況下では、その分、プロセス切替えに伴うオーバーヘッドも増加して非効率にならざるを得ない。特に、昨今のマルチプロセッサシステムでは、搭載するプロセッサの数の増加に伴い、リソース競合による非効率性は無視できないものとなっている。
このため、本実施形態に係るマルチプロセッサシステム100においては、スピンロック等の排他処理を有効に機能させるために、後述する新たな処理を追加したものである。
ここで、新たに追加した処理を説明するにあたり、例えば、図3に示すような、各プロセスによるCPUの実行権の獲得状態及びリソースの占有状態を想定する。
なお、図3においては、ある一定の期間(ここでは、時刻T1〜T4の範囲)内で、CPU#0上ではプロセスD、プロセスC及びプロセスGが順に実行され、CPU#1上ではプロセスB及びプロセスFが順に実行され、CPU#2上ではプロセスA及びプロセスEが順に実行されている場合を想定する。
また、図3においては、各プロセスによる処理の過程において、プロセスA、プロセスB及びプロセスCはリソースαを使用し、プロセスF及びプロセスGはリソースβを使用し、プロセスD及びプロセスEはリソースγを使用する場合を想定する。
特に、プロセスBに関してその動きを説明すると、プロセスBは、CPU#1上で動作しており、時刻T2の時点で、リソースαのロック取得要求を出している。
しかしながら、時刻T2の時点で、リソースαはプロセスAにより既に使用されているために、プロセスBは「待ち」状態になる。なお、本実施形態においては、排他処理として、スピンロックを採用しているため、この「待ち」状態の間に、プロセスBは空転しながらCPUを浪費し続ける。
やがて、プロセスAが時刻T3の時点でリソースαのロックを開放すると、プロセスBはリソースαのロックを取得でき、プロセスBはリソースαの使用が可能になる。
以上のような、各プロセスによるCPUの実行権の獲得状態及びリソースの占有状態に対して、マルチプロセッサシステム100のOSは、各CPU上でプロセスが実行権を握り、動作中に任意のリソースを使用する度に、そのプロセスに対応したCPUID、リソースID及び待ち時間情報を、プロセス実行格納部8にリアルタイムに記録していく。
すなわち、図3に示す時刻T1〜T4の期間内においては、図2(a)に示すように、CPUID、リソースID及び待ち時間情報が、プロセス実行格納部8に記録されることになる。
なお、図2(a)において、太線枠で囲まれた行は、図3に示すプロセスBが、CPU上を動作中に、時刻T3のタイミングで記録されたデータである。また、待ち時間情報の「135」は、ロック取得要求時である時刻T2からロック取得時である時刻T3までの時間(T3−T2の差分)が、135msecであることを示している。
また、図3に示すプロセスA、プロセスD、プロセスE及びプロセスFについては、待ち時間情報が「15」又は「25」の短時間であるために、ロック取得要求時において、所望のリソースを使用しているプロセスが他に存在せず、リソースのロックをすぐに取得でき、空転時間を除く、走行時間のみであったことを示している。
そして、排他情報収集部9は、図4に示すように、プロセス実行格納部8にリアルタイムに記録される情報を定期的に監視しており(ステップS101)、一定周期における所定の期間内で記録された情報を、CPUプロセス情報格納部14に更新する(ステップS102)。
また、排他情報収集部9は、一定周期における所定の期間内で記録された情報を、合計待ち時間算出部10を介して、リソース排他情報格納部11に更新する(ステップS103)。なお、合計待ち時間算出部10は、排他情報収集部9からのリソースID及び待ち時間情報に基づき、合計待ち時間を算出し、リソース排他情報格納部11に更新する。
すなわち、図2(a)に示す情報においては、図2(b)に示すように、リソースID及び合計待ち時間情報が、リソース排他情報格納部11に記録される。また、図2(a)に示す情報においては、図2(c)に示すように、リソースID、プロセスID及び待ち時間情報が、CPUプロセス情報格納部14に記録される。
そして、競合検知部12は、リソース排他情報格納部11に記録される合計待ち時間情報を参照し(ステップS104)、合計待ち時間が所定の基準値を超えたことを検知して、回避対象特定部13に検知結果を出力する(ステップS105)。
なお、所定の基準値を、例えば、200msecに設定している場合には、図2(b)において、リソースID「α」に対応する合計待ち時間情報が「360」msecであり、所定の基準値を上回り、リソースαがリソース競合の回避対象となる。
回避対象特定部13は、リソース排他情報格納部11における、合計待ち時間が所定の基準値を超えたリソースに対して、リソース競合の回避対象として回避対象情報を記録し、合計待ち時間を対象値情報として記録する(ステップS106)。
すなわち、図2(a)に示す情報においては、図2(b)に示すように、リソースID「α」に対応する、回避対象情報の欄にマーキングされ、対象値情報の欄に合計待ち時間情報「360」がコピーされる。
そして、CPU上で動作した図3に示すプロセスA〜Gは、目的の処理をそれぞれ終えると、他のプロセスにCPUの実行権を譲り渡した後に、休止プロセス6となる。
以下、回避対象情報がリソース排他情報格納部11に設定された場合であり、本発明によるリソース競合の回避が機能する場合について、図5を用いて説明する。
まず、プロセス起床部1は、任意のイベントの契機により、他のプロセスからの命令に基づき、実行CPU決定部7を起動して、実行キュー3の接続要求を送信する(ステップS201)。
実行CPU決定部7は、リソース排他情報格納部11を参照し(ステップS202)、回避対象のリソース(ここでは、リソースα)を認識する(ステップS203)。
つぎに、実行CPU決定部7は、CPUプロセス情報格納部14における回避対象のリソース(ここでは、リソースα)に対応するテーブルを参照する(ステップS204)。
そして、実行CPU決定部7は、これから起床させるプロセスが、回避対象のリソース(ここでは、リソースα)を使用するプロセス(ここでは、プロセスA、プロセスB又はプロセスC)であるか否かを判断する。
ここで、例えば、起床させるプロセスがプロセスD〜Gである場合には、実行CPU決定部7は、回避対象のリソースαに無関係なプロセスであると判断して、既存のスケジューリング方法に従うように、実行キュー接続部4に通知する(キュー接続要求を行なう)。
なお、既存のスケジューリング方法によれば、通常、起床させるプロセスは、前回動作したCPUの実行キュー3に再び繋がれる。ただし、各CPUの実行キュー3上のプロセス数に極端な偏りがある場合には、既存のロードバランシング機能に従い、実行キュー3の偏りを減らすように、実行キュー3に待機中のプロセス数が少ない他のCPUの実行キュー3に接続される場合もある。
また、起床させるプロセスがプロセスA〜Cである場合には、実行CPU決定部7は、回避対象のリソースαに関連するプロセスであると判断する。そして、実行CPU決定部7は、CPUプロセス情報格納部14における回避対象のリソースαに対応するテーブルのうち、待ち時間情報が15msecと最も短いプロセスAが動作するCPU#2に対して、前回、CPU#2で動作していないプロセスB及びプロセスCを集約させるように働く(ステップS205)。
すなわち、起床させるプロセスがプロセスAである場合には、前回と同様に、CPU#2の実行キュー3に繋ぐように、実行キュー接続部4に通知する。また、起床させるプロセスがプロセスB及びプロセスCである場合にも、プロセスAと同じCPU#2の実行キュー3に繋ぐように、実行キュー接続部4に通知する(ステップS206)。
そして、実行キュー接続部4は、待ちキュー2のデータを参照し、所定の休止プロセス6(ここでは、プロセスB)を起床させ、実行キュー3(ここでは、CPU#2の実行キュー3)に接続する(ステップS207)。
起床したプロセス(ここでは、プロセスB)は、実行キュー3上で待機し(ステップS208)、CPU(ここでは、CPU#2)の実行権を獲得すると(ステップS209)、リソース(ここでは、リソースα)に対してロック取得要求を送信する(ステップS210)。また、リソース(ここでは、リソースα)は、ロックを取得できたことを送信する(ステップS211)。
そして、プロセス(ここでは、プロセスB)は、メモリに対して、プロセス情報にあるCPUID及びプロセスIDを要求し(ステップS212)、CPUID(ここでは、CPU#2)及びプロセスID(ここでは、B)を取得する(ステップS213)。
プロセス(ここでは、プロセスB)は、所定の処理に対してリソース(ここでは、リソースα)を使用し(ステップS214)、所定の処理が完了すると、リソース(ここでは、リソースα)に対してロック解除要求を送信する(ステップS215)。また、リソース(ここでは、リソースα)は、ロックを解除したことを送信する(ステップS216)。
そして、プロセス(ここでは、プロセスB)は、自プロセス(ここでは、プロセスB)の情報(CPUID、プロセスID、リソースID、待ち時間情報)を、プロセス実行格納部8に記録する(ステップS217)。
そして、プロセス(ここでは、プロセスB)は、プロセスを終了し(ステップS218)、休止状態になる。
したがって、例えば、図6に示すように、これ以降(図5の時刻T4以降)の時刻である時刻T4から時刻T5までの期間内において、リソース競合の回避が必要なリソースαを使用するプロセスA、プロセスB及びプロセスCは、CPU#2に全て集約され動作することになる。また、プロセスD、プロセスG及びプロセスFは、前回と同様のCPU(CPU#0又はCPU#1)上で動作し、プロセスEは、既存のロードバランス機能により、前回のCPU#2からCPU#1に移動され、CPU#1上で動作することになる。
このように、本実施形態に係るマルチプロセッサシステム100は、リソース競合の回避操作により、リソース競合の回避が必要なリソース(ここでは、リソースα)を使用するプロセス(ここでは、プロセスB及びプロセスC)に対して、リソース要求の直後に、リソース(ここでは、リソースα)を獲得させることが可能となり、これまで発生していた待ち時間が大幅に削減できるという作用効果を奏する。また、これに伴う、CPU資源の空きに対して、他のプロセス(ここでは、プロセスH、プロセスI及びプロセスJ)に割り当てることが可能となる。
ここで、その後、現在のリソース競合の回避対象であるリソース(以下、現回避対象リソースと称す)以外のリソース(以下、回避対象候補リソースと称す)に関するリソース競合が激しくなり、回避対象候補リソースのリソースIDに対応する合計待ち時間情報が、所定の基準値を超過した場合を考える。
回避対象候補リソースを使用するプロセスを起床する場合には、当然ながら、CPUの集約対象となるが、以下の処理を行なうものとする。
まず、回避対象候補リソースを使用するプロセスとして、現回避対象リソースを使用していたプロセスが含まれていた場合には、実行CPU決定部7が、回避対象候補リソースに対応する合計待ち時間情報と、リソース競合の回避対象として以前の設定時にコピーした現回避対象リソースの対象値情報とを比較する。
そして、回避対象候補リソースに対応する合計待ち時間情報が、現回避対象リソースに対応する対象値情報を上回る場合には、現回避対象リソースを使用していたプロセスに対しても、再度の実行キュー3の移動対象となり、CPUプロセス情報格納部14における回避対象候補リソースに対応するテーブルのうち、最短の待ち時間情報に対応するプロセスが動作しているCPUに集約される。
この場合には、実行CPU決定部7が回避対象特定部13に判定結果を出力し、回避対象特定部13が、リソース排他情報格納部11における、現回避対象リソースに対応する回避対象情報及び対象値情報を削除し、回避対象候補リソースに対応する回避対象情報及び対象値情報に所定の情報を記録することになる。
これに対し、回避対象候補リソースに対応する合計待ち時間情報が、現回避対象リソースに対応する対象値情報を下回る場合には、現回避対象リソースを使用していたプロセスに対して、回避対象候補リソースに関するCPUの集約対象から外される。すなわち、現回避対象リソースを使用していたプロセスは、現回避対象リソースに関するリソース競合の回避時に集約されたCPU上で動作を継続することなる。
具体的には、図7(b)に示すように、リソース競合の回避の効果により、リソースαに対応する合計待ち時間が「360」から「40」に短縮され、リソースδに対応する合計待ち時間「240」が所定の基準値「200」を超過していることが分かる。
この場合に、リソースαに対応する対象値情報「360」と、リソースδに対応する合計待ち時間情報「240」とを比較すると、リソースαに対応する対象値情報がリソースδに対応する合計待ち時間情報を上回っているために、過去のスケジューリングを優先し、今回はリソースδを基準としたCPUの集約は行なわないことになる。
以下、これまで説明してきた処理について、図8に示すフローチャートを用いて説明する。
まず、プロセス起床部1は、任意のイベントの契機により、他のプロセスからの命令に基づき、実行CPU決定部7を起動して、実行キュー3の接続要求を送信する(ステップS1)。
実行CPU決定部7は、リソース排他情報格納部11を参照し(ステップS2)、所定の基準値を超えるリソースが存在するか否かを判断する(ステップS3)。
ステップS3において、所定の基準値を超えるリソースが存在しないと判断した場合には、実行CPU決定部7は、前回と同じCPUの実行キュー3への接続依頼を、実行キュー接続部4に送信する(ステップS4)。すなわち、実行CPU決定部7は、既存のスケジューリング方法に従うように、実行キュー接続部4に通知する(キュー接続要求を行なう)。
実行キュー接続部4は、指定された実行キュー3に休止プロセス6を起床させて接続し(ステップS5)、このプロセスは実行キュー3上で待機し、その後、CPUの実行権を獲得することになる。なお、以降の処理については、図5に示すステップS210〜ステップS218とほぼ同様(プロセスB、リソースα及びCPU#1に限定しない)であるので、説明を省略する。
また、ステップS3において、所定の基準値を超えるリソースが存在すると判断した場合には、実行CPU決定部7は、CPUプロセス情報格納部14における超過しているリソースに対応するテーブルを参照する(ステップS6)。
そして、実行CPU決定部7は、これから起床させるプロセスが、超過しているリソースを使用するプロセスであるか否かを判断する(ステップS7)。
ステップS7において、超過しているリソースを使用するプロセスでないと判断した場合には、前述したステップS4に進む。
また、ステップS7において、超過しているリソースを使用するプロセスであると判断した場合には、実行CPU決定部7は、参照したリソースのテーブルにあるプロセスにより過去に使用されたリソースが、現在の回避対象であるか否かを判断する(ステップS8)。
ステップS8において、回避対象でないと判断した場合には、実行CPU決定部7は、CPUプロセス情報格納部14における回避対象のリソースに対応するテーブルのうち、待ち時間情報が最短であるプロセスが動作するCPUに集約させることを決定し、その実行キュー3への接続依頼を実行キュー接続部4に送信する(ステップS9)。
また、ステップS8において、回避対象であると判断した場合には、実行CPU決定部7は、過去にリソース競合したことで現在の回避対象であるリソース(現回避対象リソース)の対象値情報と、現在競合しているリソース(回避対象候補リソース)の合計待ち時間情報とを比較する(ステップS10)。
そして、実行CPU決定部7は、回避対象候補リソースの合計待ち時間が、現回避対象リソースの対象値以上であるか否かを判断する(ステップS11)。
ステップS11において、回避対象候補リソースの合計待ち時間が、現回避対象リソースの対象値以上でないと判断した場合には、前述したステップS4に進む。
ステップS11において、回避対象候補リソースの合計待ち時間が、現回避対象リソースの対象値以上であると判断した場合には、前述したステップS9に進む。なお、この場合には、実行CPU決定部7が回避対象特定部13に判定結果を出力し、回避対象特定部13が、リソース排他情報格納部11における、現回避対象リソースに対応する回避対象情報及び対象値情報を削除し、回避対象候補リソースに対応する回避対象情報及び対象値情報に所定の情報を記録することになる。
以上のように、本実施形態に係るマルチプロセッサシステム100は、リソースの開放待ちに伴う処理を削減し、その分のCPU資源を別のプロセスの処理に割り当てることができ、システムの処理効率を向上させることができるという作用効果を奏する。
また、本実施形態に係るマルチプロセッサシステム100は、プロセスが次にCPUの実行権を握る前の段階、つまり、プロセス起床され実行キュー3で待ち状態に入る時点において、リソース競合を予測した回避操作(実行キュー移動等)を事前に行なうために、恒久的な競合回避が望めるうえに、プロセス動作中に割込み等で強制タスクスイッチングを行なう必要も無く、オーバーヘッドによる処理能力の低下を最小限に抑制することができるという作用効果を奏する。
また、本実施形態に係るマルチプロセッサシステム100は、CPUの浪費に関係するリソースを特定したうえで、そのリソースを使用するプロセスをターゲットとしたリソース競合の回避が行なえるため、競合対象であるリソースと無関係なプロセスへの影響を抑制することができるという作用効果を奏する。
なお、本実施形態に係るマルチプロセッサシステム100においては、リソース排他情報格納部11におけるリソース競合の回避対象とするリソースの設定を一つにしているが、これに限られるものではない。
例えば、マルチプロセッサシステム100に使用されるリソースの数に応じて、所定の数以下のリソースを回避対象とし、回避対象情報を記録し、合計待ち時間を対象値情報として記録してもよい。
この場合に、新たに発生した回避対象となるべきリソース(回避対象候補リソース)をリソース排他情報格納部11に記録することにより、回避対象が所定の数を超えることになるときは、リソース排他情報格納部11に記録されている回避対象のリソース(現回避対象リソース)に対応する対象値のうちの最小の対象値と、回避対象候補リソースに対応する合計待ち時間とを比較する。
そして、回避対象候補リソースに対応する合計待ち時間が、現回避対象リソースに対応する対象値のうちの最小の対象値を超えている場合に、当該最小の対象値情報及び対応する回避対象情報を削除し、回避対象候補リソースに対応する回避対象情報及び対象値情報に所定の情報を記録することになる。
また、本実施形態に係るマルチプロセッサシステム100においては、実行CPU決定部7により、各プロセスの起床にあたり、当該各プロセスが回避対象のリソースを使用するプロセスであるかを判定し、当該判定結果に基づき、起床される各プロセスに対して、複数のCPUのうち、一のCPUを割り当てるものであるが、実行CPU決定部7の替わりに回避対象特定部13に、当該機能を持たせてもよい。
(本発明の第2の実施形態)
図9は第2の実施形態に係るマルチプロセッサシステムの主要な構成を示す概略図、図10(a)はプロセス実行格納部に記録される情報の一例を示す説明図、図10(b)はリソース排他情報格納部に記録される情報の一例を示す説明図、図10(c)はCPUプロセス情報格納部に記録される情報の一例を示す説明図である。図9及び図10において、図1〜図8と同じ符号は、同一又は相当部分を示し、その説明を省略する。
平均待ち時間算出部10aは、排他情報収集部9からのリソースID及び待ち時間情報に基づき、リソースIDのリソース毎に合計待ち時間を算出し、リソースIDにおけるリソース毎の個数を積算して各リソースの使用回数を算出する。また、平均待ち時間算出部10aは、合計待ち時間に対して使用回数を除算した平均の待ち時間(以下、平均待ち時間と称す)を算出して、リソースIDのリソース毎に当該平均待ち時間及び使用回数をリソース排他情報格納部11aに更新(新規は記録)する。
リソース排他情報格納部11aは、例えば、図10(b)に示すように、平均待ち時間の情報(以下、平均待ち時間情報と称す)、使用回数の情報、当該平均待ち時間が所定の基準値を超えたリソースに対して回避対象のリソースとして識別する情報(以下、回避対象情報と称す)、及び、当該回避対象のリソースに対応する平均待ち時間を対象値とする対象値の情報(以下、対象値情報と称す)を、リソースIDのリソース毎に対応付けて格納する。なお、所定の基準値は、システム環境によってチューニングされ、例えば、リアルタイム性が要求されるマルチプロセッサシステム100においては、msec〜μsec単位での設定が想定される。
例えば、基準値を100msecに設定した場合に、図10(a)(図2(a))に示す情報においては、リソースαが時刻T1から時刻T4までの間に3回使用され、合計待ち時間が360msecであることから、平均待ち時間は120msecとなり、基準値を上回っているために、リソースαがリソース競合の回避対象となる。
競合検知部12aは、リソース排他情報格納部11aに記録される平均待ち時間情報に基づき、平均待ち時間が所定の基準値を超えたことを検知して、回避対象特定部13aに検知結果を出力する。
回避対象特定部13aは、リソース排他情報格納部11aのリソースIDにおける、平均待ち時間が所定の基準値を超えたリソースに対して、回避対象情報を記録し、平均待ち時間を対象値情報として記録する。
なお、本実施形態においては、回避対象のリソースを一つとし、リソース排他情報格納部11aの回避対象及び対象値の欄に対して初期段階で情報を記録する場合であり、平均待ち時間が所定の基準値を超えたリソースが複数存在する場合には、平均待ち時間が最長である一のリソースに対して、回避対象情報及び対象値情報を記録する。
また、リソース排他情報格納部11aの回避対象及び対象値の欄に記録された情報は、回避対象のリソースを使用するプロセスが、その後、他のリソースを使用することになり、当該他のリソースの平均待ち時間が、当該回避対象のリソースの対象値を超えるまでは、保持するものである。
なお、この第2の実施形態に係るマルチプロセッサシステム100においては、合計待ち時間算出部10の替わりに、平均待ち時間算出部10aを備えているところのみが第1の実施形態と異なるところであり、平均待ち時間算出部10aによる作用効果以外は、第1の実施形態と同様の作用効果を奏する。
前述した第1の実施形態においては、あるリソースに関して、通常はリソース開放の待ち時間が短いのであるが、特定の監視周期にだけ突発的に長い待ち時間が発生し、合計待ち時間が基準値を超えた場合に、このリソースがリソース競合の回避対象となるのであるが、処理効率の向上は僅かである。
これに対し、本実施形態においては、リソース排他情報格納部11aに平均待ち時間情報を保持させ、この平均待ち時間情報に基づき、リソース競合の回避対象のリソースを特定する。これにより、本実施形態に係るマルチプロセッサシステム100は、正確な競合状態をリアルタイムに把握し、リソース開放の待ち時間に毎回比較的長い時間がかかるリソースを優先して、リソース競合の回避対象とするように制御することができ、第1の実施形態と比較して、一層の処理効率の向上を図ることができるという作用効果を奏する。
(本発明の第3の実施形態)
図11は第3の実施形態に係るマルチプロセッサシステムのプロセス実行格納部の更新手順を示すシーケンス図、図12は第3の実施形態に係るマルチプロセッサシステムにおけるプロセス起床時の競合回避の手順を示すフローチャートである。図11及び図12において、図1〜図10と同じ符号は、同一又は相当部分を示し、その説明を省略する。
本実施形態においては、前提条件として、マルチプロセッサシステム100の利用者がシステムコール(sched-setaffinity等)等を使用して、一部のプロセスを動作させるCPUを固定で割り付け運用している場合を想定する。例えば、プロセスBがCPU#1で固定に動作するように割り付け設定を行なう場合には、メモリ内に存在するプロセス情報には、プロセスBがCPU#1に割り付いたことを示すフラグが記録されている。
なお、図11は、図5におけるステップS204とステップS205との間に、新たなステップS204aを追加したものであり、図12は、図8におけるステップS11とステップS9との間に、新たなステップS11aを追加したものである。
このステップS204a及びS11aにおいて、実行CPU決定部7は、メモリ内のプロセス情報を参照し、回避対象のリソースに対応するCPUのうち、最短の待ち時間に対応するCPU以外のCPUが、特定のプロセスを動作させるCPUとして固定で割り付けられているか否かを判断する。そして、実行CPU決定部7は、固定で割り付けられていると判断した場合には、最短の待ち時間に対応するCPUの替わりに、固定で割り付けられたCPUを、起床されるプロセスに対して割り当てる。また、実行CPU決定部7は、固定で割り付けられていないと判断した場合には、最短の待ち時間に対応するCPUを、起床されるプロセスに対して割り当てる。
なお、この第3の実施形態に係るマルチプロセッサシステム100においては、一部のプロセスを動作させるCPUを固定で割り付け運用しているところのみが第1の実施形態と異なるところであり、この運用による作用効果以外は、第1の実施形態と同様の作用効果を奏する。
前述した第1の実施形態においては、リソースαを使用するプロセスA〜Cのうち、待ち時間が最も短いプロセスAが動作するCPU#2に、他のプロセス(プロセスB、プロセスC)を集約するように、CPU#2の実行キュー3に対して、プロセスAの他に、プロセスB及びプロセスCも接続していた。
これに対し、本実施形態においては、プロセスBが固定に割り付けられているCPU#1に、他のプロセス(プロセスB、プロセスC)を集約するように動作する。
すなわち、起床させるプロセスが、プロセスBである場合には、前回と同じCPU#1の実行キュー3にプロセスBが接続され、起床させるプロセスが、プロセスA又はプロセスCである場合にも、プロセスBと同じCPU#1の実行キュー3にプロセスA又はプロセスCが接続される。なお、回避対象のリソースαに直接関係しない他のプロセスの起床に関しては、前述した第1の実施形態と同様に、既存のスケジューリング動作に従うことになる。
これにより、本実施形態に係るマルチプロセッサシステム100においては、動作CPUが固定されているプロセスが存在する場合であっても、CPUの固定動作に極力影響を与えることなく、リソース開放の待ち状態を回避し、待ち時間の削減を実現して、システムの処理効率を向上させることができるという作用効果を奏する。また、本実施形態に係るマルチプロセッサシステム100おいては、即時性等を考慮した、よりきめ細かい運用設計に反映可能なプロセスの運用を実現することができるという作用効果を奏する。
第1の実施形態に係るマルチプロセッサシステムの主要な構成を示す概略図である。 (a)はプロセス実行格納部に記録される情報の一例を示す説明図であり、(b)はリソース排他情報格納部に記録される情報の一例を示す説明図であり、(c)はCPUプロセス情報格納部に記録される情報の一例を示す説明図である。 マルチプロセッサシステムにおける競合回避前のプロセス稼動例を示す説明図である。 リソース排他情報格納部及びCPUプロセス情報格納部の更新手順を示すシーケンス図である。 プロセス実行格納部の更新手順を示すシーケンス図である。 マルチプロセッサシステムにおける競合回避後のプロセス稼動例を示す説明図である。 (a)はプロセス実行格納部に記録される情報の他の例を示す説明図であり、(b)はリソース排他情報格納部に記録される情報の他の例を示す説明図であり、(c)はCPUプロセス情報格納部に記録される情報の他の例を示す説明図である。 マルチプロセッサシステムにおけるプロセス起床時の競合回避の手順を示すフローチャートである。 第2の実施形態に係るマルチプロセッサシステムの主要な構成を示す概略図である。 (a)はプロセス実行格納部に記録される情報の一例を示す説明図であり、(b)はリソース排他情報格納部に記録される情報の一例を示す説明図であり、(c)はCPUプロセス情報格納部に記録される情報の一例を示す説明図である。 第3の実施形態に係るマルチプロセッサシステムのプロセス実行格納部の更新手順を示すシーケンス図である 第3の実施形態に係るマルチプロセッサシステムにおけるプロセス起床時の競合回避の手順を示すフローチャートである。
符号の説明
1 プロセス起床部
2 待ちキュー
3 実行キュー
4 実行キュー接続部
5 プロセッサ
6 休止プロセス
7 実行CPU決定部
8 プロセス実行格納部
9 排他情報収集部
10 合計待ち時間算出部
10a 平均待ち時間算出部
11,11a リソース排他情報格納部
12,12a 競合検知部
13,13a 回避対象特定部
14 CPUプロセス情報格納部
100 マルチプロセッサシステム

Claims (5)

  1. 複数のプロセッサのうち一のプロセッサの実行権を占有して動作するプロセスが、任意のリソースを使用し、当該複数のプロセッサによる並列処理を実行するマルチプロセッサを備えたマルチプロセッサシステムにおいて、
    前記複数のプロセッサのうち一のプロセッサ上で動作する一のプロセスがリソースを使用している場合に、他のプロセッサ上で動作する他のプロセスが当該使用されているリソースに対するロックの要求及び/又はロックの要求後の待ち時間に基づいて、リソースの競合を検知する競合検知部と、
    前記検知したリソース競合における競合対象であるリソースを、リソース競合を回避すべき回避対象として特定する回避対象特定部と、
    各プロセスの起床にあたり、当該各プロセスが前記回避対象のリソースを使用するプロセスであるかを判定し、当該判定結果に基づき、前記起床される各プロセスに対して、前記複数のプロセッサのうち、一のプロセッサを割り当てる実行プロセッサ決定部と、
    前記待ち時間に基づき、リソース毎に当該待ち時間を積算する合計待ち時間算出部と、
    リソース毎のテーブルを有し、当該各テーブルのリソースに対応するプロセッサ情報及び待ち時間情報を格納する情報格納部と、
    を備え、
    前記回避対象特定部が、前記合計待ち時間算出部によるリソース毎の積算結果に基づき、合計待ち時間が所定の基準値を超えたリソースを回避対象のリソースとして特定し、
    前記実行プロセッサ決定部は、前記特定された回避対象のリソースに基づき、前記起床されるプロセスが使用するリソースに対して当該プロセスが回避対象のリソースを使用するプロセスであるかを判断し、当該起床されるプロセスが回避対象のリソースを使用する場合に、当該回避対象のリソースに対応する待ち時間のうち、前記情報格納部に格納される所定の待ち時間に対応するプロセッサを、当該起床されるプロセスに対して割り当てることを特徴とするマルチプロセッサシステム。
  2. 複数のプロセッサのうち一のプロセッサの実行権を占有して動作するプロセスが、任意のリソースを使用し、当該複数のプロセッサによる並列処理を実行するマルチプロセッサを備えたマルチプロセッサシステムにおいて、
    前記複数のプロセッサのうち一のプロセッサ上で動作する一のプロセスがリソースを使用している場合に、他のプロセッサ上で動作する他のプロセスが当該使用されているリソースに対するロックの要求及び/又はロックの要求後の待ち時間に基づいて、リソースの競合を検知する競合検知部と、
    前記検知したリソース競合における競合対象であるリソースを、リソース競合を回避すべき回避対象として特定する回避対象特定部と、
    各プロセスの起床にあたり、当該各プロセスが前記回避対象のリソースを使用するプロセスであるかを判定し、当該判定結果に基づき、前記起床される各プロセスに対して、前記複数のプロセッサのうち、一のプロセッサを割り当てる実行プロセッサ決定部と、
    前記待ち時間に基づき、リソース毎に当該待ち時間の平均時間を算出する平均待ち時間算出部と、
    リソース毎のテーブルを有し、当該各テーブルのリソースに対応するプロセッサ情報及び待ち時間情報を格納する情報格納部と、
    を備え、
    前記回避対象特定部が、前記平均待ち時間算出部によるリソース毎の算出結果に基づき、平均待ち時間が所定の基準値を超えたリソース回避対象のリソースとして特定し、
    前記実行プロセッサ決定部は、前記特定された回避対象のリソースに基づき、前記起床されるプロセスが使用するリソースに対して当該プロセスが回避対象のリソースを使用するプロセスであるかを判断し、当該起床されるプロセスが回避対象のリソースを使用する場合に、当該回避対象のリソースに対応する待ち時間のうち、前記情報格納部に格納される所定の待ち時間に対応するプロセッサを、当該起床されるプロセスに対して割り当てることを特徴とするマルチプロセッサシステム。
  3. 前記請求項1又は2に記載のマルチプロセッサシステムにおいて、
    前記回避対象のリソースを使用するプロセスを動作させるプロセッサのうち、前記所定の待ち時間に対応するプロセッサ以外のプロセッサが、特定のプロセスを動作させるプロセッサとして固定で割り付けられている場合であり、前記起床されるプロセスが回避対象のリソースを使用する場合に、前記実行プロセッサ決定部は、前記所定の待ち時間に対応するプロセッサの替わりに、前記固定で割り付けられたプロセッサを、前記起床されるプロセスに対して割り当てることを特徴とするマルチプロセッサシステム。
  4. 複数のプロセッサのうち一のプロセッサの実行権を占有して動作するプロセスが、任意のリソースを使用し、当該複数のプロセッサによる並列処理を実行するマルチプロセッサと、リソース毎のテーブルを有し、当該各テーブルのリソースに対応するプロセッサ情報及び待ち時間情報を格納する情報格納部と、を備えたマルチプロセッサシステムの競合回避方法であって、
    前記複数のプロセッサのうち一のプロセッサ上で動作する一のプロセスがリソースを使用している場合に、他のプロセッサ上で動作する他のプロセスが当該使用されているリソースに対するロックの要求及び/又はロックの要求後の待ち時間に基づき、リソース毎に当該待ち時間を積算する合計待ち時間算出ステップと、
    前記合計待ち時間算出ステップによるリソース毎の積算結果に基づいて、リソースの競合を検知する競合検知ステップと、
    前記検知したリソース競合における競合対象であるリソースを、リソース競合を回避すべき回避対象として特定する回避対象特定ステップと、
    各プロセスの起床にあたり、当該各プロセスが前記回避対象のリソースを使用するプロセスであるかを判定し、当該判定結果に基づき、前記起床される各プロセスに対して、前記複数のプロセッサのうち、一のプロセッサを割り当てる実行プロセッサ決定ステップと
    含み、
    前記回避対象特定ステップが、前記合計待ち時間算出ステップによるリソース毎の積算結果に基づき、合計待ち時間が所定の基準値を超えたリソースを回避対象のリソースとして特定し、
    前記実行プロセッサ決定ステップは、前記特定された回避対象のリソースに基づき、前記起床されるプロセスが使用するリソースに対して当該プロセスが回避対象のリソースを使用するプロセスであるかを判断し、当該起床されるプロセスが回避対象のリソースを使用する場合に、当該回避対象のリソースに対応する待ち時間のうち、前記情報格納部に格納される所定の待ち時間に対応するプロセッサを、当該起床されるプロセスに対して割り当てることを特徴とする競合回避方法。
  5. 複数のプロセッサのうち一のプロセッサの実行権を占有して動作するプロセスが、任意のリソースを使用し、当該複数のプロセッサによる並列処理を実行するマルチプロセッサと、リソース毎のテーブルを有し、当該各テーブルのリソースに対応するプロセッサ情報及び待ち時間情報を格納する情報格納部と、を備えたマルチプロセッサシステムの競合回避方法であって、
    前記複数のプロセッサのうち一のプロセッサ上で動作する一のプロセスがリソースを使用している場合に、他のプロセッサ上で動作する他のプロセスが当該使用されているリソースに対するロックの要求及び/又はロックの要求後の待ち時間に基づき、リソース毎に当該待ち時間の平均時間を算出する平均待ち時間算出ステップと、
    前記平均待ち時間算出ステップによるリソース毎の算出結果に基づいて、リソースの競合を検知する競合検知ステップと、
    前記検知したリソース競合における競合対象であるリソースを、リソース競合を回避すべき回避対象として特定する回避対象特定ステップと、
    各プロセスの起床にあたり、当該各プロセスが前記回避対象のリソースを使用するプロセスであるかを判定し、当該判定結果に基づき、前記起床される各プロセスに対して、前記複数のプロセッサのうち、一のプロセッサを割り当てる実行プロセッサ決定ステップと
    含み、
    前記回避対象特定ステップが、前記平均待ち時間算出ステップによるリソース毎の算出結果に基づき、平均待ち時間が所定の基準値を超えたリソースを回避対象のリソースとして特定し、
    前記実行プロセッサ決定ステップは、前記特定された回避対象のリソースに基づき、前記起床されるプロセスが使用するリソースに対して当該プロセスが回避対象のリソースを使用するプロセスであるかを判断し、当該起床されるプロセスが回避対象のリソースを使用する場合に、当該回避対象のリソースに対応する待ち時間のうち、前記情報格納部に格納される所定の待ち時間に対応するプロセッサを、当該起床されるプロセスに対して割り当てることを特徴とする競合回避方法。
JP2008300896A 2008-11-26 2008-11-26 マルチプロセッサシステム、競合回避プログラム及び競合回避方法 Expired - Fee Related JP5347451B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008300896A JP5347451B2 (ja) 2008-11-26 2008-11-26 マルチプロセッサシステム、競合回避プログラム及び競合回避方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008300896A JP5347451B2 (ja) 2008-11-26 2008-11-26 マルチプロセッサシステム、競合回避プログラム及び競合回避方法

Publications (2)

Publication Number Publication Date
JP2010128664A JP2010128664A (ja) 2010-06-10
JP5347451B2 true JP5347451B2 (ja) 2013-11-20

Family

ID=42329026

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008300896A Expired - Fee Related JP5347451B2 (ja) 2008-11-26 2008-11-26 マルチプロセッサシステム、競合回避プログラム及び競合回避方法

Country Status (1)

Country Link
JP (1) JP5347451B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8453150B2 (en) * 2010-06-08 2013-05-28 Advanced Micro Devices, Inc. Multithread application-aware memory scheduling scheme for multi-core processors
JP5655403B2 (ja) * 2010-07-13 2015-01-21 富士通株式会社 マルチコアプロセッサシステム,スケジュール管理プログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体
EP2615548B1 (en) * 2010-09-08 2016-12-28 Hitachi, Ltd. Computing device
JP5150699B2 (ja) * 2010-10-05 2013-02-20 株式会社バッファロー フェイルオーバ情報管理装置、記憶処理装置及びフェイルオーバ制御方法
JP5492066B2 (ja) * 2010-12-20 2014-05-14 株式会社東芝 ワークフロー処理システム
JP2013149108A (ja) * 2012-01-19 2013-08-01 Canon Inc 情報処理装置及びその制御方法、プログラム
JP6252259B2 (ja) * 2014-03-07 2017-12-27 株式会社デンソー 電子制御装置
JP6251417B2 (ja) 2014-10-27 2017-12-20 株式会社日立製作所 ストレージシステム、及び、記憶制御方法
US10585800B2 (en) 2017-06-16 2020-03-10 International Business Machines Corporation Reducing cache transfer overhead in a system
CN109783241A (zh) * 2018-12-03 2019-05-21 惠州市德赛西威汽车电子股份有限公司 一种抢占***的资源抢占冲突检测方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02122365A (ja) * 1988-10-31 1990-05-10 Hitachi Ltd プロセッサ割当て方式
JP2769367B2 (ja) * 1989-09-28 1998-06-25 株式会社日立製作所 マルチプロセッサスケジューリング方法
JPH1063516A (ja) * 1996-08-20 1998-03-06 Nec Corp ボトルネック検出方法及びボトルネック検出装置
JP4453823B2 (ja) * 2004-05-31 2010-04-21 日本電気株式会社 性能ボトルネック解析システム及び性能ボトルネック解析方法

Also Published As

Publication number Publication date
JP2010128664A (ja) 2010-06-10

Similar Documents

Publication Publication Date Title
JP5347451B2 (ja) マルチプロセッサシステム、競合回避プログラム及び競合回避方法
US9823946B2 (en) Processor and program execution method capable of efficient program execution
KR101686010B1 (ko) 실시간 멀티코어 시스템의 동기화 스케쥴링 장치 및 방법
US7318128B1 (en) Methods and apparatus for selecting processes for execution
CN108920267B (zh) 任务处理装置
US9858115B2 (en) Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core processor system and related non-transitory computer readable medium
US8056083B2 (en) Dividing a computer job into micro-jobs for execution
JP2008084009A (ja) マルチプロセッサシステム
JP2013232207A (ja) コンピュータマイクロジョブを中断せずに実行するようスケジュールするための方法、システムおよび装置
JP2010271930A (ja) マルチコアプロセッサシステム
US20150242254A1 (en) Method and apparatus for processing message between processors
JP2011059777A (ja) タスクスケジューリング方法及びマルチコアシステム
US8892819B2 (en) Multi-core system and external input/output bus control method
US20130097382A1 (en) Multi-core processor system, computer product, and control method
JP2008090546A (ja) マルチプロセッサシステム
JP5605131B2 (ja) ジョブスケジューリングプログラム,方法,および装置
JPWO2009150815A1 (ja) マルチプロセッサシステム
JP2009541851A (ja) リソースに基づいたスケジューラ
JP2013152636A (ja) 情報処理装置、タスクスケジューリング方法
JP2005092780A (ja) リアルタイムプロセッサシステム及び制御方法
JP2006146758A (ja) コンピュータシステム
JP5299869B2 (ja) コンピュータマイクロジョブ
JP2005149312A (ja) タスク管理システム
JP2008225641A (ja) コンピュータシステム、割り込み制御方法及びプログラム
JPWO2011161831A1 (ja) マルチプロセッサシステムおよびスケジューリング方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110808

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121017

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121113

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130319

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130520

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130805

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees