JP2008009797A - 無中断メモリレプリケーション方法 - Google Patents

無中断メモリレプリケーション方法 Download PDF

Info

Publication number
JP2008009797A
JP2008009797A JP2006180657A JP2006180657A JP2008009797A JP 2008009797 A JP2008009797 A JP 2008009797A JP 2006180657 A JP2006180657 A JP 2006180657A JP 2006180657 A JP2006180657 A JP 2006180657A JP 2008009797 A JP2008009797 A JP 2008009797A
Authority
JP
Japan
Prior art keywords
call processing
memory
thread
data
hot standby
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
Application number
JP2006180657A
Other languages
English (en)
Inventor
Ryotaro Matsushita
亮太郎 松下
Takashi Sawada
孝 澤田
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 JP2006180657A priority Critical patent/JP2008009797A/ja
Publication of JP2008009797A publication Critical patent/JP2008009797A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Hardware Redundancy (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】本発明は無中断メモリレプリケーション方法に関し、データ転送処理中も呼処理サービスを中断する必要がない方法を提供することを目的としている。
【解決手段】アクティブ/ホットスタンバイ構成の呼処理サービスを行なうサーバにおいて、メモリレプリケーションのためにアクティブ系では呼処理プロセスを、呼処理サービスを行なうスレッドとメモリの転送を行なうスレッドに分け、それぞれを別のCPUに割り付け、メモリ内容のコミットを行ないメモリ転送を行なう呼を含めた全ての呼処理サービスを中断することなく、ホットスタンバイ系に呼処理サービスのメモリ内容のコミット契機とは非同期にメモリのコピーデータを転送し、またホットスタンバイ系では、ホットスタンバイ状態の呼処理プロセスから起動されたデータ受信スレッドを起動して、アクティブ系から転送されたメモリのコピーデータを実際のデータエリアに再配置するように構成する。
【選択図】図1

Description

本発明は無中断レプリケーション方法に関する。ここで、レプリケーションとはデータの複製を得ることをいう。
サーバベースの呼処理サーバでは、セッション(呼)情報をメモリ上のデータとして保持しており、Active/Hot−Stanby(アクティブ/ホットスタンバイ)系サーバ間で、系切り替え(スイッチオーバ)した際に呼を救済するためにはアクティブ/ホットスタンバイサーバ間のデータ転送が必要であった。この転送処理は、転送量が膨大なため、呼処理性能を阻害する要因になっていた。
近年、サーバのマルチCPU化や、CPUのマルチコア化が進み、1サーバ内で複数のCPUコアが利用できるようになり、そのCPUの使い方で、これまで課題となっていた性能阻害の問題を解決する手段がとれるようになってきている。
図10は本発明の対象となるシステム構成例示す図である。図において、10は呼処理サーバであり、アクティブ系とホットスタンバイ系に分かれている。#1がアクティブ系、#2がホットスタンバイ系であるものとする。呼処理サーバ10において、1は論理メモリ空間、2は呼処理プロセスである。3は呼処理プロセス2内に設けられたスレッド(処理単位)である。ホットスタンバイ系サーバ10において、4はCPUであり呼処理プロセス2内のスレッド3と接続されている。
6はアクティブ系の呼処理サーバ10内に設けられた複数のCPUである。ここでは、CPU4としてCPU1〜CPU4まで設けられた場合を示す。各CPU6は呼処理プロセス2内のスレッド3と接続されており、それぞれのCPUに対して複数のスレッドの組が設けられている。5は呼処理サーバ10と外部を接続するためのNIC(Network Interface Card)であり、それぞれLAN(Local Area Network)15と接続されている。そして、呼処理サーバ#1と呼処理サーバ#2とはLAN20を介してデータ通信を行なっている。
呼処理サーバ10は、VoIP(音声処理)やTV(テレビ)電話の分野で使用されるSIP(Session Initiation Protocol:IP電話等で用いる通信制御プロトコル)等のセッション(呼)を確立することで、End−to−Endの間でのリアルタイム通信を成立させるためのサーバである。
呼処理サーバ10では、呼を管理する呼処理プロセスが動作しており、呼処理プロセスはOS(オペレーティングシステム)等のスレッドスケジューラにより複数のCPUのどれかに割り付けられる複数のスレッドから構成されるマルチスレッド構成のプロセスである。同一プロセス上のスレッドからは、同一の論理メモリ空間が参照できる。
呼処理サーバ10は、アクティブ系とホットスタンバイ系の二重化構成をしており、サーバのNICを経由してLAN15で接続されている。ホットスタンバイ側では、同一ハードウェア構成で同じ呼処理プロセスが動作して、スイッチオーバを契機にすぐに呼処理を動作させることが可能である。呼処理プロセスから参照できる論理メモリ空間1はアクティブ系とサイズ・構成が共通である。
図11はサーバ上に分散するメモリエリアの説明図である。呼はいくつかの機能、例えば排他制御、呼制御、プロトコル制御、サービスシナリオから構成されている。そして、その機能オブジェクト毎に、呼に関連付けられた呼関連データというデータエリアを持っている。データエリアは、図11に示すように各機能毎に局在化した構成をしている方法と、呼単位に連続したエリアを捕捉する方法もある。図において、プログラムエリアはプログラムが動作するための領域であり、呼関連データエリアは、排他制御の呼関連データエリア、呼制御の呼関連データエリア、サービスシナリオの呼関連データエリア、プロトコル制御の呼関連データエリアに分かれている。即ち、各機能の呼関連データは、機能毎に局在化している。図の17はインスタンスが使用する呼関連データを示す。
図12は呼処理サーバのブートフローを示す図である。先ず、アクティブ系サーバの動作について説明する。先ず、サーバ電源を投入すると(S1)、OSを起動する(S2)。次に、クラスタミドルを起動する(S3)。ここで、クラスタミドルとは系を切り替え制御するためのミドルウェアである。ミドルウェアとは、OSとアプリケーションとを橋渡しするものである。
この後、系決定する(S4)。ここでは、アクティブ系に決定される。次に、アプリケーションを起動し(S5)、呼処理サービスを開始する(S6)。ここで、サービス開始時に周辺機器に新アクティブ系活性化の通知(アドレステーブルの書き換え等の依頼)を行なう。その後、リンク確立待ちとなる(S7)。
次に、ホットスタンバイ系サーバの動作について説明する。先ずサーバ電源が投入される(S8)。次に、OSが起動される(S9)。次に、クラスタミドルが起動される(S10)。その後に系が決定される(S11)。ここでは、ホットスタンバイ系となる。次に、アプリケーションが起動され(S12)、リンク確立待ちとなる(S13)。
以上の動作の後、アクティブ系サーバとホットスタンバイサーバとの間にリンクが確立する(S14)。リンクが確立したら、アクティブ系からホットスタンバイ系メモリに全面コピー処理がなされる(S15)。以上のシーケンスで系の切り替え動作は終了する。次に、アクティブ系からホットスタンバイ系へ呼毎のメモリコピーが行われる(S16)。
図13は呼処理サーバのスイッチオーバフローを示す図である。アクティブ系サーバとホットスタンバイ系サーバの動作を示している。先ず、アクティブ系からホットスタンバイ系へ呼毎メモリコピー中である(S1)。ここで、アクティブ系で異常を検出する(S2)。異常検出後の動作(すぐにサーバ切り替えを行なうか、自系で一度呼救済再開を行なうか、受付中のイベントは処理するか、廃棄するか等)は実装依存である。
異常を検出すると、アクティブ系サーバはホットスタンバイ系サーバに対して切り替え開始通知を出す(S3)。ホットスタンバイ系(新アクティブ系サーバ)は、ホットスタンバイからアクティブ系へ状態を変更する(S4)。そして、アプリケーションを起動し(S5)、リンク確立待ちとなる(S6)。異常を検出したアクティブ系(新ホットスタンバイ系)では、OSを再起動する(S7)。以下、リンク確立待ちまでは図12に示したホットスタンバイ系ブート処理フローと同じである。新ホットスタンバイ系では、リンク確立待ちとなる(S8)。
この状態でリンクが確立すると(S9)、アクティブ系からホットスタンバイ系へのメモリ全面コピー動作が行われる(S10)。以上でスイッチオーバフロー処理が完了する。次に、アクティブ系からホットスタンバイ系への呼毎メモリコピー動作が開始される(S11)。
従来のこの種装置としては、呼制御系装置と、被制御系装置間の信号送受信状態を管理し、ヘルスチェック信号若しくは呼処理信号の送受信が行えなくなった場合に、障害箇所が呼制御装置側にあるのか、被制御系装置側にあるのかの障害箇所の特定を行ない、同一呼制御系装置が複数の被制御系装置を制御している場合に、他の被制御系装置との信号送受信状態を確認することで、切り分けを行なうようにした技術が知られている(例えば特許文献1参照)。
特開2003−78567号公報(段落0012〜0018、図1〜図3)
従来の局用交換機では、アクティブ/ホットスタンバイ構成のハードウェア二重化方式を採用し、アクティブ/ホットスタンバイ間の二重化方式として、ハードウェアによるDMA転送方式で実現している。これにより、アクティブ/ホットスタンバイ系切り替えが発生しても、メモリの両系で常に同じ内容が維持され、途中まで進んでいた呼を救済し、処理を継続することができる。
しかしながら、汎用サーバを用いたSIPサーバ等の呼処理サーバでアクティブ系/ホットスタンバイ系のスイッチオーバ時に呼救済を実現するためには、クラスタシステムのアクティブ/ホットスタンバイサーバ間でNICを介したデータ転送によるメモリ二重化の実現が必要である。
NICを介して全ての生成・変更・削除されたデータをホットスタンバイ系に転送する機能を呼処理を行なうスレッドと同一スレッド上で行なうと、マルチスレッド・マルチCPU上での処理でも呼処理に利用するCPUの一つを占有してしまうため、呼処理サービスを中断し、阻害することになる。
図14は従来の問題点の説明図である。呼処理スレッド1があるものとして、同一スレッド上でホットスタンバイ系サーバへ転送処理を行なうと、この間は呼処理スレッド1が転送処理のために食われてしまい、他の待ちキューに入った呼処理スレッドも動作できないという問題がある。
本発明はこのような課題に鑑みてなされたものであって、データ転送処理中も呼処理サービスを中断する必要がない無中断メモリレプリケーション方法を提供することを目的としている。
(1)請求項1記載の発明は、アクティブ/ホットスタンバイ構成の呼処理サービスを行なうサーバにおいて、メモリレプリケーションのためにアクティブ系では呼処理プロセスを、呼処理サービスを行なうスレッドとメモリの転送を行なうスレッドに分け、それぞれを別のCPUに割り付け、メモリ内容のコミットを行ないメモリ転送を行なう呼を含めた全ての呼処理サービスを中断することなく、ホットスタンバイ系に呼処理サービスのメモリ内容のコミット契機とは非同期にメモリのコピーデータを転送し、またホットスタンバイ系では、ホットスタンバイ状態の呼処理プロセスから起動されたデータ受信スレッドを起動して、アクティブ系サーバから転送されたメモリのコピーデータを実際のデータエリアに再配置する、ようにしたことを特徴とする。
(2)請求項2記載の発明は、アクティブ/ホットスタンバイ構成の呼処理サービスを行なうサーバにおいて、メモリレプリケーションのためにアクティブ系では呼処理プロセスを呼処理サービスを行なうスレッドと、メモリのコピーを行なうスレッドと、メモリの転送を行なうスレッドに分け、それぞれを別のCPUに割り付けることで、メモリ内容のコミットを行ない、メモリ転送を行なう呼を除いた呼処理サービスを中断することなく、ホットスタンバイ系に呼処理サービスのメモリ内容のコミット契機と同期してメモリのコピーを転送し、また、ホットスタンバイ系ではホットスタンバイ状態の呼処理プロセスから起動されたデータ受信スレッドを起動して、アクティブ系から転送されたメモリのコピーデータを実際のデータエリアに再配置する、ようにしたことを特徴とする。
(3)請求項3記載の発明は、アクティブ/ホットスタンバイ構成の呼処理サービスを行なうサーバにおいて、アクティブ系サーバからのデータを受信したホットスタンバイ系サーバにて、ホットスタンバイ状態の呼処理プロセスからデータ受信スレッドとコピーデータ再配置スレッドを起動し、少なくともデータ受信スレッドを再配置スレッドとは別のCPUに割り付けることで、アクティブ系から転送されたメモリのコピーデータを一旦バッファにコピーし、キューイングした後で実際のデータエリアに再配置する、ようにしたことを特徴とする。
(4)請求項4記載の発明は、前記メモリのコピーを行なうスレッドを起動する際に、固定のCPUに割り付けるのではなく、データ転送スレッドに割り付けたCPUを除くいずれかのCPUの内、基もCPU使用率の低いCPUを検索し、そのCPUへ割り付けることを特徴とする。
(1)請求項1記載の発明によれば、呼処理とデータ転送の2つのスレッドに分けることで、ネットワークをまたいだサーバ間の転送遅延に影響なく、呼処理が続けられるようになる。
(2)請求項2記載の発明によれば、呼処理とデータコピーとデータ転送という3つのスレッドに分け、データコピー中は呼処理を停止することになるが、更に遅延が大きいサーバ間転送には影響を受けず、呼処理が続けられるようになる。この発明によれば、継続する呼処理の中でメモリの内容が書き換わっても、既にコピーが別のバッファに取り込まれているので、影響を受けることがない。
(3)請求項3記載の発明によれば、ホットスタンバイ側にて受信データの不完全性を排除することが可能となる。
(4)請求項4記載の発明によれば、請求項2のデータコピー処理の割り付けCPUを固定としないで空きCPUに割り付け、データ転送に比較して処理時間が短いコピー処理に1CPUを占有させずに呼処理の空き時間を利用させることでCPUを有効活用し、呼処理性能を向上させることができる。
以下、図面を参照して本発明の実施の形態例を詳細に説明する。以下に示す本発明は、図10に示したシステム構成で動作するものである。
図1は第1の発明の構成例を示す図である。図10と同一のものは、同一の符号を付して示す。図において、10はサーバであり、#1がアクティブ系の呼処理サーバであるアクティブ系サーバ、#2がホットスタンバイ系の呼処理サーバであるホットスタンバイ系サーバである。6はアクティブ系サーバ10内に設けられたCPUである。ここでは、CPU1とCPU2が設けられている場合を示す。4はホットスタンバイ系サーバ10内に設けられたCPUである。図では、1個しか示していないが、必要に応じて複数のCPU4を設けることができる。
アクティブ系サーバ10側において、スレッドは呼処理を行なうスレッド(スレッド1,スレッド2)と、データ転送を行なうスレッドに分かれている。呼処理スレッド1と2はCPU2が担当し、データ転送スレッドはCPU1が担当する。ホットスタンバイ系サーバ10側では、データ受信スレッドがデータ受信処理用として動作し、具体的にはCPU4が担当する。アクティブ系サーバ10においてデータ転送スレッドは、NIC5とLAN15を介してホットスタンバイ系サーバ10と接続される(図10参照)。このように構成されたシステムの動作を説明すれば、以下の通りである。
アクティブ/ホットスタンバイ構成の呼処理サービスを行なうサーバ10において、メモリレプリケーションのためにアクティブ系では呼処理プロセスを、呼処理サービスを行なうスレッド(呼処理スレッド)とメモリの転送を行なうスレッド(データ転送スレッド)に分ける。そして、それぞれを別のCPUに割り付ける。ここで、OSやミドルウェアの機能として、1プロセス内の任意のスレッドを固定のCPUに割り付けることが可能であることが前提である。
図1を見ると明らかなように、データ転送スレッドはCPU1に割り当てられ、呼処理スレッドはCPU2に割り当てられている。呼処理スレッドとデータ転送スレッドに分け、それぞれを別のCPUに割り付けることで、メモリ内容のコミット(確定)を行ない、メモリ転送を行なう呼を含めた全ての呼処理サービスを中断することなく、ホットスタンバイ系に呼処理サービスのメモリ内容のコミット契機とは非同期にメモリのコピーデータを転送し、またホットスタンバイ系ではホットスタンバイ状態の呼処理プロセスから起動されたデータ受信スレッドを起動して、アクティブ系から転送されたメモリのコピーデータを実際のデータエリアに再配置するようにしている。ここで、図に示すように、呼処理スレッド1がデータ転送を行なっている区間(ΔT)でメモリが書き換わる可能性がないことが前提となる。なぜなら、この期間Δで転送処理中にデータが書き換わってはアクティブ系とホットスタンバイ系のデータの同一性が損なわれてしまうからである。
このように、この実施の形態例によれば、呼処理スレッドを呼処理とデータ転送の2つのスレッドに分けることで、ネットワークをまたいだサーバ間の転送遅延に影響なく、呼処理が続けられるようになる。
図2は第2の発明の構成例を示す図である。図10と同一のものは、同一の符号を付して示す。図において、10はアクティブ系サーバであり、CPU6はCPU1〜CPU3までの3個設けた場合を示している。呼処理スレッド1と呼処理スレッド2はCPU3に割り当てられ、転送データコピースレッドはCPU2に割り当てられ、データ転送スレッドはCPU1に割り当てられている。このように構成されたシステムの動作を説明すれば、以下の通りである。
アクティブ/ホットスタンバイ構成の呼処理サービスを行なうサーバ10において、メモリレプリケーションのためにアクティブ系では、呼処理プロセスを呼処理サービスを行なうスレッド(呼処理スレッド)と、メモリのコピーを行なうスレッド(転送データコピースレッド)と、メモリの転送を行なうスレッド(データ転送スレッド)に分け、それぞれを別のCPUに割り付けている。
このようにすることで、メモリ内容のコミットを行ない、メモリ転送を行なう呼を除いた呼処理サービスを中断することなく、ホットスタンバイ系に呼処理サービスのメモリ内容のコミット契機と同期してメモリのコピーを転送し、またホットスタンバイ系では、ホットスタンバイ状態の呼処理プロセスから起動されたデータ受信スレッドを起動して、アクティブ系から転送されたメモリのコピーデータを実際のデータエリアに再配置するようになっている。
このように、この実施の形態例によれば、呼処理とデータコピーとデータ転送という3つのスレッドに分け、データコピー中は呼処理を停止することになるが、更に遅延が大きいサーバ間転送には影響を受けず、呼処理が続けられるようになる。この実施の形態例によれば、継続する呼処理の中でメモリの内容が書き換わっても、既に転送データコピースレッドによりコピーが別のバッファに取り込まれているので、影響を受けることはない。
図3は第3の発明の構成例を示す図で、ホットスタンバイ側の構成を示している。図10と同一のものは、同一の符号を付して示す。図において、10はホットスタンバイ側のサーバであり、中にCPU4が含まれている。このCPU4としては、CPU1とCPU2が設けられている。データ受信スレッドはCPU1に割り当てられ、コピーデータ再配置スレッドはCPU2に割り当てられている。このように構成されたシステムの動作を説明すれば、以下の通りである。
アクティブ/ホットスタンバイ構成の呼処理サービスを行なうサーバにおいて、先の第1の発明、第2の発明のアクティブ系からのデータを受信したホットスタンバイ系にて、ホットスタンバイ状態の呼処理プロセスからデータ受信スレッドとコピーデータ再配置スレッドを起動して、少なくともデータ受信スレッドを再配置スレッドとは別のCPUに割り付ける。
このようにすることで、アクティブ系から転送されたメモリのコピーデータを一旦バッファにコピーし、キューイングした後で実際のデータエリアに再配置するものである。もし、受信中のデータが本来のデータ長受信できなかった場合には、受信中のデータを破棄することで、異常・不十分なデータを再配置することを防止するものである。
この実施の形態例によれば、ホットスタンバイ側にて受信データの不完全性を排除することが可能となる。
図4は第4の発明の構成例を示す図で、アクティブ系サーバの動作を示している。図10と同一のものは、同一の符号を付して示す。図において、10はアクティブ系サーバ、6は該アクティブ系サーバ10内に設けられたCPUである。図では、CPUが3個設けられた例を示している。ここで、CPU1はデータ転送スレッド、CPU2は呼処理スレッドである。CPUiは使用率の低いCPUである。このように構成されたシステムの動作を説明すれば、以下の通りである。
前述した第2の発明において、転送データをコピーする転送データコピースレッドを割り当てるCPUを、固定のCPUに割り付けるのではなく、データ転送スレッドに割り付けられたCPUを除く何れかのCPUの内、最もCPU使用率の低いCPUを呼処理スレッドが検索し、そのCPU(ここではCPUi)へ割り付ける。このようにすれば、コピー処理に専有化させずにCPUリソースを有効に活用することができる。
この実施の形態例によれば、請求項2のデータコピー処理の割り付けCPUを固定しないで、空きCPUに割り付け、データ転送に比較して処理時間が短いコピー処理1CPUを専有させずに呼処理の空き時間を利用させることでCPUを有効活用し、呼処理性能を向上させることができる。
図5は第1の発明の動作フローを示す図である。図10と同一のものは、同一の符号を付して示す。先ずアクティブ系サーバ10における呼処理スレッド側動作について説明する。スレッドがCPUに割り当てられた状態で、呼に関するデータを書き換えて、メモリをホットスタンバイ系に転送する契機に達した場合(S1)、転送するデータのアドレスリストを作成する(S2)。ここで、アドレスリストとは、機能部IDとアドレスとデータ長(レングス)のセットが複数組み合わされたリストのことである。次に、データ転送スレッドのキュー(転送キュー)20に転送を指示する(S3)。その後、呼処理を継続する動作となる(S4)。
次に、データ転送スレッド側の動作について説明する。データ転送側スレッドは、周期的に転送キュー20からアドレスリストを取り出す(S5)。そして、取り出したアドレスリストの先頭に転送先のサーバ名とファイルの版数をつけてホットスタンバイ系に送付する(S6)。次に、アドレスリストの先頭から、指定されたアドレスからデータ長分をホットスタンバイ系に送付する(S7)。ここで、データを転送する場合にメモリからデータを読み出して転送する。次に、所定の個数分回ったかどうかチェックする(S8)。ここで、個数分回ったとは転送キュー20に順番待ちされているアドレスリストの個数である。回った場合には、ステップS5に戻ってキューからのアドレスリスト取り出し動作を行なう。回っていない場合には、ステップS7に戻り、データの送付を行なう。
次にホットスタンバイ系サーバの動作について説明する。前述の転送先サーバ名とファイルの版数及びデータは、LAN15(図10参照)経由でホットスタンバイ系に送信され、受信キュー21にてキューイングされる。データ受信スレッドは、周期的にキューからデータを取り出し(S9)、リストの先頭が見つかったかどうかチェックする(S10)。見つからない場合には、ステップS9に戻る。見つかった場合には、転送先サーバ名とファイルバージョンが合っているかどうかチェックする(S11)。合っていない場合には、ステップS9に戻り、キューからのデータ取り出し動作を行なう。
合っていた場合には、アドレスリストのデータ長分を再配置アドレスにコピーし(S12)、個数分アドレスリストを取り出す(S13)。次に、所定の個数分回ったかどういかチェックし(S14)、回っていない場合にはステップS12に戻りアドレスリストを取り出し、回っている場合には、ステップS9に戻る。
図7は第2の発明のアクティブ系サーバ側の動作フローを示す図である。図10と同一のものは、同一の符号を付して示す。先ず、呼処理スレッド側の動作について説明する。スレッドがCPUに割り当てられた状態で、呼に関するデータを書き換えて、メモリをホットスタンバイ系に転送する契機に達した場合(S1)、転送するデータのアドレスリストを作成する(S2)。ここで、アドレスリストは、機能部IDとアドレスとデータ長のセットが複数組み合わされたリストである。次に、転送データコピースレッドにコピーを指示する(S3)。その後、呼処理中断してスリープする(S4)。
次に、転送データコピースレッド側動作について説明する。呼処理スレッド側からコピー指示を受けたら、指示を契機にアドレスリストを取り出す(S5)。次に、アドレスリストの先頭から、指定されたアドレスからデータ長分をメモリ転送用バッファにコピーする(S6)。次に、個数分回ったかどうかチェックする(S7)。回っていない場合にはステップS6に戻りコピー動作を行なう。
個数分回った場合には、メモリ転送用バッファを転送キュー20にキューイングする(S8)。そして、コピー処理の終了を呼処理スレッド側に通知する(S9)。呼処理スレッドは、この通知を受けると、呼処理を継続する(S10)。
次に、データ転送スレッド側動作について説明する。データ転送スレッドでは、周期的に転送キュー20からメモリ転送用バッファを取り出し(S11)、取り出したメモリ転送用バッファの先頭に転送先のサーバ名とファイルの版数を付けてホットスタンバイ系に送付する(S12)。ホットスタンバイ系側の動作は、図5の第1の発明の場合と同じである。
図8は第3の発明のホットスタンバイ系サーバ側の動作フローを示す図である。図5、図10と同一のものは同一の符号を付して示す。先ず、データ受信スレッド側の動作について説明する。LAN15経由でアクティブ系サーバからデータが送られてくると、受信キュー21にデータが溜まる。データ受信スレッドは、周期的に受信キュー21からデータを取り出す(S1)。
次に、リストの先頭を見つけたかどうかチェックする(S2)。リストの先頭を見つけられない場合にはステップS1に戻り、キューからのデータ取り出しを行なう。リストの先頭を見つけた場合には、ファイルバージョンが合っているかどうかチェックする(S3)。合っていない場合には、ステップS1に戻る。ファイルバージョンが合っている場合は、受信キュー21に待っている個数分アドレスリストを取り出す(S4)。そして、アドレスリストのデータ長分を再配置バッファにキューイングする(S6)。この結果、再配置キュー22にアドレスリストのデータ長がキューイングされる。データ受信スレッド側では、はじめに戻る(S7)。
次に、データ再配置スレッド側の動作について説明する。周期的に再配置キュー22からデータを取り出し(S9)、アドレスリストのデータ長分を再配置アドレスにコピーする(S9)。そして、再配置キュー22に待っている個数分回ったかどうかチェックする(S10)。回っていない場合には、ステップS9に戻りコピー動作を行なう。回っている場合には、ステップS8に戻り、再配置キュー22からのデータ取り出しを行なう。
図9は第4の発明のアクティブ系サーバ側の動作フローを示す図である。図5、図10と同一のものは、同一の符号を付して示す。先ず、呼処理スレッド側動作について説明する。スレッドがCPUに割り当てられた状態で、呼に関するデータを書き換えて、メモリをホットスタンバイ系に転送する契機に達したものとする(S1)。この時、転送するデータのアドレスリストを作成する。ここで、アドレスリストは、機能部IDと、アドレスと、データ長のセットが組み合わされたリストである。
次に、CPU使用率の低いCPUを検索し、そのCPUに転送データコピースレッドを割り付ける(S3)。次に、転送データコピースレッドにコピーを指示する(S4)。その後、呼処理を中断してスリープ状態に入る(S5)。
次に、転送データコピースレッド側動作について説明する。呼処理スレッド側からのコピー指示を受けると、この指示を契機にアドレスリストを取り出し(S6)、アドレスリストの先頭から、指定されたアドレスからデータ長分をメモリ転送用バッファにコピーする(S7)。そして、アドレスリストの個数が所定数だけ回ったかどうかチェックする(S8)。
所定数だけ回っていない場合には、ステップS7に戻りコピー動作を行なう。所定数だけ回っている場合には、メモリ転送用バッファを転送キュー20にキューイングする(S9)。そして、コピー処理の終了を呼処理スレッド側に通知する(S10)。呼処理スレッド側では、呼処理を継続する(S11)。
次に、データ転送スレッド側の動作について説明する。周期的に転送キュー20からメモリ転送用バッファを取り出し(S12)、取り出したメモリ転送用バッファの先頭に転送先のサーバ名とファイルの版数を付けてホットスタンバイ系に送付する(S13)。データはLAN15経由でホットスタンバイ系サーバの受信キューに送信される。
従来の技術では、CPU毎に担当する機能が割り当てられておらず、転送処理は呼処理の中に埋め込まれていたため、転送タイミング毎に呼処理スレッドの動作が阻害される原因となっていた。本発明では、
サーバ間のデータ転送時間>>メモリのコピー処理時間>スレッドの切り替え時間
の関係にあることに着目し、この転送速度やコピー処理時間による影響を呼処理スレッドと切り離すこと、及びI/O中の呼処理スレッドをスリープさせ、他の呼処理スレッドにCPUを利用させることで、CPUのI/Oによる占有時間を減らして有効活用することかできる。
以上のように、本発明ではCPUの使用効率を上げることで、ハードウェアあたりの呼処理性能を向上させ、コストダウンにつなげることができる。本発明は、既存の1CPUで構成されていた交換機のような専用ハードウェア上のソフトウェアをサーバにポーティング(なるべく手を加えないで交換機を汎用サーバに載せ換えること)する際に非常に有効な手法である。
以上、詳細に説明したように、本発明によれば、データ転送処理中も呼処理サービスを中断する必要がない無中断メモリレプリケーション方法を提供することができる。
第1の発明の構成例を示す図である。 第2の発明の構成例を示す図である。 第3の発明の構成例を示す図である。 第4の発明の構成例を示す図である。 第1の発明の動作フローを示す図である。 転送先アドレスリストを示す図である。 第2の発明のアクティブ系サーバ側の動作フローを示す図である。 第3の発明のホットスタンバイ系サーバ側の動作フローを示す図である。 第4の発明のアクティブ系サーバ側の動作フローを示す図である。 本発明の対象となるシステム構成を示す図である。 サーバ上に分散するメモリエリアの説明図である。 呼処理サーバのブートフローを示す図である。 呼処理サーバのスイッチオーバフローを示す図である。 従来の問題点の説明図である。
符号の説明
4 CPU
6 CPU
10 サーバ

Claims (4)

  1. アクティブ/ホットスタンバイ構成の呼処理サービスを行なうサーバにおいて、メモリレプリケーションのためにアクティブ系では呼処理プロセスを、呼処理サービスを行なうスレッドとメモリの転送を行なうスレッドに分け、
    それぞれを別のCPUに割り付け、
    メモリ内容のコミットを行ないメモリ転送を行なう呼を含めた全ての呼処理サービスを中断することなく、ホットスタンバイ系に呼処理サービスのメモリ内容のコミット契機とは非同期にメモリのコピーデータを転送し、
    またホットスタンバイ系では、ホットスタンバイ状態の呼処理プロセスから起動されたデータ受信スレッドを起動して、アクティブ系サーバから転送されたメモリのコピーデータを実際のデータエリアに再配置する、
    ようにしたことを特徴とする無中断メモリレプリケーション方法。
  2. アクティブ/ホットスタンバイ構成の呼処理サービスを行なうサーバにおいて、メモリレプリケーションのためにアクティブ系では呼処理プロセスを呼処理サービスを行なうスレッドと、メモリのコピーを行なうスレッドと、メモリの転送を行なうスレッドに分け、
    それぞれを別のCPUに割り付けることで、メモリ内容のコミットを行ない、メモリ転送を行なう呼を除いた呼処理サービスを中断することなく、ホットスタンバイ系に呼処理サービスのメモリ内容のコミット契機と同期してメモリのコピーを転送し、
    また、ホットスタンバイ系ではホットスタンバイ状態の呼処理プロセスから起動されたデータ受信スレッドを起動して、アクティブ系から転送されたメモリのコピーデータを実際のデータエリアに再配置する、
    ようにしたことを特徴とする無中断メモリレプリケーション方法。
  3. アクティブ/ホットスタンバイ構成の呼処理サービスを行なうサーバにおいて、アクティブ系サーバからのデータを受信したホットスタンバイ系サーバにて、ホットスタンバイ状態の呼処理プロセスからデータ受信スレッドとコピーデータ再配置スレッドを起動し、
    少なくともデータ受信スレッドを再配置スレッドとは別のCPUに割り付けることで、アクティブ系から転送されたメモリのコピーデータを一旦バッファにコピーし、キューイングした後で実際のデータエリアに再配置する、
    ようにしたことを特徴とする請求項1又は2記載の無中断メモリレプリケーション方法。
  4. 前記メモリのコピーを行なうスレッドを起動する際に、固定のCPUに割り付けるのではなく、データ転送スレッドに割り付けたCPUを除くいずれかのCPUの内、最もCPU使用率の低いCPUを検索し、そのCPUへ割り付けることを特徴とする請求項2記載の無中断メモリレプリケーション方法。
JP2006180657A 2006-06-30 2006-06-30 無中断メモリレプリケーション方法 Pending JP2008009797A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006180657A JP2008009797A (ja) 2006-06-30 2006-06-30 無中断メモリレプリケーション方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006180657A JP2008009797A (ja) 2006-06-30 2006-06-30 無中断メモリレプリケーション方法

Publications (1)

Publication Number Publication Date
JP2008009797A true JP2008009797A (ja) 2008-01-17

Family

ID=39067933

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006180657A Pending JP2008009797A (ja) 2006-06-30 2006-06-30 無中断メモリレプリケーション方法

Country Status (1)

Country Link
JP (1) JP2008009797A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010160537A (ja) * 2009-01-06 2010-07-22 Hitachi Ltd 通信装置および系切り替え方法
JP2012256240A (ja) * 2011-06-09 2012-12-27 Nippon Telegr & Teleph Corp <Ntt> 二重化システム、およびメモリ同期方法
JP2013110668A (ja) * 2011-11-24 2013-06-06 Nippon Telegr & Teleph Corp <Ntt> 呼制御に利用する情報の冗長化方法および呼制御システム
JP2014041550A (ja) * 2012-08-23 2014-03-06 Nippon Telegr & Teleph Corp <Ntt> データ移行処理システムおよびデータ移行処理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08272636A (ja) * 1995-04-03 1996-10-18 Fuji Electric Co Ltd 二重化制御装置の等値化データの転送方法
JP2000112911A (ja) * 1998-09-30 2000-04-21 Ncr Internatl Inc コンピュ―タネットワ―クにおけるデ―タベ―ス管理システムにおいて自動的にタスクを再分配するシステム及び方法
JP2001166955A (ja) * 1999-12-10 2001-06-22 Fujitsu Ltd マルチプロセッサシステム及び機能引継ぎ制御方法
JP2002149212A (ja) * 2000-11-13 2002-05-24 Fuji Electric Co Ltd 制御データを等値化する冗長化プログラマブルコントローラ及び等値化方法。
JP2004171234A (ja) * 2002-11-19 2004-06-17 Toshiba Corp マルチプロセッサシステムにおけるタスク割り付け方法、タスク割り付けプログラム及びマルチプロセッサシステム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08272636A (ja) * 1995-04-03 1996-10-18 Fuji Electric Co Ltd 二重化制御装置の等値化データの転送方法
JP2000112911A (ja) * 1998-09-30 2000-04-21 Ncr Internatl Inc コンピュ―タネットワ―クにおけるデ―タベ―ス管理システムにおいて自動的にタスクを再分配するシステム及び方法
JP2001166955A (ja) * 1999-12-10 2001-06-22 Fujitsu Ltd マルチプロセッサシステム及び機能引継ぎ制御方法
JP2002149212A (ja) * 2000-11-13 2002-05-24 Fuji Electric Co Ltd 制御データを等値化する冗長化プログラマブルコントローラ及び等値化方法。
JP2004171234A (ja) * 2002-11-19 2004-06-17 Toshiba Corp マルチプロセッサシステムにおけるタスク割り付け方法、タスク割り付けプログラム及びマルチプロセッサシステム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010160537A (ja) * 2009-01-06 2010-07-22 Hitachi Ltd 通信装置および系切り替え方法
JP2012256240A (ja) * 2011-06-09 2012-12-27 Nippon Telegr & Teleph Corp <Ntt> 二重化システム、およびメモリ同期方法
JP2013110668A (ja) * 2011-11-24 2013-06-06 Nippon Telegr & Teleph Corp <Ntt> 呼制御に利用する情報の冗長化方法および呼制御システム
JP2014041550A (ja) * 2012-08-23 2014-03-06 Nippon Telegr & Teleph Corp <Ntt> データ移行処理システムおよびデータ移行処理方法

Similar Documents

Publication Publication Date Title
FI101432B (fi) Vikasietoinen tietokonejärjestelmä
US10628273B2 (en) Node system, server apparatus, scaling control method, and program
JP3557947B2 (ja) 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体
US7493436B2 (en) Interrupt handling using simultaneous multi-threading
TWI537828B (zh) 虛擬機管理的方法及其電腦系統之裝置和電腦程式
CN101115054B (zh) 用于网络接口控制器的存储器映射的缓冲器
CN104102548B (zh) 任务资源调度处理方法和***
US9535864B2 (en) Computer system and control method thereof
US8032786B2 (en) Information-processing equipment and system therefor with switching control for switchover operation
WO2018157836A1 (zh) 一种可编程硬件的资源管理方法、可编程硬件设备及存储介质
WO2008062647A1 (en) Multiprocessor system, system configuration method in multiprocessor system, and program thereof
JP2007079789A (ja) 計算機システム及びイベント処理方法
JP2006072591A (ja) 仮想計算機制御方法
US20110107344A1 (en) Multi-core apparatus and load balancing method thereof
US8381210B2 (en) Method and computer for synchronous scheduling of multiple virtual CPUs
JP2009118063A (ja) 冗長システム、方法及びプログラム、並びに、サーバ
JP5176230B2 (ja) 計算機システム、計算機制御方法及び計算機制御プログラム
JP2008009797A (ja) 無中断メモリレプリケーション方法
JP5994601B2 (ja) 並列計算機、並列計算機の制御プログラム及び並列計算機の制御方法
EP3084603B1 (en) System and method for supporting adaptive busy wait in a computing environment
WO2011116672A1 (zh) 为共享代码段打补丁的方法及装置
JP6446315B2 (ja) 多重化計算機の記憶領域一致化装置
JP2003345638A (ja) 記憶制御装置の制御方法及び記憶制御装置及びプログラム
JP2008117268A (ja) 情報管理システム
KR20010076790A (ko) 상용 실시간 운영체제와 미들웨어를 통한 아이/오 기반고가용성 구현 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110208

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110406

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110531