JP2017220183A - プロセス管理プログラム、プロセス管理方法、および情報処理装置 - Google Patents
プロセス管理プログラム、プロセス管理方法、および情報処理装置 Download PDFInfo
- Publication number
- JP2017220183A JP2017220183A JP2016116685A JP2016116685A JP2017220183A JP 2017220183 A JP2017220183 A JP 2017220183A JP 2016116685 A JP2016116685 A JP 2016116685A JP 2016116685 A JP2016116685 A JP 2016116685A JP 2017220183 A JP2017220183 A JP 2017220183A
- Authority
- JP
- Japan
- Prior art keywords
- cpu
- logical
- logical cpu
- scale
- physical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Hardware Redundancy (AREA)
Abstract
【課題】サービスを停止することなく、仮想マシン上のあるプロセスについての物理CPUの割り当てを変更すること。【解決手段】情報処理装置100は、仮想マシン上の複数のプロセスで物理CPUを共用中に、複数のプロセスのうちのいずれかのプロセスについて、物理CPUを占有する状態とする要求を受け付ける。情報処理装置100は、要求を受け付けたことに応じて、仮想マシン上の未使用の論理CPUを、自装置の未使用の物理CPUと対応付けて使用状態とする。情報処理装置100は、複数のプロセスのうちの第1プロセスと同一の第2プロセスを生成して、第2プロセスをスタンバイ状態で、使用状態とした論理CPUに割り当てる。情報処理装置100は、使用状態とした論理CPUに割り当てた第2プロセスをアクティブ状態とし、第1プロセスをスタンバイ状態とする。【選択図】図1
Description
本発明は、プロセス管理プログラム、プロセス管理方法、および情報処理装置に関する。
従来、通信キャリアのネットワークに含まれるネットワーク機器の機能を、物理サーバ上で動作する仮想マシンにより実現する、NFV(Network Functions Virtualization)と呼ばれる技術がある。通信キャリアのネットワークに含まれるネットワーク機器としては、例えば、呼処理サーバ、認証サーバ、帯域制御サーバ、L2(Layer2)スイッチ、ルータなどがある。
先行技術としては、例えば、NFV環境にてサービス影響の少ないシームレスな仮想マシンの移行を行うために、移行元のACT(Active)系仮想マシンと移行先のSBY(Standby)系仮想マシンとの系の切り替えを行うものがある。
しかしながら、従来技術では、呼処理サーバのようなレスポンスタイムを保証することが求められるネットワーク機器を仮想マシンとして動作させる場合、リソースを効率的に使用することが難しい。例えば、リソースの使用を最小限に抑えるために、通常運用時は仮想マシン上の複数のプロセス(呼処理プロセス)で1つのCPUを共用する構成とすることが考えられる。この構成では、CPUを共用しているプロセスが高負荷状態となったときに、プロセスが使用できるCPUのパワーを増やすスケールアップ処理を行うことになる。ところが、従来技術では、スケールアップ時に仮想マシンの再起動が必要となりサービスを中断させることになる。
一つの側面では、本発明は、サービスを停止することなく、仮想マシン上のあるプロセスについての物理CPUの割り当てを変更することを目的とする。
本発明の一態様によれば、仮想マシン上の複数のプロセスで物理CPUを共用中に、前記複数のプロセスのうちのいずれかのアクティブ状態である第1プロセスについて、物理CPUを占有する状態とする要求を受け付け、前記要求を受け付けたことに応じて、前記仮想マシン上の未使用の論理CPUを、未使用の物理CPUと対応付けて使用状態とし、前記第1プロセスと同一の第2プロセスを生成して、前記第2プロセスをスタンバイ状態で前記使用状態とした論理CPUに割り当て、前記使用状態とした論理CPUに割り当てた前記第2プロセスをアクティブ状態とし、前記第1プロセスをスタンバイ状態とするプロセス管理プログラム、プロセス管理方法、および情報処理装置が提案される。
本発明の一側面によれば、サービスを停止することなく、仮想マシン上のあるプロセスについての物理CPUの割り当てを変更することができる。
以下に図面を参照して、本発明にかかるプロセス管理プログラム、プロセス管理方法、および情報処理装置の実施の形態を詳細に説明する。
(実施の形態)
図1は、実施の形態にかかるプロセス管理方法の一実施例を示す説明図である。図1において、情報処理装置100は、自装置のハードウェア資源を仮想化して、複数の異なるOS(Operating System)を実行可能なコンピュータである。自装置のハードウェア資源とは、例えば、CPU(Central Processing Unit)、メモリ、I/F(Interface)などである。
図1は、実施の形態にかかるプロセス管理方法の一実施例を示す説明図である。図1において、情報処理装置100は、自装置のハードウェア資源を仮想化して、複数の異なるOS(Operating System)を実行可能なコンピュータである。自装置のハードウェア資源とは、例えば、CPU(Central Processing Unit)、メモリ、I/F(Interface)などである。
具体的には、例えば、情報処理装置100は、自装置のハードウェア資源を分割して構築される実行環境で動作する仮想マシン(VM:Virtual Machine)によってOSを稼働させることができる。仮想マシンとは、物理的なコンピュータのハードウェア資源を分割して構築される実行環境で動作する仮想的なコンピュータである。
また、情報処理装置100は、仮想マシン上のプロセスと論理CPUと物理CPUとの対応関係を管理する。プロセスとは、プログラムの実行単位である。論理CPUとは、物理CPUの処理(性能)を分割し、仮想マシンのCPUとして構成したものである。物理CPUとは、実際に存在するCPU(例えば、コア)である。
通信キャリアのネットワークに含まれるネットワーク機器として、レスポンスタイムを保証することが求められる呼処理サーバがある。呼処理サーバを仮想マシンとして動作させる場合、レスポンスタイムを保証することが前提であるため、1つの論理CPUが1つの物理CPUを占有し、物理CPUの切り替えが発生しない構成とすることが多い。
すなわち、仮想マシン上の1つのプロセス(呼処理プロセス)が1つの物理CPUを占有して、ピークトラフィック時に備えてリソースを確保する構成とすることが多い。しかし、この構成では、全ての物理CPUをフルパワーで動作させることになるため消費電力を抑えにくい。
消費電力を抑えるには、通常運用時は必要分だけ物理CPUのパワーを使用するように構成することが望ましい。例えば、通常運用時は複数のプロセスで論理CPUを共用(共有)し、使用する論理CPUの数を最小限にしてマッピングする物理CPUを減らす構成にすることが有効である。
一方で、複数のプロセスで論理CPUを共用する構成では、論理CPUを共用しているプロセスが高負荷状態となったときに、論理CPUを増やして、プロセスが使用できる論理CPUのパワーを増強するスケールアップ処理が必要となる。ところが、従来技術では、スケールアップ時に仮想マシンの再起動、あるいは、少なくとも当該プロセスの再起動が必要となり、サービスの中断をともなう。
具体的には、呼処理プロセスが論理CPUを共用する場合、例えば、端末間のセッションを生成する処理で共用するキューが溜まり、処理完了時間の待ちが生じる場合がある。しかし、一度配備したプロセスと論理CPUの構成の変更はサービスの中断をともなうため待ち状態を解消できない。
そこで、本実施の形態では、「CPUのPinning技術」と「プロセス切替技術」を利用して、レスポンス時間を保証する処理(プロセス)に対して、サービス無中断でプロセスが使用可能な論理CPUのパワーを動的に変更可能とするプロセス管理方法について説明する。
CPUのPinning技術は、論理CPUと物理CPUとを1対1で対応付ける技術であり、論理CPUが使用する物理CPUを制限することができる。プロセス切替技術は、アクティブ状態のプロセス(ACT)とスタンバイ状態のプロセス(SBY)とを起動しておき、サービスを中断することなく、プロセス(ACT)/プロセス(SBY)を切り替えることが可能な技術である。
以下、情報処理装置100の処理例について説明する。ここでは、情報処理装置100上で稼働中の仮想マシン101を例に挙げて、仮想マシン101上のプロセスが使用可能な論理CPUのパワーを動的に変更する場合について説明する。
(1)情報処理装置100は、仮想マシン上の複数のプロセスで物理CPUを共用中に、複数のプロセスのうちのいずれかのアクティブ状態であるプロセスについて、物理CPUを占有する状態とする要求を受け付ける。ここで、複数のプロセスで物理CPUを共用中とは、プロセスと論理CPUと物理CPUとの対応関係が「多:1:1」の状態である。
一方、あるプロセスで物理CPUを占有する状態とは、プロセスと論理CPUと物理CPUとの対応関係が「1:1:1」の状態である。すなわち、情報処理装置100は、物理CPUを共用中の複数のプロセスのうちのいずれかのプロセスが使用可能な論理CPUのパワーを増やすスケールアップ指示を受け付ける。
図1の例では、仮想マシン101上のアクティブ状態であるプロセス111,112が、論理CPU121を介して物理CPU131を共用中である。ここでは、プロセス111,112が高負荷状態となって、情報処理装置100が、プロセス111,112のうちのプロセス112について、物理CPUを占有する状態とする要求を受け付けた場合を想定する。
(2)情報処理装置100は、要求を受け付けたことに応じて、仮想マシン上の未使用の論理CPUを、自装置の未使用の物理CPUと対応付けて使用状態とする。未使用の論理CPUとは、プロセスが割り当てられていない論理CPU、すなわち、ホットスタンバイ状態(あるいは、休止状態)の論理CPUである。また、未使用の物理CPUとは、論理CPUが対応付けられていない物理CPUである。
図1の例では、情報処理装置100は、CPUのPinning技術を利用して、仮想マシン101上の未使用の論理CPU122を、自装置の未使用の物理CPU132と対応付けて使用状態(アクティブ状態)とする。
(3)情報処理装置100は、複数のプロセスのうちの第1プロセスと同一の第2プロセスを生成して、第2プロセスをスタンバイ状態で、使用状態とした論理CPUに割り当てる。ここで、第1プロセスは、スケールアップ対象のプロセスである。また、第2プロセスは、第1プロセスと同じ機能のプロセスである。
図1の例では、情報処理装置100は、プロセス111,112のうちのプロセス112と同じプロセス113を生成して、生成したプロセス113をスタンバイ状態(SBY)で、使用状態とした論理CPU122に割り当てる。この時点では、プロセス112はアクティブ状態(ACT)である。
(4)情報処理装置100は、使用状態とした論理CPUに割り当てた第2プロセスをアクティブ状態とし、第1プロセスをスタンバイ状態とする。具体的には、例えば、情報処理装置100は、第2プロセスが正常に起動したことを確認したら、プロセス切替技術を利用して、第2プロセスをアクティブ状態とし、第1プロセスをスタンバイ状態とする。
図1の例では、情報処理装置100は、例えば、使用状態とした論理CPU122に割り当てたプロセス113の動作状況を確認する。そして、情報処理装置100は、プロセス113が正常に起動したことを確認したら、プロセス113をアクティブ状態(ACT)とし、プロセス112をスタンバイ状態(SBY)とする。
このように、情報処理装置100によれば、仮想マシン上のプロセスについて、物理CPUを占有する状態とする要求、すなわち、プロセスと論理CPUと物理CPUとの対応を「多:1:1」から「1:1:1」とする要求を受け付けることができる。そして、情報処理装置100によれば、要求された第1プロセスと同じ第2プロセスを生成して、未使用の物理CPUに対応付けた論理CPUに割り当て、第1プロセスから第2プロセスへのプロセス切替を行うことができる。これにより、サービスを停止することなく、仮想マシン上のあるプロセスについての物理CPUの割り当てを変更して、当該プロセスが使用可能な論理CPUのパワーを動的に変更することができる。
図1の例では、仮想マシン101上でプロセス111と論理CPU121を共用中のプロセス112を、仮想マシン101を再起動することなく、プロセス112と同じ機能のプロセス113に切り替えることができる。これにより、サービスを中断することなく、スケールアップ対象のプロセスが使用可能な論理CPUのパワーを増やすことができる。このため、通常運用時は最小限のリソースを使用して消費電力を抑えながら、プロセスが高負荷状態となったら、サービスを停止することなく、プロセスをスケールアップすることができるようになり、負荷変動へ柔軟に対応することが可能となる。
(システム200のシステム構成例)
つぎに、実施の形態にかかるシステム200のシステム構成例について説明する。以下の説明では、情報処理装置100において、SIPサーバ(呼処理サーバ)を仮想マシンとして動作させる場合を想定する。
つぎに、実施の形態にかかるシステム200のシステム構成例について説明する。以下の説明では、情報処理装置100において、SIPサーバ(呼処理サーバ)を仮想マシンとして動作させる場合を想定する。
図2は、システム200のシステム構成例を示す説明図である。図2において、システム200は、情報処理装置100と、複数の端末201と、保守装置202と、を含む。システム200において、情報処理装置100、端末201および保守装置202は、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネット、移動体通信網などを含む。
情報処理装置100は、ホストOS220と、SIPサーバ#1〜#nと、を含む。ホストOS220は、仮想マシンを動作させるための基盤となるOSである。SIPサーバ#1〜#nは、ゲストOS#1〜#nを実行する仮想マシンであり、SIP(Session Initiation Protocol)に従って呼制御を行う。
SIPとは、音声や映像の交換などを行うためのセッションの生成・変更・切断を行うプロトコルであり、IP(Internet Protocol)電話、テレビ電話などのリアルタイム性が要求されるアプリケーションで採用される。情報処理装置100は、例えば、物理サーバである。
端末201は、SIPによるVoIP(Voice over Internet Protocol)通話が可能なコンピュータであり、例えば、IP電話機、スマートフォン、PC(Personal Computer)などである。保守装置202は、システム200の保守者が使用するコンピュータであり、例えば、PCである。
以下の説明では、SIPサーバ#1〜#nのうちの任意のSIPサーバを「SIPサーバ#i」と表記し、SIPサーバ#iが実行するゲストOSを「ゲストOS#i」と表記する場合がある(i=1,2,…,n)。
(情報処理装置100のハードウェア構成例)
図3は、情報処理装置100のハードウェア構成例を示すブロック図である。図3において、情報処理装置100は、CPU301と、メモリ302と、I/F303と、ディスクドライブ304と、ディスク305と、を有する。また、各構成部は、バス300によってそれぞれ接続される。
図3は、情報処理装置100のハードウェア構成例を示すブロック図である。図3において、情報処理装置100は、CPU301と、メモリ302と、I/F303と、ディスクドライブ304と、ディスク305と、を有する。また、各構成部は、バス300によってそれぞれ接続される。
ここで、CPU301は、情報処理装置100の全体の制御を司る。なお、CPU301は、情報処理装置100が有する複数の物理CPU(例えば、コア)をまとめたものを表している。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
I/F303は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して外部のコンピュータ(例えば、図2に示した保守装置202、端末201)に接続される。そして、I/F303は、ネットワーク210と装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。I/F303には、例えば、モデムやLANアダプタなどを採用することができる。
ディスクドライブ304は、CPU301の制御に従ってディスク305に対するデータのリード/ライトを制御する。ディスク305は、ディスクドライブ304の制御で書き込まれたデータを記憶する。ディスク305としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
なお、情報処理装置100は、上述した構成部のほかに、例えば、SSD(Solid State Drive)、入力装置、ディスプレイ等を有することにしてもよい。また、図2に示した端末201、保守装置202についても、情報処理装置100と同様のハードウェア構成により実現することができる。ただし、端末201、保守装置202は、上述した構成部のほかに、入力装置、ディスプレイを有する。また、端末201、保守装置202は、ディスクドライブ304、ディスク305を有していなくてもよい。
(コンフィグ情報400の具体例)
つぎに、SIPサーバ#iのゲストOS#iが用いるコンフィグ情報400の具体例について説明する。コンフィグ情報400は、例えば、図3に示したメモリ302、ディスク305などの記憶装置に記憶される。
つぎに、SIPサーバ#iのゲストOS#iが用いるコンフィグ情報400の具体例について説明する。コンフィグ情報400は、例えば、図3に示したメモリ302、ディスク305などの記憶装置に記憶される。
図4は、コンフィグ情報400の具体例を示す説明図である。図4において、コンフィグ情報400は、プロセス名と論理CPUマッピング値との対応関係、およびホストOSのIPアドレスを示す情報である。
ここで、プロセス名は、スケールアップ対象となるプロセスの名称(例えば、プログラムファイルの名前)である。SIPサーバ#iの場合、スケールアップ対象となるプロセスは、例えば、呼処理プロセスである。論理CPUマッピング値は、初期化処理実行時に、スケールアップ対象となるプロセスをどの論理CPUで動作させるかを示す値である。論理CPUマッピング値が同一のプロセスは、同じ論理CPUで動作させることを示す。
ホストOSのIPアドレスは、ゲストOS#iがホストOS220(図2参照)と通信するためのIPアドレスである。なお、ここでは、ゲストOS#iが用いるコンフィグ情報400を例に挙げて説明したが、コンフィグ情報は、図2に示したゲストOS#1〜#nごとに用意される。
(論理CPU使用状況テーブル500の記憶内容)
つぎに、SIPサーバ#iのゲストOS#iが用いる論理CPU使用状況テーブル500の記憶内容について説明する。論理CPU使用状況テーブル500は、例えば、メモリ302、ディスク305などの記憶装置により実現される。
つぎに、SIPサーバ#iのゲストOS#iが用いる論理CPU使用状況テーブル500の記憶内容について説明する。論理CPU使用状況テーブル500は、例えば、メモリ302、ディスク305などの記憶装置により実現される。
図5は、論理CPU使用状況テーブル500の記憶内容の一例を示す説明図である。図5において、論理CPU使用状況テーブル500は、論理CPUIDおよび使用状況のフィールドを有し、各フィールドに情報を設定することで、論理CPU使用状況情報500−1〜500−4をレコードとして記憶する。
ここで、論理CPUIDは、SIPサーバ#i上の論理CPUを一意に識別する識別子である。使用状況は、SIPサーバ#i上の論理CPUの使用状況を示す。使用状況には、Free、Used、Occupiedのいずれかが設定される。Freeは、論理CPUが未使用状態であることを示す。Usedは、論理CPUを2以上のプロセスで共用中であることを示す。Occupiedは、論理CPUを1つのプロセスで占有していることを示す。
なお、ここでは、ゲストOS#iが用いる論理CPU使用状況テーブル500を例に挙げて説明したが、論理CPU使用状況テーブルは、図2に示したゲストOS#1〜#nごとに用意される。
(物理CPU使用状況テーブル600の記憶内容)
つぎに、図2に示した情報処理装置100のホストOS220が用いる物理CPU使用状況テーブル600の記憶内容について説明する。物理CPU使用状況テーブル600は、例えば、メモリ302、ディスク305などの記憶装置により実現される。
つぎに、図2に示した情報処理装置100のホストOS220が用いる物理CPU使用状況テーブル600の記憶内容について説明する。物理CPU使用状況テーブル600は、例えば、メモリ302、ディスク305などの記憶装置により実現される。
図6は、物理CPU使用状況テーブル600の記憶内容の一例を示す説明図である。図6において、物理CPU使用状況テーブル600は、物理CPUIDおよび使用状況のフィールドを有し、各フィールドに情報を設定することで、物理CPU使用状況情報(例えば、物理CPU使用状況情報600−1〜600−5)をレコードとして記憶する。
ここで、物理CPUIDは、情報処理装置100上の物理CPUを一意に識別する識別子である。使用状況は、情報処理装置100上の物理CPUの使用状況を示す。使用状況には、Free、Usedのいずれかが設定される。Freeは、物理CPUが未使用状態であることを示す。Usedは、物理CPUに1つ以上の論理CPUが対応付けられて使用中であることを示す。
(プロセス管理テーブル700の記憶内容)
つぎに、SIPサーバ#iのゲストOS#iが用いるプロセス管理テーブル700の記憶内容について説明する。プロセス管理テーブル700は、例えば、メモリ302、ディスク305などの記憶装置により実現される。
つぎに、SIPサーバ#iのゲストOS#iが用いるプロセス管理テーブル700の記憶内容について説明する。プロセス管理テーブル700は、例えば、メモリ302、ディスク305などの記憶装置により実現される。
図7は、プロセス管理テーブル700の記憶内容の一例を示す説明図である。図7において、プロセス管理テーブル700は、プロセス名、PID、論理CPUIDおよび物理CPUIDのフィールドを有し、各フィールドに情報を設定することで、プロセス管理情報700−1〜700−4をレコードとして記憶する。
ここで、プロセス名は、スケールアップ対象となるプロセスの名称である。PIDは、プロセス名のプロセスが起動した後にゲストOS#iにより当該プロセスに付与される識別子である。論理CPUIDは、プロセス名のプロセスが割り当てられた論理CPUの識別子である。物理CPUIDは、論理CPUIDの論理CPUと対応付けられた物理CPUの識別子である。
(情報処理装置100の機能的構成例)
図8は、情報処理装置100の機能的構成例を示すブロック図である。図8において、情報処理装置100は、初期化処理部801と、受付部802と、スケールアップ処理部803と、スケールダウン処理部804と、を含む構成である。初期化処理部801〜スケールダウン処理部804は、制御部となる機能であり、例えば、SIPサーバ#iのゲストOS#iが有する。具体的には、例えば、初期化処理部801〜スケールダウン処理部804は、図3に示したメモリ302、ディスク305などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、I/F303により、その機能を実現する。各機能部の処理結果は、例えば、メモリ302、ディスク305などの記憶装置に記憶される。
図8は、情報処理装置100の機能的構成例を示すブロック図である。図8において、情報処理装置100は、初期化処理部801と、受付部802と、スケールアップ処理部803と、スケールダウン処理部804と、を含む構成である。初期化処理部801〜スケールダウン処理部804は、制御部となる機能であり、例えば、SIPサーバ#iのゲストOS#iが有する。具体的には、例えば、初期化処理部801〜スケールダウン処理部804は、図3に示したメモリ302、ディスク305などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、I/F303により、その機能を実現する。各機能部の処理結果は、例えば、メモリ302、ディスク305などの記憶装置に記憶される。
初期化処理部801は、コンフィグ情報に基づいて、スケールアップ対象となるプロセスの数分の論理CPUを含む論理CPUプールを作成する。ここで、コンフィグ情報は、スケールアップ対象となるプロセスを指定する情報であり、例えば、図4に示したコンフィグ情報400である。コンフィグ情報は、例えば、図2に示した保守装置202から情報処理装置100に送信されて、ゲストOS#iと対応付けてメモリ302、ディスク305などの記憶装置に記憶される。
具体的には、例えば、初期化処理部801は、コンフィグ情報で指定されたスケールアップ対象となるプロセスの数分の論理CPUの増設をホストOS220に依頼する。ホストOS220との通信は、例えば、コンフィグ情報400に含まれるホストOS220のIPアドレスを用いて行われる。
この結果、ホストOS220により論理CPUが増設されて、SIPサーバ#iがリブートされる。これにより、スケールアップ対象となるプロセスの数分の論理CPUを含む論理CPUプールが作成され、各論理CPUの論理CPU使用状況情報が、図5に示した論理CPU使用状況テーブル500に記憶される。この時点の各論理CPUの使用状況は「Free(ホットスタンバイ状態)」となる。
また、初期化処理部801は、コンフィグ情報で指定されたスケールアップ対象となるプロセスを起動する。この結果、スケールアップ対象となるプロセスのプロセス管理情報が、図7に示したプロセス管理テーブル700に登録される。この時点では、各プロセス管理情報の論理CPIIDおよび物理CPUIDは「NULL」である。
また、初期化処理部801は、論理CPU使用状況テーブル500を参照して、コンフィグ情報で指定されたスケールアップ対象となるプロセスの論理CPUマッピング値に基づいて、各プロセスを未使用の論理CPUに割り当てる。この際、初期化処理部801は、論理CPUマッピング値が同一のプロセス同士を、同じ論理CPUに割り当てる。
この結果、プロセスを割り当てた論理CPUが使用状態となり、論理CPU使用状況テーブル500の記憶内容が更新される。また、プロセスと論理CPUとの対応関係がプロセス管理テーブル700に登録される。なお、論理CPU使用状況テーブル500およびプロセス管理テーブル700の更新例については、図15および図17を用いて後述する。
また、初期化処理部801は、プロセスを割り当てた論理CPU、すなわち、使用状態とした論理CPUと、未使用の物理CPUとを対応付ける。具体的には、例えば、初期化処理部801は、ホストOS220に対して、使用状態とした論理CPUを、自装置上の未使用の物理CPUに対応付けるPinning要求を行う。
この結果、プロセスを割り当てた論理CPUと物理CPUとの対応付けが行われ、論理CPUと物理CPUとの対応関係がプロセス管理テーブル700に登録される。また、論理CPUと対応付けられた物理CPUが使用状態となり、ホストOS220により物理CPU使用状況テーブル600の記憶内容が更新される。なお、物理CPU使用状況テーブル600の更新例については、図16を用いて後述する。
受付部802は、スケールアップ指示を受け付ける。ここで、スケールアップ指示とは、アクティブ状態であるプロセスが利用できる論理CPUのパワーを増やすよう指示するものであり、物理CPUを共用中の複数のプロセスのうちのいずれかのプロセスについて、物理CPUを占有する状態とする要求である。
スケールアップ指示には、スケールアップ対象のプロセスを特定する情報、例えば、プロセス名、PIDあるいは論理CPUIDが含まれる。なお、スケールアップ指示に論理CPUIDが含まれる場合には、例えば、当該論理CPUIDの論理CPUに割り当てられたいずれかのプロセスが、スケールアップ対象のプロセスとして特定されることにしてもよい。
具体的には、例えば、受付部802は、オーケストレータまたは保守装置202から、スケールアップ指示を受け付ける。オーケストレータは、SIPサーバ#i上のプロセスの負荷状態を監視するソフトウェアであり、例えば、後述の図11に示すオーケストレータ1100である。
より詳細に説明すると、オーケストレータは、例えば、複数のプロセスで共有中の論理CPUに対応するキューの状態を監視し、要求の待ち時間が閾値以上となったらトラフィックの異常を検知して、当該論理CPUに割り当てたプロセスのスケールアップ指示を行う。
以下の説明では、スケールアップ対象のプロセスを「スケールアップ対象プロセス」と表記する場合がある。
スケールアップ処理部803は、スケールアップ指示を受け付けたことに応じて、SIPサーバ#i上の未使用の論理CPUを、自装置上の未使用の物理CPUと対応付けて使用状態とする。具体的には、例えば、スケールアップ処理部803は、論理CPU使用状況テーブル500を参照して、使用状況「Free」の論理CPUを選択する。
つぎに、スケールアップ処理部803は、ホストOS220に対して、選択した論理CPUを、自装置上の未使用の物理CPUに対応付けるPinning要求を行う。そして、スケールアップ処理部803は、論理CPU使用状況テーブル500内の選択した論理CPUの使用状況に「Occupied」を設定する。
これにより、選択した論理CPUが論理CPUプールから払い出されてアクティブ状態となる。また、論理CPUと対応付けられた物理CPUに対応する物理CPU使用状況テーブル600内の使用状況が、ホストOS220により「Used」に更新される。
また、スケールアップ処理部803は、スケールアップ対象プロセスと同一の第2プロセスを生成して、第2プロセスをスタンバイ状態で、使用状態とした論理CPUに割り当てる。ここで、第2プロセスは、スケールアップ対象プロセス(運用系プロセス)と同じプロセス名、機能の待機系プロセスである。この結果、第2プロセスと論理CPUと物理CPUとの対応関係がプロセス管理テーブル700に登録される。
また、スケールアップ処理部803は、使用状態とした論理CPUに割り当てた第2プロセスをアクティブ状態とし、スケールアップ対象プロセスをスタンバイ状態とする。これにより、スケールアップ対象として指定されたあるプロセスについて、スケールアップ対象プロセスから第2プロセスに切り替えて、サービスを中断することなく当該プロセスが使用可能な論理CPUのパワーを増やすことができる。
ただし、何らかの不具合により第2プロセスが正常に起動していない場合がある。このため、スケールアップ処理部803は、例えば、使用状態とした論理CPUに割り当てた第2プロセスの動作状況を確認することにしてもよい。そして、スケールアップ処理部803は、第2プロセスが正常起動した場合に、第2プロセスをアクティブ状態とし、スケールアップ対象プロセスをスタンバイ状態とすることにしてもよい。これにより、第2プロセスが正常に起動していないために生じるサービス中断を回避することができる。
また、スケールアップ処理部803は、スタンバイ状態としたスケールアップ対象プロセスを終了させることにしてもよい。具体的には、例えば、スケールアップ処理部803は、正常起動した第2プロセスをアクティブ状態として、スケールアップ対象プロセスをスタンバイ状態とした後に、スケールアップ対象プロセスを削除する。これにより、スタンバイ状態としたスケールアップ対象プロセスにかかる無駄な消費電力を削減することができる。
また、受付部802は、スケールダウン指示を受け付ける。ここで、スケールダウン指示とは、プロセスが利用できる論理CPUのパワーを減らすよう指示するものであり、アクティブ状態とした第2プロセスについて、他のプロセスと物理CPUを共用する状態とする要求である。スケールダウン指示には、スケールダウン対象のプロセスを特定する情報、例えば、プロセス名、PIDあるいは論理CPUIDが含まれる。
具体的には、例えば、受付部802は、オーケストレータまたは保守装置202から、スケールダウン指示を受け付ける。より詳細に説明すると、オーケストレータは、例えば、1つのプロセスで占有中の論理CPUに対応するキューの状態を監視し、要求の待ち時間が閾値未満となったら、当該論理CPUに割り当てたプロセスのスケールダウン指示を行う。
以下の説明では、スケールダウン対象のプロセスを「スケールダウン対象プロセス」と表記する場合がある。
スケールダウン処理部804は、スケールダウン指示を受け付けたことに応じて、スケールダウン対象プロセスと同一の第3プロセスを生成して、第3プロセスをスタンバイ状態で、SIPサーバ#i上の使用中の論理CPUに割り当てる。
ここで、第3プロセスは、スケールダウン対象プロセス(運用系プロセス)と同じプロセス名、機能の待機系プロセスである。また、第3プロセスの割当先となる論理CPUは、例えば、スケールダウン対象プロセスのプロセス名に対応する論理CPUマッピング値と同じ論理CPUマッピング値が設定された他のプロセスが割り当てられている論理CPUである。
具体的には、例えば、まず、スケールダウン処理部804は、コンフィグ情報400を参照して、スケールダウン対象プロセスのプロセス名に対応する論理CPUマッピング値を特定する。また、スケールダウン処理部804は、コンフィグ情報400を参照して、特定した論理CPUマッピング値が設定された他のプロセス(プロセス名)を特定する。
つぎに、スケールダウン処理部804は、プロセス管理テーブル700を参照して、特定した他のプロセスが割り当てられた論理CPUを特定する。そして、スケールダウン処理部804は、特定した論理CPUに第3プロセスをスタンバイ状態で割り当てる。この結果、第3プロセスと論理CPUと物理CPUとの対応関係がプロセス管理テーブル700に登録される。
また、スケールダウン処理部804は、使用中の論理CPUに割り当てた第3プロセスをアクティブ状態とし、スケールダウン対象プロセスをスタンバイ状態とする。これにより、スケールダウン対象として指定されたあるプロセスについて、スケールダウン対象プロセスから第3プロセスに切り替えて、サービスを中断することなく当該プロセスが使用可能な論理CPUのパワーを減らすことができる。
ただし、何らかの不具合により第3プロセスが正常に起動していない場合がある。このため、スケールダウン処理部804は、例えば、使用中の論理CPUに割り当てた第3プロセスの動作状況を確認することにしてもよい。そして、スケールアップ処理部803は、第3プロセスが正常起動した場合に、第3プロセスをアクティブ状態とし、スケールダウン対象プロセスをスタンバイ状態とすることにしてもよい。これにより、第3プロセスが正常に起動していないために生じるサービス中断を回避することができる。
また、スケールアップ処理部803は、スタンバイ状態としたスケールダウン対象プロセスを終了させることにしてもよい。具体的には、例えば、スケールアップ処理部803は、正常起動した第3プロセスをアクティブ状態として、スケールダウン対象プロセスをスタンバイ状態とした後に、第2プロセスを削除する。これにより、スタンバイ状態としたスケールダウン対象プロセスにかかる無駄な消費電力を削減することができる。
(プロセス管理処理例)
つぎに、図9〜図17を用いて、情報処理装置100のプロセス管理処理例(初期化処理例、スケールアップ処理例、スケールダウン処理例)について説明する。
つぎに、図9〜図17を用いて、情報処理装置100のプロセス管理処理例(初期化処理例、スケールアップ処理例、スケールダウン処理例)について説明する。
図9〜図14は、情報処理装置100のプロセス管理処理例を示す説明図である。図15は、論理CPU使用状況テーブル500の更新例を示す説明図である。図16は、物理CPU使用状況テーブル600の更新例を示す説明図である。図17は、プロセス管理テーブル700の更新例を示す説明図である。
・初期化処理例
図9において、ゲストOS#iは、コンフィグ情報400に基づいて、スケールアップ対象となるプロセスの数分の論理CPU1〜4を含む論理CPUプール900を作成する。この結果、図15の(15−1)に示すように、各論理CPU1〜4の論理CPU使用状況情報500−1〜500−4が論理CPU使用状況テーブル500に記憶される。
図9において、ゲストOS#iは、コンフィグ情報400に基づいて、スケールアップ対象となるプロセスの数分の論理CPU1〜4を含む論理CPUプール900を作成する。この結果、図15の(15−1)に示すように、各論理CPU1〜4の論理CPU使用状況情報500−1〜500−4が論理CPU使用状況テーブル500に記憶される。
なお、図9の例では、SIPサーバ#i上の論理CPUとして「論理CPU1〜4」を表示し、情報処理装置100上の物理CPUとして「物理CPU0〜5」を表示しているが、これに限らない。例えば、スケールアップ対象外のプロセスが使用中の論理CPUおよび物理CPUが含まれていてもよい。
図10において、ゲストOS#iは、コンフィグ情報400で指定されたスケールアップ対象となるプロセスを起動する。ここでは、PID「100」のプロセスP0(ACT)、PID「200」のプロセスP1(ACT)、PID「300」のプロセスP2(ACT)およびPID「400」のプロセスP3(ACT)が起動される。
つぎに、ゲストOS#iは、コンフィグ情報400で指定された各プロセスの論理CPUマッピング値に基づいて、各プロセスを未使用の論理CPUに割り当てる。具体的には、例えば、ゲストOS#iは、論理CPU使用状況テーブル500を参照して、論理CPUプール900から使用状況「Free」の論理CPU1,2を払い出す。
つぎに、ゲストOS#iは、PID「100」のプロセスP0(ACT)と、PID「200」のプロセスP1(ACT)とを論理CPU1に割り当てる。また、ゲストOS#iは、PID「300」のプロセスP2(ACT)と、PID「400」のプロセスP3(ACT)とを論理CPU2に割り当てる。
そして、ゲストOS#iは、論理CPU1,2を使用状態とする。具体的には、例えば、ゲストOS#iは、図15の(15−2)に示すように、論理CPU使用状況テーブル500内の論理CPU使用状況情報500−1,500−2の使用状況に「Used」を設定する。
つぎに、ゲストOS#iは、ホストOS220に対して、論理CPU1,2を、未使用の物理CPUに対応付けるPinning要求を行う。この結果、論理CPU1,2と物理CPU0,1との対応付けが行われ、図16の(16−1)に示すように、物理CPU使用状況テーブル600内の物理CPU使用状況情報600−1,600−2の使用状況に「Used」が設定される。また、図17の(17−1)に示すように、各プロセスP0〜P3のプロセス管理情報700−1〜700−4がプロセス管理テーブル700に記憶される。
・スケールアップ処理例
図11において、ゲストOS#iは、オーケストレータ1100からスケールアップ指示を受け付ける。ここでは、プロセスP3のスケールアップ指示を受け付けた場合を想定する。この場合、ゲストOS#iは、論理CPU使用状況テーブル500を参照して、論理CPUプール900から使用状況「Free」の論理CPU3を払い出してアクティブ状態とする。
図11において、ゲストOS#iは、オーケストレータ1100からスケールアップ指示を受け付ける。ここでは、プロセスP3のスケールアップ指示を受け付けた場合を想定する。この場合、ゲストOS#iは、論理CPU使用状況テーブル500を参照して、論理CPUプール900から使用状況「Free」の論理CPU3を払い出してアクティブ状態とする。
そして、ゲストOS#iは、ホストOS220に対して、論理CPU3を、未使用の物理CPUに対応付けるPinning要求を行う。この結果、論理CPU3と物理CPU2との対応付けが行われ、図16の(16−2)に示すように、物理CPU使用状況テーブル600内の物理CPU使用状況情報600−3の使用状況に「Used」が設定される。また、図15の(15−3)に示すように、論理CPU使用状況テーブル500内の論理CPU使用状況情報500−3の使用状況に「Occupied」を設定する。
つぎに、ゲストOS#iは、プロセスP3(PID:400)と同一のプロセスP3(PID:401)を生成して、プロセスP3(PID:401)をスタンバイ状態で、アクティブ状態とした論理CPU3に割り当てる。そして、ゲストOS#iは、プロセスP3(PID:401)をアクティブ状態とし、プロセスP3(PID:400)をスタンバイ状態とする。さらに、ゲストOS#iは、スタンバイ状態としたプロセスP3(PID:400)を削除(kill)する。
この結果、図17の(17−2)に示すように、プロセス管理テーブル700からプロセスP3のプロセス管理情報700−4が削除され、プロセス管理テーブル700にプロセスP3の新たなプロセス管理情報700−5が記憶される。また、ゲストOS#iは、図15の(15−3)に示すように、論理CPU使用状況テーブル500内の論理CPU使用状況情報500−2の使用状況に「Occupied」を設定する。
これにより、図12に示すように、スケールアップ対象として指定されたプロセスP3について、プロセスP3(PID:400)からプロセスP3(PID:401)に切り替えることができる。この結果、サービスを中断することなく、プロセスP3が使用可能な論理CPUのパワーを、50%(プロセスP2と共用)から100%(プロセスP3で占有)に増やすことができる。
・スケールダウン処理例
図13において、ゲストOS#iは、オーケストレータ1100からスケールダウン指示を受け付ける。ここでは、プロセスP3のスケールダウン指示を受け付けた場合を想定する。この場合、ゲストOS#iは、プロセスP3(PID:401)と同一のプロセスP3(PID:402)を生成して、プロセスP3(PID:402)をスタンバイ状態で、アクティブ状態の論理CPU2に割り当てる。
図13において、ゲストOS#iは、オーケストレータ1100からスケールダウン指示を受け付ける。ここでは、プロセスP3のスケールダウン指示を受け付けた場合を想定する。この場合、ゲストOS#iは、プロセスP3(PID:401)と同一のプロセスP3(PID:402)を生成して、プロセスP3(PID:402)をスタンバイ状態で、アクティブ状態の論理CPU2に割り当てる。
なお、論理CPU2は、コンフィグ情報400から特定される、プロセスP3の切替先の論理CPUであり、プロセスP3に対応する論理CPUマッピング値と同じ論理CPUマッピング値が設定されたプロセスP2が割り当てられている論理CPUである。
そして、ゲストOS#iは、プロセスP3(PID:402)をアクティブ状態とし、プロセスP3(PID:401)をスタンバイ状態とする。さらに、ゲストOS#iは、スタンバイ状態としたプロセスP3(PID:401)を削除(kill)する。
この結果、図17の(17−3)に示すように、プロセス管理テーブル700からプロセスP3のプロセス管理情報700−5が削除され、プロセス管理テーブル700にプロセスP3の新たなプロセス管理情報700−6が記憶される。また、ゲストOS#iは、図15の(15−4)に示すように、論理CPU使用状況テーブル500内の論理CPU使用状況情報500−2の使用状況に「Used」を設定するとともに、論理CPU使用状況情報500−3の使用状況に「Free」を設定する。また、図16の(16−3)に示すように、物理CPU使用状況テーブル600内の物理CPU使用状況情報600−3の使用状況に「Free」が設定される。
これにより、図14に示すように、スケールダウン対象として指定されたプロセスP3について、プロセスP3(PID:401)からプロセスP3(PID:402)に切り替えることができる。この結果、サービスを中断することなく、プロセスP3が使用可能な論理CPUのパワーを、100%(プロセスP3で占有)から50%(プロセスP2と共用)に減らすことができる。
(情報処理装置100のプロセス管理処理手順)
つぎに、情報処理装置100のプロセス管理処理手順について説明する。まず、図18を用いて、情報処理装置100の初期化処理手順について説明する。ただし、スケールアップ対象となるプロセスの数分の論理CPUを含む論理CPUプールが作成されて、各論理CPUの論理CPU使用状況情報が論理CPU使用状況テーブル500に記憶されている場合を想定する。
つぎに、情報処理装置100のプロセス管理処理手順について説明する。まず、図18を用いて、情報処理装置100の初期化処理手順について説明する。ただし、スケールアップ対象となるプロセスの数分の論理CPUを含む論理CPUプールが作成されて、各論理CPUの論理CPU使用状況情報が論理CPU使用状況テーブル500に記憶されている場合を想定する。
<初期化処理手順>
図18は、情報処理装置100の初期化処理手順の一例を示すフローチャートである。図18のフローチャートにおいて、まず、情報処理装置100のゲストOS#iは、コンフィグ情報を読み込む(ステップS1801)。そして、ゲストOS#iは、読み込んだコンフィグ情報を参照して、スケールアップ対象となるプロセスのプロセス名を選択する(ステップS1802)。
図18は、情報処理装置100の初期化処理手順の一例を示すフローチャートである。図18のフローチャートにおいて、まず、情報処理装置100のゲストOS#iは、コンフィグ情報を読み込む(ステップS1801)。そして、ゲストOS#iは、読み込んだコンフィグ情報を参照して、スケールアップ対象となるプロセスのプロセス名を選択する(ステップS1802)。
つぎに、ゲストOS#iは、コンフィグ情報を参照して、選択したプロセス名に対応する論理CPUマッピング値を特定する(ステップS1803)。そして、ゲストOS#iは、選択したプロセス名のプロセスを起動する(ステップS1804)。なお、起動されたプロセスにはPIDが付与される。
つぎに、ゲストOS#iは、論理CPU使用状況テーブル500を参照して、特定した論理CPUマッピング値に基づいて、起動したプロセスを論理CPUに割り当てる(ステップS1805)。そして、ゲストOS#iは、プロセス管理テーブル700を参照して、起動したプロセスを割り当てた論理CPUに物理CPUが対応付けられているか否かを判断する(ステップS1806)。
ここで、物理CPUが対応付けられている場合(ステップS1806:Yes)、ゲストOS#iは、ステップS1811に移行する。一方、物理CPUが対応付けられていない場合(ステップS1806:No)、ゲストOS#iは、ホストOS220から、物理CPUの物理CPU使用状況情報を取得する(ステップS1807)。
そして、ゲストOS#iは、取得した物理CPU使用状況情報を参照して、未使用の物理CPUがあるか否かを判断する(ステップS1808)。ここで、未使用の物理CPUがない場合(ステップS1808:No)、ゲストOS#iは、保守装置202に対してエラーを出力して(ステップS1809)、本フローチャートによる一連の処理を終了する。
これにより、システム200の保守者に対して、スケールアップ対象となるプロセスが使用可能な物理CPUが存在しないことを通知することができる。
一方、未使用の物理CPUがある場合(ステップS1808:Yes)、ゲストOS#iは、ホストOS220に対して、起動したプロセスを割り当てた論理CPUを未使用の物理CPUに対応付けるPinning要求を行う(ステップS1810)。この結果、プロセスを割り当てた論理CPUと物理CPUとの対応付けが行われ、論理CPUと物理CPUとの対応関係がプロセス管理テーブル700に登録される。
なお、ホストOS220におけるPinning処理が終了すると、ホストOS220からゲストOS#iに対してPinning応答が送信される。このPinning応答には、例えば、論理CPUと物理CPUとの対応関係を示す情報が含まれる。
つぎに、ゲストOS#iは、コンフィグ情報を参照して、選択していない未選択のプロセス名があるか否かを判断する(ステップS1811)。ここで、未選択のプロセス名がある場合(ステップS1811:Yes)、ゲストOS#iは、ステップS1802に戻る。
一方、未選択のプロセス名がない場合(ステップS1811:No)、ゲストOS#iは、本フローチャートによる一連の処理を終了する。これにより、スケールアップ対象となる各プロセスを、予め指定したスケール(論理CPUのパワー)で起動することができる。
<スケールアップ処理手順>
つぎに、図19および図20を用いて、情報処理装置100のスケールアップ処理手順について説明する。
つぎに、図19および図20を用いて、情報処理装置100のスケールアップ処理手順について説明する。
図19および図20は、情報処理装置100のスケールアップ処理手順の一例を示すフローチャートである。図19のフローチャートにおいて、まず、情報処理装置100のゲストOS#iは、スケールアップ指示を受け付けたか否かを判断する(ステップS1901)。
ここで、ゲストOS#iは、スケールアップ指示を受け付けるのを待つ(ステップS1901:No)。そして、ゲストOS#iは、スケールアップ指示を受け付けた場合(ステップS1901:Yes)、プロセス管理テーブル700を参照して、スケールアップ対象プロセスの割当先の論理CPUを特定する(ステップS1902)。
そして、ゲストOS#iは、プロセス管理テーブル700を参照して、特定した論理CPUが最大スケール状態であるか否かを判断する(ステップS1903)。最大スケール状態とは、1つのプロセスで論理CPUを占有中の状態である。
ここで、最大スケール状態の場合(ステップS1903:Yes)、ゲストOS#iは、保守装置202に対してエラーを出力して(ステップS1904)、本フローチャートによる一連の処理を終了する。これにより、システム200の保守者に対して、スケールアップ対象プロセスについて、これ以上スケールアップすることができない状態であることを通知することができる。
一方、最大スケール状態ではない場合(ステップS1903:No)、ゲストOS#iは、論理CPU使用状況テーブル500を参照して、使用状況「Free」の論理CPUを選択する(ステップS1905)。つぎに、ゲストOS#iは、ホストOS220に対して、選択した論理CPUを未使用の物理CPUに対応付けるPinning要求を行う(ステップS1906)。
そして、ゲストOS#iは、論理CPU使用状況テーブル500内の選択した論理CPUの使用状況に「Occupied」を設定して(ステップS1907)、図20に示すステップS2001に移行する。
図20のフローチャートにおいて、まず、ゲストOS#iは、スケールアップ対象プロセスと同一の待機系プロセスを生成する(ステップS2001)。そして、ゲストOS#iは、生成した待機系プロセスをスタンバイ状態で、ステップS1905において選択した論理CPUに割り当てる(ステップS2002)。
つぎに、ゲストOS#iは、生成した待機系プロセスの動作状況を確認する(ステップS2003)。そして、ゲストOS#iは、待機系プロセスが正常に起動したか否かを判断する(ステップS2004)。
ここで、待機系プロセスが正常に起動した場合(ステップS2004:Yes)、ゲストOS#iは、待機系プロセスをアクティブ状態とし、スケールアップ対象プロセスをスタンバイ状態とすることにより、スケールアップ対象プロセスを待機系プロセスに切り替える(ステップS2005)。
そして、ゲストOS#iは、スタンバイ状態としたスケールアップ対象プロセスを削除して(ステップS2006)、本フローチャートによる一連の処理を終了する。この結果、論理CPU使用状況テーブル500およびプロセス管理テーブル700の記憶内容が適宜更新される。
これにより、サービスを中断することなく、スケールアップ指示されたプロセスが使用可能な論理CPUのパワーを増やすことができる。
また、ステップS2004において、待機系プロセスが正常に起動していない場合(ステップS2004:No)、ゲストOS#iは、生成した待機系プロセスを削除する(ステップS2007)。そして、ゲストOS#iは、保守装置202に対してエラーを出力して(ステップS2008)、本フローチャートによる一連の処理を終了する。
これにより、システム200の保守者に対して、スケールアップ対象プロセスのスケールアップに失敗したことを通知することができるとともに、待機系プロセスが正常に起動していないために生じるサービス中断を回避することができる。
なお、ゲストOS#iは、ステップS1901において受け付けたスケールアップ指示から特定されるプロセスが、コンフィグ情報に定義されたプロセスでない場合にはエラーを出力することにしてもよい。
<スケールダウン処理手順>
つぎに、図21を用いて、情報処理装置100のスケールダウン処理手順について説明する。
つぎに、図21を用いて、情報処理装置100のスケールダウン処理手順について説明する。
図21は、情報処理装置100のスケールダウン処理手順の一例を示すフローチャートである。図21のフローチャートにおいて、まず、ゲストOS#iは、スケールダウン指示を受け付けたか否かを判断する(ステップS2101)。ここで、ゲストOS#iは、スケールダウン指示を受け付けるのを待つ(ステップS2101:No)。
そして、ゲストOS#iは、スケールダウン指示を受け付けた場合(ステップS2101:Yes)、プロセス管理テーブル700を参照して、スケールダウン対象プロセスの切替先の論理CPUを特定する(ステップS2102)。なお、切替先の論理CPUは、例えば、スケールダウン対象プロセスのプロセス名に対応する論理CPUマッピング値と同じ論理CPUマッピング値が設定された他のプロセスが割り当てられている論理CPUである。
つぎに、ゲストOS#iは、スケールダウン対象プロセスと同一の待機系プロセスを生成する(ステップS2103)。そして、ゲストOS#iは、生成した待機系プロセスをスタンバイ状態で、特定した切替先の論理CPUに割り当てる(ステップS2104)。
つぎに、ゲストOS#iは、生成した待機系プロセスの動作状況を確認する(ステップS2105)。そして、ゲストOS#iは、待機系プロセスが正常に起動したか否かを判断する(ステップS2106)。
ここで、待機系プロセスが正常に起動した場合(ステップS2106:Yes)、ゲストOS#iは、待機系プロセスをアクティブ状態とし、スケールダウン対象プロセスをスタンバイ状態とすることにより、スケールダウン対象プロセスを待機系プロセスに切り替える(ステップS2107)。
そして、ゲストOS#iは、スタンバイ状態としたスケールダウン対象プロセスを削除して(ステップS2108)、本フローチャートによる一連の処理を終了する。この結果、論理CPU使用状況テーブル500およびプロセス管理テーブル700の記憶内容が適宜更新される。
これにより、サービスを中断することなく、スケールダウン指示されたプロセスが使用可能な論理CPUのパワーを減らすことができる。
また、ステップS2106において、待機系プロセスが正常に起動していない場合(ステップS2106:No)、ゲストOS#iは、生成した待機系プロセスを削除する(ステップS2109)。そして、ゲストOS#iは、保守装置202に対してエラーを出力して(ステップS2110)、本フローチャートによる一連の処理を終了する。
これにより、システム200の保守者に対して、スケールダウン対象プロセスのスケールダウンに失敗したことを通知することができるとともに、待機系プロセスが正常に起動していないために生じるサービス中断を回避することができる。
なお、ゲストOS#iは、ステップS2101において受け付けたスケールダウン指示から特定されるプロセスが、コンフィグ情報に定義されたプロセスでない場合にはエラーを出力することにしてもよい。
以上説明したように、実施の形態にかかる情報処理装置100によれば、SIPサーバ#i上のプロセスのスケールアップ指示を受け付けたことに応じて、SIPサーバ#i上の未使用の論理CPUを、未使用の物理CPUと対応付けて使用状態とすることができる。また、情報処理装置100によれば、スケールアップ対象プロセスと同一の第2プロセスを生成して、第2プロセスをスタンバイ状態で、使用状態とした論理CPUに割り当てることができる。そして、情報処理装置100によれば、使用状態とした論理CPUに割り当てた第2プロセスをアクティブ状態とし、スケールアップ対象プロセスをスタンバイ状態とすることができる。
これにより、スケールアップ対象として指定されたあるプロセスについて、スケールアップ対象プロセスから第2プロセスに切り替えて、サービスを中断することなく当該プロセスが使用可能な論理CPUのパワーを増やすことができる。
また、情報処理装置100によれば、使用状態とした論理CPUに割り当てた第2プロセスの動作状況を確認し、第2プロセスが正常起動した場合に、第2プロセスをアクティブ状態とし、スケールアップ対象プロセスをスタンバイ状態とすることができる。これにより、第2プロセスが正常に起動していないために生じるサービス中断を回避することができる。
また、情報処理装置100によれば、スタンバイ状態とした第1プロセスを終了させることができる。これにより、スタンバイ状態としたスケールアップ対象プロセスにかかる無駄な消費電力を削減することができる。
また、情報処理装置100によれば、スケールダウン指示を受け付けたことに応じて、スケールダウン対象プロセスと同一の第3プロセスを生成して、第3プロセスをスタンバイ状態で、SIPサーバ#i上の使用中の論理CPUに割り当てることができる。そして、情報処理装置100によれば、使用中の論理CPUに割り当てた第3プロセスをアクティブ状態とし、スケールダウン対象プロセスをスタンバイ状態とすることができる。
これにより、スケールダウン対象として指定されたあるプロセスについて、スケールダウン対象プロセスから第3プロセスに切り替えて、サービスを中断することなく当該プロセスが使用可能な論理CPUのパワーを減らすことができる。
また、情報処理装置100によれば、スケールダウン対象プロセスと同じ論理CPUマッピング値が設定された他のプロセスが割り当てられている論理CPU、例えば、スケールダウン対象プロセスに対応するスケールアップ前のプロセスが割り当てられていた論理CPUに第3プロセスを割り当てることができる。これにより、物理CPU(論理CPU)へのプロセスの割り当てを、コンフィグ情報(例えば、コンフィグ情報400)で予め定義した元の構成に戻すことができる。
また、情報処理装置100によれば、使用中の論理CPUに割り当てた第3プロセスの動作状況を確認し、第3プロセスが正常起動した場合に、第3プロセスをアクティブ状態とし、スケールダウン対象プロセスをスタンバイ状態とすることができる。これにより、第3プロセスが正常に起動していないために生じるサービス中断を回避することができる。
また、情報処理装置100によれば、スタンバイ状態としたスケールダウン対象プロセスを終了させることができる。これにより、スタンバイ状態としたスケールダウン対象プロセスにかかる無駄な消費電力を削減することができる。
これらのことから、情報処理装置100によれば、通常運用時は最小限のリソース(物理CPU)を使用して消費電力を抑えながら、プロセスが高負荷状態となったら、サービスを停止することなく、プロセスをスケールアップすることができるようになる。これにより、負荷変動へ柔軟に対応することが可能となり、リソースを効率的に使用することができる。
なお、上述した説明では、プロセス管理対象として、レスポンスタイムを保証することが求められるSIPサーバ#i上のプロセス(呼処理プロセス)を例に挙げて説明したが、これに限らない。例えば、チケット予約のシステムの予約受付処理のプロセスに適用することにより、当該プロセスの負荷が急激に増加した際に、スケールアウトするよりも迅速に対応することができる。
なお、本実施の形態で説明したプロセス管理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本プロセス管理プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO(Magneto−Optical disk)、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本プロセス管理プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
仮想マシン上の複数のプロセスで物理CPUを共用中に、前記複数のプロセスのうちのいずれかのアクティブ状態である第1プロセスについて、物理CPUを占有する状態とする要求を受け付け、
前記要求を受け付けたことに応じて、前記仮想マシン上の未使用の論理CPUを、前記コンピュータ上の未使用の物理CPUと対応付けて使用状態とし、
前記第1プロセスと同一の第2プロセスを生成して、前記第2プロセスをスタンバイ状態で前記使用状態とした論理CPUに割り当て、
前記使用状態とした論理CPUに割り当てた前記第2プロセスをアクティブ状態とし、
前記第1プロセスをスタンバイ状態とする、
処理を実行させることを特徴とするプロセス管理プログラム。
仮想マシン上の複数のプロセスで物理CPUを共用中に、前記複数のプロセスのうちのいずれかのアクティブ状態である第1プロセスについて、物理CPUを占有する状態とする要求を受け付け、
前記要求を受け付けたことに応じて、前記仮想マシン上の未使用の論理CPUを、前記コンピュータ上の未使用の物理CPUと対応付けて使用状態とし、
前記第1プロセスと同一の第2プロセスを生成して、前記第2プロセスをスタンバイ状態で前記使用状態とした論理CPUに割り当て、
前記使用状態とした論理CPUに割り当てた前記第2プロセスをアクティブ状態とし、
前記第1プロセスをスタンバイ状態とする、
処理を実行させることを特徴とするプロセス管理プログラム。
(付記2)前記コンピュータに、
前記使用状態とした論理CPUに割り当てた前記第2プロセスの動作状況を確認し、
前記第2プロセスが正常起動した場合に、前記第2プロセスをアクティブ状態とし、
前記第1プロセスをスタンバイ状態とする、
処理を実行させることを特徴とする付記1に記載のプロセス管理プログラム。
前記使用状態とした論理CPUに割り当てた前記第2プロセスの動作状況を確認し、
前記第2プロセスが正常起動した場合に、前記第2プロセスをアクティブ状態とし、
前記第1プロセスをスタンバイ状態とする、
処理を実行させることを特徴とする付記1に記載のプロセス管理プログラム。
(付記3)前記コンピュータに、
前記スタンバイ状態とした前記第1プロセスを終了させる、処理を実行させることを特徴とする付記1または2に記載のプロセス管理プログラム。
前記スタンバイ状態とした前記第1プロセスを終了させる、処理を実行させることを特徴とする付記1または2に記載のプロセス管理プログラム。
(付記4)前記コンピュータに、
前記アクティブ状態とした前記第2プロセスについて、他のプロセスと物理CPUを共用する状態とする第2の要求を受け付け、
前記第2の要求を受け付けたことに応じて、前記第2プロセスと同一の第3プロセスを生成して、前記第3プロセスをスタンバイ状態で前記仮想マシン上の使用中の論理CPUに割り当て、
前記使用中の論理CPUに割り当てた前記第3プロセスをアクティブ状態とし、
前記第2プロセスをスタンバイ状態とする、
処理を実行させることを特徴とする付記1〜3のいずれか一つに記載のプロセス管理プログラム。
前記アクティブ状態とした前記第2プロセスについて、他のプロセスと物理CPUを共用する状態とする第2の要求を受け付け、
前記第2の要求を受け付けたことに応じて、前記第2プロセスと同一の第3プロセスを生成して、前記第3プロセスをスタンバイ状態で前記仮想マシン上の使用中の論理CPUに割り当て、
前記使用中の論理CPUに割り当てた前記第3プロセスをアクティブ状態とし、
前記第2プロセスをスタンバイ状態とする、
処理を実行させることを特徴とする付記1〜3のいずれか一つに記載のプロセス管理プログラム。
(付記5)前記使用中の論理CPUは、前記第1プロセスが割り当てられていた論理CPUである、ことを特徴とする付記4に記載のプロセス管理プログラム。
(付記6)前記コンピュータに、
前記使用中の論理CPUに割り当てた前記第3プロセスの動作状況を確認し、
前記第3プロセスが正常起動した場合に、前記第3プロセスをアクティブ状態とし、
前記第2プロセスをスタンバイ状態とする、
処理を実行させることを特徴とする付記4または5に記載のプロセス管理プログラム。
前記使用中の論理CPUに割り当てた前記第3プロセスの動作状況を確認し、
前記第3プロセスが正常起動した場合に、前記第3プロセスをアクティブ状態とし、
前記第2プロセスをスタンバイ状態とする、
処理を実行させることを特徴とする付記4または5に記載のプロセス管理プログラム。
(付記7)前記コンピュータに、
前記スタンバイ状態とした前記第2プロセスを終了させる、処理を実行させることを特徴とする付記4〜6のいずれか一つに記載のプロセス管理プログラム。
前記スタンバイ状態とした前記第2プロセスを終了させる、処理を実行させることを特徴とする付記4〜6のいずれか一つに記載のプロセス管理プログラム。
(付記8)コンピュータが、
仮想マシン上の複数のプロセスで物理CPUを共用中に、前記複数のプロセスのうちのいずれかのアクティブ状態である第1プロセスについて、物理CPUを占有する状態とする要求を受け付け、
前記要求を受け付けたことに応じて、前記仮想マシン上の未使用の論理CPUを、前記コンピュータ上の未使用の物理CPUと対応付けて使用状態とし、
前記第1プロセスと同一の第2プロセスを生成して、前記第2プロセスをスタンバイ状態で前記使用状態とした論理CPUに割り当て、
前記使用状態とした論理CPUに割り当てた前記第2プロセスをアクティブ状態とし、
前記第1プロセスをスタンバイ状態とする、
処理を実行することを特徴とするプロセス管理方法。
仮想マシン上の複数のプロセスで物理CPUを共用中に、前記複数のプロセスのうちのいずれかのアクティブ状態である第1プロセスについて、物理CPUを占有する状態とする要求を受け付け、
前記要求を受け付けたことに応じて、前記仮想マシン上の未使用の論理CPUを、前記コンピュータ上の未使用の物理CPUと対応付けて使用状態とし、
前記第1プロセスと同一の第2プロセスを生成して、前記第2プロセスをスタンバイ状態で前記使用状態とした論理CPUに割り当て、
前記使用状態とした論理CPUに割り当てた前記第2プロセスをアクティブ状態とし、
前記第1プロセスをスタンバイ状態とする、
処理を実行することを特徴とするプロセス管理方法。
(付記9)仮想マシン上の複数のプロセスで物理CPUを共用中に、前記複数のプロセスのうちのいずれかのアクティブ状態である第1プロセスについて、物理CPUを占有する状態とする要求を受け付け、
前記要求を受け付けたことに応じて、前記仮想マシン上の未使用の論理CPUを、自装置上の未使用の物理CPUと対応付けて使用状態とし、
前記第1プロセスと同一の第2プロセスを生成して、前記第2プロセスをスタンバイ状態で前記使用状態とした論理CPUに割り当て、
前記使用状態とした論理CPUに割り当てた前記第2プロセスをアクティブ状態とし、
前記第1プロセスをスタンバイ状態とする、
制御部を有することを特徴とする情報処理装置。
前記要求を受け付けたことに応じて、前記仮想マシン上の未使用の論理CPUを、自装置上の未使用の物理CPUと対応付けて使用状態とし、
前記第1プロセスと同一の第2プロセスを生成して、前記第2プロセスをスタンバイ状態で前記使用状態とした論理CPUに割り当て、
前記使用状態とした論理CPUに割り当てた前記第2プロセスをアクティブ状態とし、
前記第1プロセスをスタンバイ状態とする、
制御部を有することを特徴とする情報処理装置。
100 情報処理装置
101 仮想マシン
111,112,113 プロセス
121,122 論理CPU
131,132 物理CPU
200 システム
201 端末
202 保守装置
220 ホストOS
400 コンフィグ情報
500 論理CPU使用状況テーブル
600 物理CPU使用状況テーブル
700 プロセス管理テーブル
801 初期化処理部
802 受付部
803 スケールアップ処理部
804 スケールダウン処理部
900 論理CPUプール
1100 オーケストレータ
#1〜#n,#i ゲストOS
101 仮想マシン
111,112,113 プロセス
121,122 論理CPU
131,132 物理CPU
200 システム
201 端末
202 保守装置
220 ホストOS
400 コンフィグ情報
500 論理CPU使用状況テーブル
600 物理CPU使用状況テーブル
700 プロセス管理テーブル
801 初期化処理部
802 受付部
803 スケールアップ処理部
804 スケールダウン処理部
900 論理CPUプール
1100 オーケストレータ
#1〜#n,#i ゲストOS
Claims (8)
- コンピュータに、
仮想マシン上の複数のプロセスで物理CPUを共用中に、前記複数のプロセスのうちのいずれかのアクティブ状態である第1プロセスについて、物理CPUを占有する状態とする要求を受け付け、
前記要求を受け付けたことに応じて、前記仮想マシン上の未使用の論理CPUを、前記コンピュータ上の未使用の物理CPUと対応付けて使用状態とし、
前記第1プロセスと同一の第2プロセスを生成して、前記第2プロセスをスタンバイ状態で前記使用状態とした論理CPUに割り当て、
前記使用状態とした論理CPUに割り当てた前記第2プロセスをアクティブ状態とし、
前記第1プロセスをスタンバイ状態とする、
処理を実行させることを特徴とするプロセス管理プログラム。 - 前記コンピュータに、
前記使用状態とした論理CPUに割り当てた前記第2プロセスの動作状況を確認し、
前記第2プロセスが正常起動した場合に、前記第2プロセスをアクティブ状態とし、
前記第1プロセスをスタンバイ状態とする、
処理を実行させることを特徴とする請求項1に記載のプロセス管理プログラム。 - 前記コンピュータに、
前記スタンバイ状態とした前記第1プロセスを終了させる、処理を実行させることを特徴とする請求項1または2に記載のプロセス管理プログラム。 - 前記コンピュータに、
前記アクティブ状態とした前記第2プロセスについて、他のプロセスと物理CPUを共用する状態とする第2の要求を受け付け、
前記第2の要求を受け付けたことに応じて、前記第2プロセスと同一の第3プロセスを生成して、前記第3プロセスをスタンバイ状態で前記仮想マシン上の使用中の論理CPUに割り当て、
前記使用中の論理CPUに割り当てた前記第3プロセスをアクティブ状態とし、
前記第2プロセスをスタンバイ状態とする、
処理を実行させることを特徴とする請求項1〜3のいずれか一つに記載のプロセス管理プログラム。 - 前記コンピュータに、
前記使用中の論理CPUに割り当てた前記第3プロセスの動作状況を確認し、
前記第3プロセスが正常起動した場合に、前記第3プロセスをアクティブ状態とし、
前記第2プロセスをスタンバイ状態とする、
処理を実行させることを特徴とする請求項4に記載のプロセス管理プログラム。 - 前記コンピュータに、
前記スタンバイ状態とした前記第2プロセスを終了させる、処理を実行させることを特徴とする請求項4または5に記載のプロセス管理プログラム。 - コンピュータが、
仮想マシン上の複数のプロセスで物理CPUを共用中に、前記複数のプロセスのうちのいずれかのアクティブ状態である第1プロセスについて、物理CPUを占有する状態とする要求を受け付け、
前記要求を受け付けたことに応じて、前記仮想マシン上の未使用の論理CPUを、前記コンピュータ上の未使用の物理CPUと対応付けて使用状態とし、
前記第1プロセスと同一の第2プロセスを生成して、前記第2プロセスをスタンバイ状態で前記使用状態とした論理CPUに割り当て、
前記使用状態とした論理CPUに割り当てた前記第2プロセスをアクティブ状態とし、
前記第1プロセスをスタンバイ状態とする、
処理を実行することを特徴とするプロセス管理方法。 - 仮想マシン上の複数のプロセスで物理CPUを共用中に、前記複数のプロセスのうちのいずれかのアクティブ状態である第1プロセスについて、物理CPUを占有する状態とする要求を受け付け、
前記要求を受け付けたことに応じて、前記仮想マシン上の未使用の論理CPUを、自装置上の未使用の物理CPUと対応付けて使用状態とし、
前記第1プロセスと同一の第2プロセスを生成して、前記第2プロセスをスタンバイ状態で前記使用状態とした論理CPUに割り当て、
前記使用状態とした論理CPUに割り当てた前記第2プロセスをアクティブ状態とし、
前記第1プロセスをスタンバイ状態とする、
制御部を有することを特徴とする情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016116685A JP2017220183A (ja) | 2016-06-10 | 2016-06-10 | プロセス管理プログラム、プロセス管理方法、および情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016116685A JP2017220183A (ja) | 2016-06-10 | 2016-06-10 | プロセス管理プログラム、プロセス管理方法、および情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017220183A true JP2017220183A (ja) | 2017-12-14 |
Family
ID=60656228
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016116685A Pending JP2017220183A (ja) | 2016-06-10 | 2016-06-10 | プロセス管理プログラム、プロセス管理方法、および情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2017220183A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102018128153A1 (de) | 2017-11-15 | 2019-05-16 | Shimano Inc. | Steuervorrichtung für ein von menschen angetriebenes fahrzeug |
-
2016
- 2016-06-10 JP JP2016116685A patent/JP2017220183A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102018128153A1 (de) | 2017-11-15 | 2019-05-16 | Shimano Inc. | Steuervorrichtung für ein von menschen angetriebenes fahrzeug |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10171567B2 (en) | Load balancing computer device, system, and method | |
US10684888B1 (en) | Self-organizing server migration to service provider systems | |
US10628273B2 (en) | Node system, server apparatus, scaling control method, and program | |
US20200356402A1 (en) | Method and apparatus for deploying virtualized network element device | |
US10313424B2 (en) | Cloud application processing method, cloud application deployment method, and related apparatus and system | |
US8543692B2 (en) | Network system | |
CN108984266B (zh) | 一种虚拟机的管理方法、装置及系统 | |
US20160266938A1 (en) | Load balancing function deploying method and apparatus | |
CN105408863A (zh) | 具有不同的租户集的端点数据中心 | |
EP3386169B1 (en) | Address allocation method, gateway and system | |
JP2011198200A (ja) | サービス提供システム、仮想マシンサーバ、サービス提供方法及びサービス提供プログラム | |
CN104144202B (zh) | Hadoop分布式文件系统的访问方法、系统和装置 | |
US11431603B2 (en) | Dynamic cloning of application infrastructures | |
WO2017067464A1 (zh) | 获取资源的方法及装置 | |
US8458702B1 (en) | Method for implementing user space up-calls on java virtual machine before/after garbage collection | |
WO2020057438A1 (zh) | 云计算服务中的软件调试的方法和装置 | |
JP5609527B2 (ja) | ネットワーク仮想化システム、ノード、ネットワーク仮想化方法、及び、ネットワーク仮想化プログラム | |
CN110019475B (zh) | 数据持久化处理方法、装置及系统 | |
JP5667506B2 (ja) | クラスタシステムおよびソフトウェアアップデート方法 | |
JP2017220183A (ja) | プロセス管理プログラム、プロセス管理方法、および情報処理装置 | |
JP2013186644A (ja) | サービスオーダーシステム、サービスオーダー装置、サービスオーダー方法、及びサービスオーダープログラム | |
JP5491934B2 (ja) | サーバ装置、及び情報処理システムの制御方法、並びにプログラム | |
JP6273880B2 (ja) | 仮想マシン管理システム、仮想マシン管理装置、仮想マシン管理方法、及び仮想マシン管理プログラム | |
JP2015090675A (ja) | 情報処理方法、装置、及びプログラム | |
JP5975003B2 (ja) | 仮想化制御装置、仮想化システム、仮想化方法、および、仮想化制御プログラム。 |