JP2001084235A - ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体 - Google Patents
ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体Info
- Publication number
- JP2001084235A JP2001084235A JP25676699A JP25676699A JP2001084235A JP 2001084235 A JP2001084235 A JP 2001084235A JP 25676699 A JP25676699 A JP 25676699A JP 25676699 A JP25676699 A JP 25676699A JP 2001084235 A JP2001084235 A JP 2001084235A
- Authority
- JP
- Japan
- Prior art keywords
- lock
- resource
- granularity
- statistical information
- waiting
- 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.)
- Pending
Links
Landscapes
- Multi Processors (AREA)
- Memory System (AREA)
Abstract
(57)【要約】
【課題】 共有メモリ方式の多重プロセッサ計算機シス
テムにおいて、ロック待ち発生時に発生するオーバヘッ
ド時間を低減させることにより、システム性能を向上さ
せる。 【解決手段】 ロック要求されたリソースRをロックで
きない場合、リソースRのロック粒度統計情報(ロック
時間の平均値等を含む)およびロック要求元がリソース
Rを使用しない他に行うべき処理を有しているか否かを
示すフラグ情報を利用してロック待ち方式をスピン方
式,スリープ方式,トライロック方式の何れにするかを
決定する。ロック待ち方式をスピン方式にした場合は、
更に、ロック粒度統計情報に基づいてスピン待ち時間を
決定する。
テムにおいて、ロック待ち発生時に発生するオーバヘッ
ド時間を低減させることにより、システム性能を向上さ
せる。 【解決手段】 ロック要求されたリソースRをロックで
きない場合、リソースRのロック粒度統計情報(ロック
時間の平均値等を含む)およびロック要求元がリソース
Rを使用しない他に行うべき処理を有しているか否かを
示すフラグ情報を利用してロック待ち方式をスピン方
式,スリープ方式,トライロック方式の何れにするかを
決定する。ロック待ち方式をスピン方式にした場合は、
更に、ロック粒度統計情報に基づいてスピン待ち時間を
決定する。
Description
【0001】
【発明の属する技術分野】本発明は、共有メモリ方式の
多重プロセッサ計算機システムにおける排他制御方法に
関し、特に、排他制御のオーバヘッド時間による計算機
システムの性能低下を低減させることができるロック粒
度統計情報を利用した排他制御方法に関する。
多重プロセッサ計算機システムにおける排他制御方法に
関し、特に、排他制御のオーバヘッド時間による計算機
システムの性能低下を低減させることができるロック粒
度統計情報を利用した排他制御方法に関する。
【0002】
【従来の技術】複数のプロセッサがメインメモリを共有
する共有メモリ方式の多重プロセッサ計算機システムに
おいては、一般に、プロセス(手続き)によるリソース
(プロセスが参照や変更などを行う資源や、その資源に
対する一連の処理のかたまり)の逐次的(排他的)な使
用を保証するため、ロックワードが格納されたメモリ上
の領域に対する参照と設定とを1マシンクロックで行う
テストアンドセット命令を利用している。ロックワード
は、一般的にはメインメモリ上に置かれることが多い
が、計算機システムによってはメインメモリではなく特
定(専用)のメモリ上に置かれる場合もある。
する共有メモリ方式の多重プロセッサ計算機システムに
おいては、一般に、プロセス(手続き)によるリソース
(プロセスが参照や変更などを行う資源や、その資源に
対する一連の処理のかたまり)の逐次的(排他的)な使
用を保証するため、ロックワードが格納されたメモリ上
の領域に対する参照と設定とを1マシンクロックで行う
テストアンドセット命令を利用している。ロックワード
は、一般的にはメインメモリ上に置かれることが多い
が、計算機システムによってはメインメモリではなく特
定(専用)のメモリ上に置かれる場合もある。
【0003】テストアンドセット命令を利用した従来の
一般的な排他制御方法は、次のようなものであった。例
えば、或るプロセスPaが或るリソースRaの排他的な
使用を要求すると、オペレーティングシステムがテスト
アンドセット命令により、リソースRaに対応するロッ
クワードを参照してリソースRaがロック状態であるか
否かを調べると共にリソースRaに対応するロックワー
ドをロック状態を示す値に変更する。
一般的な排他制御方法は、次のようなものであった。例
えば、或るプロセスPaが或るリソースRaの排他的な
使用を要求すると、オペレーティングシステムがテスト
アンドセット命令により、リソースRaに対応するロッ
クワードを参照してリソースRaがロック状態であるか
否かを調べると共にリソースRaに対応するロックワー
ドをロック状態を示す値に変更する。
【0004】そして、ロックワードがロック状態でない
ことを示している場合は、プロセスPaにロック成功を
通知し、リソースRaの排他的な使用を許可する。これ
に対して、ロックワードがロック状態であることを示し
ている場合には、オペレーティングシステムは、リソー
スをロックできなかった場合に行う処理(ロック待ち発
生時の処理)を行う。ロック待ち発生時に行う処理の方
式(ロック待ち方式)には、(1)ロックが取得できる
までスピンしながら待ち続けるスピン方式、(2)他に
行うべき処理がないのでプロセスPaをスリープさせ、
他のプロセスのためにプロセッサ(CPU)を開放する
スリープ方式、(3)リソースRaを使用しない他に行
うべき処理があるので、リソースRaに対するロックを
あきらめ、プロセスPaにリソースRaを使用しない他
の処理を行わせるトライロック方式等がある。
ことを示している場合は、プロセスPaにロック成功を
通知し、リソースRaの排他的な使用を許可する。これ
に対して、ロックワードがロック状態であることを示し
ている場合には、オペレーティングシステムは、リソー
スをロックできなかった場合に行う処理(ロック待ち発
生時の処理)を行う。ロック待ち発生時に行う処理の方
式(ロック待ち方式)には、(1)ロックが取得できる
までスピンしながら待ち続けるスピン方式、(2)他に
行うべき処理がないのでプロセスPaをスリープさせ、
他のプロセスのためにプロセッサ(CPU)を開放する
スリープ方式、(3)リソースRaを使用しない他に行
うべき処理があるので、リソースRaに対するロックを
あきらめ、プロセスPaにリソースRaを使用しない他
の処理を行わせるトライロック方式等がある。
【0005】従来の排他制御方法では、ロック待ち方式
は、計算機システム全体あるいはリソース毎に固定的に
定められており、オペレーティングシステムは、固定的
に定められているロック待ち方式の処理を行う。
は、計算機システム全体あるいはリソース毎に固定的に
定められており、オペレーティングシステムは、固定的
に定められているロック待ち方式の処理を行う。
【0006】
【発明が解決しようとする課題】一般的に、共有メモリ
方式の多重プロセッサ計算機システムでは、最も単純な
スピン方式を採用することが多いが、本質的にどの方式
を採用すべきかは、その排他対象となるリソースの性質
に依存している。
方式の多重プロセッサ計算機システムでは、最も単純な
スピン方式を採用することが多いが、本質的にどの方式
を採用すべきかは、その排他対象となるリソースの性質
に依存している。
【0007】ここで、ロック待ちが発生した場合に、計
算機システムの性能を落とさないために留意すべき点
は、ロックワードに対して必要以上に頻繁にアクセスを
行わないようにするということである。すなわち、ロッ
クワードに対して必要以上に頻繁にアクセスを行うと、
メモリバンク競合による性能低下を招いてしまうので、
そのようなことは避けなければならない。従って、ロッ
ク待ちが発生した場合の最も効率的な対処方法は、ロッ
クを取っているプロセスがリソースをアンロックしたタ
イミングで、タイムリにロックを取得できるような待ち
方で一定時間待つ方式である。この待ち時間は、具体的
にはそのリソースに対するアクセスパターン、即ちロッ
クとアンロックとのタイミング、さらに言えばロックさ
れていた時間(ロック粒度)に依存していると考えられ
る。
算機システムの性能を落とさないために留意すべき点
は、ロックワードに対して必要以上に頻繁にアクセスを
行わないようにするということである。すなわち、ロッ
クワードに対して必要以上に頻繁にアクセスを行うと、
メモリバンク競合による性能低下を招いてしまうので、
そのようなことは避けなければならない。従って、ロッ
ク待ちが発生した場合の最も効率的な対処方法は、ロッ
クを取っているプロセスがリソースをアンロックしたタ
イミングで、タイムリにロックを取得できるような待ち
方で一定時間待つ方式である。この待ち時間は、具体的
にはそのリソースに対するアクセスパターン、即ちロッ
クとアンロックとのタイミング、さらに言えばロックさ
れていた時間(ロック粒度)に依存していると考えられ
る。
【0008】ロック粒度が十分に小さい場合は、(1)
のスピン方式が適している。また、ロック粒度がスリー
プ処理に要する時間(即ちスイッチ処理時間)よりも十
分に大きい場合で、なおかつ他に行うべき処理がない場
合は、(2)のスリープ方式が適している。逆に、他に
行うべき処理がある場合は、(3)のトライロック方式
が適しているということになる。つまり、ロック粒度が
十分に小さい場合は、CPU時間は無駄に消費される
が、その時間は極僅かなので、制御が簡単で負荷の少な
い(1)のスピン方式が適している。また、ロック粒度
がスイッチ処理時間よりも十分に大きい場合は、制御は
複雑になるが、CPU時間を有効に使用することができ
るので、(2)のスリープ方式が適している。
のスピン方式が適している。また、ロック粒度がスリー
プ処理に要する時間(即ちスイッチ処理時間)よりも十
分に大きい場合で、なおかつ他に行うべき処理がない場
合は、(2)のスリープ方式が適している。逆に、他に
行うべき処理がある場合は、(3)のトライロック方式
が適しているということになる。つまり、ロック粒度が
十分に小さい場合は、CPU時間は無駄に消費される
が、その時間は極僅かなので、制御が簡単で負荷の少な
い(1)のスピン方式が適している。また、ロック粒度
がスイッチ処理時間よりも十分に大きい場合は、制御は
複雑になるが、CPU時間を有効に使用することができ
るので、(2)のスリープ方式が適している。
【0009】しかしながら、ロック粒度は、ロック毎に
一定の値になるわけではなく、システムの運用状況に応
じて動的に変動する。このため、計算機システム全体あ
るいはリソース毎に固定的にロック待ち方式が定められ
ている従来の排他制御方法では、ロック粒度に応じた最
適なロック待ち方式の処理が行われず、その結果、計算
機システムの性能を低下させてしまう場合があるという
問題がある。例えば、スピン方式による処理が固定的に
割り当てられているリソースのロック粒度が、システム
運用に伴って大きくなった場合には、ロックワードに対
するアクセスが必要以上に頻繁に行われ、メモリバンク
競合による性能低下を招いてしまう。また、例えば、ス
リープ方式による処理が固定的に割り当てられているリ
ソースのロック粒度がシステム運用に伴ってスイッチ処
理時間よりも小さくなった場合には、スピン方式に比較
して制御が複雑になるだけで、CPU時間を有効利用で
きなくなってしまう。
一定の値になるわけではなく、システムの運用状況に応
じて動的に変動する。このため、計算機システム全体あ
るいはリソース毎に固定的にロック待ち方式が定められ
ている従来の排他制御方法では、ロック粒度に応じた最
適なロック待ち方式の処理が行われず、その結果、計算
機システムの性能を低下させてしまう場合があるという
問題がある。例えば、スピン方式による処理が固定的に
割り当てられているリソースのロック粒度が、システム
運用に伴って大きくなった場合には、ロックワードに対
するアクセスが必要以上に頻繁に行われ、メモリバンク
競合による性能低下を招いてしまう。また、例えば、ス
リープ方式による処理が固定的に割り当てられているリ
ソースのロック粒度がシステム運用に伴ってスイッチ処
理時間よりも小さくなった場合には、スピン方式に比較
して制御が複雑になるだけで、CPU時間を有効利用で
きなくなってしまう。
【0010】そこで、本発明の目的は、ロック粒度の統
計情報を利用してロック待ち方式を動的に変更すること
で、メモリバンク競合や、無駄なスイッチ処理等による
オーバヘッド時間を減少させることにより、システム全
体の性能を向上させることにある。
計情報を利用してロック待ち方式を動的に変更すること
で、メモリバンク競合や、無駄なスイッチ処理等による
オーバヘッド時間を減少させることにより、システム全
体の性能を向上させることにある。
【0011】尚、特開平4−297949号公報には、
競合の発生回数等の統計情報に基づいて、排他単位のサ
イズを変更する技術が記載されているが、ロック粒度の
統計情報に基づいてロック待ち方式を動的に変更するも
のではない。
競合の発生回数等の統計情報に基づいて、排他単位のサ
イズを変更する技術が記載されているが、ロック粒度の
統計情報に基づいてロック待ち方式を動的に変更するも
のではない。
【0012】
【課題を解決するための手段】本発明のロック粒度統計
情報を利用した排他制御方法は、上記目的を達成するた
め、複数のプロセッサがメインメモリを共有する共有メ
モリ方式の多重プロセッサ計算機システムにおいて、前
記複数のプロセッサによって共有されるリソースがロッ
クされる毎にロック粒度を算出すると共に、該算出した
ロック粒度に基づいて前記リソースのロック粒度統計情
報を更新し、前記リソースに対するロック待ちが発生し
たとき、前記リソースのロック粒度統計情報に基づいて
ロック待ち方式を決定する。
情報を利用した排他制御方法は、上記目的を達成するた
め、複数のプロセッサがメインメモリを共有する共有メ
モリ方式の多重プロセッサ計算機システムにおいて、前
記複数のプロセッサによって共有されるリソースがロッ
クされる毎にロック粒度を算出すると共に、該算出した
ロック粒度に基づいて前記リソースのロック粒度統計情
報を更新し、前記リソースに対するロック待ちが発生し
たとき、前記リソースのロック粒度統計情報に基づいて
ロック待ち方式を決定する。
【0013】ここで、ロック粒度統計情報には、例え
ば、ロック粒度の平均値が含まれ、また、ロック粒度統
計情報に基づいて決定するロック方式には、例えば、ス
ピン待ち時間経過後に再度リソースに対するロックを試
みるスピン方式或いはロック要求元をスリープさせるス
リープ方式が含まれる。
ば、ロック粒度の平均値が含まれ、また、ロック粒度統
計情報に基づいて決定するロック方式には、例えば、ス
ピン待ち時間経過後に再度リソースに対するロックを試
みるスピン方式或いはロック要求元をスリープさせるス
リープ方式が含まれる。
【0014】また、本発明のロック粒度統計情報を利用
した排他制御方法は、ロック方式としてスピン方式が決
定された場合、スピン待ち時間を最適なものにできるよ
うにするため、ロック待ち方式をスピン方式と決定した
場合は、前記リソースのロック粒度統計情報に基づいて
前記ロック待ち時間を決定する。
した排他制御方法は、ロック方式としてスピン方式が決
定された場合、スピン待ち時間を最適なものにできるよ
うにするため、ロック待ち方式をスピン方式と決定した
場合は、前記リソースのロック粒度統計情報に基づいて
前記ロック待ち時間を決定する。
【0015】
【発明の実施の形態】次に本発明の実施の形態について
図面を参照して詳細に説明する。
図面を参照して詳細に説明する。
【0016】図1は、本発明のロック粒度統計情報を利
用した排他制御方法が適用される共有メモリ方式の多重
プロセッサ計算機システムの構成例を示すブロック図で
あり、複数台のプロセッサ(コンピュータ)1−1〜1
−nと、各プロセッサ1−1〜1−nによって共用され
るメインメモリ2と、複数台の入出力処理装置3−1〜
3−mとから構成される。
用した排他制御方法が適用される共有メモリ方式の多重
プロセッサ計算機システムの構成例を示すブロック図で
あり、複数台のプロセッサ(コンピュータ)1−1〜1
−nと、各プロセッサ1−1〜1−nによって共用され
るメインメモリ2と、複数台の入出力処理装置3−1〜
3−mとから構成される。
【0017】メインメモリ2上には、処理の単位となる
プロセス4−1〜4−iと、オペレーティングシステム
5とが存在する。オペレーティングシステム5は、排他
単位となるリソース(メモリ資源やI/O資源)毎の管
理テーブル6−1〜6−jと、管理テーブル6−1〜6
−jによって管理される各リソース毎のロックワード7
−1〜7−j及び待ち行列8−1〜8−jとを含んでい
る。
プロセス4−1〜4−iと、オペレーティングシステム
5とが存在する。オペレーティングシステム5は、排他
単位となるリソース(メモリ資源やI/O資源)毎の管
理テーブル6−1〜6−jと、管理テーブル6−1〜6
−jによって管理される各リソース毎のロックワード7
−1〜7−j及び待ち行列8−1〜8−jとを含んでい
る。
【0018】図2,図3はオペレーティングシステム5
の処理例を示す流れ図であり、以下各図を参照して本実
施例の動作を説明する。
の処理例を示す流れ図であり、以下各図を参照して本実
施例の動作を説明する。
【0019】今、例えば、プロセッサ1−1上で動作し
ているプロセス4−1において、管理テーブル6−jで
管理されているリソースRj(図示せず)に対する排他
的なアクセスが必要になった場合、プロセス4−1は、
リソースRjのロックを要求するシステムコールを発行
する。尚、このシステムコールには、プロセス4−1に
おいて、リソースRjを使用しない他に行うべき処理が
あるか否かを示すフラグ情報が含まれる。
ているプロセス4−1において、管理テーブル6−jで
管理されているリソースRj(図示せず)に対する排他
的なアクセスが必要になった場合、プロセス4−1は、
リソースRjのロックを要求するシステムコールを発行
する。尚、このシステムコールには、プロセス4−1に
おいて、リソースRjを使用しない他に行うべき処理が
あるか否かを示すフラグ情報が含まれる。
【0020】上記したシステムコールが発行されると、
オペレーティングシステム5は、何れかのプロセッサ
(例えばプロセッサ1−n)上で、図2の流れ図に示す
処理を行う。つまり、オペレーティングシステム5は、
プロセッサ1−nによって読み取られ、プロセッサ1−
nの動作を制御することで、図2の流れ図に示す処理を
行わせる。
オペレーティングシステム5は、何れかのプロセッサ
(例えばプロセッサ1−n)上で、図2の流れ図に示す
処理を行う。つまり、オペレーティングシステム5は、
プロセッサ1−nによって読み取られ、プロセッサ1−
nの動作を制御することで、図2の流れ図に示す処理を
行わせる。
【0021】先ず、ステップS1のロック判定処理にお
いて、オペレーティングシステム5は、テストアンドセ
ット命令を実行し、リソースRjに対するロックワード
7−jを参照すると共にロックワード7−jにロック状
態であることを示す値を書き込む。そして、参照時のロ
ックワード7−jの値がアンロック状態であることを示
している場合、即ちリソースRjがロック可能である場
合は、ステップS2のロック処理を行い、参照時のロッ
クワード7−jの値がロック状態であることを示してい
る場合、即ちリソースRjがロック不可の場合は、ステ
ップS3のロック待ち方式判定処理を行う。
いて、オペレーティングシステム5は、テストアンドセ
ット命令を実行し、リソースRjに対するロックワード
7−jを参照すると共にロックワード7−jにロック状
態であることを示す値を書き込む。そして、参照時のロ
ックワード7−jの値がアンロック状態であることを示
している場合、即ちリソースRjがロック可能である場
合は、ステップS2のロック処理を行い、参照時のロッ
クワード7−jの値がロック状態であることを示してい
る場合、即ちリソースRjがロック不可の場合は、ステ
ップS3のロック待ち方式判定処理を行う。
【0022】今、例えば、ステップS1において、ロッ
ク可能と判定した場合は、オペレーティングシステム5
は、ステップS2のロック処理において、ロック要求元
のプロセス4−1に対してロック成功を通知し、更に現
在時刻を取得しそれをロック開始時刻としてリソースR
j対応の管理テーブル6−jに書き込む。
ク可能と判定した場合は、オペレーティングシステム5
は、ステップS2のロック処理において、ロック要求元
のプロセス4−1に対してロック成功を通知し、更に現
在時刻を取得しそれをロック開始時刻としてリソースR
j対応の管理テーブル6−jに書き込む。
【0023】ロック要求元のプロセス4−1は、ロック
成功が通知されると、リソースRjを独占的に使用した
処理を開始する。
成功が通知されると、リソースRjを独占的に使用した
処理を開始する。
【0024】その後、プロセス4−1が、リソースRj
のアンロックを要求するシステムコールを発行すると、
オペレーティングシステム5は何れかのプロセッサ(例
えばプロセッサ1−n)上で図3の流れ図に示す処理を
行う。つまり、オペレーティングシステム5はプロセッ
サ1−nによって読み取られ、プロセッサ1−nの動作
を制御することで、図3の流れ図に示す処理を行わせ
る。
のアンロックを要求するシステムコールを発行すると、
オペレーティングシステム5は何れかのプロセッサ(例
えばプロセッサ1−n)上で図3の流れ図に示す処理を
行う。つまり、オペレーティングシステム5はプロセッ
サ1−nによって読み取られ、プロセッサ1−nの動作
を制御することで、図3の流れ図に示す処理を行わせ
る。
【0025】先ず、ステップS11のアンロック処理に
おいて、オペレーティングシステム5は、アンロック要
求されたリソースRjに対応するロックワード7−jに
アンロック状態を示す値を書き込む。
おいて、オペレーティングシステム5は、アンロック要
求されたリソースRjに対応するロックワード7−jに
アンロック状態を示す値を書き込む。
【0026】次いで、ステップS12のロック粒度算出
処理において、リソースRj対応の管理テーブル6−j
に格納されているロック開始時刻と現在時刻との差分を
求めることにより、リソースRjがロックされていた時
間(ロック粒度)を算出する。
処理において、リソースRj対応の管理テーブル6−j
に格納されているロック開始時刻と現在時刻との差分を
求めることにより、リソースRjがロックされていた時
間(ロック粒度)を算出する。
【0027】その後、ステップS13のロック粒度統計
情報算出処理において、管理テーブル6−jに格納され
ている、リソースRjについてのロック粒度統計情報を
更新する。ロック粒度統計情報には、ロック回数,ロッ
ク粒度の平均値,分散値,最大値,最小値等が含まれて
おり、ステップ13においては、ロック回数を+1した
り、ステップS12で算出した今回のロック粒度と管理
テーブル6−jに登録されているロック粒度統計情報と
に基づいてロック粒度の平均値,分散値,最大値,最小
値等を更新する。
情報算出処理において、管理テーブル6−jに格納され
ている、リソースRjについてのロック粒度統計情報を
更新する。ロック粒度統計情報には、ロック回数,ロッ
ク粒度の平均値,分散値,最大値,最小値等が含まれて
おり、ステップ13においては、ロック回数を+1した
り、ステップS12で算出した今回のロック粒度と管理
テーブル6−jに登録されているロック粒度統計情報と
に基づいてロック粒度の平均値,分散値,最大値,最小
値等を更新する。
【0028】そして、最後にステップS14のウェイク
アップ処理において、リソースRjのロック待ちをして
いる、スリープしているプロセスの識別子が登録される
待ち行列8−jを参照し、識別子が登録されている場合
は、例えば、先頭に登録されている識別子を取り出し、
その識別子のプロセスを起こす。つまり、プロセスをレ
ディ状態にし、CPU時間の割り当て対象にする。
アップ処理において、リソースRjのロック待ちをして
いる、スリープしているプロセスの識別子が登録される
待ち行列8−jを参照し、識別子が登録されている場合
は、例えば、先頭に登録されている識別子を取り出し、
その識別子のプロセスを起こす。つまり、プロセスをレ
ディ状態にし、CPU時間の割り当て対象にする。
【0029】次に、図2のステップS1において、プロ
セス4−1によってロック要求されたリソースRjをロ
ックできないと判定した場合の動作について説明する。
セス4−1によってロック要求されたリソースRjをロ
ックできないと判定した場合の動作について説明する。
【0030】ステップS1において、リソースRjをロ
ックできないと判定した場合、オペレーティングシステ
ム5は、ステップS3のロック待ち方式判定処理を行
い、ロック待ち方式を決定する。
ックできないと判定した場合、オペレーティングシステ
ム5は、ステップS3のロック待ち方式判定処理を行
い、ロック待ち方式を決定する。
【0031】このステップS3のロック待ち方式判定処
理では、例えば、以下のようにしてロック待ち方式を決
定する。
理では、例えば、以下のようにしてロック待ち方式を決
定する。
【0032】先ず、プロセス4−1が発行したシステム
コールに含まれているフラグ情報を参照し、プロセス4
−1に、リソースRjを使用しない他に行うべき処理が
あるか否かを調べる。そして、他に行うべき処理がある
場合は、ロック待ち方式をトライロック方式とする。こ
れに対して、他に行うべき処理がない場合は、リソース
Rj対応の管理テーブル6−jに格納されているリソー
スRjのロック粒度統計情報に基づいて、ロック待ち方
式をスピン方式にするか、スリープ方式にするかを決定
する。例えば、ロック粒度の平均値がスリープ処理に要
する時間よりも短い場合はスピン方式、長い場合はスリ
ープ方式、等しい場合はスピン方式,スリープ方式の内
の予め定められている一方の方式とする。更に、ロック
待ち方式をスピン方式と決定した場合には、管理テーブ
ル6−jに登録されているリソースRjのロック粒度統
計情報に基づいて、スピン待ち時間を決定する。例え
ば、ロック粒度の平均値或いは最小値をスピン待ち間隔
とする。
コールに含まれているフラグ情報を参照し、プロセス4
−1に、リソースRjを使用しない他に行うべき処理が
あるか否かを調べる。そして、他に行うべき処理がある
場合は、ロック待ち方式をトライロック方式とする。こ
れに対して、他に行うべき処理がない場合は、リソース
Rj対応の管理テーブル6−jに格納されているリソー
スRjのロック粒度統計情報に基づいて、ロック待ち方
式をスピン方式にするか、スリープ方式にするかを決定
する。例えば、ロック粒度の平均値がスリープ処理に要
する時間よりも短い場合はスピン方式、長い場合はスリ
ープ方式、等しい場合はスピン方式,スリープ方式の内
の予め定められている一方の方式とする。更に、ロック
待ち方式をスピン方式と決定した場合には、管理テーブ
ル6−jに登録されているリソースRjのロック粒度統
計情報に基づいて、スピン待ち時間を決定する。例え
ば、ロック粒度の平均値或いは最小値をスピン待ち間隔
とする。
【0033】ステップS3でロック待ち方式をスピン方
式にすることを決定した場合は、オペレーティングシス
テム5は、ステップS4のスピン待ち処理を行う。ステ
ップS4のスピン待ち処理では、ステップS3で決定さ
れたスピン待ち時間が経過するのを待ち、スピン待ち時
間が経過すると再びステップS1のロック判定処理を行
う。
式にすることを決定した場合は、オペレーティングシス
テム5は、ステップS4のスピン待ち処理を行う。ステ
ップS4のスピン待ち処理では、ステップS3で決定さ
れたスピン待ち時間が経過するのを待ち、スピン待ち時
間が経過すると再びステップS1のロック判定処理を行
う。
【0034】また、ステップS3でロック待ち方式をス
リープ方式にすることを決定した場合は、ステップS5
のスリープ待ち処理を行う。このステップS5のスリー
プ待ち処理では、ロック要求元のプロセス4−1をスリ
ープさせ、プロセス4−1が割り当てられていたプロセ
ッサ1−1を開放する。即ち、プロセス4−1をウエイ
ト状態にすることにより、それが割り当てられていたプ
ロセッサ1−1を開放する。更に、ステップS3では、
プロセス4−1の識別子を、プロセス4−1がロック要
求したリソースRjに対応する待ち行列8−jに登録す
る。
リープ方式にすることを決定した場合は、ステップS5
のスリープ待ち処理を行う。このステップS5のスリー
プ待ち処理では、ロック要求元のプロセス4−1をスリ
ープさせ、プロセス4−1が割り当てられていたプロセ
ッサ1−1を開放する。即ち、プロセス4−1をウエイ
ト状態にすることにより、それが割り当てられていたプ
ロセッサ1−1を開放する。更に、ステップS3では、
プロセス4−1の識別子を、プロセス4−1がロック要
求したリソースRjに対応する待ち行列8−jに登録す
る。
【0035】また、ステップS3でロック待ち方式をト
ライロック方式にすることを決定した場合は、ステップ
S6のトライロック処理を行う。このステップS6のト
ライロック処理では、ロック要求元のプロセス4−1に
ロック失敗を通知する。この通知を受けたプロセス4−
1は、リソースRjを使用しない他の処理を実行する。
ライロック方式にすることを決定した場合は、ステップ
S6のトライロック処理を行う。このステップS6のト
ライロック処理では、ロック要求元のプロセス4−1に
ロック失敗を通知する。この通知を受けたプロセス4−
1は、リソースRjを使用しない他の処理を実行する。
【0036】図4は図3のロック粒度統計情報算出処理
(ステップS13)および図2のロック待ち方式判定処
理(ステップS3)の処理を詳細に説明するための図で
ある。
(ステップS13)および図2のロック待ち方式判定処
理(ステップS3)の処理を詳細に説明するための図で
ある。
【0037】プロセスNがリソースR(図示せず)をア
ンロックすると、ステップS12のロック粒度算出処理
において、ロック粒度Tn を算出し、次のS13のロッ
ク粒度統計情報算出処理において、前回までのリソース
Rのロック粒度統計情報Pn-1 と今回新たに算出したロ
ック粒度Tn とから新たなロック粒度統計情報Pn を次
式(1)により算出する。
ンロックすると、ステップS12のロック粒度算出処理
において、ロック粒度Tn を算出し、次のS13のロッ
ク粒度統計情報算出処理において、前回までのリソース
Rのロック粒度統計情報Pn-1 と今回新たに算出したロ
ック粒度Tn とから新たなロック粒度統計情報Pn を次
式(1)により算出する。
【0038】Pn =関数F1(Pn-1,Tn) … (1)
【0039】ここでロック粒度統計情報Pには、tmin=
ロック粒度の最小値,tmax=ロック粒度の最大値,t=
ロック粒度の総和, tc=ロック回数, t2=ロック粒度の
2乗の総和,tav=ロック粒度の平均値,tbu=ロック粒度
の分散値, その他の情報が含まれている。すなわち、P
= (tmin, tmax, t, tc, t2, tav, tbu,その他) であ
る。
ロック粒度の最小値,tmax=ロック粒度の最大値,t=
ロック粒度の総和, tc=ロック回数, t2=ロック粒度の
2乗の総和,tav=ロック粒度の平均値,tbu=ロック粒度
の分散値, その他の情報が含まれている。すなわち、P
= (tmin, tmax, t, tc, t2, tav, tbu,その他) であ
る。
【0040】プロセスNがリソースRをロックしている
ときに、プロセスN+1がリソースRをロックしようと
すると、図2のステップS1のロック判定処理において
ロック不可と判定され、ステップS3のロック待ち方式
判定処理が行われる。このステップS3のロック待ち方
式判定処理では、他に行うべき処理があるかないかを示
すフラグ情報flagとロック粒度統計情報Pn とから次式
(2)に示すようにしてロック待ち方式Mn+1 を決定す
る。
ときに、プロセスN+1がリソースRをロックしようと
すると、図2のステップS1のロック判定処理において
ロック不可と判定され、ステップS3のロック待ち方式
判定処理が行われる。このステップS3のロック待ち方
式判定処理では、他に行うべき処理があるかないかを示
すフラグ情報flagとロック粒度統計情報Pn とから次式
(2)に示すようにしてロック待ち方式Mn+1 を決定す
る。
【0041】Mn+1 =関数F2(Pn, flag) … (2)
【0042】ロック待ち方式をスピン方式と決定した場
合には、ロック粒度統計情報Pn から次式(3)に示す
ようにしてスピン待ち時間Wn+1 を決定する。
合には、ロック粒度統計情報Pn から次式(3)に示す
ようにしてスピン待ち時間Wn+1 を決定する。
【0043】Wn+1 =関数F3(Pn) … (3)
【0044】
【発明の効果】以上説明したように、本発明は、ロック
粒度統計情報を利用してロック待ち方式を動的に変更す
るので、メモリバンク競合や、無駄なスイッチ処理等に
よるオーバヘッド時間を減少させることができる。この
結果、共有メモリ方式の多重プロセッサ計算機システム
の性能を向上させることができる。
粒度統計情報を利用してロック待ち方式を動的に変更す
るので、メモリバンク競合や、無駄なスイッチ処理等に
よるオーバヘッド時間を減少させることができる。この
結果、共有メモリ方式の多重プロセッサ計算機システム
の性能を向上させることができる。
【0045】更に、本発明は、ロック待ち方式をスピン
方式と決定した場合には、ロック粒度統計情報を利用し
てスピン待ち時間を決定するようにしているので、メモ
リバンク競合によるオーバヘッド時間を更に減少させる
ことができる。
方式と決定した場合には、ロック粒度統計情報を利用し
てスピン待ち時間を決定するようにしているので、メモ
リバンク競合によるオーバヘッド時間を更に減少させる
ことができる。
【図1】本発明方法を適用する共有メモリ方式の多重プ
ロセッサ計算機システムの構成例を示すブロック図であ
る。
ロセッサ計算機システムの構成例を示すブロック図であ
る。
【図2】オペレーティングシステム5のロック要求時の
処理例を示す流れ図である。
処理例を示す流れ図である。
【図3】オペレーティングシステム5のアンロック要求
時の処理例を示す流れ図である。
時の処理例を示す流れ図である。
【図4】ロック待ち方式判定処理およびロック粒度統計
情報算出処理を説明するための図である。
情報算出処理を説明するための図である。
1−1〜1−n…プロセッサ 2…メインメモリ 3−1〜3−m…入出力処理装置 4−1〜4−i…プロセス 5…オペレーティングシステム 6−1〜6−j…管理テーブル 7−1〜7−j…ロックワード 8−1〜8−j…待ち行列
Claims (7)
- 【請求項1】 複数のプロセッサがメインメモリを共有
する共有メモリ方式の多重プロセッサ計算機システムに
おいて、 前記複数のプロセッサによって共有されるリソースがロ
ックされる毎にロック粒度を算出すると共に、該算出し
たロック粒度に基づいて前記リソースのロック粒度統計
情報を更新し、 前記リソースに対するロック待ちが発生したとき、前記
リソースのロック粒度統計情報に基づいてロック待ち方
式を決定することを特徴とするロック粒度統計情報を利
用した排他制御方法。 - 【請求項2】 請求項1記載のロック粒度統計情報を利
用した排他制御方法において、 前記ロック粒度統計情報は、ロック粒度の平均値を含む
ことを特徴とするロック粒度統計情報を利用した排他制
御方法。 - 【請求項3】 請求項1記載のロック粒度統計情報を利
用した排他制御方法において、 前記ロック粒度統計情報に基づいて決定するロック待ち
方式は、スピン待ち時間経過後に再度前記リソースに対
するロックを試みるスピン方式或いはロック要求元をス
リープさせるスリープ方式であることを特徴とするロッ
ク粒度統計情報を利用した排他制御方法。 - 【請求項4】 請求項3記載のロック粒度統計情報を利
用した排他制御方法において、 ロック待ち方式をスピン方式と決定した場合は、前記リ
ソースのロック粒度統計情報に基づいて前記スピン待ち
時間を決定することを特徴とするロック粒度統計情報を
利用した排他制御方法。 - 【請求項5】 複数のプロセッサがメインメモリを共有
する共有メモリ方式の多重プロセッサ計算機システムに
おいて、 前記複数のプロセッサによって共有されるリソースがロ
ックされる毎にロック粒度を算出すると共に、該算出し
たロック粒度に基づいて前記リソースのロック粒度統計
情報を更新し、 前記リソースに対するロック待ちが発生したとき、前記
リソースのロック粒度統計情報と、ロック要求元が前記
リソースを使用しない処理を行えるか否かを示す情報と
に基づいてロック待ち方式を決定し、該決定したロック
待ち方式がスピン待ち時間経過後に再度前記リソースに
対するロックを試みるロック待ち方式である場合は前記
リソースのロック粒度統計情報に基づいて前記スピン待
ち時間を決定することを特徴とするロック粒度統計情報
を利用した排他制御方法。 - 【請求項6】 請求項5記載のロック粒度統計情報を利
用した排他制御方法において、 前記ロック粒度統計情報に基づいて決定するロック待ち
方式は、スピン待ち時間経過後に再度前記リソースに対
するロックを試みるスピン方式,ロック要求元をスリー
プさせるスリープ方式或いは要求元に他の処理を行わせ
るトライロック方式であることを特徴とするロック粒度
統計情報を利用した排他制御方法。 - 【請求項7】 コンピュータに、 リソースがロックされる毎にロック粒度を算出すると共
に、該算出したロック粒度に基づいて前記リソースのロ
ック粒度統計情報を更新する処理と、 前記リソースに対するロック待ちが発生したとき、前記
リソースのロック粒度統計情報に基づいてロック待ち方
式を決定する処理とを行わせるためのプログラムを記録
した機械読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25676699A JP2001084235A (ja) | 1999-09-10 | 1999-09-10 | ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25676699A JP2001084235A (ja) | 1999-09-10 | 1999-09-10 | ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2001084235A true JP2001084235A (ja) | 2001-03-30 |
Family
ID=17297158
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP25676699A Pending JP2001084235A (ja) | 1999-09-10 | 1999-09-10 | ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2001084235A (ja) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007517328A (ja) * | 2003-12-31 | 2007-06-28 | インテル・コーポレーション | 動作モデルベースマルチスレッドアーキテクチャ |
CN100407136C (zh) * | 2004-06-30 | 2008-07-30 | 英特尔公司 | 使用睡眠-唤醒机制来执行指令的方法和装置 |
WO2009123343A1 (ja) * | 2008-04-04 | 2009-10-08 | 日本電気株式会社 | 競合分析装置、競合分析方法、及びプログラム |
WO2010052813A1 (ja) * | 2008-11-07 | 2010-05-14 | パナソニック株式会社 | マルチプロセッサにおける資源の排他制御方法、排他制御システムおよびその関連技術 |
WO2010095198A1 (ja) * | 2009-02-17 | 2010-08-26 | パナソニック株式会社 | 資源排他制御方法および資源排他制御装置 |
JP2011065452A (ja) * | 2009-09-17 | 2011-03-31 | Nec Computertechno Ltd | マルチプロセッサ装置、マルチプロセッサ装置における排他制御方法、及びプログラム |
JP2011129024A (ja) * | 2009-12-21 | 2011-06-30 | Renesas Electronics Corp | データ処理システム及びデータ処理方法 |
WO2011096163A1 (ja) * | 2010-02-03 | 2011-08-11 | 日本電気株式会社 | 情報処理システム、排他制御方法および排他制御用プログラム |
WO2011104823A1 (ja) * | 2010-02-23 | 2011-09-01 | 富士通株式会社 | マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム |
JP2011170414A (ja) * | 2010-02-16 | 2011-09-01 | Nec Corp | ロック競合管理装置、ロック競合管理方法およびプログラム |
WO2011148553A1 (ja) * | 2010-05-24 | 2011-12-01 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置および情報処理方法 |
JP2011248468A (ja) * | 2010-05-24 | 2011-12-08 | Sony Computer Entertainment Inc | 情報処理装置および情報処理方法 |
JP2013097544A (ja) * | 2011-10-31 | 2013-05-20 | Nec Computertechno Ltd | マルチプロセッサシステム、及びマルチプロセッサシステムの制御方法 |
US8898127B2 (en) | 2011-12-02 | 2014-11-25 | International Business Machines Corporation | Device and method for acquiring resource lock |
US9632842B2 (en) | 2011-03-31 | 2017-04-25 | Fujitsu Limited | Exclusive access control method prohibiting attempt to access a shared resource based on average number of attempts and predetermined threshold |
JP2017515234A (ja) * | 2014-04-30 | 2017-06-08 | オラクル・インターナショナル・コーポレイション | トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法 |
WO2018042935A1 (ja) * | 2016-08-31 | 2018-03-08 | 日立オートモティブシステムズ株式会社 | 電子制御装置、解析システム |
-
1999
- 1999-09-10 JP JP25676699A patent/JP2001084235A/ja active Pending
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7614054B2 (en) | 2003-12-31 | 2009-11-03 | Intel Corporation | Behavioral model based multi-threaded architecture |
JP2007517328A (ja) * | 2003-12-31 | 2007-06-28 | インテル・コーポレーション | 動作モデルベースマルチスレッドアーキテクチャ |
US8914800B2 (en) | 2003-12-31 | 2014-12-16 | Intel Corporation | Behavioral model based multi-threaded architecture |
CN100407136C (zh) * | 2004-06-30 | 2008-07-30 | 英特尔公司 | 使用睡眠-唤醒机制来执行指令的方法和装置 |
WO2009123343A1 (ja) * | 2008-04-04 | 2009-10-08 | 日本電気株式会社 | 競合分析装置、競合分析方法、及びプログラム |
JP2009251871A (ja) * | 2008-04-04 | 2009-10-29 | Nec Corp | 競合分析装置、競合分析方法、およびプログラム |
CN102209955A (zh) * | 2008-11-07 | 2011-10-05 | 松下电器产业株式会社 | 多处理器下资源的排他控制方法、排他控制系统及其相关技术 |
WO2010052813A1 (ja) * | 2008-11-07 | 2010-05-14 | パナソニック株式会社 | マルチプロセッサにおける資源の排他制御方法、排他制御システムおよびその関連技術 |
US9135085B2 (en) | 2009-02-17 | 2015-09-15 | Socionext Inc. | Exclusive control method of resource and exclusive controller of resource |
US8463911B2 (en) | 2009-02-17 | 2013-06-11 | Panasonic Corporation | Exclusive control method of resource and exclusive controller of resource |
WO2010095198A1 (ja) * | 2009-02-17 | 2010-08-26 | パナソニック株式会社 | 資源排他制御方法および資源排他制御装置 |
JP2010191575A (ja) * | 2009-02-17 | 2010-09-02 | Panasonic Corp | 資源排他制御方法および資源排他制御装置 |
JP2011065452A (ja) * | 2009-09-17 | 2011-03-31 | Nec Computertechno Ltd | マルチプロセッサ装置、マルチプロセッサ装置における排他制御方法、及びプログラム |
JP2011129024A (ja) * | 2009-12-21 | 2011-06-30 | Renesas Electronics Corp | データ処理システム及びデータ処理方法 |
WO2011096163A1 (ja) * | 2010-02-03 | 2011-08-11 | 日本電気株式会社 | 情報処理システム、排他制御方法および排他制御用プログラム |
JP2011170414A (ja) * | 2010-02-16 | 2011-09-01 | Nec Corp | ロック競合管理装置、ロック競合管理方法およびプログラム |
JP5408330B2 (ja) * | 2010-02-23 | 2014-02-05 | 富士通株式会社 | マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム |
US9311142B2 (en) | 2010-02-23 | 2016-04-12 | Fujitsu Limited | Controlling memory access conflict of threads on multi-core processor with set of highest priority processor cores based on a threshold value of issued-instruction efficiency |
WO2011104823A1 (ja) * | 2010-02-23 | 2011-09-01 | 富士通株式会社 | マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム |
US9658905B2 (en) | 2010-05-24 | 2017-05-23 | Sony Corporation | Information processing apparatus and method for carrying out multi-thread processing |
JP2011248468A (ja) * | 2010-05-24 | 2011-12-08 | Sony Computer Entertainment Inc | 情報処理装置および情報処理方法 |
WO2011148553A1 (ja) * | 2010-05-24 | 2011-12-01 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置および情報処理方法 |
US9632842B2 (en) | 2011-03-31 | 2017-04-25 | Fujitsu Limited | Exclusive access control method prohibiting attempt to access a shared resource based on average number of attempts and predetermined threshold |
JP2013097544A (ja) * | 2011-10-31 | 2013-05-20 | Nec Computertechno Ltd | マルチプロセッサシステム、及びマルチプロセッサシステムの制御方法 |
US9189512B2 (en) | 2011-12-02 | 2015-11-17 | International Business Machines Corporation | Device and method for acquiring resource lock |
US8898127B2 (en) | 2011-12-02 | 2014-11-25 | International Business Machines Corporation | Device and method for acquiring resource lock |
JP2017515234A (ja) * | 2014-04-30 | 2017-06-08 | オラクル・インターナショナル・コーポレイション | トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法 |
WO2018042935A1 (ja) * | 2016-08-31 | 2018-03-08 | 日立オートモティブシステムズ株式会社 | 電子制御装置、解析システム |
JP2018036864A (ja) * | 2016-08-31 | 2018-03-08 | 日立オートモティブシステムズ株式会社 | 電子制御装置、解析システム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2001084235A (ja) | ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体 | |
US6718448B1 (en) | Queued locking of a shared resource using multimodal lock types | |
US6691194B1 (en) | Selective association of lock override procedures with queued multimodal lock | |
US6757769B1 (en) | Cooperative lock override procedure | |
CN100418058C (zh) | 管理计算机内的计算机程序的临界区锁的方法 | |
US7152169B2 (en) | Method for providing power management on multi-threaded processor by using SMM mode to place a physical processor into lower power state | |
US9996402B2 (en) | System and method for implementing scalable adaptive reader-writer locks | |
US7577823B2 (en) | Wake-up and sleep conditions of processors in a multi-processor system | |
JP2531881B2 (ja) | 並行制御方法 | |
JP2009093665A (ja) | マルチスレッド・プロセッサ性能を制御する装置及び方法 | |
US20040002974A1 (en) | Thread based lock manager | |
JP5347451B2 (ja) | マルチプロセッサシステム、競合回避プログラム及び競合回避方法 | |
JP2003298599A (ja) | 分散制御方法及び装置 | |
JP2010191575A (ja) | 資源排他制御方法および資源排他制御装置 | |
US6473819B1 (en) | Scalable interruptible queue locks for shared-memory multiprocessor | |
US20090059951A1 (en) | Program control device | |
US6609178B1 (en) | Selective validation for queued multimodal locking services | |
JP3546694B2 (ja) | マルチスレッド計算機システム及びマルチスレッド実行制御方法 | |
JP2011175378A (ja) | マルチプロセッサシステム、及びマルチプロセッサシステムの動作方法 | |
JPH0877025A (ja) | タスクの優先度制御方法、タスクの優先度制御装置 | |
JPH1021098A (ja) | 排他制御装置 | |
KR0146551B1 (ko) | 임계영역을 지원하는 래치 관리방법 | |
JPH05225149A (ja) | ロック方式 | |
JP2580525B2 (ja) | 並列計算機における負荷分散方法 | |
JPS58169659A (ja) | 共用ロツク制御方式 |