JPWO2007017932A1 - スケジュール制御プログラム及びスケジュール制御方法 - Google Patents

スケジュール制御プログラム及びスケジュール制御方法 Download PDF

Info

Publication number
JPWO2007017932A1
JPWO2007017932A1 JP2007529429A JP2007529429A JPWO2007017932A1 JP WO2007017932 A1 JPWO2007017932 A1 JP WO2007017932A1 JP 2007529429 A JP2007529429 A JP 2007529429A JP 2007529429 A JP2007529429 A JP 2007529429A JP WO2007017932 A1 JPWO2007017932 A1 JP WO2007017932A1
Authority
JP
Japan
Prior art keywords
thread
time
cpu
cache
executed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007529429A
Other languages
English (en)
Other versions
JP4651671B2 (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 JPWO2007017932A1 publication Critical patent/JPWO2007017932A1/ja
Application granted granted Critical
Publication of JP4651671B2 publication Critical patent/JP4651671B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

効率的にキャッシュを使用可能なようにスレッドをCPUに割り当てる。スレッド(20)の実行時に実行開始時刻及び実行するCPU(10a)のCPU番号を記憶し、中断中のスレッド(20)を次に実行させるCPU(10a)〜(10d)へ割り当てる際に、実行開始時刻からの経過時間tを算出し、CPU(10a)〜(10d)で使用するキャッシュに対して次数が高いほど大きな時間パラメータ(T1)、(T2)、(T3)(T1<T2<T3)を設定し、経過時間tがn次(nは2以上の自然数)のキャッシュに設定された時間パラメータ未満であり、(n−1)次のキャッシュに設定された時間パラメータ以上の場合には、前回実行したCPU(10a)と共にn次のキャッシュを共有するCPU(10a)〜(10d)の中で、負荷の最も少ないCPUにスレッド(20)を割り当てる。

Description

本発明はスケジュール制御プログラム及びスケジュール制御方法に関し、特に、複数のプロセッサ装置に、実行させるスレッドを割り当てる処理をコンピュータに機能させるスケジュール制御プログラム及び複数のプロセッサ装置に、実行させるスレッドを割り当てるスケジュール制御方法に関する。
複数のCPU(Central Processing Unit)を用いてプログラムを実行するマルチプロセッサシステム対応のOS(Operating System)では、実行するプログラムを複数の実行単位(以下スレッドという。)に分割し、スレッドをOSのスケジューラにより各CPUに割り当てることによってプログラムを実行している。このように、1つのプログラムを複数のCPUにより並列処理することで、プログラムの処理時間の節約と、CPUにかかる負荷の分散を実現している。
スケジューラは、CPUごとに、これから実行させるスレッドが繋がった待ち行列(以下ランキューと呼ぶ。)から最も優先度の高いスレッドを選び出し、そのスレッドを選び出したランキューに対応するCPUで実行させる。また、実行開始時刻をスレッドごとに記録していた。
図7は、従来のスケジューラによるスレッドの割り当ての様子を模式的に示した図であり、(A)はあるスレッドの実行時のキャッシュメモリのデータを示し、(B)は一定時間経過後にそのスレッドを再び割り当てる際のキャッシュメモリのデータの様子を示す図である。
ここでは、CPU500a、500b、500c、500dのそれぞれに対し1次のキャッシュメモリ(以下1次キャッシュという。)501a、501b、501c、501dが接続されており、CPU500a、500bとで2次のキャッシュメモリ(以下2次キャッシュという。)502aを共有し、CPU500c、500dとで2次キャッシュ502bを共有しているコンピュータの一部の構成を示している。なお、斜線部はデータを示している。
図7(A)において、CPU500aはスレッド510を実行している。このとき、1次キャッシュ501a及び2次キャッシュ502aでは、スレッド510で用いるデータが、例えば図示しないメインメモリから読み出されて記憶される。なお、スレッド511、512、513はランキューに接続されており、実行待ちの状態となっている。
ところで、シングルプロセッサシステムの場合と異なり、マルチプロセッサシステムでは、スレッドは常に同一のCPUで実行されるのではなく、例えば一定時間で中断され、そのCPUに別のスレッドを実行させることでマルチタスクを実現している。そして、例えば、中断したスレッド510を再開するときには、図7(B)のようにスケジューラはそのスレッド510を繋げるランキューを有するCPUを以下のように選択していた。
(1)スレッド510が前回に実行権を得た時刻(実行開始時刻)から今回ランキューに繋げる時刻までの経過時間が、ある一定時間以内であれば、前回、スレッド510を実行したCPU500aを選択する。
(2)ある一定時間外であれば、全てのCPU500a〜500dの中から最も負荷が少ないCPUを選択する。
これは、ある一定時間内であれば、前回スレッド510を実行したCPU500aが使用したキャッシュに、図7(B)に示すように、スレッド510が前回使用したデータがまだ残っていることが期待できるためである。この制御により、キャッシュヒット率を向上させ、性能向上を実現していた。なお、各CPUの負荷は、ランキューに繋がっているスレッド514、515、516の数やその優先度から決定する。
また、マルチプロセッサシステムにおけるキャッシュのミスヒットを少なくするための技術として、各スレッド(タスク)が各プロセッサのキャッシュ中に確保しているブロック数を計数して、この計数結果を複数のプロセッサで共有しているメモリに記憶しておき、スレッドの再開時、この計数結果を元に、キャッシュに、より多くのブロック数を有するプロセッサに、そのスレッドを実行させる手法が知られている(例えば、特許文献1参照。)。
また、2次キャッシュのミスヒットを少なくするための技術として、2次キャッシュを共有しているCPUのグループが複数接続されたマルチプロセッサシステムにおいて、プロセスが、常に特定のCPUのグループで実行されるようにした技術もあった(例えば、特許文献2参照。)。
特開平8−30562号公報(段落番号〔0020〕〜〔0039〕,第1〜第5図) 特開平10−143382号公報
しかし、中断していたスレッドのCPUへの割り当てを、前回の実行開始時刻からの一定の経過時間を基準として行う従来のスケジュール制御方法では、以下のような問題があった。
図7(B)のように、経過時間によっては1次キャッシュ501aにはスレッド510の前回実行時に記憶したデータは残っていないが、2次キャッシュ502aにそのデータが残っている場合がある。また、2次キャッシュ502aにはデータが残っていないが、図示しない3次キャッシュにデータが残っている場合もある。すなわち次数の大きいキャッシュほど、経過時間が長くてもデータが残っている可能性が高い。しかし、従来のスケジュール制御では、このことを考慮せず、経過時間がある一定時間外の場合には、全てのCPUの中から最も負荷の少ないCPUを選ぶので、キャッシュに残っているデータを無駄にすることがあり、効率的なキャッシュの使用が行われていないという問題があった。
本発明はこのような点に鑑みてなされたものであり、効率的にキャッシュを使用可能なようにスレッドをCPUに割り当てるスケジュール制御プログラムを提供することを目的とする。
また、本発明の他の目的は、効率的にキャッシュを使用可能なようにスレッドをCPUに割り当てるスケジュール制御方法を提供することである。
本発明では上記問題を解決するために、複数のプロセッサ装置に、実行させるスレッドを割り当てる処理をコンピュータに機能させるスケジュール制御プログラムにおいて、図1に示すように、コンピュータを、スレッド20の実行時に実行開始時刻及び実行するプロセッサ装置(図1では例えばCPU10a)の識別情報(CPU番号)を記憶するスレッド情報記憶手段1、中断中のスレッド20を次に実行させるプロセッサ装置(CPU10a、10b、10c、10d)へ割り当てる際に、実行開始時刻からの経過時間tを算出する経過時間算出手段2、プロセッサ装置(CPU10a、10b、10c、10d)で使用するキャッシュメモリ(1次キャッシュ11a、11b、11c、11d、2次キャッシュ12a、12b、3次キャッシュ13)に対して次数が高いほど大きな時間パラメータT1、T2、T3(T1<T2<T3)を設定し、経過時間tがn次(nは2以上の自然数)のキャッシュメモリに設定された時間パラメータ未満であり、(n−1)次のキャッシュメモリに設定された時間パラメータ以上の場合には、前回実行したプロセッサ装置(CPU10a)及び前回実行したプロセッサ装置(CPU10a)と共にn次のキャッシュメモリを共有するプロセッサ装置の中で、負荷の最も少ないプロセッサ装置にスレッド20を割り当てるスレッド割り当て手段3、として機能させることを特徴とするスケジュール制御プログラムが提供される。
上記の構成によれば、スレッド情報記憶手段1は、スレッド20の実行時に実行開始時刻及び実行するプロセッサ装置(図1では例えばCPU10a)の識別情報(CPU番号)を記憶し、経過時間算出手段2は、中断中のスレッド20を次に実行させるプロセッサ装置(CPU10a、10b、10c、10d)へ割り当てる際に、実行開始時刻からの経過時間tを算出し、スレッド割り当て手段3は、プロセッサ装置(CPU10a、10b、10c、10d)で使用するキャッシュメモリ(1次キャッシュ11a、11b、11c、11d、2次キャッシュ12a、12b、3次キャッシュ13)に対して次数が高いほど大きな時間パラメータ(T1<T2<T3)を設定し、経過時間tがn次(nは2以上の自然数)のキャッシュメモリに設定された時間パラメータ未満であり、(n−1)次のキャッシュメモリに設定された時間パラメータ以上の場合には、前回実行したプロセッサ装置(CPU10a)及び、前回実行したプロセッサ装置(CPU10a)と共にn次のキャッシュメモリを共有するプロセッサ装置の中で、負荷の最も少ないプロセッサ装置にスレッド20を割り当てる。
本発明は、スレッドの実行時に実行開始時刻及び実行するプロセッサ装置の識別情報を記憶し、中断中のスレッドを次に実行させるプロセッサ装置へ割り当てる際に、実行開始時刻からの経過時間を算出し、プロセッサ装置で使用するキャッシュに対して次数が高いほど大きな時間パラメータを設定し、経過時間がn次(nは2以上の自然数)のキャッシュに設定された時間パラメータ未満であり、(n−1)次のキャッシュに設定された時間パラメータ以上の場合には、前回実行したプロセッサ装置及び、前回実行したプロセッサ装置と共にn次のキャッシュを共有するプロセッサ装置の中で、負荷の最も少ないプロセッサ装置にスレッドを割り当てるので、経過時間に応じて、前回実行時に記憶したデータが残っている可能性が高いキャッシュを使用するプロセッサ装置が、中断中のスレッドの割り当て対象として選択される。これにより、キャッシュのヒット率が上がり、キャッシュを効率的に使用することができる。
また、キャッシュを共有するプロセッサ装置の中で最も少ない負荷のプロセッサ装置に割り当てる処理を行うので、中断中のスレッドの割り当てと同時に負荷分散処理が行えることになる。これにより、スレッド割り当て後に負荷分散処理を行うことに起因して、キャッシュに記憶されていたスレッドのデータが追い出されてキャッシュヒット率が下がることを防止できる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
複数のCPUに実行させるスレッドを割り当てるためのスケジュール制御の概略を説明する図である。 本実施の形態のスケジュール制御を実行するコンピュータの一例のハードウェア構成図である。 ハードウェアの構成情報を示す図である。 本実施の形態のスケジュール制御に係るOSの機能を模式的に示す図である。 スレッド実行時の処理の流れを説明するフローチャートである。 中断中のスレッドをいずれかのCPUのランキューに繋げる処理の流れを説明する図である。 従来のスケジューラによるスレッドの割り当ての様子を模式的に示した図であり、(A)はあるスレッドの実行時のキャッシュメモリのデータを示し、(B)は一定時間経過後にそのスレッドを再び割り当てる際のキャッシュメモリのデータの様子を示す図である。
以下、本発明の実施の形態を図面を参照して詳細に説明する。
まず、本発明の実施の形態の概略を説明する。
図1は、複数のCPUに実行させるスレッドを割り当てるためのスケジュール制御の概略を説明する図である。
なお、ここでは複数のCPU10a、10b、10c、10dのそれぞれに対し1次キャッシュ11a、11b、11c、11dが接続されており、CPU10a、10bとで2次キャッシュ12aを共有し、CPU10c、10dとで2次キャッシュ12bを共有しており、CPU10a〜10dとで3次キャッシュ13を共有しているコンピュータにおけるスケジュール制御を例にして説明する。また、各CPU10a〜10dで実行されるスレッド20、21、22、23、24、25、26を模式的に示している。
複数のCPU10a〜10dに実行させるスレッドを割り当てるスケジュール制御は、スレッド情報記憶手段1、経過時間算出手段2、スレッド割り当て手段3にて行われる。
以下、各処理手段の機能を説明する。
スレッド情報記憶手段1は、スレッド20〜26のそれぞれの実行時に実行開始時刻及び、実行するCPU10a〜10dの識別情報(以下CPU番号)を記憶する。
経過時間算出手段2は、中断中のスレッド(例えばスレッド20)を、次に実行させるCPU10a〜10dに割り当てる際に、スレッド情報記憶手段1に記憶した実行開始時刻からの経過時間tを算出する。
スレッド割り当て手段3は、CPU10a〜10dへのスレッド20〜26の割り当てを行う。このとき、CPU10a〜10dが使用するキャッシュメモリ(1次キャッシュ11a、11b、11c、11d、2次キャッシュ12a、12b、3次キャッシュ13)に対して次数が高いほど大きな時間パラメータT1、T2、T3(T1<T2<T3)を設定する。この時間パラメータは、それぞれの次数のキャッシュに、中断中のスレッドが前回実行時に使用したデータが残っている可能性がある時間を目安に設定される。次数の高いキャッシュほど容量が大きいため、経過時間tが長くてもデータが残っている可能性が高い。そのため、次数が高いほど大きな時間パラメータが設定される。具体的には、時間パラメータは、キャッシュの容量や、ベンチマークなどによって決定する。そして、スレッド割り当て手段3は、中断中のスレッドの経過時間tがn次(nは2以上の自然数)のキャッシュに設定された時間パラメータ未満であり、(n−1)次のキャッシュに設定された時間パラメータ以上の場合には、前回実行したCPU及び、前回実行したCPUと共にn次のキャッシュを共有するCPUの中で、負荷の最も少ないものに中断中のスレッドを割り当てることを特徴としている。
以下、中断中のスレッド20を、再びCPU10a〜10dのいずれかに割り当てる場合を例にして、本実施の形態のスケジュール制御方法の概略を説明する。
中断中のスレッド20を、CPU10a〜10dのいずれかに割り当てる際、経過時間算出手段2は、スレッド情報記憶手段1で記憶された、スレッド20の前回の実行時の実行開始時刻を参照して、現時刻までの経過時間tを算出する。スレッド割り当て手段3は、算出された経過時間tを基に、以下のようなスレッド20の割り当てを行う。
まず、経過時間tがt<T1の場合には、スレッド情報記憶手段1で記憶したCPU番号を参照して、スレッド20を前回実行したCPU10aを選択して、再度スレッド20を割り当てる(CPU10aのランキューに繋げる)。
T1≦t<T2の場合には、前回実行したCPU10a及び、CPU10aと共に2次キャッシュ12aを共有するCPU10bの中で、負荷の少ないほうにスレッド20を割り当てる。図1の場合、CPU10aのランキューには、3つのスレッド21、22、23が存在する。一方、CPU10bのランキューには、2つのスレッド24、25がある。そのため、スレッド割り当て手段3は、負荷の少ないCPU10bのランキューにスレッド20を繋げる。
T2≦t<T3の場合には、前回実行したCPU10a及び、CPU10aと共に3次キャッシュ13を共有するCPU10b、10c、10dの中で、負荷の最も少ないものにスレッド20を割り当てる。図1の場合、CPU10cにはスレッドは存在せず、CPU10dには1つのスレッド26が存在するため、スレッド20は、CPU10cに割り当てられる。
なお、t≧T3の場合には、従来と同様に、全てのCPU10a、10b、10c、10dの中で最も負荷の少ないものに、スレッド20が割り当てられる。図1の場合では、CPU10cが選択され、スレッド20が割り当てられる。
このようにすることで、経過時間に応じて前回実行時に記憶したデータが残っている可能性が高いキャッシュを使用するCPU10a〜10dが、中断中のスレッド20の割り当て対象として選択されるので、キャッシュのヒット率が上がり、キャッシュを効率的に使用することができる。
また、キャッシュを共有するCPU10a〜10dの中で最も少ない負荷のCPUに割り当てる処理を行うので、スレッド20の割り当てと同時に負荷分散処理が行えることになる。これにより、スレッド割り当て後に負荷分散処理を行うことに起因して、キャッシュに記憶されていたスレッドのデータが追い出されてキャッシュヒット率が下がることを防止できる。
次に、実施の形態の詳細を説明する。
図2は、本実施の形態のスケジュール制御を実行するコンピュータの一例のハードウェア構成図である。
ここで示すコンピュータ30は、例えば、UNIX(登録商標)のサーバコンピュータである。
コンピュータ30は、それぞれ1次キャッシュを内蔵している8つのCPU31a、31b、31c、31d、31e、31f、31g、31hと、2次キャッシュ32a、32b、32c、32d、3次キャッシュ33a、33b、3次キャッシュ33a、33bとシステムバス34を介して接続されるメモリ35、I/O36などから構成されている。
また、2次キャッシュ32aはCPU31a、31bで共有され、2次キャッシュ32bは、CPU31c、31dで共有され、2次キャッシュ32cはCPU31e、31fで共有され、2次キャッシュ32dはCPU31g、31hで共有されている。さらに、3次キャッシュ33aは、CPU31a、31b、31c、31dで共有され、3次キャッシュ33bは、CPU31e、31f、31g、31hで共有されている。
このような、ハードウェアの構成情報は以下のようなファームウェアで記述されている。
図3は、ハードウェアの構成情報を示す図である。
例えば、CPU(cpu node)については、それぞれの識別情報“id:〜”が記述され、さらに、そのCPUが用いるキャッシュの識別情報がキャッシュの次数ごとに記述されている。例えば、図2のCPU31aは、識別情報が“id=0”で記述され、CPU31aに内蔵された1次キャッシュは“level 1 cache id:0”で、CPU31aで用いる2次キャッシュ32aは“level 2 cache id:0”で、3次キャッシュ33aは“level 3 cache id:0”でそれぞれ記述されている。また、例えば、CPU31hは、識別情報が“id=7”で記述され、CPU31hに内蔵された1次キャッシュの識別情報は“level 1 cache id:7”で、CPU31hで用いる2次キャッシュ32dの識別情報は“level 2 cache id:3”で、3次キャッシュ33bの識別情報は“level 3 cache id:1”でそれぞれ記述されている。また、ハードウェアの構成情報には、図示を省略したがメモリ35や、I/O36などの構成を示す記述も含まれる。このようなハードウェアの構成情報は、OSに渡される。
図4は、本実施の形態のスケジュール制御に係るOSの機能を模式的に示す図である。
ファームウェアからのハードウェア構成情報により、図2のCPU31a〜31hの情報を示すCPU管理構造体40−1、40−2、40−3、…、40−8が生成される。スレッド41はスレッド管理構造体で表され、そのスレッド41の実行開始時刻“disp_time”と、そのスレッド41を実行したCPU番号“cpu”が記憶される。スレッド41は、スケジューラ42によって、CPU31a〜31hのいずれかに割り当てられる。
OSのスケジューラ42は、スレッド管理構造体を参照して、経過時間に応じて中断中のスレッドを割り当てるCPUを選択する。また、前述したようにキャッシュの次数に応じて時間パラメータT1、T2、T3を設定する。
このような機能を有するOSにより、図1で示した各手段が、図2で示すようなハードウェアのコンピュータ30上で実現される。
以下、図2、図3、図4を用いて本実施の形態のスケジュール制御方法を説明する。
まず、スレッド実行時の処理を説明する。
図5は、スレッド実行時の処理の流れを説明するフローチャートである。
スレッド実行処理が開始すると、スケジューラ42は、各CPU31a〜31hのランキューを確認し、待機中のスレッド41の存在を確認する。スレッド41がある場合にはステップS2の処理に進み、スレッド41がない場合には、スレッド41がランキューに出現するまでステップS1の処理を繰り返す(ステップS1)。
スケジューラ42は、スレッド41がランキューに存在した場合には、ランキューからスレッド41を抜き、実行状態とする。以下、図4で示すように、CPU管理構造体40−2で表されるCPU31bのランキューに繋がったスレッド41aを例にして説明する。図4の矢印Aで示しているように、CPU管理構造体40−2で示されるCPU31bのランキューからスレッド41aが抜かれ、スレッド41aはCPU31bによる実行権を得る(ステップS2)。
さらに、実行権を得たスレッド41aのスレッド管理構造体に、実行開始時刻“disp_time”となる現時刻と、実行するCPU31bのCPU番号(例えば、CPU31bの識別情報である“id=1”)を記憶する(ステップS3)。
その後、CPU31bにより、実行権を得たスレッド41aが実行される(ステップS4)。
このようなスレッド41aは、処理が終われば消滅するが、I/O36を介した外部機器からの応答待ちや、別スレッドが獲得中の排他資源待ちの場合や、スレッド41aの処理が一定時間を越えたときなど、処理を終える前に中断されることがある(図4の矢印B)。その場合、スケジューラ42は、スレッド41aを一旦中断状態にし、CPU31bのランキューにある別のスレッドに実行権を与える。I/O36を介した外部機器からの応答があったときや、別スレッドが獲得中だった排他資源が解放されたとき、その他スレッド41aの処理が一定時間を越えて一旦別スレッドに実行権を譲渡した後など、スレッド41aの実行を再開させる場合、スレッド41aを再びいずれかのCPU31a〜31hに割り当てる処理を行う。
図6は、中断中のスレッドをいずれかのCPUのランキューに繋げる処理の流れを説明する図である。
なお、以下でも図4で示したスレッド41aを用いて説明する。
まず、スケジューラ42は、中断中のスレッド41aのスレッド管理構造体に記録されている、実行開始時刻“disp_time”と現時刻との差より経過時間tを算出する(ステップS5)。
そして経過時間tが、t<T1の場合、前回と同じCPU31bを選択する(ステップS6)。
T1≦t<T2の場合には、前回動作したCPU31bと2次キャッシュ32aを共有するCPU31a、31bの中から最も負荷の少ないCPUを選択する。図4の例では、CPU管理構造体40−1で表されるCPU31aのランキューに繋がっているスレッド41の数が、CPU管理構造体40−2で表されるCPU31bのランキューに繋がっているスレッド41の数よりも多く、負荷が大きいのでCPU31bが選択される(ステップS7)。
T2≦t<T3の場合には、前回動作したCPU31bと3次キャッシュ33aを共有するCPU31a、31b、31c、31dの中から最も負荷の少ないCPUを選択する。図4の例では、CPU管理構造体40−3で表されるCPU31cが選択された場合を示している(ステップS8)。
t≧T3の場合には、全CPU31a〜31hの中から最も負荷の少ないCPUを選択する。図4の例は、CPU管理構造体40−8で表されるCPU31hが選択された場合を示している(ステップS9)。
そして最後に、スケジューラ42は、選択されたCPUのランキューにスレッド41aを繋げる(ステップS10)。
以上のように、本実施の形態のスケジュール制御方法によれば、経過時間に応じて、前回実行時に記憶したデータが残っている可能性が高いキャッシュを使用するCPUが、中断中のスレッドの割り当て対象として選択されるので、キャッシュのヒット率が上がり、キャッシュを効率的に使用することができる。
また、キャッシュを共有するCPUの中で最も少ない負荷のCPUに割り当てる処理を行うので、中断中のスレッドの割り当てと同時に負荷分散処理が行えることになる。これにより、スレッド割り当て後に負荷分散処理を行うことに起因して、キャッシュに記憶されていたスレッドのデータが追い出されてキャッシュヒット率が下がることを防止できる。
なお、前述したように、上記の処理内容は、コンピュータによって実現することができる。その場合、コンピュータが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
以上、本発明を実施例に基づいて説明したが、本発明は上記に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。例えば、上記では3次キャッシュまでのコンピュータを例にして説明したが、3次以上のキャッシュがあるコンピュータについても同様に適用できる。
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
符号の説明
1 スレッド情報記憶手段
2 経過時間算出手段
3 スレッド割り当て手段
10a、10b、10c、10d CPU
11a、11b、11c、11d 1次キャッシュ
12a、12b 2次キャッシュ
13 3次キャッシュ
20、21、22、23、24、25、26 スレッド
T1、T2、T3 時間パラメータ
t 経過時間

Claims (4)

  1. 複数のプロセッサ装置に、実行させるスレッドを割り当てる処理をコンピュータに機能させるスケジュール制御プログラムにおいて、
    コンピュータを、
    スレッドの実行時に実行開始時刻及び実行するプロセッサ装置の識別情報を記憶するスレッド情報記憶手段、
    中断中の前記スレッドを次に実行させるプロセッサ装置へ割り当てる際に、前記実行開始時刻からの経過時間を算出する経過時間算出手段、
    前記プロセッサ装置で使用するキャッシュメモリに対して次数が高いほど大きな時間パラメータを設定し、前記経過時間がn次(nは2以上の自然数)のキャッシュメモリに設定された前記時間パラメータ未満であり、(n−1)次のキャッシュメモリに設定された前記時間パラメータ以上の場合には、前回実行したプロセッサ装置及び、前記前回実行したプロセッサ装置と共に前記n次のキャッシュメモリを共有するプロセッサ装置の中で、負荷の最も少ないプロセッサ装置に前記スレッドを割り当てるスレッド割り当て手段、
    として機能させることを特徴とするスケジュール制御プログラム。
  2. 前記時間パラメータは、前記キャッシュメモリの容量に応じて設定されることを特徴とする請求の範囲第1項記載のスケジュール制御プログラム。
  3. 複数のプロセッサ装置に、実行させるスレッドを割り当てるスケジュール制御方法において、
    スレッド情報記憶手段に、スレッドの実行時に実行開始時刻及び実行するプロセッサ装置の識別情報を記憶するステップと、
    経過時間算出手段で、中断中の前記スレッドを次に実行させるプロセッサ装置へ割り当てる際に、前記実行開始時刻からの経過時間を算出するステップと、
    スレッド割り当て手段により、前記プロセッサ装置で使用するキャッシュメモリに対して次数が高いほど大きな時間パラメータを設定し、前記経過時間がn次(nは2以上の自然数)のキャッシュメモリに設定された前記時間パラメータ未満であり、(n−1)次のキャッシュメモリに設定された前記時間パラメータ以上の場合には、前回実行したプロセッサ装置及び、前記前回実行したプロセッサ装置と共に前記n次のキャッシュメモリを共有するプロセッサ装置の中で、負荷の最も少ないプロセッサ装置に前記スレッドを割り当てるステップと、
    を有することを特徴とするスケジュール制御方法。
  4. 前記時間パラメータは、前記キャッシュメモリの容量に応じて設定されることを特徴とする請求の範囲第3項記載のスケジュール制御方法。
JP2007529429A 2005-08-09 2005-08-09 スケジュール制御プログラム及びスケジュール制御方法 Expired - Fee Related JP4651671B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2005/014590 WO2007017932A1 (ja) 2005-08-09 2005-08-09 スケジュール制御プログラム及びスケジュール制御方法

Publications (2)

Publication Number Publication Date
JPWO2007017932A1 true JPWO2007017932A1 (ja) 2009-02-19
JP4651671B2 JP4651671B2 (ja) 2011-03-16

Family

ID=37727128

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007529429A Expired - Fee Related JP4651671B2 (ja) 2005-08-09 2005-08-09 スケジュール制御プログラム及びスケジュール制御方法

Country Status (6)

Country Link
US (1) US8479205B2 (ja)
EP (1) EP1914632B1 (ja)
JP (1) JP4651671B2 (ja)
KR (1) KR100942740B1 (ja)
CN (1) CN100573458C (ja)
WO (1) WO2007017932A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8356284B2 (en) * 2006-12-28 2013-01-15 International Business Machines Corporation Threading model analysis system and method
JP4872818B2 (ja) * 2007-06-14 2012-02-08 ムラテックオートメーション株式会社 プロセス状態監視装置
US8453146B2 (en) * 2009-12-23 2013-05-28 Intel Corporation Apportioning a counted value to a task executed on a multi-core processor
US8756585B2 (en) * 2009-12-29 2014-06-17 International Business Machines Corporation Efficient monitoring in a software system
WO2012095982A1 (ja) * 2011-01-13 2012-07-19 富士通株式会社 マルチコアプロセッサシステム、およびスケジューリング方法
JP5737298B2 (ja) * 2011-01-21 2015-06-17 富士通株式会社 スケジューリング方法およびスケジューリングシステム
CN102402220B (zh) * 2011-01-21 2013-10-23 南京航空航天大学 基于负荷分担式的容错飞行控制系统的故障检测方法
US20120267423A1 (en) * 2011-04-19 2012-10-25 Taiwan Semiconductor Manufacturing Company, Ltd. Methods and Apparatus for Thin Die Processing
JP5776776B2 (ja) * 2011-08-05 2015-09-09 富士通株式会社 データ処理システム、およびデータ処理方法
US9274854B2 (en) * 2012-07-27 2016-03-01 International Business Machines Corporation Contamination based workload management
US9571329B2 (en) * 2013-03-11 2017-02-14 International Business Machines Corporation Collective operation management in a parallel computer
US10140210B2 (en) * 2013-09-24 2018-11-27 Intel Corporation Method and apparatus for cache occupancy determination and instruction scheduling
JP5808450B1 (ja) 2014-04-04 2015-11-10 ファナック株式会社 マルチコアプロセッサを使用して逐次プログラムを実行する制御装置
CN106484537B (zh) 2016-09-30 2019-07-19 网易(杭州)网络有限公司 一种cpu核资源的分配方法和设备
CN116521351B (zh) * 2023-07-03 2023-09-05 建信金融科技有限责任公司 多线程任务调度方法、装置、存储介质及处理器

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0344742A (ja) * 1989-07-12 1991-02-26 Nippon Telegr & Teleph Corp <Ntt> マルチプロセッサにおけるタスク割り当て制御方法
JPH04283849A (ja) * 1991-03-13 1992-10-08 Toshiba Corp マルチプロセッサシステム
JPH05151064A (ja) * 1991-11-29 1993-06-18 Yokogawa Electric Corp 密結合マルチプロセツサシステム
JPH10105461A (ja) * 1996-08-26 1998-04-24 Internatl Business Mach Corp <Ibm> 処理装置及びルックアサイド・キャッシュをスヌープする改善された装置及び方法
JPH11259318A (ja) * 1998-03-13 1999-09-24 Hitachi Ltd ディスパッチ方式

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5185861A (en) * 1991-08-19 1993-02-09 Sequent Computer Systems, Inc. Cache affinity scheduler
US5287508A (en) * 1992-04-07 1994-02-15 Sun Microsystems, Inc. Method and apparatus for efficient scheduling in a multiprocessor system
JPH0830562A (ja) 1994-07-19 1996-02-02 Nec Corp マルチプロセッサシステム
US5784614A (en) * 1995-07-27 1998-07-21 Ncr Corporation Cache affinity scheduling method for multi-processor nodes in a split transaction bus architecture
US5872972A (en) * 1996-07-05 1999-02-16 Ncr Corporation Method for load balancing a per processor affinity scheduler wherein processes are strictly affinitized to processors and the migration of a process from an affinitized processor to another available processor is limited
JPH10143382A (ja) 1996-11-08 1998-05-29 Hitachi Ltd 共有メモリ型マルチプロセッサシステムの資源管理方法
US5974438A (en) 1996-12-31 1999-10-26 Compaq Computer Corporation Scoreboard for cached multi-thread processes
US6665699B1 (en) * 1999-09-23 2003-12-16 Bull Hn Information Systems Inc. Method and data processing system providing processor affinity dispatching
JP3535795B2 (ja) * 2000-02-21 2004-06-07 博 和泉 コンピュータ、並びに、コンピュータ読み取り可能な記録媒体

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0344742A (ja) * 1989-07-12 1991-02-26 Nippon Telegr & Teleph Corp <Ntt> マルチプロセッサにおけるタスク割り当て制御方法
JPH04283849A (ja) * 1991-03-13 1992-10-08 Toshiba Corp マルチプロセッサシステム
JPH05151064A (ja) * 1991-11-29 1993-06-18 Yokogawa Electric Corp 密結合マルチプロセツサシステム
JPH10105461A (ja) * 1996-08-26 1998-04-24 Internatl Business Mach Corp <Ibm> 処理装置及びルックアサイド・キャッシュをスヌープする改善された装置及び方法
JPH11259318A (ja) * 1998-03-13 1999-09-24 Hitachi Ltd ディスパッチ方式

Also Published As

Publication number Publication date
WO2007017932A1 (ja) 2007-02-15
EP1914632B1 (en) 2012-06-27
CN101238442A (zh) 2008-08-06
JP4651671B2 (ja) 2011-03-16
EP1914632A1 (en) 2008-04-23
US20080109817A1 (en) 2008-05-08
US8479205B2 (en) 2013-07-02
CN100573458C (zh) 2009-12-23
EP1914632A4 (en) 2009-07-29
KR100942740B1 (ko) 2010-02-17
KR20080023358A (ko) 2008-03-13

Similar Documents

Publication Publication Date Title
JP4651671B2 (ja) スケジュール制御プログラム及びスケジュール制御方法
US5784698A (en) Dynamic memory allocation that enalbes efficient use of buffer pool memory segments
US8893145B2 (en) Method to reduce queue synchronization of multiple work items in a system with high memory latency between processing nodes
US9742869B2 (en) Approach to adaptive allocation of shared resources in computer systems
JP5770721B2 (ja) 情報処理システム
JP5831324B2 (ja) 制御装置,制御方法,プログラム及び分散処理システム
KR101640848B1 (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
JP2008084009A (ja) マルチプロセッサシステム
US9069609B2 (en) Scheduling and execution of compute tasks
TWI503750B (zh) 運算任務狀態的封裝
JP2008090546A (ja) マルチプロセッサシステム
JP6885193B2 (ja) 並列処理装置、ジョブ管理方法、およびジョブ管理プログラム
US20160371082A1 (en) Instruction context switching
JP3782955B2 (ja) 複数の処理システムのコンピューター資源の使用を見積もるシステムおよび方法
KR102493859B1 (ko) 듀얼 모드 로컬 데이터 저장
TW201435576A (zh) 陷阱處理期間的協作執行緒陣列粒化內文切換
JP7326969B2 (ja) 情報処理装置,ストレージシステム及びスケジューリングプログラム
CN101847128A (zh) 管理tlb的方法和装置
JP2013114538A (ja) 情報処理装置、情報処理方法及び制御プログラム
JP7217341B2 (ja) プロセッサおよびレジスタの継承方法
US10423424B2 (en) Replicated stateless copy engine
US11397578B2 (en) Selectively dispatching waves based on accumulators holding behavioral characteristics of waves currently executing
JP2004164202A (ja) データ送受システム、リングバッファ制御方法、制御プログラム
CN112749006A (zh) 数据存储装置及其操作方法
CN116057513A (zh) 指令分派路由

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100831

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101101

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101214

R150 Certificate of patent or registration of utility model

Ref document number: 4651671

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131224

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees