JP4609070B2 - マルチ呼処理スレッド処理方法 - Google Patents

マルチ呼処理スレッド処理方法 Download PDF

Info

Publication number
JP4609070B2
JP4609070B2 JP2004379909A JP2004379909A JP4609070B2 JP 4609070 B2 JP4609070 B2 JP 4609070B2 JP 2004379909 A JP2004379909 A JP 2004379909A JP 2004379909 A JP2004379909 A JP 2004379909A JP 4609070 B2 JP4609070 B2 JP 4609070B2
Authority
JP
Japan
Prior art keywords
event
call processing
processing
thread
scheduler
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
JP2004379909A
Other languages
English (en)
Other versions
JP2006185303A (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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co 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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP2004379909A priority Critical patent/JP4609070B2/ja
Priority to US11/313,750 priority patent/US20060143616A1/en
Priority to CNB2005101381073A priority patent/CN100495344C/zh
Publication of JP2006185303A publication Critical patent/JP2006185303A/ja
Application granted granted Critical
Publication of JP4609070B2 publication Critical patent/JP4609070B2/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
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Exchange Systems With Centralized Control (AREA)
  • Telephonic Communication Services (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明はマルチ呼処理スレッド処理方法に関し、例えば、TSS(タイム・シェアリング・システム)スケジューラを搭載した汎用マルチタスクOSを適用したVoIPサーバに適用し得るものである。
多量のVoIP信号を取り扱うVoIPサーバにおいては、VoIPソフトスイッチが適用されている。このVoIPソフトスイッチが適用される、複数のユーザから同時にVoIP信号が到来するシステムでは、Linux(UNIX;登録商標)・Windows(登録商標)等の汎用マルチタスクOSを用い、シングルプロセッサ環境下でも、複数のプロセス(ユーザによる呼処理要求)があった場合に、CPU使用時間を分割して分配することで、あたかも同時に処理しているかのように見せるTSSスケジューラが採用されている。TSSスケジューラについては、各種文献に記載されている(例えば、非特許文献1参照)。
また、現行のハードウェアやオペレーションシステムは、このTSSスケジューラによるコンピューティングを行った際に高速に動作するよう最適化されている。
澤田勉、澤田綾子、永井正武共著、「LinuxとWindowsを理解するためのOS入門」、共立出版株式会社2003年11月発行、126〜130頁
TSSスケジューラはクォンタム(一定の時間)をプロセスに割り当てて実行している。通常、クォンタムの値は8〜10m秒程度となっている。この時間単位で、処理中のプロセスがCPUの処理から外され、別のプロセスへCPUを渡す。このとき、処理中のプロセスに係るCPUキャッシュはフラッシュされ、再度、別のプロセスに係るキャッシュが構築される。
しかし、一般的な呼制御信号のそれぞれは非常に短いパケットで構成されており、それぞれのイベントを処理するために使用する時間は、クォンタムより相当短い時間であり、そのような短い時間で処理が完了してしまう。これに合わせて、OSのチューニングなどによりクォンタムを短く設定することができるが、ディスパッチャによるCPUキャッシュのフラッシュが多発することとなり、CPUの性能が著しく低下することとなる。
さらに、ステートフルなVoIP呼制御を実現する場合は、イベントそれぞれが関連性を持ち、イベント処理が各状態に左右される。このときの処理の流れを一般的なマルチスレッド環境下で実現した呼制御アプリケーション(VoIP呼制御プロセス)例を、図2を用いて説明する。
呼信号(パケット)が入力されると、カーネル(のスケジューラ)内でのキューイングによる待ち時間の後、各入力部(Packet受信部)から呼処理イベントキューオブジェクトが生成され、イベントがキューイングされる(<1>、<2>、<3>)。呼処理イベントキュー毎にスレッドを割り当て、イベントドリブンでスレッドを生成若しくは予め生成済みのスレッドを割り当てる。このイベントキューは、呼グループ毎に生成されるオブジェクトとなっており、既存のオブジェクトへのイベントが入力された場合は該当するオブジェクトへのキューイングのみの動作となる(<4>)。このイベントドリブンでスレッドを生成する方式はそれぞれのイベントにスレッドが割り当てられるため、イベント処理のレスポンス時間の短縮が望める。しかし、呼イベント処理時間がシステムのスケジューラのクォンタムより短い場合、他のスレッド動作にCPUを渡すために無駄なコンテキストスイッチが必要となる。システムによっては他スレッドへCPUを迅速に渡すことができない場合もあり、CPUによるユーザプログラムの実行可能時間を十分に使えない。
次に、それぞれの呼オブジェクトは呼処理を実行する中でステートフルデータエリアである呼処理のリソースを生成(<5>)、変更(<6>)又は閲覧(<7>)する動作が頻繁に発生する。これらの動作は複数のオブジェクトがひとつのステートフルデータへアクセスすることを示している。このとき、スレッドの再入により、データの整合性が破壊されないため、データに対する排他制御を実現する必要がある。これは同時にスレッドが同一のエリアに対してアクセスを行った場合、唯一のスレッドのみが動作し、他のスレッドの動作を停止させるという制御となる。最も簡易的であり高速な排他制御を実現するために、ほぼ全てのOSが機能提供しているMutex(相互排他ロック)等の排他プリミティブがあるが、これを使用した排他制御では、他のスレッドにCPUが渡されるまで、カーネル内のスケジューラによるディスパッチャ処理に依存し、結果として大幅なスループット低減につながる。
また、イベントドリブンに複数のスレッドを生成することにより、システムのTSSスケジューラにてサービスインタラクティブ性を向上することができる一方、各呼イベント実行契機の発生時間の予測は不可能である。
図3は、一般的なTSSスケジューラにて輻輳的なイベント処理を行った場合の実行タイミングについてのタイムテーブル例を示している。図3の例は、簡易的に、1プロセッサシステムでイベント処理以外の別処理が極力ないものを想定した。
各イベント処理が終了すると、他プロセスにCPUを渡すディスパッチ(DP)が発生する。また、クォンタムQをオーバして処理を続けないように強制的に割り込みが発生しディスパッチを挟んでイベント処理の切り替えが発生する(図3ではイベント処理<2>から<3>)。これにより、不用意なディスパッチを招くこととなる。上述した通り、ディスパッチが発生すると、CPU内のキャッシュを再構築するため、ユーザプロセス処理のレイテンシー(呼び出し)に繋がる。また、スレッドごとの優先制御を行わないと、イベント処理<2>が処理途中でディスパッチされた際、別のイベント処理<3>が割り込んで順序性を乱してしまうこととなる。
そのため、OSのTSSスケジューラの実装に依存せず、CPUを最大限に使用し、呼処理イベントの処理を実行することが可能なマルチ呼処理タスク処理方法が望まれている。
かかる課題を解決するため、第1の本発明は、シングルCPUがメモリ上に展開された呼処理プログラムに従い、輻輳的に発生する呼処理イベントを実行するマルチ呼処理スレッド処理方法において、(1)TSSスケジューラを実装しているOSと、呼処理アプリケーションとの間に、呼処理イベントスケジューラを介挿し、上記呼処理イベントスケジューラ、キュー管理され順序制御が行われた1又は複数の処理時間が短い呼処理イベントを、上記TSSスケジューラが呼処理イベントの1回の処理に割り当てている最大のCPU時間を使用して処理させるものであり、(2)上記呼処理イベントスケジューラは監視スレッドを有し、この監視スレッドは、呼処理イベントが入力されキューイングされると、新たなイベント処理を実施するためのユーザ実行用スレッドを生成し、上記ユーザ実行用スレッドは、入力されたイベントに係るコンテキストを生成した後、イベントの有無を確認し、イベントが存在すると、実行するユーザを選択し、上記ユーザの処理を実行して、上記イベントの有無の確認に戻って、上記イベントの有無の確認間のループ処理を繰返し実行し、上記最大のCPU時間の経過によるディスパッチがあったときは、上記イベントの有無の確認間のループ処理を中断し、上記TSSスケジューラによる自己へのディスパッチによって上記イベントの有無の確認を再開することを特徴とする。
また、第2の本発明は、シングルCPUがメモリ上に展開された呼処理プログラムに従い、輻輳的に発生する呼処理イベントを実行するマルチ呼処理スレッド処理方法において、(1)TSSスケジューラを実装しているOSと、呼処理アプリケーションとの間に、コンテキストの連結/管理と、順序制御と、呼処理コンテキストのハングチェックとを行う呼処理イベントエンジンを設け、(2)上記呼処理イベントエンジンが、キュー管理され順序制御が行われた1又は複数の処理時間が短い呼処理イベントを、上記TSSスケジューラが呼処理イベントの1回の処理に割り当てている最大のCPU時間を使用して処理させる呼処理イベントスケジューラを有し、(3)上記呼処理イベントスケジューラは監視スレッドを有し、この監視スレッドは、呼処理イベントが入力されキューイングされると、新たなイベント処理を実施するためのユーザ実行用スレッドを生成し、上記ユーザ実行用スレッドは、入力されたイベントに係るコンテキストを生成した後、イベントの有無を確認し、イベントが存在すると、実行するユーザを選択し、上記ユーザの処理を実行して、上記イベントの有無の確認に戻って、上記イベントの有無の確認間のループ処理を繰返し実行し、上記最大のCPU時間の経過によるディスパッチがあったときは、上記イベントの有無の確認間のループ処理を中断し、上記TSSスケジューラによる自己へのディスパッチによって上記イベントの有無の確認を再開することを特徴とする。
本発明のマルチ呼処理スレッド処理方法によれば、呼処理イベントスケジューラが、キュー管理され順序制御が行われた1又は複数の処理時間が短い呼処理イベントを、上記TSSスケジューラが呼処理イベントの1回の処理に割り当てている最大のCPU時間を使用して処理させるので、OSのTSSスケジューラの実装に依存せず、CPUを最大限に使用し、呼処理イベントの処理を実行することが可能となる。
(A)実施形態
以下、本発明によるマルチ呼処理タスク処理方法の一実施形態を、図面を参照しながら詳述する。
この実施形態のマルチ呼処理タスク処理方法が実装されたマルチ呼処理タスク処理装置は、例えば、多量のVoIP信号(例えば、80万回線)を取り扱うコールエージェント(電話交換システムの一種)に適用されているものであり、ハードウェア的には、一般的なコールエージェントと同様である。すなわち、CPU、メモリ、内蔵HDD等の大容量記憶装置、キーボード、マウス、ディスプレイ、通信インタフェース部などを備えており、CPUは、システムバスを介してメモリに接続され、また、システムバス及び入出力デバイスを介して、大容量記憶装置、キーボード、マウス、ディスプレイ、通信インタフェース部等と接続されている。
このマルチ呼処理タスク処理装置は、例えば、Linux・Windows等の汎用マルチタスクOSを適用している。上述したように、汎用マルチタスクOSはカーネル内にTSSスケジューラを有している。
マルチ呼処理タスク処理装置1は、図1に示すように、汎用マルチタスクOS20におけるカーネル21内のTSSスケジューラ22に加え、ユーザ層に位置する、スケジューラ機能(呼処理イベントスケジューラ31)を有する呼処理イベントエンジン30を有しており、スケジュール機能面からは、TSSスケジューラ22は、イベントエンジン30を介して、VoIPアプリケーション40に係るスレッドを処理対象とし得る。言い換えると、イベントスケジューラ31は、カーネル21のTSSスケジューラ22上で動作するコンテキストである。
図4は、実施形態に係るマルチ呼処理タスク処理装置1が呼処理イベントを実行した際のタイムテーブル例を示しており、主として、呼処理イベントスケジューラ31の処理イメージを示している。図4は、従来に係る図3に対応する図面である。
呼処理イベントスケジューラ31は、キュー管理され順序制御が行われた複数の処理時間が短いイベントを繋げ、一回に割り当てられている最大のCPU時間(TSSスケジューラ22が提供するクォンタム)Qを使用して呼処理イベントの処理を実施する。図4の例は、イベント処理<1>だけではCPU時間Qが埋まらず、呼処理イベントスケジューラ31は、そのCPU時間Q内でイベント処理<2>(の前半部分)を続けて処理させている。各イベント処理の切り替わる間には(図4の「Ev切」)、呼処理イベントスケジューラ31の制御処理が割り込むことになるが、即座に次のイベント処理を実行させる。これにより、各イベント処理の間にディスパッチ(図4の「DP」)や呼制御処理とは関係のない別プロセス(図4の「別処理」)の処理が実行されないため、同じCPU処理時間Qで多くのイベントを処理することを可能としている。なお、ディスパッチは、TSSスケジューラ22により生じるものである。
ここで、ディスパッチが不用意に発生しないため、CPUキャッシュを最大限に活用できることなり、さらなる高速化に繋がっている。なお、この実施形態に係る図4と従来に係る図3とは、同様なイベント処理の系列の場合であるが、従来における5回のディスパッチ回数が、この実施形態では3回に減少している。
以下では、この実施形態の呼処理イベントスケジューラ31による制御動作について説明する。
一つのイベントがスケジューラ31に入力されると、順序制御のための配列にキューイングされる。ここで、イベントが輻輳しているかどうかの判定をキューイングされているイベントの個数から行い、輻輳が認められた場合はこの旨をスケジューラ31へ記録する。
スケジューラ31内には最低1つの監視スレッドが生成されており、イベントキューの監視、及び、イベント処理を実行しているスレッドの監視を行っている。イベントが入力されキューイングされると、この監視スレッドにより新たなイベント処理を実施するためのスレッド(ユーザ実行用スレッド)を生成する。
図5は、ユーザ実行用スレッドの基本動作を示している。ユーザ実行用スレッドは、入力されたイベントに係るコンテキストを生成した後(S101)、イベントの有無を確認し(S102)、イベントが存在すると、実行するユーザ(例えば、後述する呼処理オブジェクトグループ)を選択し(S103)、そのユーザの処理を実行して(S104)、上述したイベントの有無の確認に戻る。このユーザ処理の実行中においては、適宜イベントが生成される。また、後述するハングチェックのための時間計測なども行われる。
ステップS102〜S104でなるループは繰り返され、TSSスケジューラ22の最大CPU時間Qの経過によるディスパッチがあったときに、そのループ処理は中断され、TSSスケジューラ22による自己へのディスパッチによって再開される。これにより、図4に示したような、最大CPU時間Q内でのイベント切り替えを実現している。
前述したキューイングする別スレッドによって輻輳状態に陥っていることが判明した場合、監視スレッドは、新たなイベント処理が生成するか、新たな監視スレッドを生成して自らイベント処理スレッドに切り替わるかを選択する。監視スレッドがイベント処理スレッドに切り替わってそのまま動作する理由は、輻輳時、新たなスレッドを生成するためのリソースを確保し、確実に動作可能なスレッドの生成を保証することが困難であるからである。また、監視スレッドの方がスレッドの優先度が高いため、より確実にイベント処理を行い、キューを刈り取ることが可能になっているためである。
監視スレッドによるイベント処理スレッドの監視は、各イベントの実行時間の計測によりハングチェックを行う。イベント処理スレッドは、各イベント処理の切り替わりの際にタイムスタンプをイベントスケジューラ31へ記録する。監視スレッドは、このタイムスタンプから各イベント処理の実行にかかっている時間を計算し、閾値内に収まっているかどうかを判定する。各イベント処理内部で無限ループなどが発生した場合、閾値の時間を経過して新たなイベント処理スレッドを再生成する。単位時間内に、このイベント処理スレッドの再生成が複数発生すると、デッドロックしたものとみなし、プロセスの再開要求を行う。
図6は、監視スレッド(ハングチェックスレッド)のこのような動作をフローチャートで示している。監視スレッド(ハングチェックスレッド)は、ハングチェック用のコンテキストを生成した後(S201)、実行中ユーザ(実行中のイベント処理イベント)の有無を判定し(S202)、実行中ユーザが存在すれば、実行中ユーザ分だけ、実行中ユーザを選択し(S203)、タイムバーストしていないことを確認する(S204)。そして、タイムバーストした実行中ユーザがあれば、そのようなユーザに対するユーザ処理実行用のコンテキストを生成して(S205)、上述したステップS202に戻る。
上述した呼処理イベントスケジューラ31を導入したことにより、OS20のTSSスケジューラ22の実装に依存せず、CPUを最大限に使用し、呼処理イベントの処理を実行することが可能となる。
スレッド数をコントロールし、要求された呼イベント処理に必要なスレッド数のみを生成するため、TSSスケジューラ22の環境下でも、ステートフルデータを保持する呼イベント同士のコンテキスト衝突が発生せず、高速に処理することが可能である。また、システム内のスレッド数を最小限に留めることが可能となり、カーネル21のスケジューラ22による不要なディスパッチ処理の発生を抑え、結果として、呼イベント実行契機のタイミングを短くすることが可能となり、サービスインタラクティブ性を確保できる。
この実施形態の呼処理イベントエンジン30は、コールエージェント(電話交換システム)のような輻輳的に発生する呼処理イベントを高速実行するためのものであり、コンテキストの連結/管理と、順序制御と、呼処理コンテキストのハング(ハングアップ)チェックとを行うものである。
図7は、実施形態の呼処理イベントエンジン30によるCA(コールエージェント)プロセスの構造例を示す説明図であり、従来に係る上述した図2に対応する図面である。なお、従来では、カーネルの上位が直ちにVoIPアプリケーションであったが、この実施形態の場合には、カーネルの上位に呼処理イベントエンジン30が存在し、さらに、その上にVoIPアプリケーションが存在し、状態に応じてプロセスやスレッドが適宜生成される。
呼処理イベントエンジン30によるCA(コールエージェント)プロセスCAPは、1又は複数(図7では4個を示している)のパケット受信部32−1〜32−4を有している。各パケット受信部32−1〜32−4が信号を受信した際には、カーネル21にその呼制御信号を引き渡し、カーネル21のTSSスケジューラ22におけるキューイング制御の後、各パケット受信部32−1〜32−4にカーネル21からの呼制御信号が与えられる。
CAプロセスCAPは、前段に、カーネル20からの呼制御信号を受信した1次イベントを処理するためのイベントスケジューラ31−1を保持し、後段に、呼処理サービスを処理するためのイベントスケジューラ31−2を保持している。また、CAプロセスCAPは、これら2個のイベントスケジューラ31−1及び31−2を繋ぐため、各種の呼処理サービスに係るそれぞれのイベントをキューイングしておくためのイベントキュー管理オブジェクト33−1〜33−Nを配置する。イベントキュー管理オブジェクト33−1〜33−Nの基本動作は、FIFO(First−In First−Out)である。
2個のイベントスケジューラ31−1及び31−2はそれぞれ、図4〜図6を用いて説明したイベントスケジューラ31である。
各パケット受信部32−1〜32−4が信号を受信した際、前段のイベントスケジューラ31−1へキューイングし、再びパケットの入力を待つため、即座に処理が戻る(<1>〜<4>)。イベントスケジューラ31−1は、イベントが入力されると、イベント処理を実行するためのスレッドを生成する。イベント処理スレッドにより、イベントがキューから取り出されイベント処理が実行されていく。図7は、イベントキュー管理オブジェクト33−1〜33−Nを生成し、イベントを振り分け、生成したオブジェクト内のキュー配列へキューイングしていく処理を行う場合を示している(<5>〜<8>)。
後段の呼処理を実行するためのイベントスケジューラ31−2は、イベント処理スレッドを生成し、グルーピングされた各イベントキュー管理オブジェクト(呼処理オブジェクトグループ)33−1〜33−Nからイベントを抽出し、呼処理イベントを実行させる。呼処理イベントの実行時には、適宜、ステートフルエリアがアクセスさせる。
イベントスケジューラ31−2は、上述したイベントの抽出などを行う際には、イベントキュー管理オブジェクトとイベント処理スレッドをバインドさせて以降の処理順序を保つ。
なお、イベントキュー管理オブジェクト分、イベント処理スレッドを生成することも可能であるが、カーネル21内のRunキューを輻輳させてしまうため、イベント処理を繋ぎスレッド数のコントロールを行うこととした。また、コントロールして生成したスレッド数を最小限に抑えることにより、上位のステートフルエリア34へのアクセスでスレッド同士の競合が発生せず、ロックによる待機時間をなくすことができる。
図8は、後段の呼処理イベントスケジューラ31−2に着目し、その正常シーケンスの場合を示しており、カーネル21や前段の呼処理イベントスケジューラ31−1の動作は省略している。
信号入力スレッド(図7でのパケット受信部に相当)32が非同期信号を受信し、呼処理オブジェクトグループ33−GAの信号入力オブジェクトをコールする(S301)。このとき、呼処理オブジェクトグループ33−GAの信号入力オブジェクトは、呼処理イベントスケジューラ31(31−2)に、イベントを処理するためのコンテキストを要求する(S302)。要求がキューイングされると、要求したコンテキストが生成されるまで、全ての呼処理オブジェクトグループ33−GA、33−GBや信号入力スレッド32は、その加入者サービスについて対応する呼処理に対し、排他制御を実行する(S303)。
例えば、呼処理オブジェクトグループ33−GAはある発信側加入者に係る呼処理オブジェクトのグループであり、呼処理オブジェクトグループ33−GBはその呼の着信側加入者に係る呼処理オブジェクトのグループである。
そして、呼処理イベントスケジューラ31(31−2)が要求されたコンテキストを生成し(S304)、呼処理オブジェクトグループ33−GAに関する呼処理を実施する(S305)。
このような呼処理オブジェクトグループ33−GAの呼処理の実施中には、ハングチェックのために、実行時時間の実時間が計測される。図8における鋸歯状の曲線が重畳されている部分が計測期間である。
また、このような、ある呼処理オブジェクトグループ33−GAの呼処理の実施中に他の呼処理オブジェクトグループ33−GBで実行される非同期イベントが生成されることもあり、その通知を受けた呼処理オブジェクトグループ33−GBは、キューイングした後、自グループ33−GB用のコンテキストを呼処理イベントスケジューラ31に要求し、その要求の受信応答が呼処理イベントスケジューラ31から返信されると、呼処理オブジェクトグループ33−GBは、呼処理オブジェクトグループ33−GAに関する呼処理を再開させる。呼処理オブジェクトグループ33−GAは、実行中の呼処理が終了すると、呼処理イベントスケジューラ31にそのことを通知する。図8では、説明の簡易化のために簡単に示しているが、これにより、呼処理イベントスケジューラ31は、呼処理オブジェクトグループ33−GBが要求したコンテキストを生成して、呼処理オブジェクトグループ33−GBに関する呼処理を実施する(S306)。
カーネル21のTSSスケジューラ22が提供するクォンタムQが経過すると、割り込みが発生し、呼処理オブジェクトグループ33−GBに関する呼処理が中断する(S307)。
図9は、図8の正常シーケンスに対応する異常シーケンスを示しており、図8におけるステップS304の呼処理オブジェクトグループ33−GAが要求したコンテキストを生成した以降の流れを示している。
呼処理オブジェクトグループ33−GAに関する呼処理の実行中において、論理矛盾によるループやデッドロックによるプログラムの停止などが生じると(S401)、呼処理イベントスケジューラ31による計測時間が閾値時間を越えてしまう。
このような異常状態は、ハングチェックスレッド50が、処理中のクォンタムQ内で異常状態を検出するか否かの相違により、以下の第1又は第2の方法で処理される。
第1の方法は、以下の通りである。呼処理イベントエンジン30におけるハングチェックスレッド50は、種々の実行イベントに対する実行時間を監視しており(S402)、呼処理オブジェクトグループ33−GAに関する呼処理イベントの実行時間が上述の原因などによって閾値時間を越えてタイムアウトしたことを検出する(S403)。このとき、ハングチェックスレッド50は、新たな呼処理イベントスケジューラ31NEWを生成させる(S404)。呼処理イベントスケジューラ31NEWは、例えば、呼処理オブジェクトグループ33−GBに関するコンテキストを生成し(S404)、呼処理オブジェクトグループ33−GBに関するコンテキストを生成して呼処理を実施する(S405、S406)。以上のような新たな呼処理イベントスケジューラ31NEWの生成により、呼処理イベントスケジューラによる処理が継続したように見える。このような呼処理イベントスケジューラ31NEWに従う呼処理の実行中においても、カーネル21のTSSスケジューラ22が提供するクォンタムQが経過すると、割り込みが発生し、呼処理オブジェクトグループ33−GBに関する呼処理が中断する(S407)。
第2の方法は、以下の通りである。ハングチェックスレッド50の実行時間の監視タイミングの前に、カーネル21のTSSスケジューラ22が提供するクォンタムQが経過すると、割り込みが発生し(S410)、処理が中断する。
その後、カーネル21のTSSスケジューラ22のクォンタムQが再び、中断した処理に係るものとなって処理を復旧(再開)すると、ハングチェックスレッド50はコンテキストの継続判定を行う(S411)。ここで、輻輳状態と判定されると、そのことが呼処理イベントスケジューラ311に通知され、ステップS304で生成したコンテキストを消滅させる(S412)。このようなコンテキストの消滅は、輻輳状態などのスレッドを生成した方が良いと判断された場合に行われる。
実施形態の呼処理イベントエンジン30によれば、図4〜図6を用いて説明した呼処理イベントスケジューラ31を適用した効果に加え、コールエージェント(電話交換システム)のようなステートフルエリアを保持しなければならないシステムで課題であったコンテキストの競合を最小限に抑えることを、サービス形態に依存せずに、容易に達成することができる。また、システム全体で生成されるスレッドの数を最小限に抑えることが可能であり、パケット受信部などの短い処理を実施するスレッドへも頻繁に実行契機が与えられ、インタラクティブ性の向上が図ることができる。
(B)他の実施形態
本発明によるマルチ呼処理タスク処理装置及び方法は、その適用対象が、上記実施形態のようなコールエージェントに限定されるものではなく、メディアゲートウェイコントローラ(MGC)などの他の電話交換装置にも適用できる。
実施形態のマルチ呼処理スレッド処理方法の実行環境の説明図である。 ステートフルなVoIP呼制御を実現する従来のVoIP呼制御プロセス例を示す説明図である。 一般的なTSSスケジューラにて輻輳的なイベント処理を行った場合の実行タイミングについてのタイムテーブル例を示す説明図である。 実施形態の呼処理イベントスケジューラをTSSスケジューラに併用した場合における輻輳的なイベント処理を行った場合の実行タイミングについてのタイムテーブル例を示す説明図である。 実施形態のユーザ実行用スレッドの基本動作を示すフローチャートである。 実施形態のハングチェックスレッドの動作を示すフローチャートである。 実施形態の呼処理イベントエンジンによるCA(コールエージェント)プロセスの構造例を示す説明図である。 実施形態の呼処理イベントスケジューラの正常シーケンスを示すシーケンス図である。 実施形態の呼処理イベントスケジューラの異常シーケンスを示すシーケンス図である。
符号の説明
1…マルチ呼処理スレッド処理装置、10…ハードウェア、20…汎用マルチタスクOS、21…カーネル、22…TSSスケジューラ、30…呼処理イベントエンジン、31…呼処理イベントスケジューラ、40…VoIPアプリケーション。

Claims (2)

  1. シングルCPUがメモリ上に展開された呼処理プログラムに従い、輻輳的に発生する呼処理イベントを実行するマルチ呼処理スレッド処理方法において、
    TSSスケジューラを実装しているOSと、呼処理アプリケーションとの間に、呼処理イベントスケジューラを介挿し、上記呼処理イベントスケジューラは、キュー管理され順序制御が行われた1又は複数の処理時間が短い呼処理イベントを、上記TSSスケジューラが呼処理イベントの1回の処理に割り当てている最大のCPU時間を使用して処理させるものであり、
    上記呼処理イベントスケジューラは監視スレッドを有し、この監視スレッドが、呼処理イベントが入力されキューイングされると、新たなイベント処理を実施するためのユーザ実行用スレッドを生成し、上記ユーザ実行用スレッドは、入力されたイベントに係るコンテキストを生成した後、イベントの有無を確認し、イベントが存在すると、実行するユーザを選択し、上記ユーザの処理を実行して、上記イベントの有無の確認に戻って、上記イベントの有無の確認間のループ処理を繰返し実行し、上記TSSスケジューラが呼処理イベントの1回の処理に割り当てている最大のCPU時間の経過によるディスパッチがあったときは、上記イベントの有無の確認間のループ処理を中断し、上記TSSスケジューラによる自己へのディスパッチによって上記イベントの有無の確認を再開する
    ことを特徴とするマルチ呼処理スレッド処理方法。
  2. シングルCPUがメモリ上に展開された呼処理プログラムに従い、輻輳的に発生する呼処理イベントを実行するマルチ呼処理スレッド処理方法において、
    TSSスケジューラを実装しているOSと、呼処理アプリケーションとの間に、コンテキストの連結/管理と、順序制御と、呼処理コンテキストのハングチェックとを行う呼処理イベントエンジンを設け、
    上記呼処理イベントエンジンが、キュー管理され順序制御が行われた1又は複数の処理時間が短い呼処理イベントを、上記TSSスケジューラが呼処理イベントの1回の処理に割り当てている最大のCPU時間を使用して処理させる呼処理イベントスケジューラを有し、
    上記呼処理イベントスケジューラは監視スレッドを有し、この監視スレッドは、呼処理イベントが入力されキューイングされると、新たなイベント処理を実施するためのユーザ実行用スレッドを生成し、上記ユーザ実行用スレッドは、入力されたイベントに係るコンテキストを生成した後、イベントの有無を確認し、イベントが存在すると、実行するユーザを選択し、上記ユーザの処理を実行して、上記イベントの有無の確認に戻って、上記イベントの有無の確認間のループ処理を繰返し実行し、上記最大のCPU時間の経過によるディスパッチがあったときは、上記イベントの有無の確認間のループ処理を中断し、上記TSSスケジューラによる自己へのディスパッチによって上記イベントの有無の確認を再開する
    ことを特徴とするマルチ呼処理スレッド処理方法。
JP2004379909A 2004-12-28 2004-12-28 マルチ呼処理スレッド処理方法 Active JP4609070B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004379909A JP4609070B2 (ja) 2004-12-28 2004-12-28 マルチ呼処理スレッド処理方法
US11/313,750 US20060143616A1 (en) 2004-12-28 2005-12-22 System and method for performing multi-task processing
CNB2005101381073A CN100495344C (zh) 2004-12-28 2005-12-28 多重呼叫处理线程处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004379909A JP4609070B2 (ja) 2004-12-28 2004-12-28 マルチ呼処理スレッド処理方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2009260064A Division JP5029675B2 (ja) 2009-11-13 2009-11-13 マルチ呼処理スレッド処理方法及び呼処理装置

Publications (2)

Publication Number Publication Date
JP2006185303A JP2006185303A (ja) 2006-07-13
JP4609070B2 true JP4609070B2 (ja) 2011-01-12

Family

ID=36613283

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004379909A Active JP4609070B2 (ja) 2004-12-28 2004-12-28 マルチ呼処理スレッド処理方法

Country Status (3)

Country Link
US (1) US20060143616A1 (ja)
JP (1) JP4609070B2 (ja)
CN (1) CN100495344C (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100442239C (zh) * 2007-01-09 2008-12-10 上海新时达电气有限公司 中断程序的分时运行方法
US8171488B1 (en) * 2007-02-16 2012-05-01 Vmware, Inc. Alternating scheduling and descheduling of coscheduled contexts
US8127301B1 (en) 2007-02-16 2012-02-28 Vmware, Inc. Scheduling selected contexts in response to detecting skew between coscheduled contexts
US8176493B1 (en) 2007-02-16 2012-05-08 Vmware, Inc. Detecting and responding to skew between coscheduled contexts
US8296767B1 (en) 2007-02-16 2012-10-23 Vmware, Inc. Defining and measuring skew between coscheduled contexts
US8001336B2 (en) * 2007-03-02 2011-08-16 International Business Machines Corporation Deterministic memory management in a computing environment
US9720729B2 (en) * 2008-06-02 2017-08-01 Microsoft Technology Licensing, Llc Scheduler finalization
JP2010160537A (ja) * 2009-01-06 2010-07-22 Hitachi Ltd 通信装置および系切り替え方法
US8752058B1 (en) 2010-05-11 2014-06-10 Vmware, Inc. Implicit co-scheduling of CPUs
CN101976206B (zh) * 2010-10-28 2016-04-20 北京中星微电子有限公司 一种中断处理方法和装置
US8695009B2 (en) * 2011-04-18 2014-04-08 Microsoft Corporation Allocating tasks to machines in computing clusters

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61190633A (ja) * 1985-02-20 1986-08-25 Oki Electric Ind Co Ltd プログラム運用管理方式
JPH02166526A (ja) * 1988-12-20 1990-06-27 Fujitsu Ltd 長時間使用資源検出方式
JPH0357026A (ja) * 1989-07-26 1991-03-12 Hitachi Ltd タスク制御方式
JPH09319597A (ja) * 1996-03-28 1997-12-12 Hitachi Ltd 周期的プロセスのスケジューリング方法
JPH10155010A (ja) * 1996-09-30 1998-06-09 Oki Data:Kk パケット処理方法とネットワ−クア−キテクチャ

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6035321A (en) * 1994-06-29 2000-03-07 Acis, Inc. Method for enforcing a hierarchical invocation structure in real time asynchronous software applications
US6766515B1 (en) * 1997-02-18 2004-07-20 Silicon Graphics, Inc. Distributed scheduling of parallel jobs with no kernel-to-kernel communication
JP3823475B2 (ja) * 1997-09-18 2006-09-20 ソニー株式会社 データ処理方法、記録媒体及びデータ処理装置
US6697935B1 (en) * 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US7296271B1 (en) * 2000-06-28 2007-11-13 Emc Corporation Replaceable scheduling algorithm in multitasking kernel
US6986146B2 (en) * 2001-05-30 2006-01-10 Siemens Communications, Inc. Method and apparatus for providing a state machine operating on a real-time operating system
WO2004044745A1 (ja) * 2002-11-13 2004-05-27 Fujitsu Limited マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ
US7415540B2 (en) * 2002-12-31 2008-08-19 Intel Corporation Scheduling processing threads
US7552446B1 (en) * 2003-12-31 2009-06-23 Emc Corporation Methods and apparatus for a timer event service infrastructure

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61190633A (ja) * 1985-02-20 1986-08-25 Oki Electric Ind Co Ltd プログラム運用管理方式
JPH02166526A (ja) * 1988-12-20 1990-06-27 Fujitsu Ltd 長時間使用資源検出方式
JPH0357026A (ja) * 1989-07-26 1991-03-12 Hitachi Ltd タスク制御方式
JPH09319597A (ja) * 1996-03-28 1997-12-12 Hitachi Ltd 周期的プロセスのスケジューリング方法
JPH10155010A (ja) * 1996-09-30 1998-06-09 Oki Data:Kk パケット処理方法とネットワ−クア−キテクチャ

Also Published As

Publication number Publication date
CN1797349A (zh) 2006-07-05
CN100495344C (zh) 2009-06-03
US20060143616A1 (en) 2006-06-29
JP2006185303A (ja) 2006-07-13

Similar Documents

Publication Publication Date Title
Tindell et al. Holistic schedulability analysis for distributed hard real-time systems
Strosnider et al. The deferrable server algorithm for enhanced aperiodic responsiveness in hard real-time environments
US6223207B1 (en) Input/output completion port queue data structures and methods for using same
US7493436B2 (en) Interrupt handling using simultaneous multi-threading
Pyarali et al. Evaluating and optimizing thread pool strategies for real-time CORBA
JP4609070B2 (ja) マルチ呼処理スレッド処理方法
US9535756B2 (en) Latency-hiding context management for concurrent distributed tasks in a distributed system
Buttazzo Rate monotonic vs. EDF: Judgment day
Kitayama et al. RT-IPC: An IPC Extension for Real-Time Mach.
US20140068165A1 (en) Splitting a real-time thread between the user and kernel space
Nakajima et al. Experiments with Real-Time Servers in Real-Time Mach.
US7703103B2 (en) Serving concurrent TCP/IP connections of multiple virtual internet users with a single thread
Levine et al. Empirical evaluation of OS endsystem support for real-time CORBA object request brokers
Tindell et al. Guaranteeing Hard Real Time End-to-End Communications Deadlines
JP5029675B2 (ja) マルチ呼処理スレッド処理方法及び呼処理装置
Lin et al. {RingLeader}: Efficiently Offloading {Intra-Server} Orchestration to {NICs}
Mercer et al. Preemptibility in Real-Time Operating Systems.
Ramakrishna et al. Efficient round robin CPU scheduling algorithm for operating systems
JP2007265137A (ja) マルチタスク処理方法及びマルチタスク処理装置
Tsenos et al. Amesos: A scalable and elastic framework for latency sensitive streaming pipelines
Iwasaki et al. Isochronous scheduling and its application to traffic control
Chu CPU service classes: A soft real-time framework for multimedia applications
JP2009075766A (ja) 仮想計算機システム及び同システムにおけるスケジュール調整方法
Li et al. Towards Virtualization-Agnostic Latency for Time-Sensitive Applications
JP2007323256A (ja) 割込制御方法および情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070903

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090507

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090714

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090915

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091113

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100630

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100707

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

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

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

Free format text: PAYMENT UNTIL: 20131022

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4609070

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

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

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

Free format text: PAYMENT UNTIL: 20131022

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350