(57)【要約】【課題】本発明は無中断メモリレプリケーション方法に関し、データ転送処理中も呼処理サービスを中断する必要がない方法を提供することを目的としている。【解決手段】アクティブ／ホットスタンバイ構成の呼処理サービスを行なうサーバにおいて、メモリレプリケーションのためにアクティブ系では呼処理プロセスを、呼処理サービスを行なうスレッドとメモリの転送を行なうスレッドに分け、それぞれを別のＣＰＵに割り付け、メモリ内容のコミットを行ないメモリ転送を行なう呼を含めた全ての呼処理サービスを中断することなく、ホットスタンバイ系に呼処理サービスのメモリ内容のコミット契機とは非同期にメモリのコピーデータを転送し、またホットスタンバイ系では、ホットスタンバイ状態の呼処理プロセスから起動されたデータ受信スレッドを起動して、アクティブ系から転送されたメモリのコピーデータを実際のデータエリアに再配置するように構成する。【選択図】図１
2008009797.tif 000002
【特許請求の範囲】
【請求項１】
アクティブ／ホットスタンバイ構成の呼処理サービスを行なうサーバにおいて、メモリレプリケーションのためにアクティブ系では呼処理プロセスを、呼処理サービスを行なうスレッドとメモリの転送を行なうスレッドに分け、
それぞれを別のＣＰＵに割り付け、
メモリ内容のコミットを行ないメモリ転送を行なう呼を含めた全ての呼処理サービスを中断することなく、ホットスタンバイ系に呼処理サービスのメモリ内容のコミット契機とは非同期にメモリのコピーデータを転送し、
またホットスタンバイ系では、ホットスタンバイ状態の呼処理プロセスから起動されたデータ受信スレッドを起動して、アクティブ系サーバから転送されたメモリのコピーデータを実際のデータエリアに再配置する、
ようにしたことを特徴とする無中断メモリレプリケーション方法。
【請求項２】
アクティブ／ホットスタンバイ構成の呼処理サービスを行なうサーバにおいて、メモリレプリケーションのためにアクティブ系では呼処理プロセスを呼処理サービスを行なうスレッドと、メモリのコピーを行なうスレッドと、メモリの転送を行なうスレッドに分け、
それぞれを別のＣＰＵに割り付けることで、メモリ内容のコミットを行ない、メモリ転送を行なう呼を除いた呼処理サービスを中断することなく、ホットスタンバイ系に呼処理サービスのメモリ内容のコミット契機と同期してメモリのコピーを転送し、
また、ホットスタンバイ系ではホットスタンバイ状態の呼処理プロセスから起動されたデータ受信スレッドを起動して、アクティブ系から転送されたメモリのコピーデータを実際のデータエリアに再配置する、
ようにしたことを特徴とする無中断メモリレプリケーション方法。
【請求項３】
アクティブ／ホットスタンバイ構成の呼処理サービスを行なうサーバにおいて、アクティブ系サーバからのデータを受信したホットスタンバイ系サーバにて、ホットスタンバイ状態の呼処理プロセスからデータ受信スレッドとコピーデータ再配置スレッドを起動し、
少なくともデータ受信スレッドを再配置スレッドとは別のＣＰＵに割り付けることで、アクティブ系から転送されたメモリのコピーデータを一旦バッファにコピーし、キューイングした後で実際のデータエリアに再配置する、
ようにしたことを特徴とする請求項１又は２記載の無中断メモリレプリケーション方法。
【請求項４】
前記メモリのコピーを行なうスレッドを起動する際に、固定のＣＰＵに割り付けるのではなく、データ転送スレッドに割り付けたＣＰＵを除くいずれかのＣＰＵの内、最もＣＰＵ使用率の低いＣＰＵを検索し、そのＣＰＵへ割り付けることを特徴とする請求項２記載の無中断メモリレプリケーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は無中断レプリケーション方法に関する。ここで、レプリケーションとはデータの複製を得ることをいう。
【背景技術】
【０００２】
サーバベースの呼処理サーバでは、セッション（呼）情報をメモリ上のデータとして保持しており、Ａｃｔｉｖｅ／Ｈｏｔ−Ｓｔａｎｂｙ（アクティブ／ホットスタンバイ）系サーバ間で、系切り替え（スイッチオーバ）した際に呼を救済するためにはアクティブ／ホットスタンバイサーバ間のデータ転送が必要であった。この転送処理は、転送量が膨大なため、呼処理性能を阻害する要因になっていた。
【０００３】
近年、サーバのマルチＣＰＵ化や、ＣＰＵのマルチコア化が進み、１サーバ内で複数のＣＰＵコアが利用できるようになり、そのＣＰＵの使い方で、これまで課題となっていた性能阻害の問題を解決する手段がとれるようになってきている。
【０００４】
図１０は本発明の対象となるシステム構成例示す図である。図において、１０は呼処理サーバであり、アクティブ系とホットスタンバイ系に分かれている。＃１がアクティブ系、＃２がホットスタンバイ系であるものとする。呼処理サーバ１０において、１は論理メモリ空間、２は呼処理プロセスである。３は呼処理プロセス２内に設けられたスレッド（処理単位）である。ホットスタンバイ系サーバ１０において、４はＣＰＵであり呼処理プロセス２内のスレッド３と接続されている。
【０００５】
６はアクティブ系の呼処理サーバ１０内に設けられた複数のＣＰＵである。ここでは、ＣＰＵ４としてＣＰＵ１〜ＣＰＵ４まで設けられた場合を示す。各ＣＰＵ６は呼処理プロセス２内のスレッド３と接続されており、それぞれのＣＰＵに対して複数のスレッドの組が設けられている。５は呼処理サーバ１０と外部を接続するためのＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）であり、それぞれＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）１５と接続されている。そして、呼処理サーバ＃１と呼処理サーバ＃２とはＬＡＮ２０を介してデータ通信を行なっている。
【０００６】
呼処理サーバ１０は、ＶｏＩＰ（音声処理）やＴＶ（テレビ）電話の分野で使用されるＳＩＰ（Ｓｅｓｓｉｏｎ  Ｉｎｉｔｉａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ：ＩＰ電話等で用いる通信制御プロトコル）等のセッション（呼）を確立することで、Ｅｎｄ−ｔｏ−Ｅｎｄの間でのリアルタイム通信を成立させるためのサーバである。
【０００７】
呼処理サーバ１０では、呼を管理する呼処理プロセスが動作しており、呼処理プロセスはＯＳ（オペレーティングシステム）等のスレッドスケジューラにより複数のＣＰＵのどれかに割り付けられる複数のスレッドから構成されるマルチスレッド構成のプロセスである。同一プロセス上のスレッドからは、同一の論理メモリ空間が参照できる。
【０００８】
呼処理サーバ１０は、アクティブ系とホットスタンバイ系の二重化構成をしており、サーバのＮＩＣを経由してＬＡＮ１５で接続されている。ホットスタンバイ側では、同一ハードウェア構成で同じ呼処理プロセスが動作して、スイッチオーバを契機にすぐに呼処理を動作させることが可能である。呼処理プロセスから参照できる論理メモリ空間１はアクティブ系とサイズ・構成が共通である。
【０００９】
図１１はサーバ上に分散するメモリエリアの説明図である。呼はいくつかの機能、例えば排他制御、呼制御、プロトコル制御、サービスシナリオから構成されている。そして、その機能オブジェクト毎に、呼に関連付けられた呼関連データというデータエリアを持っている。データエリアは、図１１に示すように各機能毎に局在化した構成をしている方法と、呼単位に連続したエリアを捕捉する方法もある。図において、プログラムエリアはプログラムが動作するための領域であり、呼関連データエリアは、排他制御の呼関連データエリア、呼制御の呼関連データエリア、サービスシナリオの呼関連データエリア、プロトコル制御の呼関連データエリアに分かれている。即ち、各機能の呼関連データは、機能毎に局在化している。図の１７はインスタンスが使用する呼関連データを示す。
【００１０】
図１２は呼処理サーバのブートフローを示す図である。先ず、アクティブ系サーバの動作について説明する。先ず、サーバ電源を投入すると（Ｓ１）、ＯＳを起動する（Ｓ２）。次に、クラスタミドルを起動する（Ｓ３）。ここで、クラスタミドルとは系を切り替え制御するためのミドルウェアである。ミドルウェアとは、ＯＳとアプリケーションとを橋渡しするものである。
【００１１】
この後、系決定する（Ｓ４）。ここでは、アクティブ系に決定される。次に、アプリケーションを起動し（Ｓ５）、呼処理サービスを開始する（Ｓ６）。ここで、サービス開始時に周辺機器に新アクティブ系活性化の通知（アドレステーブルの書き換え等の依頼）を行なう。その後、リンク確立待ちとなる（Ｓ７）。
【００１２】
次に、ホットスタンバイ系サーバの動作について説明する。先ずサーバ電源が投入される（Ｓ８）。次に、ＯＳが起動される（Ｓ９）。次に、クラスタミドルが起動される（Ｓ１０）。その後に系が決定される（Ｓ１１）。ここでは、ホットスタンバイ系となる。次に、アプリケーションが起動され（Ｓ１２）、リンク確立待ちとなる（Ｓ１３）。
【００１３】
以上の動作の後、アクティブ系サーバとホットスタンバイサーバとの間にリンクが確立する（Ｓ１４）。リンクが確立したら、アクティブ系からホットスタンバイ系メモリに全面コピー処理がなされる（Ｓ１５）。以上のシーケンスで系の切り替え動作は終了する。次に、アクティブ系からホットスタンバイ系へ呼毎のメモリコピーが行われる（Ｓ１６）。
【００１４】
図１３は呼処理サーバのスイッチオーバフローを示す図である。アクティブ系サーバとホットスタンバイ系サーバの動作を示している。先ず、アクティブ系からホットスタンバイ系へ呼毎メモリコピー中である（Ｓ１）。ここで、アクティブ系で異常を検出する（Ｓ２）。異常検出後の動作（すぐにサーバ切り替えを行なうか、自系で一度呼救済再開を行なうか、受付中のイベントは処理するか、廃棄するか等）は実装依存である。
【００１５】
異常を検出すると、アクティブ系サーバはホットスタンバイ系サーバに対して切り替え開始通知を出す（Ｓ３）。ホットスタンバイ系（新アクティブ系サーバ）は、ホットスタンバイからアクティブ系へ状態を変更する（Ｓ４）。そして、アプリケーションを起動し（Ｓ５）、リンク確立待ちとなる（Ｓ６）。異常を検出したアクティブ系（新ホットスタンバイ系）では、ＯＳを再起動する（Ｓ７）。以下、リンク確立待ちまでは図１２に示したホットスタンバイ系ブート処理フローと同じである。新ホットスタンバイ系では、リンク確立待ちとなる（Ｓ８）。
【００１６】
この状態でリンクが確立すると（Ｓ９）、アクティブ系からホットスタンバイ系へのメモリ全面コピー動作が行われる（Ｓ１０）。以上でスイッチオーバフロー処理が完了する。次に、アクティブ系からホットスタンバイ系への呼毎メモリコピー動作が開始される（Ｓ１１）。
【００１７】
従来のこの種装置としては、呼制御系装置と、被制御系装置間の信号送受信状態を管理し、ヘルスチェック信号若しくは呼処理信号の送受信が行えなくなった場合に、障害箇所が呼制御装置側にあるのか、被制御系装置側にあるのかの障害箇所の特定を行ない、同一呼制御系装置が複数の被制御系装置を制御している場合に、他の被制御系装置との信号送受信状態を確認することで、切り分けを行なうようにした技術が知られている（例えば特許文献１参照）。
【特許文献１】特開２００３−７８５６７号公報（段落００１２〜００１８、図１〜図３）
【発明の開示】
【発明が解決しようとする課題】
【００１８】
従来の局用交換機では、アクティブ／ホットスタンバイ構成のハードウェア二重化方式を採用し、アクティブ／ホットスタンバイ間の二重化方式として、ハードウェアによるＤＭＡ転送方式で実現している。これにより、アクティブ／ホットスタンバイ系切り替えが発生しても、メモリの両系で常に同じ内容が維持され、途中まで進んでいた呼を救済し、処理を継続することができる。
【００１９】
しかしながら、汎用サーバを用いたＳＩＰサーバ等の呼処理サーバでアクティブ系／ホットスタンバイ系のスイッチオーバ時に呼救済を実現するためには、クラスタシステムのアクティブ／ホットスタンバイサーバ間でＮＩＣを介したデータ転送によるメモリ二重化の実現が必要である。
【００２０】
ＮＩＣを介して全ての生成・変更・削除されたデータをホットスタンバイ系に転送する機能を呼処理を行なうスレッドと同一スレッド上で行なうと、マルチスレッド・マルチＣＰＵ上での処理でも呼処理に利用するＣＰＵの一つを占有してしまうため、呼処理サービスを中断し、阻害することになる。
【００２１】
図１４は従来の問題点の説明図である。呼処理スレッド１があるものとして、同一スレッド上でホットスタンバイ系サーバへ転送処理を行なうと、この間は呼処理スレッド１が転送処理のために食われてしまい、他の待ちキューに入った呼処理スレッドも動作できないという問題がある。
【００２２】
本発明はこのような課題に鑑みてなされたものであって、データ転送処理中も呼処理サービスを中断する必要がない無中断メモリレプリケーション方法を提供することを目的としている。
【課題を解決するための手段】
【００２３】
（１）請求項１記載の発明は、アクティブ／ホットスタンバイ構成の呼処理サービスを行なうサーバにおいて、メモリレプリケーションのためにアクティブ系では呼処理プロセスを、呼処理サービスを行なうスレッドとメモリの転送を行なうスレッドに分け、それぞれを別のＣＰＵに割り付け、メモリ内容のコミットを行ないメモリ転送を行なう呼を含めた全ての呼処理サービスを中断することなく、ホットスタンバイ系に呼処理サービスのメモリ内容のコミット契機とは非同期にメモリのコピーデータを転送し、またホットスタンバイ系では、ホットスタンバイ状態の呼処理プロセスから起動されたデータ受信スレッドを起動して、アクティブ系サーバから転送されたメモリのコピーデータを実際のデータエリアに再配置する、ようにしたことを特徴とする。
【００２４】
（２）請求項２記載の発明は、アクティブ／ホットスタンバイ構成の呼処理サービスを行なうサーバにおいて、メモリレプリケーションのためにアクティブ系では呼処理プロセスを呼処理サービスを行なうスレッドと、メモリのコピーを行なうスレッドと、メモリの転送を行なうスレッドに分け、それぞれを別のＣＰＵに割り付けることで、メモリ内容のコミットを行ない、メモリ転送を行なう呼を除いた呼処理サービスを中断することなく、ホットスタンバイ系に呼処理サービスのメモリ内容のコミット契機と同期してメモリのコピーを転送し、また、ホットスタンバイ系ではホットスタンバイ状態の呼処理プロセスから起動されたデータ受信スレッドを起動して、アクティブ系から転送されたメモリのコピーデータを実際のデータエリアに再配置する、ようにしたことを特徴とする。
【００２５】
（３）請求項３記載の発明は、アクティブ／ホットスタンバイ構成の呼処理サービスを行なうサーバにおいて、アクティブ系サーバからのデータを受信したホットスタンバイ系サーバにて、ホットスタンバイ状態の呼処理プロセスからデータ受信スレッドとコピーデータ再配置スレッドを起動し、少なくともデータ受信スレッドを再配置スレッドとは別のＣＰＵに割り付けることで、アクティブ系から転送されたメモリのコピーデータを一旦バッファにコピーし、キューイングした後で実際のデータエリアに再配置する、ようにしたことを特徴とする。
【００２６】
（４）請求項４記載の発明は、前記メモリのコピーを行なうスレッドを起動する際に、固定のＣＰＵに割り付けるのではなく、データ転送スレッドに割り付けたＣＰＵを除くいずれかのＣＰＵの内、基もＣＰＵ使用率の低いＣＰＵを検索し、そのＣＰＵへ割り付けることを特徴とする。
【発明の効果】
【００２７】
（１）請求項１記載の発明によれば、呼処理とデータ転送の２つのスレッドに分けることで、ネットワークをまたいだサーバ間の転送遅延に影響なく、呼処理が続けられるようになる。
【００２８】
（２）請求項２記載の発明によれば、呼処理とデータコピーとデータ転送という３つのスレッドに分け、データコピー中は呼処理を停止することになるが、更に遅延が大きいサーバ間転送には影響を受けず、呼処理が続けられるようになる。この発明によれば、継続する呼処理の中でメモリの内容が書き換わっても、既にコピーが別のバッファに取り込まれているので、影響を受けることがない。
【００２９】
（３）請求項３記載の発明によれば、ホットスタンバイ側にて受信データの不完全性を排除することが可能となる。
（４）請求項４記載の発明によれば、請求項２のデータコピー処理の割り付けＣＰＵを固定としないで空きＣＰＵに割り付け、データ転送に比較して処理時間が短いコピー処理に１ＣＰＵを占有させずに呼処理の空き時間を利用させることでＣＰＵを有効活用し、呼処理性能を向上させることができる。
【発明を実施するための最良の形態】
【００３０】
以下、図面を参照して本発明の実施の形態例を詳細に説明する。以下に示す本発明は、図１０に示したシステム構成で動作するものである。
図１は第１の発明の構成例を示す図である。図１０と同一のものは、同一の符号を付して示す。図において、１０はサーバであり、＃１がアクティブ系の呼処理サーバであるアクティブ系サーバ、＃２がホットスタンバイ系の呼処理サーバであるホットスタンバイ系サーバである。６はアクティブ系サーバ１０内に設けられたＣＰＵである。ここでは、ＣＰＵ１とＣＰＵ２が設けられている場合を示す。４はホットスタンバイ系サーバ１０内に設けられたＣＰＵである。図では、１個しか示していないが、必要に応じて複数のＣＰＵ４を設けることができる。
【００３１】
アクティブ系サーバ１０側において、スレッドは呼処理を行なうスレッド（スレッド１，スレッド２）と、データ転送を行なうスレッドに分かれている。呼処理スレッド１と２はＣＰＵ２が担当し、データ転送スレッドはＣＰＵ１が担当する。ホットスタンバイ系サーバ１０側では、データ受信スレッドがデータ受信処理用として動作し、具体的にはＣＰＵ４が担当する。アクティブ系サーバ１０においてデータ転送スレッドは、ＮＩＣ５とＬＡＮ１５を介してホットスタンバイ系サーバ１０と接続される（図１０参照）。このように構成されたシステムの動作を説明すれば、以下の通りである。
【００３２】
アクティブ／ホットスタンバイ構成の呼処理サービスを行なうサーバ１０において、メモリレプリケーションのためにアクティブ系では呼処理プロセスを、呼処理サービスを行なうスレッド（呼処理スレッド）とメモリの転送を行なうスレッド（データ転送スレッド）に分ける。そして、それぞれを別のＣＰＵに割り付ける。ここで、ＯＳやミドルウェアの機能として、１プロセス内の任意のスレッドを固定のＣＰＵに割り付けることが可能であることが前提である。
【００３３】
図１を見ると明らかなように、データ転送スレッドはＣＰＵ１に割り当てられ、呼処理スレッドはＣＰＵ２に割り当てられている。呼処理スレッドとデータ転送スレッドに分け、それぞれを別のＣＰＵに割り付けることで、メモリ内容のコミット（確定）を行ない、メモリ転送を行なう呼を含めた全ての呼処理サービスを中断することなく、ホットスタンバイ系に呼処理サービスのメモリ内容のコミット契機とは非同期にメモリのコピーデータを転送し、またホットスタンバイ系ではホットスタンバイ状態の呼処理プロセスから起動されたデータ受信スレッドを起動して、アクティブ系から転送されたメモリのコピーデータを実際のデータエリアに再配置するようにしている。ここで、図に示すように、呼処理スレッド１がデータ転送を行なっている区間（ΔＴ）でメモリが書き換わる可能性がないことが前提となる。なぜなら、この期間Δで転送処理中にデータが書き換わってはアクティブ系とホットスタンバイ系のデータの同一性が損なわれてしまうからである。
【００３４】
このように、この実施の形態例によれば、呼処理スレッドを呼処理とデータ転送の２つのスレッドに分けることで、ネットワークをまたいだサーバ間の転送遅延に影響なく、呼処理が続けられるようになる。
【００３５】
図２は第２の発明の構成例を示す図である。図１０と同一のものは、同一の符号を付して示す。図において、１０はアクティブ系サーバであり、ＣＰＵ６はＣＰＵ１〜ＣＰＵ３までの３個設けた場合を示している。呼処理スレッド１と呼処理スレッド２はＣＰＵ３に割り当てられ、転送データコピースレッドはＣＰＵ２に割り当てられ、データ転送スレッドはＣＰＵ１に割り当てられている。このように構成されたシステムの動作を説明すれば、以下の通りである。
【００３６】
アクティブ／ホットスタンバイ構成の呼処理サービスを行なうサーバ１０において、メモリレプリケーションのためにアクティブ系では、呼処理プロセスを呼処理サービスを行なうスレッド（呼処理スレッド）と、メモリのコピーを行なうスレッド（転送データコピースレッド）と、メモリの転送を行なうスレッド（データ転送スレッド）に分け、それぞれを別のＣＰＵに割り付けている。
【００３７】
このようにすることで、メモリ内容のコミットを行ない、メモリ転送を行なう呼を除いた呼処理サービスを中断することなく、ホットスタンバイ系に呼処理サービスのメモリ内容のコミット契機と同期してメモリのコピーを転送し、またホットスタンバイ系では、ホットスタンバイ状態の呼処理プロセスから起動されたデータ受信スレッドを起動して、アクティブ系から転送されたメモリのコピーデータを実際のデータエリアに再配置するようになっている。
【００３８】
このように、この実施の形態例によれば、呼処理とデータコピーとデータ転送という３つのスレッドに分け、データコピー中は呼処理を停止することになるが、更に遅延が大きいサーバ間転送には影響を受けず、呼処理が続けられるようになる。この実施の形態例によれば、継続する呼処理の中でメモリの内容が書き換わっても、既に転送データコピースレッドによりコピーが別のバッファに取り込まれているので、影響を受けることはない。
【００３９】
図３は第３の発明の構成例を示す図で、ホットスタンバイ側の構成を示している。図１０と同一のものは、同一の符号を付して示す。図において、１０はホットスタンバイ側のサーバであり、中にＣＰＵ４が含まれている。このＣＰＵ４としては、ＣＰＵ１とＣＰＵ２が設けられている。データ受信スレッドはＣＰＵ１に割り当てられ、コピーデータ再配置スレッドはＣＰＵ２に割り当てられている。このように構成されたシステムの動作を説明すれば、以下の通りである。
【００４０】
アクティブ／ホットスタンバイ構成の呼処理サービスを行なうサーバにおいて、先の第１の発明、第２の発明のアクティブ系からのデータを受信したホットスタンバイ系にて、ホットスタンバイ状態の呼処理プロセスからデータ受信スレッドとコピーデータ再配置スレッドを起動して、少なくともデータ受信スレッドを再配置スレッドとは別のＣＰＵに割り付ける。
【００４１】
このようにすることで、アクティブ系から転送されたメモリのコピーデータを一旦バッファにコピーし、キューイングした後で実際のデータエリアに再配置するものである。もし、受信中のデータが本来のデータ長受信できなかった場合には、受信中のデータを破棄することで、異常・不十分なデータを再配置することを防止するものである。
【００４２】
この実施の形態例によれば、ホットスタンバイ側にて受信データの不完全性を排除することが可能となる。
図４は第４の発明の構成例を示す図で、アクティブ系サーバの動作を示している。図１０と同一のものは、同一の符号を付して示す。図において、１０はアクティブ系サーバ、６は該アクティブ系サーバ１０内に設けられたＣＰＵである。図では、ＣＰＵが３個設けられた例を示している。ここで、ＣＰＵ１はデータ転送スレッド、ＣＰＵ２は呼処理スレッドである。ＣＰＵｉは使用率の低いＣＰＵである。このように構成されたシステムの動作を説明すれば、以下の通りである。
【００４３】
前述した第２の発明において、転送データをコピーする転送データコピースレッドを割り当てるＣＰＵを、固定のＣＰＵに割り付けるのではなく、データ転送スレッドに割り付けられたＣＰＵを除く何れかのＣＰＵの内、最もＣＰＵ使用率の低いＣＰＵを呼処理スレッドが検索し、そのＣＰＵ（ここではＣＰＵｉ）へ割り付ける。このようにすれば、コピー処理に専有化させずにＣＰＵリソースを有効に活用することができる。
【００４４】
この実施の形態例によれば、請求項２のデータコピー処理の割り付けＣＰＵを固定しないで、空きＣＰＵに割り付け、データ転送に比較して処理時間が短いコピー処理１ＣＰＵを専有させずに呼処理の空き時間を利用させることでＣＰＵを有効活用し、呼処理性能を向上させることができる。
【００４５】
図５は第１の発明の動作フローを示す図である。図１０と同一のものは、同一の符号を付して示す。先ずアクティブ系サーバ１０における呼処理スレッド側動作について説明する。スレッドがＣＰＵに割り当てられた状態で、呼に関するデータを書き換えて、メモリをホットスタンバイ系に転送する契機に達した場合（Ｓ１）、転送するデータのアドレスリストを作成する（Ｓ２）。ここで、アドレスリストとは、機能部ＩＤとアドレスとデータ長（レングス）のセットが複数組み合わされたリストのことである。次に、データ転送スレッドのキュー（転送キュー）２０に転送を指示する（Ｓ３）。その後、呼処理を継続する動作となる（Ｓ４）。
【００４６】
次に、データ転送スレッド側の動作について説明する。データ転送側スレッドは、周期的に転送キュー２０からアドレスリストを取り出す（Ｓ５）。そして、取り出したアドレスリストの先頭に転送先のサーバ名とファイルの版数をつけてホットスタンバイ系に送付する（Ｓ６）。次に、アドレスリストの先頭から、指定されたアドレスからデータ長分をホットスタンバイ系に送付する（Ｓ７）。ここで、データを転送する場合にメモリからデータを読み出して転送する。次に、所定の個数分回ったかどうかチェックする（Ｓ８）。ここで、個数分回ったとは転送キュー２０に順番待ちされているアドレスリストの個数である。回った場合には、ステップＳ５に戻ってキューからのアドレスリスト取り出し動作を行なう。回っていない場合には、ステップＳ７に戻り、データの送付を行なう。
【００４７】
次にホットスタンバイ系サーバの動作について説明する。前述の転送先サーバ名とファイルの版数及びデータは、ＬＡＮ１５（図１０参照）経由でホットスタンバイ系に送信され、受信キュー２１にてキューイングされる。データ受信スレッドは、周期的にキューからデータを取り出し（Ｓ９）、リストの先頭が見つかったかどうかチェックする（Ｓ１０）。見つからない場合には、ステップＳ９に戻る。見つかった場合には、転送先サーバ名とファイルバージョンが合っているかどうかチェックする（Ｓ１１）。合っていない場合には、ステップＳ９に戻り、キューからのデータ取り出し動作を行なう。
【００４８】
合っていた場合には、アドレスリストのデータ長分を再配置アドレスにコピーし（Ｓ１２）、個数分アドレスリストを取り出す（Ｓ１３）。次に、所定の個数分回ったかどういかチェックし（Ｓ１４）、回っていない場合にはステップＳ１２に戻りアドレスリストを取り出し、回っている場合には、ステップＳ９に戻る。
【００４９】
図７は第２の発明のアクティブ系サーバ側の動作フローを示す図である。図１０と同一のものは、同一の符号を付して示す。先ず、呼処理スレッド側の動作について説明する。スレッドがＣＰＵに割り当てられた状態で、呼に関するデータを書き換えて、メモリをホットスタンバイ系に転送する契機に達した場合（Ｓ１）、転送するデータのアドレスリストを作成する（Ｓ２）。ここで、アドレスリストは、機能部ＩＤとアドレスとデータ長のセットが複数組み合わされたリストである。次に、転送データコピースレッドにコピーを指示する（Ｓ３）。その後、呼処理中断してスリープする（Ｓ４）。
【００５０】
次に、転送データコピースレッド側動作について説明する。呼処理スレッド側からコピー指示を受けたら、指示を契機にアドレスリストを取り出す（Ｓ５）。次に、アドレスリストの先頭から、指定されたアドレスからデータ長分をメモリ転送用バッファにコピーする（Ｓ６）。次に、個数分回ったかどうかチェックする（Ｓ７）。回っていない場合にはステップＳ６に戻りコピー動作を行なう。
【００５１】
個数分回った場合には、メモリ転送用バッファを転送キュー２０にキューイングする（Ｓ８）。そして、コピー処理の終了を呼処理スレッド側に通知する（Ｓ９）。呼処理スレッドは、この通知を受けると、呼処理を継続する（Ｓ１０）。
【００５２】
次に、データ転送スレッド側動作について説明する。データ転送スレッドでは、周期的に転送キュー２０からメモリ転送用バッファを取り出し（Ｓ１１）、取り出したメモリ転送用バッファの先頭に転送先のサーバ名とファイルの版数を付けてホットスタンバイ系に送付する（Ｓ１２）。ホットスタンバイ系側の動作は、図５の第１の発明の場合と同じである。
【００５３】
図８は第３の発明のホットスタンバイ系サーバ側の動作フローを示す図である。図５、図１０と同一のものは同一の符号を付して示す。先ず、データ受信スレッド側の動作について説明する。ＬＡＮ１５経由でアクティブ系サーバからデータが送られてくると、受信キュー２１にデータが溜まる。データ受信スレッドは、周期的に受信キュー２１からデータを取り出す（Ｓ１）。
【００５４】
次に、リストの先頭を見つけたかどうかチェックする（Ｓ２）。リストの先頭を見つけられない場合にはステップＳ１に戻り、キューからのデータ取り出しを行なう。リストの先頭を見つけた場合には、ファイルバージョンが合っているかどうかチェックする（Ｓ３）。合っていない場合には、ステップＳ１に戻る。ファイルバージョンが合っている場合は、受信キュー２１に待っている個数分アドレスリストを取り出す（Ｓ４）。そして、アドレスリストのデータ長分を再配置バッファにキューイングする（Ｓ６）。この結果、再配置キュー２２にアドレスリストのデータ長がキューイングされる。データ受信スレッド側では、はじめに戻る（Ｓ７）。
【００５５】
次に、データ再配置スレッド側の動作について説明する。周期的に再配置キュー２２からデータを取り出し（Ｓ９）、アドレスリストのデータ長分を再配置アドレスにコピーする（Ｓ９）。そして、再配置キュー２２に待っている個数分回ったかどうかチェックする（Ｓ１０）。回っていない場合には、ステップＳ９に戻りコピー動作を行なう。回っている場合には、ステップＳ８に戻り、再配置キュー２２からのデータ取り出しを行なう。
【００５６】
図９は第４の発明のアクティブ系サーバ側の動作フローを示す図である。図５、図１０と同一のものは、同一の符号を付して示す。先ず、呼処理スレッド側動作について説明する。スレッドがＣＰＵに割り当てられた状態で、呼に関するデータを書き換えて、メモリをホットスタンバイ系に転送する契機に達したものとする（Ｓ１）。この時、転送するデータのアドレスリストを作成する。ここで、アドレスリストは、機能部ＩＤと、アドレスと、データ長のセットが組み合わされたリストである。
【００５７】
次に、ＣＰＵ使用率の低いＣＰＵを検索し、そのＣＰＵに転送データコピースレッドを割り付ける（Ｓ３）。次に、転送データコピースレッドにコピーを指示する（Ｓ４）。その後、呼処理を中断してスリープ状態に入る（Ｓ５）。
【００５８】
次に、転送データコピースレッド側動作について説明する。呼処理スレッド側からのコピー指示を受けると、この指示を契機にアドレスリストを取り出し（Ｓ６）、アドレスリストの先頭から、指定されたアドレスからデータ長分をメモリ転送用バッファにコピーする（Ｓ７）。そして、アドレスリストの個数が所定数だけ回ったかどうかチェックする（Ｓ８）。
【００５９】
所定数だけ回っていない場合には、ステップＳ７に戻りコピー動作を行なう。所定数だけ回っている場合には、メモリ転送用バッファを転送キュー２０にキューイングする（Ｓ９）。そして、コピー処理の終了を呼処理スレッド側に通知する（Ｓ１０）。呼処理スレッド側では、呼処理を継続する（Ｓ１１）。
【００６０】
次に、データ転送スレッド側の動作について説明する。周期的に転送キュー２０からメモリ転送用バッファを取り出し（Ｓ１２）、取り出したメモリ転送用バッファの先頭に転送先のサーバ名とファイルの版数を付けてホットスタンバイ系に送付する（Ｓ１３）。データはＬＡＮ１５経由でホットスタンバイ系サーバの受信キューに送信される。
【００６１】
従来の技術では、ＣＰＵ毎に担当する機能が割り当てられておらず、転送処理は呼処理の中に埋め込まれていたため、転送タイミング毎に呼処理スレッドの動作が阻害される原因となっていた。本発明では、
サーバ間のデータ転送時間＞＞メモリのコピー処理時間＞スレッドの切り替え時間
の関係にあることに着目し、この転送速度やコピー処理時間による影響を呼処理スレッドと切り離すこと、及びＩ／Ｏ中の呼処理スレッドをスリープさせ、他の呼処理スレッドにＣＰＵを利用させることで、ＣＰＵのＩ／Ｏによる占有時間を減らして有効活用することかできる。
【００６２】
以上のように、本発明ではＣＰＵの使用効率を上げることで、ハードウェアあたりの呼処理性能を向上させ、コストダウンにつなげることができる。本発明は、既存の１ＣＰＵで構成されていた交換機のような専用ハードウェア上のソフトウェアをサーバにポーティング（なるべく手を加えないで交換機を汎用サーバに載せ換えること）する際に非常に有効な手法である。
【００６３】
以上、詳細に説明したように、本発明によれば、データ転送処理中も呼処理サービスを中断する必要がない無中断メモリレプリケーション方法を提供することができる。
【図面の簡単な説明】
【００６４】
【図１】第１の発明の構成例を示す図である。
【図２】第２の発明の構成例を示す図である。
【図３】第３の発明の構成例を示す図である。
【図４】第４の発明の構成例を示す図である。
【図５】第１の発明の動作フローを示す図である。
【図６】転送先アドレスリストを示す図である。
【図７】第２の発明のアクティブ系サーバ側の動作フローを示す図である。
【図８】第３の発明のホットスタンバイ系サーバ側の動作フローを示す図である。
【図９】第４の発明のアクティブ系サーバ側の動作フローを示す図である。
【図１０】本発明の対象となるシステム構成を示す図である。
【図１１】サーバ上に分散するメモリエリアの説明図である。
【図１２】呼処理サーバのブートフローを示す図である。
【図１３】呼処理サーバのスイッチオーバフローを示す図である。
【図１４】従来の問題点の説明図である。
【符号の説明】
【００６５】
４    ＣＰＵ
６    ＣＰＵ
１０  サーバ
【図１】
2008009797.tif 000003
【図２】
2008009797.tif 000004
【図３】
2008009797.tif 000005
【図４】
2008009797.tif 000006
【図５】
2008009797.tif 000007
【図６】
2008009797.tif 000008
【図７】
2008009797.tif 000009
【図８】
2008009797.tif 000010
【図９】
2008009797.tif 000011
【図１０】
2008009797.tif 000012
【図１１】
2008009797.tif 000013
【図１２】
2008009797.tif 000014
【図１３】
2008009797.tif 000015
【図１４】
2008009797.tif 000016