JP5365201B2 - プロセス実行制御システム、プロセス実行制御方法、及びプロセス実行制御プログラム - Google Patents

プロセス実行制御システム、プロセス実行制御方法、及びプロセス実行制御プログラム Download PDF

Info

Publication number
JP5365201B2
JP5365201B2 JP2009001367A JP2009001367A JP5365201B2 JP 5365201 B2 JP5365201 B2 JP 5365201B2 JP 2009001367 A JP2009001367 A JP 2009001367A JP 2009001367 A JP2009001367 A JP 2009001367A JP 5365201 B2 JP5365201 B2 JP 5365201B2
Authority
JP
Japan
Prior art keywords
processor
execution
executable
ready queue
priority
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2009001367A
Other languages
English (en)
Other versions
JP2010160597A (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.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2009001367A priority Critical patent/JP5365201B2/ja
Publication of JP2010160597A publication Critical patent/JP2010160597A/ja
Application granted granted Critical
Publication of JP5365201B2 publication Critical patent/JP5365201B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)

Description

本発明は、プロセス実行制御システム、プロセス実行制御方法、及びプロセス実行制御プログラムに関し、特に、グループディスパッチング方式におけるプロセッサグループ間のプロセス実行の優先順位の乱れを補正し最適化するプロセス実行制御システム、プロセス実行制御方法、及びプロセス実行制御プログラムに関する。
マルチプロセッサシステムでは、プロセッサの台数増加により、レディキューの排他制御に伴う待ち時間が増え、また、同一プロセスが無秩序にプロセッサ間を渡り歩くことによりキャッシュのヒット率が低下する。そのため、何も対策を立てない場合、性能は頭打ちになるため、その対策として、グループディスパッチング方式が採用されている。グループディスパッチング方式を採用したメモリ共有のマルチプロセッサシステムにおいては、自プロセッサグループのプロセッサおよびレディキューに実行プロセスまたは実行可能プロセスが存在する限り、自プロセッサグループ内に閉じた優先順位に従ったディスパッチングが実施される。一方、自プロセッサグループ内にこれらのプロセスが不足するために、自プロセッサグループ内にアイドル状態のプロセッサが存在する場合には、そのアイドル状態のプロセッサによる他プロセッサグループの実行可能プロセスの実行を試みる。
グループディスパッチング方式のディスパッチャの機能概要を以下に具体的に説明する。なお、このディスパッチャは各々のプロセッサ上のファームウェアで実現される機能であり、実行可能プロセスに自プロセッサを割り当てる制御を行うものである。なお、一台のプロセッサが、同時に実行出来るプロセスは一個のみである。
ディスパッチャは、自プロセッサがアイドル状態の時や自プロセッサグループのレディキューに新たな実行可能プロセスが繋がれた時等、規定したタイミングで動作を開始する。
例えば、ディスパッチャは、自プロセッサがアイドル状態で、自プロセッサグループのレディキューに実行可能プロセスが存在するときには、その中で優先順位が一番高く、かつ、レディキューの先頭側に繋がっている実行可能プロセスに自プロセッサを割り当て、実行プロセスとする。
自プロセッサがアイドル状態で、かつ、自プロセッサグループのレディキューに実行可能プロセスが存在せず、かつ、他プロセッサグループのレディキューに実行可能プロセスが存在するときには、ディスパッチャは、その中で優先順位が一番高く、かつ、レディキューの先頭側に繋がっている実行可能プロセスに自プロセッサを割り当て、実行プロセスとする。また、この時にディスパッチャが調査の対象とするのは、全ての他プロセッサグループのレディキューであり、ディスパッチャは予め定めた規則に従ってレディキューの検査を実施する(特許文献1参照)。
自プロセッサがアイドル状態で、かつ、自プロセッサグループのレディキューおよび他プロセッサグループのレディキューのうち、どちらにも実行可能プロセスが存在しないときには、ディスパッチャは、新たな実行可能プロセスが発生するのを待つ。
自プロセッサがプロセス実行状態でディスパッチャの動作が開始されたときには、ディスパッチャは、自プロセッサグループのレディキューに実行可能プロセスが存在するか否か確認し、存在すれば、それら実行可能プロセスの優先順位のうちで一番高い優先順位と、自プロセッサが現在実行している実行プロセスの優先順位とを比較する。その結果、実行プロセスの優先順位の方が高いか、または、両者が等しい場合は、そのまま実行プロセスの実行が継続される。逆に、実行可能プロセスの優先順位の方が高い場合は、ディスパッチャは、自プロセッサで現在実行している実行プロセスの実行を中断し、そのプロセスを自プロセッサグループのレディキューに繋ぎ、実行可能プロセスにすると共に、その比較結果で優先順位が高かった実行可能プロセスに自プロセッサを割り当て、実行プロセスとする。
また、自プロセッサがプロセス実行状態でディスパッチャの動作が開始され、ディスパッチャが自プロセッサグループのレディキューに実行可能プロセスが存在するか否か確認した結果、存在しなかった場合には、そのまま実行プロセスの実行が継続される。
特開平11−259318
しかしながら、上述したようなディスパッチング方式では、自プロセッサグループの実行プロセスまたは実行可能プロセスの優先順位が他プロセッサグループの実行可能プロセスの優先順位より低い場合でも、自プロセッサグループ内にアイドル状態のプロセッサが存在しない限り、自プロセッサグループ内のプロセスを実行し続け、優先順位の高い、他プロセッサグループの実行可能プロセスの実行が遅れ、システム運用に影響を与えてしまう場合があるという問題点がある。
本発明の目的は、上述の問題点を解決し、プロセッサグループ間においてプロセスの実行を最適化できるプロセス実行制御システム、プロセス実行制御方法、及びプロセス実行制御プログラムを提供することにある。
本発明のプロセス実行制御システムは、それぞれ複数のプロセッサから構成される複数のプロセッサグループと、プロセッサの割り当て待ちである実行可能プロセスの待ち行列であるレディキューと、を備え、当該レディキューはプロセッサグループ毎に備えられており、各プロセッサで実行中の実行プロセスおよび実行可能プロセスには優先順位が付与されており、実行可能プロセスが予め定めた基準を満たした場合、全てのプロセッサグループ内の各プロセッサは、自プロセッサで実行中の実行プロセスと基準を満たした実行可能プロセスとの優先順位を比較し、当該実行プロセスの実行を継続するかまたは当該実行プロセスの実行を中断して当該実行可能プロセスの実行を開始するかを判定する判定処理を行うことを特徴とする。
本発明のプロセス実行制御方法は、それぞれ複数のプロセッサから構成される複数のプロセッサグループと、プロセッサの割り当て待ちである実行可能プロセスの待ち行列であるレディキューと、を備えたプロセス実行制御システムにおいて、当該レディキューを更新するステップと、当該レディキューをプロセッサグループ毎に割り振るステップと、プロセッサで実行中の実行プロセスおよび実行可能プロセスに優先順位を付与するステップと、実行可能プロセスが予め定めた基準を満たした場合、全てのプロセッサグループ内の各プロセッサは、自プロセッサで実行中の実行プロセスと基準を満たした実行可能プロセスとの優先順位とを比較し、当該実行プロセスの実行を継続するかまたは当該実行プロセスの実行を中断して当該実行可能プロセスの実行を開始するかを判定する判定ステップと、を備えたことを特徴とする。
本発明のプロセス実行制御プログラムは、 コンピュータに、プロセッサの割り当て待ちである実行可能プロセスの待ち行列であるレディキューを更新するステップと、当該レディキューを複数のプロセッサから構成されるプロセッサグループ毎に割り振るステップと、プロセッサで実行中の実行プロセスおよび実行可能プロセスに優先順位を付与するステップと、実行可能プロセスが予め定めた基準を満たした場合、全てのプロセッサグループ内の各プロセッサは、自プロセッサで実行中の実行プロセスと基準を満たした実行可能プロセスとの優先順位とを比較し、当該実行プロセスの実行を継続するかまたは当該実行プロセスの実行を中断して当該実行可能プロセスの実行を開始するかを判定する判定ステップと、を実行させることを特徴とする。
本発明には、マルチプロセッサシステムのプロセッサグループ間におけるプロセスの実行を最適化し、システムを効率的に運用できるという効果がある。
次に、本発明について図面を参照して詳細に説明する。
図1は、本発明の第1の実施形態に係るコンピュータシステムのハードウェア構成図である。
主記憶100は各種のデータを格納する。図示しないがレディキューは主記憶100に存在する。
システムバス110は、主記憶100、プロセッサボード120〜127、および補助プロセッサ260を相互に接続する。
プロセッサボード120は、システムインタフェース部130と、プロセッサ210_0〜210_3からなるプロセッサグループとを含み、入出力処理装置150と接続されている。プロセッサボード121〜127のそれぞれは、図1には図示しないが、プロセッサボード120と同様の構成要素を有し、同様の機能を持つ。
システムインタフェース部130はキャッシュを含み、主記憶100へのアクセス制御、キャッシュ制御、並びに、プロセッサ210_0〜210_3、補助プロセッサ260、入出力処理装置150およびプロセッサボード120〜127間の通信およびデータ転送制御を行う。図1には図示しないが、プロセッサボード121〜127の各々も、システムインタフェース部130と同様のシステムインタフェース部が設けられている。
4つのプロセッサ210_0〜210_3のそれぞれは、プロセスを実行する一般のデータ処理用プロセッサであり、相互に独立して動作する。図1には図示しないが、プロセッサボード121〜127にも、同様のプロセッサが設けられている。
プロセッサボード120〜127とそれぞれ接続された入出力処理装置150〜157は、本コンピュータシステムに接続された各種I/O装置および主記憶100間のデータ転送を行う。
補助プロセッサ260は、一般のプロセッサ210_0〜217_3と同様に、主記憶100へのアクセスや、プロセッサ間の通信が可能である。
図2は、本実施形態に係るコンピュータシステムのプロセッサ、実行プロセス、およびレディキューの関係図を示す。
プロセッサグループ200〜207は、各々4台のプロセッサから構成され、各々固有のレディキューに対応付けされる。一般的に、キャッシュを共有する複数のプロセッサが一つのプロセッサグループを構成する。本実施形態では、プロセッサボード120でキャッシュを共有する4つのプロセッサ210_0〜210_3がプロセッサグループ200を構成する。図2には図示しないが、プロセッサグループ201〜207も同様にそれぞれボード121〜127上の複数のプロセッサから構成される。
RPW220_0〜227_3は、プロセッサ210_0〜217_3と一対一に対応し、プロセッサ210_0〜217_3で実行中の実行プロセスを表示する実行プロセス表示語である。
RQW230_0〜237_255は、プロセッサグループ200〜207と一対一に対応し、レディキュー240_0〜247_255の先頭のプロセスリンク(以下、PLと記載する)を指定するするレディキュー表示語である。
なお、RPW220_0〜227_3およびRQW230_0〜237_255は、主記憶100に格納されている。
レディキュー240_0〜247_255は、各々、プロセッサグループ200〜207に対応し、実行可能プロセスを先入れ先出し(繋ぐ場合は最後尾に、取り出す場合は先頭から)の方法でリンクしている。
実行可能プロセスとは、プロセッサの割り当てを待っているプロセスである。実行可能プロセスにプロセッサを割り当てられると実行プロセスとなり、その実行プロセスの中のプログラミングされた命令がプロセッサにより実行される。
なお、実行可能プロセスにプロセッサを割り当てる制御は、各プロセッサ内のディスパッチャが担当する。レディキュー240_0は優先順位0、レディキュー240_1は優先順位1、レディキュー240_2は優先順位2、・・・レディキュー240_254は優先順位254、レディキュー240_255は優先順位255に対応し、これらレディキュー240_0〜240_255の全てが、プロセッサグループ200に対応している。図2には図示しないが、レディキュー241_0〜241_255はプロセッサグループ201に、レディキュー242_0〜242_255はプロセッサグループ202に、以下、途中は省略するが、レディキュー247_0〜247_255はプロセッサグループ207にそれぞれ対応している。
図3は、本実施形態に係るコンピュータシステムの関連構造体および現在時刻の定義を示す。
図3(1)には、実行プロセス表示語(RPW)の定義が示されている。ここでは、RPW220_0〜227_3の定義を示している。
図において、プロセッサ状態表示310は、該当プロセッサの状態を表示する。その状態には、プロセスを実行不可能なインアクティブ状態、プロセスを実行可能なアクティブ状態でかつプロセスを実行中の状態、プロセスを実行可能なアクティブ状態でかつ実行すべきプロセスを取り込んでいないアイドル状態がある。
優先順位311は、該当プロセッサ上の実行プロセスの優先順位である。
実行プロセス名312は、該当プロセッサ上の実行プロセスの識別名である。
実行状態への遷移時刻313は、該当プロセッサ上に実行プロセスを取り込んだ時点の時刻であり、実行プロセスの該当プロセッサ上における実行開始時刻と同じ意味である。
図3(2)には、レディキュー表示語(RQW)の定義が示されている。ここでは、RQW230_0〜237_255の定義を示している。レディキュー先頭PLへのポインタ320は、対応するレディキュー240_0〜247_255の先頭PLへのポインタである。ポインタ320が零の場合、対応するレディキューは空であることを意味する。
図3(3)には、レディキュー内プロセスリンク(PL)の定義が示されている。ここでは、レディキュー240_0〜247_255内のPLの定義を示している。
NL330は、該当レディキュー内における、次のPLへのポインタである。最後尾のPLにおいて、NL330は零となる。
優先順位331は、該当実行可能プロセスの優先順位である。
実行可能プロセス名332は、該当実行可能プロセスの識別名である。
実行可能状態への遷移時刻333は、該当実行可能プロセスが実行可能状態に遷移した時の時刻であり、該当レディキューに繋がれた時の時刻と同じ意味である。
図3(4)には、現在時刻の定義が示されている。現在時刻340は、マイクロ秒単位で“+1”加算される64ビットのタイマである。実行状態への遷移時刻313と、実行可能状態への遷移時刻333は、対応するタイミングにおいて、その制御を担当するプロセッサが現在時刻340を設定することにより確定する。
図3(5)には、優先順位対応のディスパッチタイマ値テーブルの定義が示されている。ディスパッチタイマ350_0は優先順位0に、ディスパッチタイマ350_1は優先順位1に、以下、途中は省略するが、ディスパッチタイマ350_255は優先順位255に対応する。ディスパッチタイマ350_0〜350_255の各々は、マイクロ秒単位の32ビットのタイマ値である。
次に、本発明の第1の実施形態の動作について図面を参照して説明する。
図4に、本発明の第1の実施形態における処理の概要を示す。
図4(1)には、「補助プロセッサ260から全プロセッサ210_0〜217_3の優先順位補正処理の起動を指示する例」が示されている。図4(2)には、「補助プロセッサ260から全プロセッサ210_0〜217_3の中の一台を選択して優先順位補正処理の起動を指示する例」が示されている。図4(1)および図4(2)は、どちらも独立した一例である。
ステップS410において、補助プロセッサ260は、最も低い優先順位のレディキュー240_255、241_255・・・・・246_255、247_255を除いたシステム内のレディキュー240_0〜240_254、241_0〜241_254、・・・247_0〜247_254を検査する。そして、補助プロセッサ260は、対応するディスパッチタイマ350_0〜350_254の値を越えて、実行可能状態で止まっているプロセスを検出した場合、システム内の全プロセッサ210_0〜217_3に対して、該当プロセスが繋がれたレディキューの識別番号を通知すると共に優先順位補正処理の起動を指示する。このステップS410については、図5でさらに詳述する。
ステップS411については、図7で詳述する。
ステップS411は、ステップS410からの優先順位補正処理の起動指示により起動され、ステップS410に対して優先順位補正処理の完了報告を行う。ステップS411では、システム内のプロセッサ210_0〜217_3各々が、ステップS410の補助プロセッサ260から通知された識別番号のレディキューを対象に優先順位補正処理を行う。
ステップS420において、補助プロセッサ260は、最も低い優先順位のレディキュー240_255〜247_255を除いたシステム内のレディキュー240_0〜240_254、241_0〜241_254、・・・247_0〜247_254を検査する。そして、補助プロセッサ260は、対応するディスパッチタイマ350_0〜350_254の値を越えて、実行可能状態に止まっているプロセスを検出した場合、システム内の全プロセッサ210_0〜217_3のRPW220_0〜227_3の情報から、最も低い優先順位の実行プロセスを実行しているプロセッサ一台に対して、優先順位補正処理の起動を指示する。このステップS420については、図6で詳述する。
ステップS421は、ステップS420からの優先順位補正処理の起動指示により起動され、ステップS420に対して優先順位補正処理の完了報告を行う。ステップS421では、システム内のプロセッサ210_0〜217_3の中の起動された一台のみが、ステップS420の補助プロセッサ260から通知された識別番号のレディキューを対象に優先順位補正処理を行う。 このステップS421については、図7で詳述する。
図5には、補助プロセッサ260によるプロセス実行の優先順位の補正処理(1)が示されている。図5の処理は、システム立ち上げ、立ち下げ、障害処理など特殊な過渡状態を除いて、システム運用中は常に実行されている。図5は、ステップS410の処理内容を具体的に示したものである。適用されるシステム環境に対応して、図5と図6のどちらか一方が選択され、補助プロセッサ260において実行される。
ステップS500では、図5の処理のための初期設定を行う。すなわち、プロセッサグループ番号k、プロセッサグループ内のプロセッサ番号m、優先順位番号nの各々に“0”が設定される。なお、図5において、kはプロセッサグループ番号を示し、その範囲は0〜7である。mはプロセッサグループ内のプロセッサ番号を示し、その範囲は0〜3である。nは優先順位番号を示し、その範囲は0〜255である。
ステップS501では、レディキュー24k_nが空か否かが確認される。RQW23k_nが零の場合、レディキュー24k_nは空であり、対応する実行可能プロセスは存在せず、ステップS506に分岐する。空でなければ、対応する実行可能プロセスは存在し、ステップS502に分岐する。
ステップS502では、現在時刻340から、レディキュー24k_n先頭PLの時刻333を減算し、その結果を作業エリアWK1に設定する。作業エリアWK1に設定された内容は該当先頭PLの実行可能プロセスが、実行可能状態に止まった時間、すなわち、レディキュー24k_nに繋がっていた時間を示している。ステップS502からはステップS503に分岐する。
ステップS503では、作業エリアWK1の内容とディスパッチタイマ350_nの内容を比較する。その比較結果でディスパッチタイマ350_nの値が大きい場合は、該当実行可能プロセスが実行可能状態に止まっていることによるシステム運用への影響の可能性は無く、性能的に対応する番号kのプロセッサグループに実行させることが最善と判断出来る。この場合は、ステップS506に分岐する。逆に、その比較結果で作業エリアWK1の内容が大きいまたは等しい場合は、対応する実行可能プロセスが実行可能状態に止まっていることによるシステム運用への影響の可能性があると判断出来、ステップS504に分岐する。
ステップS504では、システム内全プロセッサ210_0〜217_3に、レディキュー24k_nの識別番号を通知すると共に、レディキュー24k_nを対象とした優先順位補正処理を起動するように指示する。そして、ステップS505に分岐する。
ステップS505では、全プロセッサ210_0〜217_3からの優先順位補正処理の完了報告を待ち、報告が全て届いたら、ステップS506へ分岐する。
ステップS506、S 507およびS 508では、プロセッサグループ番号kの更新を行い、ステップS 509、S 510およびS 511では優先順位番号nの更新を行う。これらステップS 506〜S 511により、最下位の優先順位のレディキュー240_255〜247_255を除いた、システム内のレディキュー240_0〜240_254、241_0〜241_254、・・・247_0〜247_254の検査を可能にしている。最下位の優先順位のレディキュー240_255〜247_255を除くのは、検査しても意味が無いためである。
ステップS 512では、システム内のレディキュー240_0〜240_254、241_0〜241_254、・・・247_0〜247_254の検査が一巡した場合に実行され、次の検査までに予め設定した時間待ちを行う。これにより、補助プロセッサ260が、必要以上に動作することを防止する。
図6には、補助プロセッサ260によるプロセス実行の優先順位の補正処理(2)が示されている。図6の処理は、システム立ち上げ、立ち下げ、障害処理など特殊な過渡状態を除いて、システム運用中は常に実行されている。図6は、ステップS 420の処理内容を具体的に示したものである。適用されるシステム環境に対応して、図5と図6のどちらか一方が選択され、補助プロセッサ260において実行される。
ステップS 600〜S 603は、各ステップからの分岐先を除いて、ステップS 500〜S 503と全く同じであるので、説明は省略する。同じく、ステップS 608〜S 614は、各ステップからの分岐先を除いて、ステップS 506〜S 512と全く同じであるので、説明は省略する。
図6において、図5と相異するステップはS 604〜S 607であり、以下に説明する。
ステップS 604には、レディキューの検査において、実行可能状態に止まっていることによりシステム運用に影響の可能性がある実行可能プロセスを検出した場合にステップS603から分岐してくる。ステップS 604では、システム内全プロセッサ210_0〜217_3の全RPW220_0〜227_3を確認し、その確認時点における、システム内の実行プロセスの中で最も低い優先順位の番号を作業エリアWK2に設定、同じく、その最も低い優先順位の実行プロセスを実行中のプロセッサ番号(該当するプロセッサが複数台存在する場合は最若番のプロセッサを選択)を作業エリアWK3に設定する。そして、ステップS 605に分岐する。
ステップS 605では、その時点で確定している優先順位番号n、すなわち、対象の実行可能プロセスの優先順位番号と、作業エリアWK2に設定された優先順位番号を比較する。その結果、優先順位番号nの方が大きいまたは等しい場合は、対象の実行可能プロセスの優先順位より低い優先順位の実行プロセスがシステム内に存在しない状態であり、優先順位の補正処理は行わず、ステップS 608へ分岐する。逆に、優先順位番号nの方が小さい場合は、対象の実行可能プロセスの優先順位より低い優先順位の実行プロセスが作業エリアWK3に設定された番号のプロセッサで実行中の状態であり、ステップS 606に分岐する。
ステップS 606では、作業エリアWK3に設定された番号のプロセッサに対して、レディキュー24k_nの識別番号を通知すると共に、レディキュー24k_nを対象とした優先順位補正処理を起動するように指示する。そして、ステップS 607に分岐する。
ステップS 607では、作業エリアWK3に設定された番号のプロセッサからの優先順位補正処理の完了報告を待ち、報告が届いたら、ステップS 601へ分岐する。図5のステップS 505からの分岐は、次のレディキューの検査に進むのに対して、ステップS 607は、再度、同じレディキューの検査に進むようにしている。その理由は、補助プロセッサ260と作業エリアWK3に設定された番号のプロセッサとの動作タイミングによって、実行すべき、優先順位の補正処理が実行されない可能性があるからであり、再度、同じレディキューの検査を行うようにする。
図7には、プロセッサ210_0〜217_3各々によるプロセス実行の優先順位の補正処理が示されている。図7は、ステップS411および421の処理内容を具体的に示したものである。なお、プロセッサ210_0〜217_3各々の処理に着目した場合、ステップS411およびS421の処理内容は共通であるため、図7に一本化し説明する。
図7は、補助プロセッサ260からのステップS504またはステップS606の優先順位補正処理の起動処理に応答して開始される。
ステップS700では、レディキュー24k_nの排他制御用ロックを取得要求する。RQW230_0〜237_255およびレディキュー240_0〜247_255は、システム内の全プロセッサ210_0〜217_3から参照および更新されるため、排他制御用ロックを備え、このロックを取得したプロセッサのみで参照および更新が可能となる。本実施形態では、RQW230_0およびレディキュー240_0の組み合わせに対して、一つの排他制御用ロックを備える。以下、同様に、RQW230_1とレディキュー240_1、RQW230_2とレディキュー240_2、・・・RQW237_255とレディキュー247_255の組み合わせに対応して、それぞれ排他制御用ロックを備える。ステップS700からステップS701へ分岐する。
ステップS701では、ステップS700の取得要求に対応し、排他制御用ロックが取得出来たか否かが確認される。取得出来た場合、ステップS702に分岐する。取得出来なかった場合、ステップS700に戻り、再度取得要求する。
ステップS702では、レディキュー24k_nが空か否かを確認する。図4(1)の例ではシステム内の全プロセッサ210_0〜217_3に優先順位補正処理の起動が指示される。そのため、全プロセッサ210_0〜217_3で図7の処理が実行されるが、実行される順序はその状況で異なり、ステップS700とS701で説明したレディキュー24k_nの排他制御用ロックを取得した順序となる。そして、先に実行したプロセッサの処理の結果、レディキュー24k_nが空になり、後で実行したプロセッサのステップS702においては、レディキュー24k_nが空の場合が頻繁に発生する。また、図4(1)および図4(2)の両方で、補助プロセッサ260から優先順位補正処理の起動指示を受けたプロセッサが図7の処理を行う前に、通常のディスパッチャ動作で、レディキュー24k_nが空になることが有り得る。従って、ステップS702では、レディキュー24k_nが空か否かが確認される。その確認結果で空の場合は、優先順位の補正処理は不要のため、ステップS714に分岐する。逆に、その確認結果で、空で無い場合はステップS703に分岐する。
ステップS703では、自プロセッサがアイドル状態か否かを確認する。この確認は、プロセッサ状態表示310で行われる。インアクティブ状態では、図7の処理自体が実行されないため、アクティブ状態における、プロセス実行状態か、アイドル状態かが確認される。アイドル状態では、自プロセッサに実行プロセスを取り込んでいないため、ステップS713に分岐し、無条件にレディキュー24k_n先頭PLの実行可能プロセスを自プロセッサの実行プロセスとして取り込む。逆に、アイドル状態で無ければステップS704に分岐する。
ステップS704では、自プロセッサの実行プロセスと、レディキュー24k_n先頭PLの実行可能プロセスの優先順位を比較する。そして、ステップS705に分岐する。
ステップS705では、ステップS704の比較結果を確認する。その結果、実行可能プロセスの優先順位の方が低いまたは等しい場合は、優先順位の補正処理は不要のため、ステップS714に分岐する。逆に、実行可能プロセスの優先順位の方が高い場合は、ステップS706に分岐する。
ステップS706では、現在時刻340からレディキュー24k_n先頭PLの時刻333を減算し、その結果を作業エリアWK1に設定する。そして、ステップS707へ分岐する。
ステップS707では、作業エリアWK1の内容とディスパッチタイマ350_nの内容を比較する。その結果、ディスパッチタイマ350_nの内容が大きい場合は、該当実行可能プロセスが実行可能状態に止まっていることによるシステム運用への影響の可能性は無く、性能的に対応する番号kのプロセッサグループに実行させることが最善と判断出来る。この場合は、ステップS714に分岐し、優先順位の補正処理は行わない。逆に、作業エリアWK1の内容が大きいまたは等しい場合は、対応する実行可能プロセスが実行可能状態に止まっていることによるシステム運用への影響の可能性があると判断出来、ステップS708に分岐する。
ステップS708では、自プロセッサに現在取り込んでいる実行プロセスを対応するレディキューに戻し、実行可能プロセスに遷移させるため、自プロセッサグループ番号xと、実行プロセスの優先順位番号yで決定されるレディキュー24x_yの排他制御用ロックの取得要求を行う。そして、ステップS709に分岐する。
ステップS709では、ステップS708の取得要求に対応し、排他制御用ロックが取得出来たか否かが確認される。取得出来た場合、ステップS711に分岐する。取得出来なかった場合、ステップS710に分岐する。
ステップS710では、レディキュー24x_yの排他制御用ロックの取得が出来なかった場合のデッドロック防止を目的として、現在、取得中のレディキュー24k_nの排他制御用ロックを一旦、解除、ステップS700へ分岐し、図7の処理を最初から再実行する。
ステップS711では、自プロセッサの実行プロセスについて、その情報を、主記憶100上に予め確保されているプロセス制御ブロックに戻し、レディキュー24x_yに繋ぐと同時に実行可能状態に遷移させる。そして、ステップS712に分岐する。
ステップS712では、ステップS708とS709で取得したレディキュー24x_yの排他制御用ロックを解除する。そして、ステップS713に分岐する。
ステップS713を開始する時点において、自プロセッサは、アイドル状態またはアイドル状態と同等の状態、すなわち、実行プロセスを取り込んでいない状態である。ステップS713では、レディキュー24k_n先頭PLの実行可能プロセスの情報をプロセス制御ブロックから自プロセッサに取り込み、レディキュー24k_nから先頭PLを外すと共に、該プロセスを実行状態に遷移させる。更に自プロセッサのRPWを更新する。その後、ステップS714に分岐する。
ステップS714では、ステップS700とS701で取得したレディキュー24k_nの排他制御用ロックを解除する。そして、ステップS715に分岐する。
ステップS715では、補助プロセッサ260へ優先順位補正処理の完了報告を行う。そして、ステップS716へ分岐する。
ステップS716は、システム内全プロセッサ210_0〜217_3の各々で、実行プロセスを取り込んでいる場合の処理を示したものであり、その実行プロセスの命令列の中から、命令カウンタで指定された命令を実行する。対応するプロセッサ上で、該当プロセスが、実行プロセスで有り続ける限り、命令カウンタを更新しながら、その命令カウンタで指定された命令を実行し続ける。ステップS716は、システム内全プロセッサ210_0〜217_3の各々で、実行プロセスを取り込んでいない場合、すなわち、アイドル状態の場合は該当しない。
以上、図4〜図7を参照しながら、図4(1)および図4(2)の例を説明した。
なお、本実施形態における補助プロセッサ260の処理{図5および図6}は、予め定めた周期で実行される一時的な処理であり、この処理に必要な性能は、補助プロセッサ260処理性能全体に対して、僅かな割合である。このことから、図5および図6の処理を、補助プロセッサ260で実行せず、一般のプロセッサ210_0〜217_3の中から、予め定めた規則により一台のマスタプロセッサを決定し、そのマスタプロセッサで実行する方法もある。
また、本実施形態では、ディスパッチタイマを、優先順位毎に設けたが、複数の優先順位に対して一つ、またはシステムに対して一つにする等、単純化しても良い。
また、本実施形態では、システム内のプロセッサグループ数を8個、プロセッサグループ内のプロセッサ台数を4台としたが、双方とも個々のシステム環境に相応しい任意の個数、台数で良い。
また、本実施形態では、プロセッサグループ内のレディキューを優先順位毎に設けたが、複数の優先順位に対して一つのレディキュー、またはプロセッサグループに対して一つのレディキューに対応させても良い。
また、第1の実施形態の補正処理(1)ステップS410および図5では、全プロセッサに対して優先順位補正処理の起動指示を行う構成であるが、滞留時間が基準値を超えた実行可能プロセスが格納されたレディキューに対応するプロセッサグループ以外のプロセッサグループに属する全プロセッサに対して上記起動指示を行うようにしても良い。
図1は、本発明の第1の実施形態におけるコンピュータシステムのハードウェア構成図である。 図2は、コンピュータシステムのプロセッサ、実行プロセス、およびレディキューの関係図である。 図3は、コンピュータシステムの関連構造体および現在時刻の定義を示す図である。 図4は、処理の概要を示す図である。 図5は、補助プロセッサ260によるプロセス実行の優先順位の補正処理(1)を示す図である。 図6は、補助プロセッサ260によるプロセス実行の優先順位の補正処理(2)を示す図である。 図7は、プロセッサ210_0〜217_3によるプロセス実行の優先順位の補正処理を示す図である。
100 主記憶
110 システムバス
120〜127 プロセッサボード
130 システムインタフェース部
150〜157 入出力処理装置
210_0〜3 ・・・ 217_0〜3 プロセッサ
220_0〜3 ・・・ 227_0〜3 RPW
230_0〜255 ・・・ 237_0〜255 RQW
240_0〜255 ・・・ 247_0〜255 レディキュー
260 補助プロセッサ
310 プロセッサ状態表示
311 優先順位
312 実行プロセス名
313 実行状態への遷移時刻
320 レディキュー先頭PLへのポインタ
330 NL
331 優先順位
332 実行可能プロセス名
333 実行可能状態への遷移時刻
340 現在時刻
350_0〜350_255 各優先順位に対応したディスパッチタイマ

Claims (24)

  1. それぞれ複数のプロセッサから構成される複数のプロセッサグループと、
    プロセッサの割り当て待ちである実行可能プロセスの待ち行列であるレディキューと、を備え、
    当該レディキューは前記プロセッサグループ毎に備えられており、
    各前記プロセッサで実行中の実行プロセスおよび前記実行可能プロセスには優先順位が付与されており、
    前記実行可能プロセスが予め定めた基準を満たした場合、全ての前記プロセッサグループ内の最も低い優先順位の実行プロセルを実行している一台のプロセッサ、自プロセッサで実行中の前記実行プロセスと前記基準を満たした実行可能プロセスとの優先順位を比較し、当該実行プロセスの実行を継続するかまたは当該実行プロセスの実行を中断して当該実行可能プロセスの実行を開始するかを判定する判定処理を行うことを特徴とするプロセス実行制御システム。
  2. 前記実行可能プロセスの前記レディキューにおける滞留時間の基準値が格納された記憶手段を備え、
    前記実行可能プロセスの滞留時間が当該基準値を超えたとき、前記判定処理を行うことを特徴とする請求項1記載のプロセス実行制御システム。
  3. 前記判定処理において自プロセッサで実行中の前記実行プロセスの優先順位が低いと判定されたとき、優先順位が低いと判定された当該実行プロセスの実行を中断し対応する前記レディキューに繋ぐことを特徴とする請求項1または2記載のプロセス実行制御システム。
  4. さらに、補助プロセッサを備え、
    前記補助プロセッサは、滞留時間が基準値を超えている実行可能プロセスを前記レディキューから選出し、全ての前記プロセッサグループ内の各前記プロセッサに対して、前記判定処理を行うよう指示することを特徴とする請求項2または3記載のプロセス実行制御システム。
  5. さらに、補助プロセッサを備え、
    前記補助プロセッサは、滞留時間が基準値を超えている実行可能プロセスを前記レディキューから選出し、当該実行可能プロセスが繋がれた前記レディキューに対応する前記プロセッサグループ以外の他の前記プロセッサグループ内の各前記プロセッサに対して、前記判定処理を行うよう指示することを特徴とする請求項2または3記載のプロセス実行制御システム。
  6. さらに、補助プロセッサを備え、
    前記補助プロセッサは、滞留時間が基準値を超えている実行可能プロセスを前記レディキューから選出し、全ての前記プロセッサグループ内の前記プロセッサのうち、優先順位が最も低い実行プロセスを実行しているプロセッサに対して、前記判定処理を行うよう指示することを特徴とする請求項2または3に記載のプロセス実行制御システム。
  7. 前記レディキューは排他制御されており、
    前記判定処理を行うよう指示されたプロセッサは、滞留時間が基準値を超えた実行可能プロセスを繋いだレディキューの排他制御ロックを取得して、前記判定処理を行うことを特徴とする請求項4ないし6のいずれかに記載のプロセス実行制御システム。
  8. 前記判定処理を行うよう指示されたプロセッサは、前記レディキューの排他制御ロックを取得している状態であって、かつ、自プロセッサで実行中の前記実行プロセスの優先順位が、滞留時間が基準値を超えた前記実行可能プロセスの優先順位より低いと判定した場合は、前記実行可能プロセスを前記レディキューから取り出し、自プロセッサの実行プロセスに遷移させた後に、前記排他制御ロックを解除することを特徴とする請求項7に記載のプロセス実行制御システム。
  9. それぞれ複数のプロセッサから構成される複数のプロセッサグループと、プロセッサの割り当て待ちである実行可能プロセスの待ち行列であるレディキューと、を備えたプロセス実行制御システムにおいて、
    前記レディキューを更新するステップと、
    前記レディキューを前記プロセッサグループ毎に割り振るステップと、前記プロセッサで実行中の実行プロセスおよび前記実行可能プロセスに優先順位を付与するステップと、
    前記実行可能プロセスが予め定めた基準を満たした場合、全ての前記プロセッサグループ内の最も低い優先順位の実行プロセルを実行している一台のプロセッサ、自プロセッサで実行中の前記実行プロセスと前記基準を満たした実行可能プロセスとの優先順位とを比較し、当該実行プロセスの実行を継続するかまたは当該実行プロセスの実行を中断して当該実行可能プロセスの実行を開始するかを判定する判定ステップと、
    を備えたことを特徴とするプロセス実行制御方法。
  10. さらに、前記実行可能プロセスの前記レディキューにおける滞留時間の基準値を記憶手段に格納するステップを備え、
    前記判定ステップにおいて、
    前記実行可能プロセスの滞留時間が前記基準値を超えたとき、前記判定を行うことを特徴とする請求項9記載のプロセス実行制御方法。
  11. 前記判定ステップにおいて、自プロセッサで実行中の前記実行プロセスの優先順位が低いと判定されたとき、優先順位が低いと判定された当該実行プロセスの実行を中断し当該実行プロセスを対応する前記レディキューに繋ぐことを特徴とする請求項9または10記載のプロセス実行制御方法。
  12. さらに、補助プロセッサが、滞留時間が基準値を超えている実行可能プロセスを前記レディキューから選出し、全ての前記プロセッサグループ内の各前記プロセッサに対して、前記判定を行うよう指示する指示ステップを備えることを特徴とする請求項10または11記載のプロセス実行制御方法。
  13. さらに、補助プロセッサが、滞留時間が基準値を超えている実行可能プロセスを前記レディキューから選出し、当該実行可能プロセスが繋がれた前記レディキューに対応する前記プロセッサグループ以外の他の前記プロセッサグループ内の各前記プロセッサに対して、前記判定を行うよう指示する指示ステップを備えることを特徴とする請求項10または11記載のプロセス実行制御方法。
  14. さらに、補助プロセッサが、滞留時間が基準値を超えている実行可能プロセスを前記レディキューから選出し、全ての前記プロセッサグループ内の前記プロセッサのうち、優先順位が最も低い実行プロセスを実行しているプロセッサに対して、前記判定を行うよう指示する指示ステップを備えることを特徴とする請求項10または11記載のプロセス実行制御方法。
  15. 前記レディキューは排他制御されており、
    前記判定ステップにおいて、前記判定処理を行うよう指示されたプロセッサは、滞留時間が基準値を超えた実行可能プロセスを繋いだレディキューの排他制御ロックを取得して、前記判定処理を行うことを特徴とする請求項12ないし14のいずれかに記載のプロセス実行制御方法。
  16. さらに、前記判定処理を行うよう指示されたプロセッサは、前記レディキューの排他制御ロックを取得している状態であって、かつ、自プロセッサで実行中の前記実行プロセスの優先順位が、滞留時間が基準値を超えた前記実行可能プロセスの優先順位より低いと判定した場合は、前記実行可能プロセスを前記レディキューから取り出し、自プロセッサの実行プロセスに遷移させた後に、前記排他制御ロックを解除する解除ステップを備えることを特徴とする請求項15記載のプロセス実行制御方法。
  17. コンピュータに、
    プロセッサの割り当て待ちである実行可能プロセスの待ち行列である前記レディキューを更新するステップと、
    前記レディキューを複数のプロセッサから構成されるプロセッサグループ毎に割り振るステップと、
    前記プロセッサで実行中の実行プロセスおよび前記実行可能プロセスに優先順位を付与するステップと、
    前記実行可能プロセスが予め定めた基準を満たした場合、全ての前記プロセッサグループ内の最も低い優先順位の実行プロセルを実行している一台のプロセッサ、自プロセッサで実行中の前記実行プロセスと前記基準を満たした実行可能プロセスとの優先順位とを比較し、当該実行プロセスの実行を継続するかまたは当該実行プロセスの実行を中断して当該実行可能プロセスの実行を開始するかを判定する判定ステップと、
    を実行させることを特徴とするプロセス実行制御プログラム。
  18. さらに、前記実行可能プロセスの前記レディキューにおける滞留時間の基準値を格納するステップを備え、
    前記判定ステップにおいて、前記実行可能プロセスの滞留時間が前記基準値を超えたとき、前記判定を行うことを特徴とすることを特徴とする請求項17記載のプロセス実行制御プログラム。
  19. 前記判定ステップにおいて、自プロセッサで実行中の前記実行プロセスの優先順位が低いと判定されたとき、優先順位が低いと判定された当該実行プロセスの実行を中断し対応する前記レディキューに繋ぐことを特徴とする請求項17または18記載のプロセス実行制御プログラム。
  20. さらに、前記コンピュータに、滞留時間が基準値を超えている実行可能プロセスを前記レディキューから選出し、全ての前記プロセッサグループ内の各前記プロセッサに対して、前記判定を行うよう指示するステップを実行させることを特徴とする請求項18または19記載のプロセス実行制御プログラム。
  21. さらに、前記コンピュータに、滞留時間が基準値を超えている実行可能プロセスを前記レディキューから選出し、当該実行可能プロセスが格納された前記レディキューに対応する前記プロセッサグループ以外の他の前記プロセッサグループ内の各前記プロセッサに対して、前記判定を行うよう指示するステップを実行させることを特徴とする請求項18または19記載のプロセス実行制御プログラム。
  22. さらに、前記コンピュータに、滞留時間が基準値を超えている実行可能プロセスを前記レディキューから選出し、全ての前記プロセッサグループ内の前記プロセッサのうち、優先順位が最も低い実行プロセスを実行しているプロセッサに対して、前記判定を行うよう指示するステップを実行させることを特徴とする請求項18または19記載のプロセス実行制御プログラム。
  23. 前記レディキューは排他制御されており、
    前記判定ステップにおいて、前記判定処理を行うよう指示されたプロセッサは、滞留時間が基準値を超えた実行可能プロセスを繋いだレディキューの排他制御ロックを取得して、前記判定処理を行うことを特徴とする請求項20ないし22のいずれかに記載のプロセス実行制御プログラム。
  24. さらに、前記コンピュータに、
    前記判定処理を行うよう指示されたプロセッサは、前記レディキューの排他制御ロックを取得している状態であって、かつ、自プロセッサで実行中の前記実行プロセスの優先順位が、滞留時間が基準値を超えた前記実行可能プロセスの優先順位より低いと判定した場合は、前記実行可能プロセスを前記レディキューから取り出し、自プロセッサの実行プロセスに遷移させた後に、前記排他制御ロックを解除する解除ステップを実行させることを特徴とする請求項23記載のプロセス実行制御プログラム。
JP2009001367A 2009-01-07 2009-01-07 プロセス実行制御システム、プロセス実行制御方法、及びプロセス実行制御プログラム Active JP5365201B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009001367A JP5365201B2 (ja) 2009-01-07 2009-01-07 プロセス実行制御システム、プロセス実行制御方法、及びプロセス実行制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009001367A JP5365201B2 (ja) 2009-01-07 2009-01-07 プロセス実行制御システム、プロセス実行制御方法、及びプロセス実行制御プログラム

Publications (2)

Publication Number Publication Date
JP2010160597A JP2010160597A (ja) 2010-07-22
JP5365201B2 true JP5365201B2 (ja) 2013-12-11

Family

ID=42596567

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009001367A Active JP5365201B2 (ja) 2009-01-07 2009-01-07 プロセス実行制御システム、プロセス実行制御方法、及びプロセス実行制御プログラム

Country Status (1)

Country Link
JP (1) JP5365201B2 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01316830A (ja) * 1988-06-16 1989-12-21 Hitachi Ltd タスク実行制御方式
JP2769367B2 (ja) * 1989-09-28 1998-06-25 株式会社日立製作所 マルチプロセッサスケジューリング方法
JP2003263331A (ja) * 2002-03-07 2003-09-19 Toshiba Corp マルチプロセッサシステム
JP3893136B2 (ja) * 2004-05-13 2007-03-14 ファームウェアシステム株式会社 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム

Also Published As

Publication number Publication date
JP2010160597A (ja) 2010-07-22

Similar Documents

Publication Publication Date Title
US8572622B2 (en) Reducing queue synchronization of multiple work items in a system with high memory latency between processing nodes
US8695002B2 (en) Multi-threaded processors and multi-processor systems comprising shared resources
US8935510B2 (en) System structuring method in multiprocessor system and switching execution environment by separating from or rejoining the primary execution environment
US8473964B2 (en) Transparent user mode scheduling on traditional threading systems
JP5770721B2 (ja) 情報処理システム
US9424103B2 (en) Adaptive lock for a computing system having multiple runtime environments and multiple processing units
US10248463B2 (en) Apparatus and method for managing a plurality of threads in an operating system
US7590990B2 (en) Computer system
US20150121388A1 (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
US20150121387A1 (en) Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core system and related non-transitory computer readable medium
US9858101B2 (en) Virtual machine input/output thread management
US8321874B2 (en) Intelligent context migration for user mode scheduling
JP2012150583A5 (ja)
JP5820525B2 (ja) 仮想計算機のスケジュールシステム及びその方法
JP5365201B2 (ja) プロセス実行制御システム、プロセス実行制御方法、及びプロセス実行制御プログラム
JP2011018281A (ja) ジョブ実行管理システム、ジョブ実行管理方法、ジョブ実行管理プログラム
US9959143B1 (en) Actor and thread message dispatching
TWI549054B (zh) 用於分支預測錯誤之賦能及去能第二跳越執行單元之技術
CN107562527B (zh) 一种rtos上的smp的实时任务调度方法
JP2010186347A (ja) ジョブスケジューリングシステム、ジョブスケジューリング方法及びプログラム
US8977795B1 (en) Method and apparatus for preventing multiple threads of a processor from accessing, in parallel, predetermined sections of source code
JP2005327007A (ja) 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム
JP6252259B2 (ja) 電子制御装置
US20230409001A1 (en) Method and device for controlling the sequence of program parts, programming method, programming device
JP2010165209A (ja) マルチスレッドプロセッサ装置

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20110706

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111215

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130411

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130416

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130614

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130826

R150 Certificate of patent or registration of utility model

Ref document number: 5365201

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150