JP3839259B2 - Multithread control method, multithread control apparatus, recording medium, and program - Google Patents

Multithread control method, multithread control apparatus, recording medium, and program Download PDF

Info

Publication number
JP3839259B2
JP3839259B2 JP2001014611A JP2001014611A JP3839259B2 JP 3839259 B2 JP3839259 B2 JP 3839259B2 JP 2001014611 A JP2001014611 A JP 2001014611A JP 2001014611 A JP2001014611 A JP 2001014611A JP 3839259 B2 JP3839259 B2 JP 3839259B2
Authority
JP
Japan
Prior art keywords
thread
threads
waiting
predetermined time
running
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2001014611A
Other languages
Japanese (ja)
Other versions
JP2001282553A (en
JP2001282553A5 (en
Inventor
智 坂本
正則 岩崎
晃 坪井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2001014611A priority Critical patent/JP3839259B2/en
Publication of JP2001282553A publication Critical patent/JP2001282553A/en
Publication of JP2001282553A5 publication Critical patent/JP2001282553A5/ja
Application granted granted Critical
Publication of JP3839259B2 publication Critical patent/JP3839259B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、複数のスレッドによって並列処理を行うシステムにおいて、プログラムの実行速度の向上とシステム資源の有効活用を図ることができるマルチスレッド制御方法、その装置、記録媒体、及びプログラムに関するものである。
【0002】
近年、科学技術計算等のプログラムを高速に実行するシステムのオペレーティングシステムプログラムには並列動作機構が備えられているものがある。このようなオペレーティングシステムは、プログラムを所定の処理で分割し、各処理をシステム資源を割り当てたスレッドにて平行実行することで、プログラムの実行速度を高くしている。このようなシステムにおいて、プログラム実行速度の高速化とシステム資源の有効活用が求められている。
【0003】
【従来の技術】
従来、科学技術計算等のプログラムを実行するシステムでは、プログラムの並列実行などによってプログラムの実行速度の高速化を図る等を目的にスレッドが用いられる。システムのオペレーティングシステム(OS)プログラムは、アプリケーションに応じてスレッドを生成する。生成した各スレッドにシステム資源を割り当てることで、各スレッドに対応させたプログラムを並列実行し、プログラムの実行速度を高くしている。
【0004】
しかし、OSプログラムのスレッド生成には時間がかかるため、一度生成したスレッドを削除することなく再利用することで、システムにおける処理の高速化を図ることが行われている。
【0005】
詳述すると、プログラムの実行を終了したスレッドを終了させずに待機スレッドとしてテーブルに登録する。そして、スレッドの生成要求があった場合には、テーブルに登録した待機スレッドを用いてプログラムを実行する。これにより、スレッド生成時間を短縮・削減する。
【0006】
【発明が解決しようとする課題】
従来のマルチスレッド制御方法では、生成されたスレッドの数だけ待機スレッドとして管理されており、実際に動作しているスレッドが少ない状態でも、不要な待機スレッドがシステムに沢山存在している。
【0007】
待機スレッドにもシステム資源が割り当てられている。即ち、待機スレッドは、その待機中でもメモリを使用している。このように、待機スレッドが無駄にメモリ資源を使用している状況に陥ることがある。
【0008】
例えば、ある時刻において200個のスレッドが並列に動作し、その後2個のスレッドしか動作しない場合、198個の待機スレッドがメモリを使用することになる。システム資源の少ないシステムにおいて、このような状況はシステムの運営上好ましくなく、他のプログラムの実行速度にも大きな影響を与える。
【0009】
本発明は上記問題点を解決するためになされたものであって、その目的はプログラム実行速度の高速化とシステム資源の有効活用を図ることのできるマルチスレッド制御方法、その装置、記録媒体、及びプログラムを提供することにある。
【0010】
【課題を解決するための手段】
上記目的を達成するため、本発明は、並列処理を行っている実行中スレッドの数と待機状態にある待機スレッドの数とを所定時間において監視し、該監視された前記実行中スレッドの数に応じて前記待機スレッドの不要数を前記所定時間毎に決定し、該決定された前記不要数の前記待機スレッドを前記所定時間毎に回収する。これにより、無駄にメモリ資源を使用している待機スレッドを終了させ、システム資源の有効活用が図られる。
【0011】
また、所定時間毎に、前記待機スレッドの数と、前記所定時間内の実行中スレッドの数の最大値、平均値、及び実行中スレッドの数に所定の係数を乗じた値のうちの何れか一つからなる必要数とを比較し、前記待機スレッドの数が前記必要数より多い場合に該必要数まで前記待機スレッドを回収する。これにより、稼働状況に応じた必要数にまで待機スレッドの数を低減してシステム資源の有効活用が図られる。
【0012】
【発明の実施の形態】
以下、本発明を具体化した一実施の形態を図1〜図6に従って説明する。
図1は、一実施形態のマルチスレッド制御装置の概略構成図である。
【0013】
マルチスレッド制御装置1は、アプリケーションプログラムを実行するシステム(計算機)に備えられ、オペレーティングシステム(OS)2にスレッド生成を要求し、OS2から受け取ったスレッドを用いてプログラムの並列可能な部分プログラム(例えばDOループやサブルーチン)を並列実行する。
【0014】
マルチスレッド制御装置1は、部分プログラムの終了後、不要となったスレッドを待機スレッドとして登録する。次に、プログラムの実行要求があると、マルチスレッド制御装置1は、待機スレッドの状態を見て、待機スレッドがあればそれを用いて部分プログラムを実行し、待機スレッドが無い場合にはOS2にスレッド生成を要求する。
【0015】
マルチスレッド制御装置1は、プログラム実行中のスレッドの数と待機スレッドの数を監視し、実行中スレッド数に基づいて、必要数以上の待機スレッドを回収する。例えば、マルチスレッド制御装置1は、最大実行中スレッド数と待機スレッド数を用いて、待機スレッドの回収処理を実行する。
【0016】
詳述すると、マルチスレッド制御装置1は、実行中のスレッドの数を所定期間監視し、その期間内の最大値(最大実行中スレッド数)をその時に於ける待機スレッドの必要数とし、それと現在管理している待機スレッドの数とを比較する。そして、マルチスレッド制御装置1は、最大実行中スレッド数よりも待機スレッド数が大きい場合、最大実行中スレッド数まで待機スレッドを回収する。即ち、マルチスレッド制御装置1は、待機スレッド数が最大実行中スレッド数と一致するまで待機スレッドを終了させる。
【0017】
このように、無駄にシステム資源を使用している待機スレッドを回収することで、実行中のスレッドに与える影響を少なくする。
また、最大実行中スレッド数は、実行しているプログラムの状態、即ち、システムの稼働状況に応じて変化する。従って、最大実行中スレッド数まで待機スレッドを回収することで、システムの稼働状況に応じて待機スレッド数を動的に変化させている。
【0018】
更に、所定期間実行中スレッドを監視した最大実行中スレッド数にまで待機スレッドを回収することで、不意なスレッドの増加に対応することができる。即ち、実行中にスレッド数が一時的に低下しても、最大実行中スレッド数だけ待機スレッドを待機させているため、待機スレッドが不足することが無く、プログラムを直ぐに実行することができる。
【0019】
一方、待機スレッド数が実行中スレッド数と等しくなるように待機スレッドを回収する方法では、実行中スレッド数の一時的な低下に対応して待機スレッド数を低減させるため、次にプログラムに応じてスレッドが必要となった場合に待機スレッドが不足してスレッドの生成要求をOS2に行わなければならず、その分実行時間が長くなる(実行開始が遅れる)。
【0020】
次に、マルチスレッド制御装置1の構成を説明する。
マルチスレッド制御装置1は、スレッド管理処理部11、スレッド回収処理部12、スレッド管理テーブル13を含む。
【0021】
スレッド管理処理部11は、スレッド生成をOSに要求する処理、及びスレッドにプログラムの実行を要求する処理を実行する。スレッド回収処理部12は、待機スレッドを監視し、無駄な待機スレッドを回収(スレッド終了)する処理を実行する。スレッド管理テーブル13は、スレッド情報を管理するためのテーブルである。
【0022】
尚、図1には、OS2にて生成されたスレッドとして3つのスレッド14,15,16を示す。これらスレッド14〜16のうち、スレッド14,15はプログラムを実行している実行中スレッドであり、スレッド16はプログラムを終了して待機している待機スレッドとして両処理部11,12の動作及びテーブル13の構成を説明する。
【0023】
先ず、スレッド管理テーブル13の構成を図3,4に従って説明する。
図4は、スレッド管理テーブル13の概略構成図である。
スレッド管理テーブル13は、情報管理テーブル21と複数(図4では、図1のスレッド14〜16に対応して3つ)のスレッド制御表22〜24を含む。情報管理テーブル21は、実行中スレッドキュー21a、待機スレッドキュー21b、待機スレッドカウンタ21c、実行中スレッドカウンタ21d、最大実行中スレッドカウンタ21eのそれぞれのための領域を持つ。
【0024】
実行中スレッドキュー21aは、それにキューイングされた実行中スレッドに対応するスレッド制御表を指すアドレスを記憶する領域を持つスレッド制御表アドレスリストであり、実行中のスレッドの情報を管理する。待機スレッドキュー21bは、それにキューイングされた待機スレッドに対応するスレッド制御表を指すアドレスを記憶する領域を持ち、待機状態のスレッドの情報を管理する。詳述すると、図1においてスレッド14,15が実行中スレッド、スレッド16が待機スレッドである。これに対し、実行中スレッドキュー21aには実行中スレッド14,15に対応するスレッド制御表22,23を指すアドレスが記録され、待機スレッドキュー21bには待機スレッド16に対応するスレッド制御表24を指すアドレスが記録されている。
【0025】
図3は、スレッド制御表24の構成を示す説明図である。尚、他のスレッド制御表22,23の構成はスレッド制御表24のそれと同じであるため、図面及び説明を省略する。
【0026】
スレッド制御表24は、スレッド実行ECB(Event Control Block) 24a、スレッド停止ECB24bのための領域を持つ。スレッド実行ECB24aは図1のスレッド管理処理部11からの実行要求を管理するために設けられ、スレッド停止ECB24bは図1のスレッド回収処理部12からの終了要求を管理するために設けられている。図1の待機スレッド16は、各ECB24a,24bに書き込まれた情報に基づいてプログラムの実行又は停止処理を行う。
【0027】
詳述すると、図1のスレッド管理処理部11は、待機スレッドキュー21bにキューイングされたスレッド制御表24のスレッド実行ECB24aに実行要求に応じた情報を格納する。待機スレッド16は、自己に対応したスレッド制御表24のスレッド実行ECB24aに実行要求に応じた情報が格納されると、それに応答してスレッドに割り当てられたプログラム部分を実行する。
【0028】
図1のスレッド回収処理部12は、待機スレッドキュー21bにキューイングされたスレッド制御表24のスレッド停止ECB24bに停止要求に応じた情報を格納する。待機スレッド16は、スレッド停止ECB24bに停止要求に応じた情報が格納されると、それに応答して終了処理を実行する。これにより、待機スレッド16に割り当てられていたシステム資源が解放される。
【0029】
待機スレッドカウンタ21cには、待機状態のスレッド数が記録され、実行中スレッドカウンタ21dには、実行中のスレッド数が記録され、最大実行中スレッドカウンタ21eには実行中のスレッド数の最大値が記録される。
【0030】
図1の実行中スレッド14,15は、プログラムを終了すると、実行中スレッドカウンタ21dをカウントダウン(−1)し、待機スレッドカウンタ21cをカウントアップ(+1)する。図1の待機スレッド16は、スレッド管理処理部11から実行要求を受け取ると、待機スレッドカウンタ21cをカウントダウンし、実行中スレッドカウンタ21dをカウントアップし、そのカウンタ21dの値が最大実行中スレッドカウンタ21eの値よりも大きい場合、最大実行中スレッドカウンタ21eの値を実行中スレッドカウンタ21dの値に更新する。このように、両カウンタ21c,21dは、待機中のスレッド数と実行中のスレッド数を表す。
【0031】
従って、図1のスレッド管理処理部11は、待機スレッドカウンタ21cに基づいて、スレッド生成要求、スレッドに対する実行要求を行う。詳述すると、スレッド管理処理部11は、並列のプログラムの実行要求を受けると、待機スレッドカウンタ21cが「0」の場合にはOS2にスレッド生成を要求し、生成されたスレッドを実行中スレッドキュー21aにキューイングし、そのスレッドにプログラムの実行を要求する。一方、カウンタ21cが「1」以上の場合、スレッド管理処理部11は、待機スレッドキュー21bにキューイングされた待機スレッド16にプログラムの実行を要求する。
【0032】
また、図1のスレッド回収処理部12は、待機スレッドカウンタ21cと最大実行中スレッドカウンタ21eの値に基づいて、余分なスレッドを回収する。詳述すると、スレッド回収処理部12は、最大実行中スレッドカウンタ21eと待機スレッドカウンタ21cを所定の時間毎にモニタし、それらを比較する。そして、スレッド回収処理部12は、比較結果に基づいて、最大実行中スレッドカウンタ21eの値より待機スレッドカウンタ21cのそれの方が大きい場合に、最大実行中スレッドカウンタ21eの値まで待機スレッドを回収する。即ち、スレッド回収処理部12は、両カウンタ21c,21eの値の差の数のスレッドに対して終了要求を行い、待機スレッドを回収する。
【0033】
次に、スレッド14〜16及びスレッド回収処理部12の動作を図5,図6のフローチャートに従って説明する。
図5は、スレッドが実行する処理を説明する動作フローチャートである。
【0034】
先ず、ステップ31において、スレッドは、実行中スレッドカウンタ21dを+1する。
次に、ステップ32において、スレッドは実行中スレッドカウンタ21dと最大実行中スレッドカウンタ21eの値を比較し、実行中スレッドカウンタ21dの方が最大実行中スレッドカウンタ21eより大きい場合はステップ33へ移る。そのステップ33において、スレッドは最大実行中スレッドカウンタ21eの値を実行中スレッドカウンタ21dのそれに更新する。
【0035】
ステップ34において、スレッドはプログラムを実行する。そのプログラムが終了すると、スレッドはステップ35に移る。
ステップ35において、スレッドは実行中スレッドカウンタ21dを−1する。次に、ステップ36において、スレッドは待機スレッドカウンタ21cを+1する。そして、ステップ37において、スレッドは待機スレッドキュー21bにスレッド制御表をキューイングする。
【0036】
ステップ38において、スレッドはマルチWAIT処理を実行する。この処理において、スレッドは、スレッド実行ECB24aとスレッド停止ECB24bの両方を監視し、何れか一方に情報が書き込まれるまで待つ。そして、スレッドは、スレッド実行ECB24aまたはスレッド停止ECB24bに情報が書き込まれると、ステップ39に移る。
【0037】
ステップ39において、スレッドは、ステップ38において書き込まれた情報が終了要求か否かを判断し、終了要求ではない、即ち実行要求の場合にはステップ40に移る。そのステップ40において、スレッドは、待機スレッドカウンタ21cを−1した後、ステップ31に移る。これにより、スレッドはプログラムを実行するスレッドとして機能し、待機スレッドが再利用されることになる。
【0038】
一方、ステップ39において、入力が終了要求の場合、スレッドはステップ41に移り、そのステップ41において終了処理を実行する。これより、スレッドが終了(消滅)する。
【0039】
図6は、スレッド回収処理部12の動作フローチャートである。
先ず、ステップ51において、スレッド回収処理部12は、所定時間のタイマをかける。この所定時間は、待機スレッドカウンタ21cと最大実行中スレッドカウンタ21eをモニタする間隔であり、このモニタ間隔はシステムに応じて設定した一定値、又は稼働時刻等に対応して変更してもよい。そして、所定時間経過してタイムアップすると、スレッド回収処理部12はステップ52に移る。
【0040】
ステップ52は比較処理(比較手段)であり、スレッド回収処理部12は、待機スレッドカウンタ21cと最大実行中スレッドカウンタ21eとを比較し、待機スレッド数が最大実行中スレッド数より大きくなっていないか確認する。そして、スレッド回収処理部12は、待機スレッド数より最大実行中スレッド数の方が大きい場合にはステップ51に戻り、待機スレッド数の方が最大実行中スレッド数より大きい場合にはステップ53に進む。
【0041】
そのステップ53は回収処理(回収手段)であり、スレッド回収処理部12は、待機スレッドに終了要求を行い(詳しくは待機スレッドに対応するスレッド制御表のスレッドECB24bに終了要求に応じた情報を書き込む)、スレッドを回収する。
【0042】
上記マルチスレッド制御装置1は、計算機上で実行するコンピュータプログラムにより実現することもできる。
即ち、図2に示すように、マルチスレッドにてプログラムを並列実行する計算機60は、処理装置61、入出力装置62、主記憶装置63、補助記憶装置64などから構成され、コンピュータプログラムを実行するものである。コンピュータプログラムは、フロッピーディスクやCD−ROM等の可搬型記録媒体65やネットワーク接続された他の計算機の主記憶装置や補助記憶装置等に格納されて提供される。
【0043】
提供されたコンピュータプログラムは、可搬型媒体65から一旦補助記憶装置64にコピーまたはインストール後に主記憶装置63にロードされ、または可搬型媒体65から直接計算機60の主記憶装置63にロードされ実行する。尚、主記憶装置63には、図1のスレッド管理テーブル13が作成され、それによりスレッド情報が管理される。
【0044】
また、コンピュータプログラムがネットワーク接続された他の装置に格納されて提供された場合も、他の装置からネットワークを経由して受信後に補助記憶装置64にコピーまたはインストール後に主記憶装置63にロードされ、または直接主記憶装置63にロードされ実行するものである。
【0045】
尚、図2は、コンピュータプログラムを実行する計算機を機能的に示したものであり、各装置61〜64が複数設けられた計算機を用いる、又は複数の計算機が疎又は密結合された計算機システムを用いても良い。
【0046】
以上記述したように、本実施の形態によれば、以下の効果を奏する。
(1)マルチスレッド制御装置1のスレッド回収処理部12は、実行中のスレッドの数を所定期間監視し、その期間内の最大値(最大実行中スレッド数)と待機スレッド数とを比較する。そして、スレッド回収処理部12は、最大実行中スレッド数よりも待機スレッド数が大きい場合、最大実行中スレッド数まで待機スレッドを回収するようにした。その結果、無駄にシステム資源を使用している待機スレッドを回収し、実行中のスレッドに与える影響を少なくすることができる。
【0047】
(2)スレッド回収処理部12は、最大実行中スレッドカウンタ21eの値、即ち所定期間に於ける実行中スレッド数の最大値まで待機スレッドを回収する。この最大実行中スレッド数は、実行しているプログラムの状態、即ち、システムの稼働状況に応じて変化する。その結果、最大実行中スレッド数まで待機スレッドを回収することで、システムの稼働状況に応じた数の待機スレッドを待機させることができる。
【0048】
尚、前記実施形態は、以下の態様に変更してもよい。
○上記実施形態では、所定時間毎に待機スレッドカウンタ21cと最大実行中スレッドカウンタ21eを比較した結果に基づいて待機スレッドを終了させるようにしたが、待機スレッドカウンタ21cの値をその時における待機スレッドの必要数とし、それと実行中スレッドカウンタ21dを比較した結果に基づいて待機スレッドを回収するようにしても良い。また、必要数として所定期間に於ける実行中スレッド数の平均値を求め、その平均スレッド数と待機スレッド数とを比較し、その比較結果に基づいて平均値又は現在実行中のスレッド数まで待機スレッドを回収するようにしてもよい。また、実行中スレッド数にシステムの状況に応じた値又は一定値の係数を演算した数を必要数とし、それまで待機スレッドを回収するようにしてもよい。
【0049】
○上記実施形態では、最大実行中スレッドカウンタ21eの更新を各スレッド14〜16が行うようにしたが、その更新処理をスレッド管理処理部11又はスレッド回収処理部12が行うようにしてもよい。
【0050】
【発明の効果】
以上詳述したように、本発明によれば、実行中のスレッドの数と待機状態にあるスレッドの数に基づいて不要な数の待機スレッドを回収するようにした。これにより、待機スレッドにてプログラム実行速度の高速化を図り、無駄にメモリ資源を使用している待機スレッドを終了させ、システム資源の有効活用を図ることができる。
【0051】
また、所定時間毎に、必要数まで前記待機スレッドを回収するようにしたため、稼働状況に応じた必要数にまで待機スレッドの数を低減してシステム資源の有効活用を図ることができる。
【図面の簡単な説明】
【図1】 一実施形態のマルチスレッド制御装置の概略構成図である。
【図2】 システムのハードウェア構成を示す概略図である。
【図3】 スレッド制御表の説明図である。
【図4】 スレッド管理テーブルの説明図である。
【図5】 スレッドの処理を示すフローチャートである。
【図6】 スレッド回収処理部の処理を示すフローチャートである。
【符号の説明】
11 スレッド管理処理部
12 スレッド回収処理部
13 スレッド情報管理部としてのスレッド管理テーブル
14〜16 スレッド
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a multi-thread control method, an apparatus, a recording medium, and a program that can improve the execution speed of a program and effectively use system resources in a system that performs parallel processing using a plurality of threads.
[0002]
In recent years, some operating system programs for systems that execute programs such as scientific and technological calculations at high speed have a parallel operation mechanism. Such an operating system increases the program execution speed by dividing the program into predetermined processes and executing the processes in parallel in threads assigned system resources. In such a system, it is required to increase the program execution speed and effectively use system resources.
[0003]
[Prior art]
2. Description of the Related Art Conventionally, in a system that executes a program such as scientific and technical calculation, threads are used for the purpose of increasing the execution speed of a program by executing the program in parallel. The system operating system (OS) program generates threads according to the application. By assigning system resources to each generated thread, the program corresponding to each thread is executed in parallel, and the execution speed of the program is increased.
[0004]
However, since it takes time to generate OS program threads, it is possible to increase the processing speed in the system by reusing the generated threads without deleting them.
[0005]
More specifically, the thread that has finished executing the program is registered in the table as a waiting thread without being terminated. If there is a thread generation request, the program is executed using the standby thread registered in the table. This shortens / reduces the thread generation time.
[0006]
[Problems to be solved by the invention]
In the conventional multi-thread control method, the number of generated threads is managed as standby threads, and there are many unnecessary standby threads in the system even when the number of actually operating threads is small.
[0007]
System resources are also allocated to the waiting thread. That is, the waiting thread uses the memory even during the waiting. As described above, the standby thread may use the memory resource unnecessarily.
[0008]
For example, if 200 threads operate in parallel at a certain time and then only two threads operate thereafter, 198 waiting threads will use memory. In a system with a small amount of system resources, such a situation is not preferable for system operation and greatly affects the execution speed of other programs.
[0009]
The present invention has been made to solve the above-mentioned problems, and its object is to provide a multi-thread control method capable of increasing the program execution speed and effectively utilizing system resources, an apparatus therefor, a recording medium, and To provide a program.
[0010]
[Means for Solving the Problems]
In order to achieve the above object, the present invention monitors the number of running threads performing parallel processing and the number of waiting threads in a waiting state at a predetermined time, and determines the number of the running threads monitored. Accordingly, an unnecessary number of waiting threads is determined every predetermined time, and the determined unnecessary number of waiting threads are collected every predetermined time . As a result, a standby thread that uses memory resources in vain is terminated, and system resources are effectively used.
[0011]
Further, at any given time, any one of the number of waiting threads, the maximum value and the average value of the number of executing threads within the predetermined time, and a value obtained by multiplying the number of executing threads by a predetermined coefficient The number of waiting threads is compared with the necessary number, and when the number of waiting threads is larger than the necessary number, the waiting threads are collected up to the necessary number. As a result, the number of waiting threads is reduced to the required number according to the operating status, and the system resources can be effectively used.
[0012]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, an embodiment embodying the present invention will be described with reference to FIGS.
FIG. 1 is a schematic configuration diagram of a multi-thread control device according to an embodiment.
[0013]
The multi-thread control device 1 is provided in a system (computer) that executes an application program, requests an operating system (OS) 2 to generate a thread, and uses a thread received from the OS 2 to execute a parallel program of the partial program (for example, (DO loop and subroutine) are executed in parallel.
[0014]
The multi-thread control device 1 registers the unnecessary thread as a waiting thread after the partial program ends. Next, when there is a program execution request, the multi-thread control device 1 looks at the state of the standby thread, and if there is a standby thread, executes the partial program, and if there is no standby thread, Request thread creation.
[0015]
The multi-thread control device 1 monitors the number of threads that are executing a program and the number of waiting threads, and collects a required number or more of waiting threads based on the number of executing threads. For example, the multi-thread control device 1 executes a waiting thread collection process using the maximum number of threads being executed and the number of waiting threads.
[0016]
More specifically, the multi-thread control device 1 monitors the number of executing threads for a predetermined period, sets the maximum value (maximum number of executing threads) within that period as the necessary number of waiting threads at that time, Compare the number of waiting threads managed. When the number of waiting threads is larger than the maximum number of executing threads, the multi-thread control device 1 collects waiting threads up to the maximum number of executing threads. That is, the multi-thread control device 1 ends the waiting thread until the number of waiting threads matches the maximum number of executing threads.
[0017]
In this way, collecting standby threads that use system resources in vain reduces the effect on the executing thread.
Further, the maximum number of threads being executed changes according to the state of the program being executed, that is, the operating status of the system. Therefore, by collecting the waiting threads up to the maximum number of executing threads, the number of waiting threads is dynamically changed according to the operating status of the system.
[0018]
Furthermore, by collecting the waiting threads up to the maximum number of executing threads that are monitoring the executing threads for a predetermined period, it is possible to cope with an unexpected increase in threads. That is, even if the number of threads temporarily decreases during execution, the waiting threads are kept waiting for the maximum number of executing threads, so that the program can be executed immediately without running out of waiting threads.
[0019]
On the other hand, in the method of collecting waiting threads so that the number of waiting threads becomes equal to the number of running threads, the number of waiting threads is reduced in response to a temporary decrease in the number of running threads. When a thread is required, the waiting thread is insufficient and a thread generation request must be made to the OS 2, and the execution time is increased correspondingly (the start of execution is delayed).
[0020]
Next, the configuration of the multithread control apparatus 1 will be described.
The multi-thread control device 1 includes a thread management processing unit 11, a thread collection processing unit 12, and a thread management table 13.
[0021]
The thread management processing unit 11 executes processing for requesting the OS to generate a thread and processing for requesting the thread to execute a program. The thread collection processing unit 12 monitors a waiting thread and executes a process of collecting a useless waiting thread (thread termination). The thread management table 13 is a table for managing thread information.
[0022]
FIG. 1 shows three threads 14, 15, and 16 as threads generated by the OS 2. Among these threads 14 to 16, the threads 14 and 15 are executing threads that are executing programs, and the thread 16 is an operation and table of both processing units 11 and 12 as waiting threads that end the program and are waiting. The configuration of 13 will be described.
[0023]
First, the configuration of the thread management table 13 will be described with reference to FIGS.
FIG. 4 is a schematic configuration diagram of the thread management table 13.
The thread management table 13 includes an information management table 21 and a plurality of thread control tables 22 to 24 (three in FIG. 4 corresponding to the threads 14 to 16 in FIG. 1). The information management table 21 has areas for the executing thread queue 21a, the waiting thread queue 21b, the waiting thread counter 21c, the executing thread counter 21d, and the maximum executing thread counter 21e.
[0024]
The executing thread queue 21a is a thread control table address list having an area for storing an address indicating a thread control table corresponding to the executing thread queued to the executing thread queue 21a, and manages information on executing threads. The waiting thread queue 21b has an area for storing an address indicating a thread control table corresponding to the waiting thread queued in the waiting thread queue 21b, and manages information on waiting threads. Specifically, in FIG. 1, threads 14 and 15 are executing threads, and thread 16 is a waiting thread. On the other hand, addresses indicating the thread control tables 22 and 23 corresponding to the executing threads 14 and 15 are recorded in the executing thread queue 21a, and a thread control table 24 corresponding to the waiting thread 16 is stored in the waiting thread queue 21b. The address to point is recorded.
[0025]
FIG. 3 is an explanatory diagram showing the configuration of the thread control table 24. The configuration of the other thread control tables 22 and 23 is the same as that of the thread control table 24, and thus the drawings and description are omitted.
[0026]
The thread control table 24 has areas for thread execution ECB (Event Control Block) 24a and thread stop ECB 24b. The thread execution ECB 24a is provided for managing an execution request from the thread management processing unit 11 in FIG. 1, and the thread stop ECB 24b is provided for managing an end request from the thread collection processing unit 12 in FIG. The standby thread 16 in FIG. 1 performs program execution or stop processing based on information written in the ECBs 24a and 24b.
[0027]
More specifically, the thread management processing unit 11 in FIG. 1 stores information corresponding to the execution request in the thread execution ECB 24a of the thread control table 24 queued in the waiting thread queue 21b. When the information corresponding to the execution request is stored in the thread execution ECB 24a of the thread control table 24 corresponding to itself, the waiting thread 16 executes the program portion assigned to the thread in response thereto.
[0028]
1 stores information corresponding to the stop request in the thread stop ECB 24b of the thread control table 24 queued in the standby thread queue 21b. When information corresponding to the stop request is stored in the thread stop ECB 24b, the waiting thread 16 executes a termination process in response thereto. As a result, the system resources allocated to the waiting thread 16 are released.
[0029]
The waiting thread counter 21c records the number of waiting threads, the executing thread counter 21d records the number of executing threads, and the maximum executing thread counter 21e stores the maximum number of executing threads. To be recorded.
[0030]
When the running threads 14 and 15 in FIG. 1 terminate the program, the running thread counter 21d counts down (−1), and the waiting thread counter 21c counts up (+1). When receiving the execution request from the thread management processing unit 11, the waiting thread 16 in FIG. 1 counts down the waiting thread counter 21c, counts up the executing thread counter 21d, and the value of the counter 21d is the maximum executing thread counter 21e. If the value is larger than the value of, the value of the maximum executing thread counter 21e is updated to the value of the executing thread counter 21d. Thus, both counters 21c and 21d represent the number of waiting threads and the number of executing threads.
[0031]
Accordingly, the thread management processing unit 11 in FIG. 1 makes a thread generation request and an execution request for the thread based on the standby thread counter 21c. More specifically, when the thread management processing unit 11 receives an execution request for a parallel program, if the standby thread counter 21c is “0”, the thread management processing unit 11 requests the OS 2 to generate a thread, and executes the generated thread in the executing thread queue. Queue to 21a and request the thread to execute the program. On the other hand, when the counter 21c is “1” or more, the thread management processing unit 11 requests the standby thread 16 queued in the standby thread queue 21b to execute the program.
[0032]
Further, the thread collection processing unit 12 in FIG. 1 collects excess threads based on the values of the waiting thread counter 21c and the maximum executing thread counter 21e. More specifically, the thread collection processing unit 12 monitors the maximum executing thread counter 21e and the waiting thread counter 21c at predetermined intervals and compares them. Based on the comparison result, the thread collection processing unit 12 collects the waiting thread up to the value of the maximum executing thread counter 21e when the value of the waiting thread counter 21c is larger than the value of the maximum executing thread counter 21e. To do. That is, the thread collection processing unit 12 makes an end request to the number of threads corresponding to the difference between the values of the counters 21c and 21e, and collects the waiting thread.
[0033]
Next, the operations of the threads 14 to 16 and the thread collection processing unit 12 will be described with reference to the flowcharts of FIGS.
FIG. 5 is an operation flowchart illustrating processing executed by a thread.
[0034]
First, in step 31, the thread increments the running thread counter 21d by one.
Next, in step 32, the thread compares the values of the executing thread counter 21d and the maximum executing thread counter 21e. If the executing thread counter 21d is larger than the maximum executing thread counter 21e, the process proceeds to step 33. In step 33, the thread updates the value of the maximum executing thread counter 21e to that of the executing thread counter 21d.
[0035]
In step 34, the thread executes the program. When the program ends, the thread moves to step 35.
In step 35, the thread decrements the executing thread counter 21d by -1. Next, in step 36, the thread increments the waiting thread counter 21c by one. In step 37, the thread queues the thread control table in the waiting thread queue 21b.
[0036]
In step 38, the thread performs multi-WAIT processing. In this process, the thread monitors both the thread execution ECB 24a and the thread stop ECB 24b, and waits until information is written to one of them. Then, when information is written in the thread execution ECB 24a or the thread stop ECB 24b, the thread proceeds to Step 39.
[0037]
In step 39, the thread determines whether or not the information written in step 38 is an end request, and if it is not an end request, that is, if it is an execution request, the process proceeds to step 40. In step 40, the thread decrements the waiting thread counter 21c by -1, and then proceeds to step 31. As a result, the thread functions as a thread for executing the program, and the standby thread is reused.
[0038]
On the other hand, if the input is a termination request in step 39, the thread moves to step 41, where the termination process is executed. As a result, the thread ends (disappears).
[0039]
FIG. 6 is an operation flowchart of the thread collection processing unit 12.
First, in step 51, the thread collection processing unit 12 sets a timer for a predetermined time. This predetermined time is an interval for monitoring the waiting thread counter 21c and the maximum executing thread counter 21e, and this monitoring interval may be changed according to a fixed value set according to the system, an operation time, or the like. When the predetermined time elapses and the time is up, the thread collection processing unit 12 proceeds to step 52.
[0040]
Step 52 is a comparison process (comparison means). The thread collection processing unit 12 compares the waiting thread counter 21c with the maximum executing thread counter 21e, and whether the number of waiting threads is greater than the maximum executing thread number. Check. The thread collection processing unit 12 returns to step 51 when the maximum number of executing threads is greater than the number of waiting threads, and proceeds to step 53 when the number of waiting threads is greater than the maximum number of executing threads. .
[0041]
The step 53 is collection processing (collection means), and the thread collection processing unit 12 makes an end request to the waiting thread (specifically, writes information corresponding to the end request in the thread ECB 24b of the thread control table corresponding to the waiting thread). ) Collect the thread.
[0042]
The multi-thread control device 1 can also be realized by a computer program executed on a computer.
That is, as shown in FIG. 2, a computer 60 that executes a program in parallel by multi-threads includes a processing device 61, an input / output device 62, a main storage device 63, an auxiliary storage device 64, and the like, and executes a computer program. Is. The computer program is stored and provided in a portable recording medium 65 such as a floppy disk or CD-ROM, or in a main storage device or an auxiliary storage device of another computer connected to the network.
[0043]
The provided computer program is temporarily copied or installed from the portable medium 65 to the auxiliary storage device 64 and then loaded to the main storage device 63, or directly loaded from the portable medium 65 to the main storage device 63 of the computer 60 and executed. In the main storage device 63, the thread management table 13 shown in FIG. 1 is created, and thread information is managed thereby.
[0044]
Also, when the computer program is stored and provided in another device connected to the network, it is copied to the auxiliary storage device 64 after being received from another device via the network or loaded into the main storage device 63 after installation, Alternatively, it is loaded directly into the main storage device 63 and executed.
[0045]
FIG. 2 functionally shows a computer that executes a computer program. A computer system in which a plurality of devices 61 to 64 are used or a plurality of computers are loosely or tightly coupled is shown. It may be used.
[0046]
As described above, according to the present embodiment, the following effects can be obtained.
(1) The thread collection processing unit 12 of the multi-thread control device 1 monitors the number of executing threads for a predetermined period, and compares the maximum value (maximum number of executing threads) within that period with the number of waiting threads. When the number of waiting threads is larger than the maximum number of executing threads, the thread collection processing unit 12 collects waiting threads up to the maximum number of executing threads. As a result, it is possible to collect standby threads that use system resources in vain and reduce the effect on the running threads.
[0047]
(2) The thread collection processing unit 12 collects the waiting threads up to the value of the maximum running thread counter 21e, that is, the maximum number of running threads in a predetermined period. The maximum number of threads being executed varies depending on the state of the program being executed, that is, the operating status of the system. As a result, by collecting the waiting threads up to the maximum number of executing threads, the number of waiting threads corresponding to the operating status of the system can be waited.
[0048]
In addition, you may change the said embodiment into the following aspects.
In the above embodiment, the waiting thread is terminated based on the result of comparing the waiting thread counter 21c and the maximum executing thread counter 21e every predetermined time, but the value of the waiting thread counter 21c is set to the value of the waiting thread at that time. The number of waiting threads may be collected based on the result of comparing the number of threads with the necessary thread counter 21d. In addition, the average value of the number of executing threads in a predetermined period is obtained as the required number, the average number of threads is compared with the number of waiting threads, and the average value or the number of currently executing threads is waited based on the comparison result. The thread may be collected. Alternatively, the number of threads being executed may be a necessary number obtained by calculating a value corresponding to the system status or a constant coefficient, and the waiting threads may be collected until then.
[0049]
In the above embodiment, each of the threads 14 to 16 updates the maximum execution thread counter 21e. However, the thread management processing unit 11 or the thread collection processing unit 12 may perform the update process.
[0050]
【The invention's effect】
As described above in detail, according to the present invention, an unnecessary number of waiting threads are collected based on the number of running threads and the number of threads in a waiting state. As a result, it is possible to increase the program execution speed in the standby thread, to end the standby thread that uses the memory resource in vain, and to effectively use the system resources.
[0051]
In addition, since the waiting threads are collected up to the required number every predetermined time, the number of waiting threads can be reduced to the required number according to the operating status, and the system resources can be effectively used.
[Brief description of the drawings]
FIG. 1 is a schematic configuration diagram of a multi-thread control device according to an embodiment;
FIG. 2 is a schematic diagram showing a hardware configuration of the system.
FIG. 3 is an explanatory diagram of a thread control table.
FIG. 4 is an explanatory diagram of a thread management table.
FIG. 5 is a flowchart showing thread processing;
FIG. 6 is a flowchart showing processing of a thread collection processing unit.
[Explanation of symbols]
DESCRIPTION OF SYMBOLS 11 Thread management processing part 12 Thread collection | recovery processing part 13 Thread management table 14-16 thread as a thread information management part

Claims (5)

複数のスレッドによって並列処理を行うマルチスレッド制御方法において、
並列処理を行っている実行中スレッドの数と待機状態にある待機スレッドの数とを所定時間において監視し、該監視された前記実行中スレッドの数に応じて、前記所定時間内の前記実行中スレッドの数の最大値、平均値、及び前記実行中スレッドの数に所定の係数を乗じた値のうちの何れか一つからなる待機スレッドの必要数を前記所定時間毎に決定し、該決定された前記必要数と前記待機スレッドの数とを前記所定時間毎に比較し、前記待機スレッドの数が前記必要数より多い場合に該必要数まで前記待機スレッドを回収する
ことを特徴とするマルチスレッド制御方法。
In a multi-thread control method for performing parallel processing by a plurality of threads,
And the number of waiting threads in number and standby state of the running thread that performs parallel processing monitor at a predetermined time, in accordance with the number of the running thread, which is the monitoring, the running within the predetermined time period Determining a required number of waiting threads, each of which is one of a maximum value and an average value of the number of threads , and a value obtained by multiplying the number of executing threads by a predetermined coefficient, for each predetermined time; compared been the required number and the number of the waiting threads for each of the predetermined time, the number of the waiting threads and recovering the waiting threads until the required number if greater than the required number Multi-thread control method.
複数のスレッドによって並列処理を行うマルチスレッド制御装置において、
前記複数のスレッドのスレッド情報が記憶されるスレッド情報管理部と、
前記スレッド情報管理部に記憶された待機状態にあるスレッドの数に基づいてスレッドの生成要求、及び前記待機状態にあるスレッドに対して処理の実行要求を行うスレッド実行処理部と、
前記スレッド情報管理部に記録された並列処理を行っている実行中スレッドの数と前記待機状態にある待機スレッドの数とを所定時間において監視し、該監視された前記実行中スレッドの数に応じて前記待機スレッドの不要数を前記所定時間毎に決定し、該決定された前記不要数の前記待機スレッドを前記所定時間毎に回収するスレッド回収処理部と
を備えたことを特徴とするスレッド制御装置。
In a multi-thread control device that performs parallel processing by a plurality of threads,
A thread information management unit for storing thread information of the plurality of threads;
A thread generation request based on the number of threads in a standby state stored in the thread information management unit, and a thread execution processing unit that performs a process execution request for the thread in the standby state;
And the number of waiting threads in number and the standby state of the thread information management running is being performed the recorded parallel processing unit thread monitors at predetermined time, depending on the number of the running thread, which is the monitoring an unnecessary number of the standby thread to determine for each said predetermined time Te, the thread control, characterized in that the waiting thread the unnecessary number of the determined and a thread recovery unit for recovering every predetermined time apparatus.
前記スレッド回収処理部は、
所定時間毎に、前記待機スレッドの数と、前記所定時間内の前記実行中スレッドの数の最大値、平均値、及び前記実行中スレッドの数に所定の係数を乗じた値のうちの何れか一つからなる必要数とを比較する手段と、
前記待機スレッドの数が前記必要数より多い場合に該必要数まで前記待機スレッドを回収する手段と
を備えたことを特徴とする請求項2記載のスレッド制御装置。
The thread collection processing unit
At predetermined time intervals, wherein the number of waiting threads, the number of the maximum value of the running thread within the predetermined time, the average value, and one of the values obtained by multiplying a predetermined coefficient to the number of the running thread A means of comparing the required number of ones;
3. The thread control device according to claim 2, further comprising means for collecting the waiting threads up to the required number when the number of waiting threads is larger than the required number.
複数のスレッドによって並列処理を行うマルチスレッド制御プログラムが記録されたコンピュータ読み取り可能な記録媒体であって、
前記プログラムは、
並列処理を行っている実行中スレッドの数と待機状態にある待機スレッドの数とを所定時間において監視するステップと、
該監視された前記実行中スレッドの数に応じて前記待機スレッドの不要数を前記所定時間毎に決定するステップと、
該決定された前記不要数の前記待機スレッドを前記所定時間毎に回収するステップと
を実行する、記録媒体。
A computer-readable recording medium on which a multi-thread control program that performs parallel processing by a plurality of threads is recorded,
The program is
Monitoring the number of executing threads performing parallel processing and the number of waiting threads in a waiting state at a predetermined time ;
Determining an unnecessary number of waiting threads every predetermined time according to the monitored number of running threads;
The step of collecting the determined unnecessary number of the waiting threads every predetermined time .
コンピュータを、
前記複数のスレッドのスレッド情報が記憶されるスレッド情報管理部
前記スレッド情報管理部に記憶された待機状態にあるスレッドの数に基づいてスレッドの生成要求、及び前記待機状態にあるスレッドに対して処理の実行要求を行うスレッド実行処理部、及び、
前記スレッド情報管理部に記録された並列処理を行っている実行中スレッドの数と前記待機状態にある待機スレッドの数とを所定時間において監視し、該監視された前記実行中スレッドの数に応じて前記待機スレッドの不要数を前記所定時間毎に決定し、該決定された前記不要数の前記待機スレッドを前記所定時間毎に回収するスレッド回収処理部として機能させるためのプログラム。
Computer
A thread information management unit for storing thread information of the plurality of threads ;
A thread generation request based on the number of threads in a standby state stored in the thread information management unit, and a thread execution processing unit that issues a process execution request to the thread in the standby state ; and
And the number of waiting threads in number and the standby state of the thread information management running is being performed the recorded parallel processing unit thread monitors at predetermined time, depending on the number of the running thread, which is the monitoring the unnecessary number of waiting threads is determined for each predetermined time, a program for functioning the waiting threads of the unnecessary number of the determined as a thread recovery unit for recovering every predetermined time Te.
JP2001014611A 2000-01-25 2001-01-23 Multithread control method, multithread control apparatus, recording medium, and program Expired - Fee Related JP3839259B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001014611A JP3839259B2 (en) 2000-01-25 2001-01-23 Multithread control method, multithread control apparatus, recording medium, and program

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2000016070 2000-01-25
JP2000-16070 2000-01-25
JP2001014611A JP3839259B2 (en) 2000-01-25 2001-01-23 Multithread control method, multithread control apparatus, recording medium, and program

Publications (3)

Publication Number Publication Date
JP2001282553A JP2001282553A (en) 2001-10-12
JP2001282553A5 JP2001282553A5 (en) 2004-12-09
JP3839259B2 true JP3839259B2 (en) 2006-11-01

Family

ID=26584117

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001014611A Expired - Fee Related JP3839259B2 (en) 2000-01-25 2001-01-23 Multithread control method, multithread control apparatus, recording medium, and program

Country Status (1)

Country Link
JP (1) JP3839259B2 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4911552B2 (en) * 2004-04-12 2012-04-04 富士通株式会社 Multiple slip processing method, program, and apparatus
JP2009009378A (en) 2007-06-28 2009-01-15 Brother Ind Ltd Printing control apparatus and program
JP5298974B2 (en) * 2009-03-10 2013-09-25 株式会社リコー DEVICE MANAGEMENT DEVICE, DEVICE MANAGEMENT SYSTEM, DEVICE MANAGEMENT METHOD, DEVICE MANAGEMENT PROGRAM, AND RECORDING MEDIUM CONTAINING THE PROGRAM
JP6171658B2 (en) 2013-07-19 2017-08-02 富士通株式会社 Parallel processing optimization program, parallel processing optimization method, and information processing apparatus

Also Published As

Publication number Publication date
JP2001282553A (en) 2001-10-12

Similar Documents

Publication Publication Date Title
JP6219512B2 (en) Virtual hadoop manager
US7137115B2 (en) Method for controlling multithreading
JP4028674B2 (en) Method and apparatus for controlling the number of servers in a multi-system cluster
US5349656A (en) Task scheduling method in a multiprocessor system where task selection is determined by processor identification and evaluation information
JP5417287B2 (en) Computer system and computer system control method
EP2851799B1 (en) Fault tolerant batch processing
JP5434616B2 (en) Virtual machine, virtual machine monitor, and computer control method
CN106452818B (en) Resource scheduling method and system
WO2021159638A1 (en) Method, apparatus and device for scheduling cluster queue resources, and storage medium
JP2009541848A (en) Method, system and apparatus for scheduling computer microjobs to run uninterrupted
US20060288159A1 (en) Method of controlling cache allocation
JP2002202959A (en) Virtual computer system for performing dynamic resource distribution
JP2004030363A (en) Logical computer system, and method and program for controlling configuration of logical computer system
JP5347451B2 (en) Multiprocessor system, conflict avoidance program, and conflict avoidance method
JP6786010B2 (en) Information processing equipment, tuning method and tuning program
CN115617497A (en) Thread processing method, scheduling component, monitoring component, server and storage medium
Zhang et al. Workload consolidation in alibaba clusters: the good, the bad, and the ugly
JP4992740B2 (en) Multiprocessor system, failure detection method, and failure detection program
JP3839259B2 (en) Multithread control method, multithread control apparatus, recording medium, and program
US20090187614A1 (en) Managing Dynamically Allocated Memory in a Computer System
JP4253796B2 (en) Computer and control method
CN116127494A (en) Control method and related device for concurrent access of users
JP3189810B2 (en) QoS controller
CN117093335A (en) Task scheduling method and device for distributed storage system
JP2921501B2 (en) Task execution priority change method under high load in online processing system

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060307

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060508

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060802

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20090811

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100811

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110811

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120811

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120811

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130811

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees