JP7188472B2 - コンピュータ、スケジューリング方法、及び、プログラム - Google Patents

コンピュータ、スケジューリング方法、及び、プログラム Download PDF

Info

Publication number
JP7188472B2
JP7188472B2 JP2021015377A JP2021015377A JP7188472B2 JP 7188472 B2 JP7188472 B2 JP 7188472B2 JP 2021015377 A JP2021015377 A JP 2021015377A JP 2021015377 A JP2021015377 A JP 2021015377A JP 7188472 B2 JP7188472 B2 JP 7188472B2
Authority
JP
Japan
Prior art keywords
thread
core
worker
threads
queue
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
JP2021015377A
Other languages
English (en)
Other versions
JP2022118736A (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 JP2021015377A priority Critical patent/JP7188472B2/ja
Priority to PCT/JP2022/002541 priority patent/WO2022168661A1/ja
Publication of JP2022118736A publication Critical patent/JP2022118736A/ja
Application granted granted Critical
Publication of JP7188472B2 publication Critical patent/JP7188472B2/ja
Active 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

Description

本開示は、マルチコアにおけるスレッドのスケジューリングに関する。
一般的なオペレーティングシステムは、ユーザプログラム(ユーザスレッド)に割り込んで処理を行う。これにより、ユーザプログラムの処理に僅かな遅延が生じる。この遅延が特定のタスクに積み重なることで、OS(Operating System)ジッタが生じる。
特許文献1に開示されたアーキテクチャは、OSを実行する制御コアとユーザプログラムを実行する計算コアの2種類のコアを有する。特許文献1の技術では、制御コア上のOSが計算コアにOS機能を提供する仕組みを備えることでOSジッタを回避している。
一方、特許文献1の技術では、計算コア上にOSが存在しないため、計算コアに対してスケジューリングなどのOS機能を提供するたびに、制御コアと計算コアの間の情報伝達によるオーバーヘッドが加わることになる。特に、コンテキストスイッチのコストは大きくなる。
そのため、性能を重視するプログラムでは、スレッド数は、常にコア数以下としてコンテキストスイッチを抑制することが望まている。
特許第5867482号公報 国際公開第2012/020478号 特表2017-506773号公報 特表2016-524238号公報 特開2006-190265号公報 特開2004-086921号公報
プロセス間通信の一種で、ある事象が起きたことを他のプロセスに知らせる割り込み機能としてシグナルがある。シグナルによる割り込みを契機に、メモリ解放のような非同期シグナル安全(async-signal-safe)ではない処理を実行することがる。この場合、予め処理を代理で実行するためのワーカースレッドを生成して待機させておき、シグナルハンドラが、ワーカースレッドの起動と処理を依頼する方法が考えられる。
しかし、特許文献1に開示のアーキテクチャのように、コンテキストスイッチのコストが大きい場合、ワーカースレッド(以下、ワーカーとも称す)の起動が、コンテキストスイッチによる性能劣化を引き起こす。例えば、全コア上にユーザスレッドが動いており、あるユーザスレッドがワーカーを起動するためのシグナルを受け取る。シグナルを受けたユーザスレッドはワーカーを起動すると、ワーカーはいずれかのコアにスケジューリングされ、コンテキストスイッチが発生する。この時、一般的なスケジューラでは、コンテキストスイッチの対象は、ワーカーを起動したユーザスレッドとは限らない。
そのため、ワーカーの処理を必要とするユーザスレッドとは無関係(即ち、異なるスレッドグループ)のユーザスレッドの進行が妨げられる。一方でワーカーの処理を必要とするユーザスレッドはCPU(Central Processing Unit)のリソースを持て余すことになる。
ワーカーが、メモリ解放のようなプロセスのリソース制御を行う場合、ユーザプロセスごとにワーカーが必要となる。そのためユーザプロセスが複数存在する場合、ワーカーも同数存在する必要がある。複数のワーカーが同じコアにスケジューリングされるとワーカー同士でのコンテキストスイッチも発生する。
このような、スケジューリングにおけるコンテキストスイッチに関する性能劣化を抑制する技術の提供が望まれている。
本開示の目的は、コンテキストスイッチに関する性能劣化を抑制することができる技術を提供することにある。
本開示の一態様であるスケジューラは、各コアにスレッドが割り当てられて、空きコアが存在しない場合、前記各コアのうち、前記各コアの実行可能キュー又は待機キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択する選択部と、選択した前記コアに、前記生成するワーカースレッドを割り当てることを決定する決定部と、を備える。
本開示の一形態であるスケジューリング方法は、各コアにスレッドが割り当てられて、空きコアが存在しない場合、前記各コアのうち、前記各コアの実行可能キュー又は待機キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択し、選択した前記コアに、前記生成するワーカースレッドを割り当てることを決定する。
本開示の一形態であるプログラムは、各コアにスレッドが割り当てられて、空きコアが存在しない場合、前記各コアのうち、前記各コアの実行可能キュー又は待機キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択し、選択した前記コアに、前記生成するワーカースレッドを割り当てることを決定する、ことをコンピュータに実行させる。
本開示のスケジューラ等によれば、コンテキストスイッチに関する性能劣化を抑制することができる。
第1の実施形態に係るスケジューラによるスケジュール例を示す図である。 第1の実施形態に係るスケジューラの構成の例を示すブロック図である。 スレッドを生成する場合のスケジューラの動作の例を示すフローチャートである。 スレッドを待機状態から実行可能状態へ遷移させる場合のスケジューラの動作の例を示すフローチャートである。 スケジューラの動作の他の例を示すフローチャートである。 第2の実施形態に係るスケジューラの構成の例を示すブロック図である。 第2の実施形態に係るスケジューラの動作の例を示すフローチャートである。 コンピュータによるハードウエア構成を示す図である。
(第1の実施形態)
第1の実施形態の一態様であるスケジューラについて図面を用いて説明する。
図1は、第1の実施形態に係るスケジューラによるスケジュール例を示す図である。スケジューラ1は、各コア(コア0、1、2、3)に対してスレッドをスケジューリングして割り当てる。スケジューラ1は、スレッド管理データ2を利用して、スレッドをスケジューリングする。スケジューリングとは、スレッドの実行順序を決定する処理、あるいは、スレッドをどのコアに割り当てるかを決定する処理をいう。
なお、第1の実施形態では4つのコアにスレッドをスケジューリングする例で説明するが、コアの数は4つに限られない。
スレッド管理データ2には、各コアに関連付けられたスレッドごとのスケジューリングを表現する情報が含まれる。例えば、スレッド管理データ2は、スレッド識別子21(図中、IDと示す)、スレッドグループ識別子22(図中、グループIDと示す)、優先度23、ワーカーフラグ24を含む。スケジューラ1は、スレッド管理データ2を参照してスレッドごとの実行順序と依存関係を確認する。
スレッド識別子21は、スレッドを識別するための情報である。スレッドグループ識別子22は、プロセスを構成するスレッドのグループを識別するための情報である。スレッドグループは、ユーザプロセスを構成するスレッドの集合とも言える。優先度23は、同一スレッドグループにおけるスレッド間の優先の度合を示す情報である。図1において、優先度のレベルを高、低の2つで示しているが、これに限られない。例えば、優先度のレベルは3つ以上であってもよい。
ワーカーフラグ24は、スレッドがワーカースレッドであるか否かを判別するための情報である。ワーカーフラグ24は、例えば、OSが提供するスレッドを生成するためのアプリケーションインターフェースにおいて、引数を追加もしくは拡張する形で最終的にユーザー側から設定できる仕様とする。例えば、Linux(登録商標)のclone()であれば、第3引数のint flags(スレッドの属性を指定するフラグ)を拡張してワーカー属性を追加し、かつ、task_struct構造体(スレッドを管理するデータ)にはワーカーか否かを判別するためのフィールドを持たせることで実現可能となる。
また、スケジューラ1は、各コアに関連付けられたスレッドのスケジューリングを表現する2種類のキューを用いる。1つは、実行中または実行可能状態のスレッドからなる実行可能キュー31で、もう1つは、待機状態のスレッドからなる待機キュー32である。
なお、実装の簡易化のため、2種類のキューを持つ代わりに、1つのタスクリストとしてスレッドを管理してもよい。この場合、コアの実行可能キュー31もしくはコアの待機キュー32のいずれかに、スレッド管理データ2が存在する場合、スレッドが当該コアに割り当てられているということにする。
本明細書で説明するスケジューラ1は、OSにおけるスレッドのスケジューラとしての機能を備えるものとする。このため、通常のスケジューラが備える機能に関する詳細な説明は省略する。
図2は、第1の実施形態に係るスケジューラの構成の例を示すブロック図である。図2に示すスケジューラ1は、確認部11、選択部12、決定部13、移送部14、計数部15、設定部16を備える。
確認部11は、スレッドが割り当てられているコアを特定し、確認する。例えば、確認部11は、スレッドごとのスレッド管理データ2を参照し、指定されたスレッド識別子21を持つスレッドが割り当てられているコアを特定する。
また、確認部11は、スレッドの種別を確認する。例えば、確認部11は、スレッドがユーザスレッド又はワーカースレッドであるか確認する。具体的には、確認部11は、スレッドのスレッド管理データ2を参照してスレッドのワーカーフラグ24を確認する。
また、確認部11は、実行可能キュー31、待機キューを参照して、各コアに対するスレッドの割り当て状況を確認する。例えば、確認部11は、各コアにおいて、実行可能キューが空いているコアが存在するか確認する。あるいは、確認部11は、各コアに関連付けられたスレッドに対して、実行可能キュー31に孤立したワーカーが存在するかを確認してもよい。
選択部12は、例えば、確認部11による確認の結果に基づいてコアを選択する。また、選択部12は、スレッドの割り当て先として当該空きコアを選択する。あるいは、選択部12は、他のコアの実行可能キュー31に孤立したワーカーと同一のスレッドグループのスレッドが存在するコアを選択する。選択部12は、実行可能キュー31と待機キュー32のいずれかにワーカーと同一スレッドグループのスレッドが存在するコアを選択してもよい。また、選択部12は、実行可能キュー31の中に同一のスレッドグループのスレッドが存在するコアを優先的に選択してもよい。選択部12は、他のコアを孤立したワーカーの割当先として選択してもよい。
決定部13は、選択部12が選択したコアにスレッドを割り当てることを決定する。例えば、決定部13は、選択部12が選択したコアの実行可能キュー31にスレッドを割り当てることを決定する。
移送部14は、コアごとにスレッド(ユーザスレッド、ワーカースレッド)をマイグレーションする。例えば、移送部14は、選択部12が選択したコアの実行可能キュー31にワーカーをマイグレーションする。移送部14は、スレッドのスレッドグループごとマイグレーションしてもよい。
計数部15は、スレッドグループにおけるスレッドの数を計数する。例えば、計数部15は、スレッドごとのスレッド管理データ2を参照し、指定されたスレッドグループ識別子22を持つスレッドの数を計数する。なお、計数部15は、確認部11に含まれていてもよい。
設定部16は、同一スレッドグループにおけるスレッド間の優先度を設定する。設定部16は、例えば、ワーカースレッドの優先度を、ワーカースレッドと同一スレッドグループのスレッドの優先度よりも高くなるように設定する。
第1の実施形態に係るスケジューラ1の動作について図面を用いて説明する。スケジューラ1によるワーカーのスケジューリングを詳細に述べる。
まず、スケジューラ1が、スレッドを生成するときのスケジューリングについて説明する。図3は、スレッドを生成する場合のスケジューラ1の動作を示すフローチャートである。確認部11は、各コアの実行可能キュー31に対して、各コアに関連するスレッドのスレッド管理データ2を確認する。この時、確認部11は、各コアに関連付けられたスレッドに対して、実行可能キュー31に孤立したワーカーが存在するかを確認する(ステップS101)。孤立したワーカーとは、各コアの実行可能キュー31のうち、スレッドがワーカーであって、かつ、当該ワーカーと同一のスレッドグループのスレッドが他に存在していないものをいう。
孤立したワーカーが存在する場合(ステップS101のYes)、選択部12は、他のコアの実行可能キュー31に孤立したワーカーと同一のスレッドグループのスレッドが存在するコアを選択する(ステップS102)。移送部14は、孤立したワーカーを、選択したコアの実行可能キュー31にマイグレーションする(ステップS103)。
次に、確認部11は、各コアにおいて、実行可能キュー31が空きのコアが存在するか確認する(ステップS104)。空きのコアは空きコアとも呼ばれる。
空きコアがある場合(ステップS104のYes)、選択部12は、生成するスレッドの割り当て先として当該空きコアを選択する(ステップS105)。決定部13は、ステップS105で選択したコアの実行可能キュー31に生成されたスレッドを割り当てることを決定する(ステップS109)。
一方、空きコアがない場合(ステップS104のNo)、スケジューラ1の確認部11は、生成するスレッドのスレッド管理データ2を参照してワーカーフラグ24を確認する(ステップS106)。
ワーカーフラグ24がTrue(真)の場合、すなわち、生成するスレッドがワーカーである場合、スケジューラ1の設定部16は、スレッドの優先度を高に設定する。優先度は、他のスレッドよりも高くなうように設定される。例えば、設定部16は、ワーカースレッドの優先度を、ワーカースレッドと同一スレッドグループのスレッドの優先度よりも高くなるように設定する。例えば、スレッドの優先度を高くすることでスケジューリングされた直後に動作するように保証することが可能となる。
選択部12は、実行可能キュー31と待機キュー32のいずれかにワーカーと同一スレッドグループのスレッドが存在するコアを選択する(ステップS107)。具体的には、選択部12は、各コアの実行可能キュー31、待機キュー32にあるスレッドのスレッド管理データ2から、ワーカーのスレッドグループ(ユーザプロセスを構成するスレッドの集合)と同一のスレッドグループ識別子22を持つスレッドを1つ選ぶ。選択部12は、選択されたスレッドが割り当てられているコアを選択する。なお、ステップS107において、選択部12は、実行可能キュー31の中に同一のスレッドグループのスレッドが存在するコアを優先的に選択する。決定部13は、ステップS107で選択したコアの実行可能キュー31にスレッドを割り当てることを決定する(ステップS109)。
一方、ワーカーフラグ24がfalse(偽)の場合、選択部12は、通常のスケジューリング機能に基づいて割り当て先のコアを選択する(ステップS108)。最後に、ステップS108のいずれかで選択したコアの実行可能キュー31にスレッドをスケジューリングする(ステップS109)。
なお、スレッド生成時のコア割当のオプションとして、ステップS101、ステップS102、ステップS103、ステップS104、ステップS105の動作を行わないことも考えられる。また、マイグレーションに伴うコストから、マイグレーション回数を減らすべきと判断する場合、スケジューラ1は、ワーカーの生成時はステップS107に従ってスケジューリングする。
次に、スケジューラ1が、あるスレッドを待機状態から実行可能状態へ遷移させる場合の動作について説明する。 図4は、スレッドを待機状態から実行可能状態へ遷移させる場合のスケジューラ1の動作の例を示すフローチャートである。
スケジューラ1の確認部11は、スレッドが割り当てられているコアについて、実行可能キュー31に異なるスレッドグループで孤立したワーカーがあるか確認する(ステップS201)。
孤立したワーカーがない場合(ステップS201のNo)、移送部14は、待機状態から実行可能状態へ遷移するスレッドについて、当該スレッドのスレッド管理データ2を待機キュー32から実行可能キュー31へ移動する(ステップS206)。
孤立したワーカーがある場合(ステップS201のYes)、確認部11は、実行可能キューが空いている他のコアがあるか確認する(ステップS202)。
実行可能キュー31が空いている他のコアがある場合(ステップS202のYes)、選択部12は、孤立したワーカーの割当先として当該他のコアを選択する(ステップS203)。移送部14は、ステップS203で選択した他のコアの実行可能キュー31にワーカーをマイグレーションする(ステップS205)。
一方、実行可能キュー31が空いている他のコアがない場合(ステップS202のNo)、選択部12は、各コアの実行可能キュー31にあるスレッドのスレッド管理データ2に基づき、ワーカーのスレッドグループ識別子22と同じスレッドグループ識別子22を持つスレッドを一つ選ぶ。選択部12は、1つ選んだスレッドが割り当てられているコアを選択する(ステップS204)。移送部14は、ステップS204で選択したコアの実行可能キューにワーカーをマイグレーションする(ステップS205)。
移送部14は、待機状態から実行可能状態へ遷移するスレッドについて、当該スレッドのスレッド管理データ2を待機キュー32から実行可能キュー31へ移動する(ステップS206)。
なお、スケジューラ1の動作のオプションとして、マイグレーション回数を減らすため、図4に示すスケジューラ1の動作のうち、ステップS204のみとしてもよい。この場合、待機状態から実行可能状態へ遷移するスレッドが割り当てられているコアについて、実行可能キュー31に異なるスレッドグループで孤立したワーカーがあり、実行可能キュー31が空いている他のコアがないことが前提となる。
次に、スケジューラ1が、スレッドのマイグレーション、スレッドの終了、もしくは実行可能状態から待機状態の遷移を行い実行可能キューの空きが生じ、リバランスによるプロセスのマイグレーション動作を説明する。図5は、スケジューラ1の動作の他の例を示すフローチャートである。
スケジューラ1がスレッドをマイグレーションする動作について説明する。スケジューラ1の計数部15は、マイグレーションの対象として選ばれたスレッドに対し、実行可能キュー31におけるスレッドグループのスレッドの数を計数する。具体的には、計数部15は、マイグレーション対象であるスレッドのスレッド管理データ2を参照し、指定されたスレッドグループ識別子22を持つスレッドの数を計数する。
確認部11は、計数部15の計数結果を参照し、スレッドグループのスレッド数が2であるか確認する(ステップS301)。スレッドグループのスレッド数が2である場合(ステップS301のYes)、スケジューラ1は、当該スレッドのスレッドグループにワーカーが存在するかを確認する(ステップS302)。ワーカーが存在する場合、スレッドグループごとマイグレーションを行う。スレッド数が2でない場合(ステップS301のNo)、スケジューラ1は、処理を終了する。
次に、スケジューラ1が、スレッドを終了する動作について説明する。まず、スケジューラ1の確認部11は、終了させるスレッドのスレッドグループ識別子22を確認し、スレッドグループのスレッド数が2であるか確認する(ステップS301)。
スレッド数が2である場合(ステップS301のYes)、終了処理中ではない方、すなわち残存するスレッドのワーカーフラグ24を確認する(ステップS302)。残存するスレッドがワーカーの場合(ステップS302のYes)、ワーカーも終了処理を行う(ステップS303)。その後、目的のスレッドを終了させる(ステップS304)。
スレッド数が2でない場合(ステップS301のNo)、目的のスレッドを終了させる。
(変形例)
実装の簡易化のため、実行可能キュー31と待機キュー32の2つのキューの代わりに1つのタスクリストとして管理してもよい。その場合は、タスクリストに登録されているスレッドを、実行可能キュー31につながっているスレッドとみなすと、本実施形態を適用できる。この場合、待機キュー32はないため、図4に示すスレッドを待機状態から実行可能状態へ遷移させる場合のスケジューラ1の動作は無くなる。
また、第1の実施形態において、確認部11、移送部14、計数部15、設定部16の少なくとも1つがないスケジューラ1の構成であってもよい。
以上、第1の実施形態構成について説明したが、本実施形態は上記の例に限られるものではない。
第1の実施形態のスケジューラ1によれば、コンテキストスイッチに関する性能劣化を抑制することができる。その理由は、各コアにスレッドが割り当てられて、空きコアが存在しない状態で、ワーカースレッドが生成されたときのスケジューリングにおいて、選択部12は、各コアのうち、各コアの実行可能キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択する。決定部13は、選択したコアに、生成するワーカースレッドを割り当てることを決定する。
例えば、ワーカーの処理を必要とするユーザスレッドと無関係なスレッド間のコンテキストスイッチが抑制される。
あるいは、ユーザスレッドがコア数以下であり、かつ、ワーカーの数がユーザプロセス数以下であれば、コア上にはあるユーザスレッドとそのシグナルハンドラから起床されるワーカーのみが存在することになる。これにより複数のワーカーが同じコアにスケジューリングされるとワーカー同士でのコンテキストスイッチが抑制される。例えば、コンテキストスイッチのコストが大きいアーキテクチャ上で性能劣化を防ぎつつワーカーが動作可能なスケジューラを提供できる。
(第2の実施形態)
次に、第2の実施形態に係るスケジューラ1について図面を用いて説明する。第2の実施形態のスケジューラ1は、第1の実施形態と同様に複数のコアに対してスレッドをスケジューリングして割り当てる例とする。また、第2の実施形態のスケジューラ1も、第1の実施形態の図1に示すスレッド管理データ2を利用して、スレッドをスケジューリングする。第2の実施形態において、スレッド管理データ2の内容は第1の実施形態と同様である。また、第2の実施形態でも各コアに関連付けられたスレッドのスケジューリングを表現するキューとして、実行可能キュー31、待機キュー32があるとする。スレッドのスレッド管理データ2がコアの実行可能キュー31もしくは待機キュー32のいずれかに存在する場合、スレッドがコアに割り当てられているという事にする。
第2の実施形態のスケジューラ1の構成について説明する。図6は、第2の実施形態に係るスケジューラの構成の例を示すブロック図である。図6に示すスケジューラ1は、選択部12、決定部13を備える。第2の実施形態の説明において、第1の実施形態と実質的に同様の構成部分については同じ符号を付し、詳細な説明を省略する。なお、第2の実施形態のスケジューラ1は、OSが通常有するスケジューラとしての機能を備えているものとする。
以下の第2の実施形態のスケジューラ1の説明は、各コアにスレッドが割り当てられて、空きコアが存在しない状態で、ワーカースレッドを生成するときのスケジューリングの例である。
選択部12は、各コアのうち、各コアの実行可能キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択する。
決定部13は、選択したコアに、生成するワーカースレッドを割り当てることを決定する。
第2の実施形態に係るスケジューラ1の動作について図面を用いて説明する。以下の説明において、スケジューラ1によるワーカーに対するスケジューリングを詳細に述べる。
スケジューラ1が、スレッドを生成するときのスケジューリングを説明する。図7は、スレッド生成時のスケジューリングの動作を示すフローチャートである。
選択部12は、実行可能キュー31にワーカーと同一スレッドグループのスレッドが存在するコアを選択する(ステップS401)。具体的には、選択部12は、各コアの実行可能キュー31にあるスレッドのスレッド管理データ2に基づき、ワーカーのスレッドグループと同じスレッドグループ識別子22を持つスレッドを1つ選ぶ。選択部12は、選択されたスレッドが割り当てられているコアを選択する。選択部12は、実行可能キュー31に同じスレッドグループのスレッドが存在するコアを優先的に選択してもよい。
決定部13は、ステップS401で選択したコアの実行可能キュー31に生成したワーカースレッドをスケジューリングする(ステップS402)。
第2の実施形態のスケジューラ1によれば、コンテキストスイッチに関する性能劣化を抑制することができる。その理由は、各コアにスレッドが割り当てられて、空きコアが存在しない状態で、ワーカースレッドが生成されたときのスケジューリングにおいて、選択部12は、各コアのうち、各コアの実行可能キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択する。決定部13は、選択したコアに、生成するワーカースレッドを割り当てることを決定する。
これにより、ユーザスレッドとそのワーカースレッドを、無関係なスレッド間のコンテキストスイッチを抑制することができる。
例えば、ユーザスレッドがコア数以下であり、かつ、ワーカーの数がユーザスレッドの数以下であれば、コア上にはあるユーザスレッドとそのシグナルハンドラによって起動されるワーカーのみが存在することになる。すなわち、コンテキストスイッチは発生しない。よってコンテキストスイッチのコストが大きいアーキテクチャ上で性能劣化を防ぎつつ、ワーカーを動作できるスケジューリングが可能となる。
第1の実施形態のスケジューラ1によれば、コンテキストスイッチに関する性能劣化を抑制することができる。その理由は、各コアにスレッドが割り当てられて、空きコアが存在しない状態で、ワーカースレッドが生成されたときのスケジューリングにおいて、選択部12は、各コアのうち、各コアの実行可能キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択する。決定部13は、選択したコアに、生成するワーカースレッドを割り当てることを決定する。
例えば、ワーカーの処理を必要とするユーザスレッドと無関係なスレッド間のコンテキストスイッチが抑制される。
あるいは、ユーザスレッドがコア数以下であり、かつ、ワーカーの数がユーザスレッド数以下であれば、コア上にはあるユーザスレッドとそのシグナルハンドラから起床されるワーカーのみが存在することになる。これにより複数のワーカーが同じコアにスケジューリングされるとワーカー同士でのコンテキストスイッチが抑制される。例えば、コンテキストスイッチのコストが大きいアーキテクチャ上で性能劣化を防ぎつつワーカーが動作可能なスケジューラを提供できる。
第1、第2の実施形態のスケジューラ1は、例えば、コンテキストスイッチのコストが大きく、ユーザプログラムの性能劣化を避けるためスレッド数をコア数以下に抑える事が望ましいアーキテクチャに適用できる。例えば、スケジューラ1は、ホストにアクセラレータを搭載したヘテロジニアスな計算機、計算機システム、ヘテロジニアスな計算機に用いるにオペレーティングシステムのスケジューラとして適用可能である。
(ハードウエア構成)
前述したスケジューラ1は、プログラム(ソフトウェアプログラム,コンピュータプログラム)が図8に示すコンピュータ90のCPU91(Central Processing Unit)において実行されることにより実現される。具体的には、第1、2の実施形態に係るスケジューラ1における各構成要素の機能、又は、スケジューラ1の動作としてプログラムを実行することにより実現できる。これらの構成要素、又は、動作は、CPU91がROM(Read Only Memory)93あるいは記憶装置95からプログラム94を読み込み、読み込んだプログラムを、例えば図3から図5、図7に示したフローチャートの手順の如くCPU91、及び、RAM(Random Access Memory)92を用いて実行することにより実現されてもよい。そして、このような場合において、上述した実施形態を例に説明した本開示は、係るコンピュータプログラムを表すコードあるいはそのコンピュータプログラムを表すコードが格納されたコンピュータ読み取り可能な記憶媒体によって構成されると捉えることができる。コンピュータ読み取り可能な記憶媒体は、例えば記憶装置95、不図示の着脱可能な磁気ディスク媒体,光学ディスク媒体やメモリカードなどである。なお、各実施形態の構成要素は、集積回路による専用のハードウエアであってもよい。
本開示は上述した各実施形態に限定されるものではなく、種々の変更が可能であり、異なる実施形態にそれぞれ開示された構成、動作、処理を適宜組み合わせて得られる実施形態についても本開示の技術的範囲に含まれる。
上述した第1、2の実施形態は模範的な例である。本開示は、上述した実施形態には限定されない。即ち、本開示は、本開示のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
1 スケジューラ
2 スレッド管理データ
11 確認部
12 選択部
13 決定部
14 移送部
15 計数部
16 設定部
21 スレッド識別子
22 スレッドグループ識別子
23 優先度
24 ワーカーフラグ
31 実行可能キュー
32 待機キュー

Claims (6)

  1. 各コアにスレッドが割り当てられて、空きコアが存在しない場合、
    前記スレッドがユーザスレッド又はワーカースレッドであるか確認する確認手段と、
    前記各コアのうち、前記各コアの実行可能キュー又は待機キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択する選択手段と、
    選択した前記コアに、前記生成するワーカースレッドを割り当てることを決定する決定手段と、を備え、
    前記確認手段は、前記生成するワーカースレッドと同一のスレッドグループのスレッドが他に存在していない孤立したワーカースレッドが、前記各コアの前記実行可能キューに存在するか確認する、
    コンピュータ
  2. 前記選択手段は、前記各コアのうち、前記実行可能キューに同一のスレッドグループのスレッドが存在するコアを優先して選択する、
    請求項1に記載のコンピュータ
  3. 前記生成するワーカースレッドに対して、同一のスレッドグループにおけるスレッド間の優先の度合を示す優先度を他のスレッドよりも高く設定する設定手段を、更に備える、
    請求項1又は2に記載のコンピュータ
  4. 前記確認手段は、前記各コアにおいて前記実行可能キューが空いているコアが存在するか確認する、
    請求項1乃至3のいずれか1つに記載のコンピュータ
  5. 各コアにスレッドが割り当てられて、空きコアが存在しない場合、
    前記スレッドがユーザスレッド又はワーカースレッドであるか確認し、
    前記各コアのうち、前記各コアの実行可能キュー又は待機キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択し、
    選択した前記コアに、前記生成するワーカースレッドを割り当てることを決定
    前記確認するステップにおいて、前記生成するワーカースレッドと同一のスレッドグループのスレッドが他に存在していない孤立したワーカースレッドが、前記各コアの前記実行可能キューに存在するか確認する、
    スケジューリング方法。
  6. コンピュータに、
    各コアにスレッドが割り当てられて、空きコアが存在しない場合、
    前記スレッドがユーザスレッド又はワーカースレッドであるか確認する処理と
    前記各コアのうち、前記各コアの実行可能キュー又は待機キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択する処理と
    選択した前記コアに、前記生成するワーカースレッドを割り当てることを決定する処理とを実行させ
    前記確認する処理において、前記生成するワーカースレッドと同一のスレッドグループのスレッドが他に存在していない孤立したワーカースレッドが、前記各コアの前記実行可能キューに存在するか確認する、
    プログラム。
JP2021015377A 2021-02-03 2021-02-03 コンピュータ、スケジューリング方法、及び、プログラム Active JP7188472B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021015377A JP7188472B2 (ja) 2021-02-03 2021-02-03 コンピュータ、スケジューリング方法、及び、プログラム
PCT/JP2022/002541 WO2022168661A1 (ja) 2021-02-03 2022-01-25 スケジューラ、スケジューリング方法、及び、コンピュータ読み取り可能な記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021015377A JP7188472B2 (ja) 2021-02-03 2021-02-03 コンピュータ、スケジューリング方法、及び、プログラム

Publications (2)

Publication Number Publication Date
JP2022118736A JP2022118736A (ja) 2022-08-16
JP7188472B2 true JP7188472B2 (ja) 2022-12-13

Family

ID=82741156

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021015377A Active JP7188472B2 (ja) 2021-02-03 2021-02-03 コンピュータ、スケジューリング方法、及び、プログラム

Country Status (2)

Country Link
JP (1) JP7188472B2 (ja)
WO (1) WO2022168661A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003029984A (ja) 2001-07-12 2003-01-31 Nec Corp マルチスレッド実行方法及び並列プロセッサシステム
JP2006024180A (ja) 2004-06-10 2006-01-26 Hitachi Ltd 計算機システム及びその資源割当て方法
JP2007257097A (ja) 2006-03-22 2007-10-04 Nec Corp 仮想計算機システム及びその物理リソース再構成方法並びにプログラム
JP2010287172A (ja) 2009-06-15 2010-12-24 Nec Corp 計算機ノード、計算機システム、プロセス生成方法およびプロセス生成プログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4809157A (en) * 1985-09-30 1989-02-28 International Business Machines Corp. Dynamic assignment of affinity for vector tasks
US5063500A (en) * 1988-09-29 1991-11-05 Ibm Corp. System for executing segments of application program concurrently/serially on different/same virtual machine
JPH02122365A (ja) * 1988-10-31 1990-05-10 Hitachi Ltd プロセッサ割当て方式
JP2769367B2 (ja) * 1989-09-28 1998-06-25 株式会社日立製作所 マルチプロセッサスケジューリング方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003029984A (ja) 2001-07-12 2003-01-31 Nec Corp マルチスレッド実行方法及び並列プロセッサシステム
JP2006024180A (ja) 2004-06-10 2006-01-26 Hitachi Ltd 計算機システム及びその資源割当て方法
JP2007257097A (ja) 2006-03-22 2007-10-04 Nec Corp 仮想計算機システム及びその物理リソース再構成方法並びにプログラム
JP2010287172A (ja) 2009-06-15 2010-12-24 Nec Corp 計算機ノード、計算機システム、プロセス生成方法およびプロセス生成プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
合田 憲人,グリッドコンピューティングを用いた分枝限定法による最適化問題計算,経営の科学 オペレーションズ・リサーチ,社団法人日本オペレーションズ・リサーチ学会,2007年10月01日,第52巻 第10号,第639頁-第644頁,ISSN:0030-3674

Also Published As

Publication number Publication date
JP2022118736A (ja) 2022-08-16
WO2022168661A1 (ja) 2022-08-11

Similar Documents

Publication Publication Date Title
EP3425502B1 (en) Task scheduling method and device
EP2300910B1 (en) Scheduler instances in a process
RU2454704C2 (ru) Способ и система для выполнения программных приложений и машиночитаемый носитель
US8615765B2 (en) Dividing a computer job into micro-jobs
EP2388699A1 (en) Information processing device and information processing method
KR100791296B1 (ko) 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법
WO2023246044A1 (zh) 调度方法及装置、芯片、电子设备及存储介质
CN107203428B (zh) 一种基于Xen的VCPU多核实时调度算法
CN115167996A (zh) 调度方法及装置、芯片、电子设备及存储介质
EP1892625B1 (en) Finer grained operating system scheduling
CN111625339A (zh) 集群资源调度方法、装置、介质和计算设备
CN114461365A (zh) 一种进程调度处理方法、装置、设备和存储介质
CN113254179A (zh) 基于高响应比的作业调度方法、系统、终端、存储介质
JP7188472B2 (ja) コンピュータ、スケジューリング方法、及び、プログラム
KR101271211B1 (ko) 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법
JP5299869B2 (ja) コンピュータマイクロジョブ
JP2000020323A (ja) スケジュ―リング装置及び方法並びに記録媒体
JP2008225641A (ja) コンピュータシステム、割り込み制御方法及びプログラム
CA2316643C (en) Fair assignment of processing resources to queued requests
WO2007049543A1 (ja) 演算装置
JP4872942B2 (ja) ストレージシステム、ストレージ装置、優先度制御装置および優先度制御方法
US8566829B1 (en) Cooperative multi-level scheduler for virtual engines
JP2003186686A (ja) リソース制御装置、方法及び記憶媒体
JP5867215B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
US20230236906A1 (en) Information processing device, information processing method, and program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210203

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20211020

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220331

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220929

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221114

R151 Written notification of patent or utility model registration

Ref document number: 7188472

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151