(57)【要約】【課題】サーバの増減設によって、クラスタ全体のリソース利用効率を高くするためのプロセス配置ロジックを提供する。【解決手段】クラスタを構成するサーバ１は、サーバ１ごとに、サーバ１上で動作するプロセス、メモリ使用量、および、メモリ空き容量、を対応付けたサーバ管理テーブルと、メモリ使用量が、サーバの各々に対して予め設定された減設閾値を下回った減設候補サーバが存在するか否かを判定する減設候補サーバ決定部と、減設候補サーバが存在する場合には、減設候補サーバ上で動作するすべてのプロセスがメモリを使用するときに求められるメモリ使用量を上回るメモリ空き容量を有する空き余裕サーバが存在するか否かを判定する空き余裕サーバ決定部と、空き余裕サーバが存在する場合には、減設候補サーバ上で動作するすべてのプロセスを空き余裕サーバに移行し、減設候補サーバを減設する増減設実行部と、を有する。【選択図】図１
2016045682.tif 000002
【特許請求の範囲】
【請求項１】
複数のサーバ間でプロセスを移行することで分散処理を行うクラスタを構成するサーバであって、
前記サーバの記憶部は、
前記クラスタを構成するサーバごとに、前記サーバ上で動作する１または複数のプロセス、前記プロセスの動作に基づいて求められるメモリのメモリ使用量、および、前記メモリのメモリ空き容量、を対応付けて記憶しており、
前記サーバの制御部は、
前記クラスタを構成するサーバの中に、前記メモリ使用量が、前記サーバの各々に対して予め設定された減設閾値を下回った減設候補サーバが存在するか否かを判定する制御と、
前記減設候補サーバが存在する場合には、前記クラスタを構成するサーバの中に、前記減設候補サーバ上で動作するすべてのプロセスがメモリを使用するときに求められるメモリ使用量を上回る前記メモリ空き容量を有する空き余裕サーバが存在するか否かを判定する制御と、
前記空き余裕サーバが存在する場合には、前記減設候補サーバ上で動作するすべてのプロセスを前記空き余裕サーバに移行し、前記減設候補サーバを減設する制御と、を実行する、
ことを特徴とするサーバ。
【請求項２】
複数のサーバ間でプロセスを移行することで分散処理を行うクラスタを構成するサーバであって、
前記サーバの記憶部は、
前記クラスタを構成するサーバごとに、前記サーバ上で動作する１または複数のプロセス、前記プロセスの動作に基づいて求められるメモリのメモリ使用量、および、前記メモリのメモリ空き容量、を対応付けて記憶しており、
前記サーバの制御部は、
前記クラスタにて新規プロセスが生成された場合、前記新規プロセスの初期起動を行う一時サーバとして機能する制御と、
前記新規プロセスの動作に基づいて求められるメモリのメモリ使用量を推定する制御と、
前記クラスタを構成するサーバの中に、前記推定したメモリ使用量を上回る前記メモリ空き容量を有する移行可能サーバが存在するか否かを判定する制御と、
前記移行可能サーバが存在する場合には、前記新規プロセスを前記移行可能サーバに移行する制御と、
前記移行可能サーバが存在しない場合には、前記一時サーバから通常サーバに昇格するとともに、前記一時サーバと同様に機能する新規一時サーバを増設する制御と、を実行する、
ことを特徴とするサーバ。
【請求項３】
前記サーバの制御部は、
前記移行可能サーバが複数存在する場合には、前記記憶部を参照して、前記メモリ空き容量の最も小さなサーバを特定する制御と、
前記新規プロセスを、前記特定されたサーバに移行する制御と、を実行する、
ことを特徴とする請求項２に記載のサーバ。
【請求項４】
前記サーバの制御部は、
前記クラスタを構成するサーバの中に、前記メモリ使用量が、前記サーバの各々に対して予め設定された減設閾値を下回った減設候補サーバが存在するか否かを判定する制御と、
前記減設候補サーバが存在する場合には、前記減設候補サーバ以外のサーバを優先的に前記移行可能サーバとする制御、を実行する、
ことを特徴とする請求項２または請求項３に記載のサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のサーバから構成されるクラスタ（「クラスタシステム」、または、「システム」、と称する場合もある。）のリソースの利用効率を最適化する技術に関する。
【背景技術】
【０００２】
高負荷処理、大容量データの使用が求められるシステムとして、複数のサーバリソースを協調させることでシステム全体の性能を向上させるクラスタシステムが用いられている。クラスタを構築する技術の一つとして、ＳＳＩ（Single System Image)という技術が存在する（非特許文献１参照）。
【０００３】
ＳＳＩはＯＳ（Operating System）と連携して動作するソフトウェアである。ＳＳＩソフトウェアは、アプリケーションの実行をサーバに要求するクライアントに対して、複数のサーバを単一のサーバであるかのように見せかけることを可能にする。例えば、ＳＳＩソフトウェアの１つであるKerrighed（非特許文献２参照）は、クラスタを構成する各サーバのリソース情報を統合することで、アプリケーションに意識させることなくプロセスを複数のサーバに分散して処理させることや、システム稼働中であっても、プロセス、および、メモリ上のデータを他のサーバに移動することが可能である。このとき、プロセスの分散は、ＳＳＩソフトウェアの持つスケジューラによって実現される。また、ＳＳＩは、システム稼働中にサーバ数を増減させることもできる。
【０００４】
ＳＳＩソフトウェアを用いることで、複数のサーバへプロセスを分散することができる。しかし、システムの運用コスト、電力コストなどのコストを削減するという観点から、余剰のサーバを減設し、残りのサーバについては常に高いリソースの利用効率でシステムを運用したいという要望がある。この要望を実現するためには、サーバに分散するプロセスに関して、サーバの増減設を意識したプロセス分散ロジックが必要である。
【０００５】
Kerrighedは、クラスタを構成する各サーバのＣＰＵ（Central Processing Unit）使用率に基づいてプロセスを分散している。しかし、Kerrighedは、プロセスが動作するときのメモリ使用量は考慮しないため、サーバが十分なメモリ空き容量を確保できない可能性が高い。その結果、クラスタ全体として見ればメモリに余裕があっても（つまり、クラスタ全体のリソース利用効率は低くても）、大きなメモリ空き容量を必要とするプロセスを起動するためにサーバを増設しなければならず、コストの増大化を招いてしまう。
【０００６】
また、サーバを減設するためには、そのサーバ上で動作するプロセスを無くす必要がある。しかし、負荷分散のためにプロセスの分散を確率的に行うクラスタシステムにおいて、どのサーバについても動作中のプロセスが無くなることは稀であり、サーバの減設をする機会は一向に生じない。こうした事態は、クラスタ全体のリソース利用効率が概ね低く、無駄なコストが生じており、望ましくない。
【０００７】
クラスタ運用の都合上、止むを得ずサーバを増設しなければならない場合はあるものの、Kerrighedをはじめ、従来技術は、クラスタ全体のリソース利用効率が概して低くなってしまうため、コスト削減という観点から、従来技術のプロセス分散ロジックには問題がある。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】Bruce J. Walker, Hewlett-Packard、“Open Single System Image (openSSI) Linux（登録商標） Cluster Project”、［online］、［２０１４年８月１日検索］、インターネット  ＜ＵＲＬ：http://openssi.org/ssi-intro.pdf＞
【非特許文献２】Christine Morin, et al, “Kerrighed: A Single System Image Cluster Operating System for High Performance Computing”、Euro-Par 2003 Parallel Processing Lecture Notes in Computer Science Volume 2790, 2003, pp 1291-1294
【発明の概要】
【発明が解決しようとする課題】
【０００９】
このような背景に鑑みて、本発明は、サーバの増減設によって、クラスタ全体のリソース利用効率を高くするためのプロセス配置ロジックを提供することを課題とする。
【課題を解決するための手段】
【００１０】
前記した課題を解決するため、請求項１に記載の発明は、複数のサーバ間でプロセスを移行することで分散処理を行うクラスタを構成するサーバであって、前記サーバの記憶部は、前記クラスタを構成するサーバごとに、前記サーバ上で動作する１または複数のプロセス、前記プロセスの動作に基づいて求められるメモリのメモリ使用量、および、前記メモリのメモリ空き容量、を対応付けて記憶しており、前記サーバの制御部は、前記クラスタを構成するサーバの中に、前記メモリ使用量が、前記サーバの各々に対して予め設定された減設閾値を下回った減設候補サーバが存在するか否かを判定する制御と、前記減設候補サーバが存在する場合には、前記クラスタを構成するサーバの中に、前記減設候補サーバ上で動作するすべてのプロセスがメモリを使用するときに求められるメモリ使用量を上回る前記メモリ空き容量を有する空き余裕サーバが存在するか否かを判定する制御と、前記空き余裕サーバが存在する場合には、前記減設候補サーバ上で動作するすべてのプロセスを前記空き余裕サーバに移行し、前記減設候補サーバを減設する制御と、を実行する、ことを特徴とする。
【００１１】
請求項１に記載の発明によれば、メモリ使用量が小さく、リソースの利用効率が低い減設候補サーバと、減設候補サーバ上で動作するプロセスを配置できる空き余裕サーバを特定する。これにより、減設候補サーバの減設によってクラスタに関するコストを削減できるとともに、空き余裕サーバのリソースの利用効率が高まることでクラスタ全体のリソース利用効率を高くすることができる。したがって、サーバの減設によって、クラスタ全体のリソース利用効率を高くするためのプロセス配置ロジックを提供することができる。このようなプロセス配置ロジックは、既存のＳＳＩ技術の機能と親和性が高いロジックであり、ハードウェアの改造を必要とせず、ソフトウェアの改造のみで実現可能である。
【００１２】
また、請求項２に記載の発明は、複数のサーバ間でプロセスを移行することで分散処理を行うクラスタを構成するサーバであって、前記サーバの記憶部は、前記クラスタを構成するサーバごとに、前記サーバ上で動作する１または複数のプロセス、前記プロセスの動作に基づいて求められるメモリのメモリ使用量、および、前記メモリのメモリ空き容量、を対応付けて記憶しており、前記サーバの制御部は、前記クラスタにて新規プロセスが生成された場合、前記新規プロセスの初期起動を行う一時サーバとして機能する制御と、前記新規プロセスの動作に基づいて求められるメモリのメモリ使用量を推定する制御と、前記クラスタを構成するサーバの中に、前記推定したメモリ使用量を上回る前記メモリ空き容量を有する移行可能サーバが存在するか否かを判定する制御と、前記移行可能サーバが存在する場合には、前記新規プロセスを前記移行可能サーバに移行する制御と、前記移行可能サーバが存在しない場合には、前記一時サーバから通常サーバに昇格するとともに、前記一時サーバと同様に機能する新規一時サーバを増設する制御と、を実行する、ことを特徴とする。
【００１３】
請求項２に記載の発明によれば、新規プロセスの取り扱いに関して、一時サーバが前もって新規プロセスの動作に伴うメモリ使用量を推定することで、サーバ増設の必要性を判定することができる。この判定において、既存の移行可能サーバに新規プロセスを移行することを優先することによって、サーバの増設を必要最小限にとどめるとともに、移行可能サーバのリソースの利用効率を高めることができる。したがって、サーバの増設によって、クラスタ全体のリソース利用効率を高くするためのプロセス分散ロジックを提供することができる。このようなプロセス配置ロジックは、既存のＳＳＩ技術の機能と親和性が高いロジックであり、ハードウェアの改造を必要とせず、ソフトウェアの改造のみで実現可能である。
【００１４】
また、請求項３に記載の発明は、請求項２に記載の発明において、前記サーバの制御部は、前記移行可能サーバが複数存在する場合には、前記記憶部を参照して、前記メモリ空き容量の最も小さなサーバを特定する制御と、前記新規プロセスを、前記特定されたサーバに移行する制御と、を実行する、ことを特徴とする。
【００１５】
請求項３に記載の発明によれば、大きなメモリ使用量を必要とするプロセスを配置することができる移行可能サーバを優先的に残すことができるので、このようなプロセスに対してサーバを増設するという手段を極力とらずに済ませることができる。
【００１６】
また、請求項４に記載の発明は、請求項２または請求項３に記載の発明において、前記サーバの制御部は、前記クラスタを構成するサーバの中に、前記メモリ使用量が、前記サーバの各々に対して予め設定された減設閾値を下回った減設候補サーバが存在するか否かを判定する制御と、前記減設候補サーバが存在する場合には、前記減設候補サーバ以外のサーバを優先的に前記移行可能サーバとする制御、を実行する、ことを特徴とする。
【００１７】
請求項４に記載の発明によれば、減設候補サーバに新規プロセスを移行してしまうことで、メモリ使用量が減設候補サーバの減設閾値を超えてしまい、減設候補とならず、サーバの減設によるコスト削減という目的を果たせなくなってしまう、という不都合を避けることができる。
【発明の効果】
【００１８】
本発明によれば、サーバの増減設によって、クラスタ全体のリソース利用効率を高くするためのプロセス分散ロジックを提供することができる。
【図面の簡単な説明】
【００１９】
【図１】本実施形態のサーバから構成されるクラスタの全体構成図である。
【図２】ＳＳＩソフトウェアの機能構成図である。
【図３】サーバ管理テーブルのデータ構造図である。
【図４】サーバの減設処理を示すフローチャートである。
【図５】一時サーバによるサーバ増設処理を示すフローチャートである。
【発明を実施するための形態】
【００２０】
≪構成≫
図１に示すように、本実施形態のサーバ１は、図示しないクライアントからの要求に対しアプリケーション（図１では、「ＡＰＬ」と表記。）を実行することで、所定のサービスをクライアントに提供する。複数のサーバ１は、互いに通信可能に接続されており、所定の情報を送受信することができる。サーバ１は、自身のＯＳ２０と連携して動作することで他のサーバ１とクラスタを構成するＳＳＩソフトウェア１０を有している。つまり、ＳＳＩソフトウェア１０を有する複数のサーバ１は、ＯＳレイヤにてクラスタを構成する。
【００２１】
ＳＳＩソフトウェア１０は、アプリケーションおよびクライアントに対して、複数のサーバ１を単一のサーバとして見せている。ＳＳＩソフトウェア１０は、アプリケーションを実行するときにクラスタの内部処理で発生するプロセスを、クラスタを構成する特定のサーバ１に移行することができる。所定のプロセスがサーバ１上で動作すると、そのサーバ１のメモリのメモリ使用量（図１では、斜線領域で図示）が増大し、メモリ空き容量が小さくなる。なお、ＳＳＩソフトウェア１０は、クラスタが稼働中であっても、サーバ１（破線で図示）の増減設を行うことができる。
【００２２】
一時サーバ１Ａは、他のサーバ１とともにクラスタを構成し、他のサーバ１と同様に機能するサーバである。一時サーバ１Ａに関する詳細は後記する。
【００２３】
サーバ１は、入力部、出力部、制御部および記憶部といったハードウェアを含むコンピュータである。例えば、制御部がＣＰＵ（Central Processing Unit）から構成される場合、その制御部を含むコンピュータによる情報処理は、ＣＰＵによるプログラム実行処理で実現する。また、そのコンピュータが含む記憶部は、ＣＰＵが指令し、そのコンピュータの機能を実現するためのプログラムを記憶する。これによりソフトウェアとハードウェアの協働が実現される。前記プログラムは、記録媒体に記録したり、ネットワークを経由したりすることで提供される。
【００２４】
〔ＳＳＩソフトウェア１０〕
図２に示すように、ＳＳＩソフトウェア１０は、リソース情報取得部１１、プロセス移行部１２、データ移行部１３、減設候補サーバ決定部１４、空き余裕サーバ決定部１５、増減設実行部１６、一時サーバ指定部１７、メモリ使用量推定部１８、移行可能サーバ決定部１９、サーバ管理テーブルＴ、といった機能部を有する。また、ＳＳＩソフトウェア１０は、外部（例えば、クラスタシステムのオペレータが操作するＨＭＩ（Human Machine Interface））から入力された減設閾値（詳細は後記）を有する。サーバ１の各々は、ＳＳＩソフトウェア１０を有しており、したがって、上記した機能部、および、自身のサーバ１に設定された減設閾値を有する。
【００２５】
リソース情報取得部１１は、クラスタを構成するすべてのサーバ１を監視して、すべてのサーバ１から、各々のサーバ１のリソース情報を取得する。取得されるリソース情報には、例えば、サーバ１のＣＰＵ使用率、メモリ使用量、メモリ空き容量、搭載メモリ量、サーバ１上で動作するプロセスを識別するプロセスＩＤ（Identifier）がある。リソース情報取得部１１は、取得したリソース情報の一部または全部をサーバ管理テーブルＴに格納する。
【００２６】
プロセス移行部１２は、サーバ１上で動作するプロセスを別のサーバ１に移行する。
【００２７】
データ移行部１３は、サーバ１がメモリに格納しているデータを他のサーバ１に移行する。前記データは、例えば、アプリケーションがアクセスするデータである。
【００２８】
減設候補サーバ決定部１４は、サーバ管理テーブルＴを参照して、クラスタを構成するサーバ１各々について、メモリ使用量が、予め設定された減設閾値を下回った減設候補サーバが存在するか否かを判定する。存在する場合、減設候補サーバ決定部１４は、サーバ管理テーブルＴにおいて、減設候補サーバと決定したサーバ１の減設候補フラグをオンにする。
【００２９】
空き余裕サーバ決定部１５は、減設候補サーバ決定部１４によって減設候補フラグがオンになった減設候補サーバが存在する場合には、サーバ管理テーブルＴを参照して、クラスタを構成するサーバ１の中に、減設候補サーバ上で動作するすべてのプロセスがメモリを使用するときに求められるメモリ使用量を上回るメモリ空き容量を有する空き余裕サーバが存在するか否かを判定する。減設候補サーバのプロセス移行部１２は、空き余裕サーバ決定部１５が存在すると決定した空き余裕サーバにすべてのプロセスを移行する。
【００３０】
増減設実行部１６は、クラスタを構成するサーバ１の増設および減設を実行する。本実施形態では、減設されるサーバ１は、減設候補サーバであり、増設されるサーバ１は、一時サーバ１Ａが通常サーバに昇格した後に増設される新規一時サーバである（詳細は後記）。増減設実行部１６は、減設されるサーバ１については、サーバ管理テーブルＴ内の該当レコードを削除し、増設されるサーバ１については、サーバ管理テーブルＴ内に該当レコードを新規に作成する。
【００３１】
一時サーバ指定部１７は、クラスタを構成するサーバ１のうち、新規プロセスの初期起動を行うサーバを一時サーバ１Ａとして指定する。一時サーバ指定部１７は、クラスタを構成している一時サーバ１Ａが通常サーバに昇格した場合に、増設するサーバを新規一時サーバとして指定する。指定された新規一時サーバについては、サーバ管理テーブルＴにおいてレコードが作成され、一時サーバ指定フラグがオンになる。
【００３２】
メモリ使用量推定部１８は、クラスタを構成するサーバ１が一時サーバ１Ａである場合に、新規プロセスの動作に基づいて求められるメモリのメモリ使用量を推定する。メモリ使用量を推定するロジックとしては、例えば、新規プロセス起動後に、クラスタシステムの保守者が任意に設定した周期および回数にわたってメモリ使用量を計測し、計測したメモリ使用量からＯＳ２０が使用するメモリ量を減算した平均量を、新規プロセスが使用するメモリ量を概算量として推定する方法がある。
【００３３】
移行可能サーバ決定部１９は、サーバ管理テーブルＴを参照して、クラスタを構成するサーバ１の中に、推定したメモリ使用量を上回るメモリ空き容量を有する移行可能サーバが存在するか否かを判定する。一時サーバ１Ａのプロセス移行部１２は、移行可能サーバ決定部１９が決定した移行可能サーバに、メモリ使用量を推定した新規プロセスを移行する。
【００３４】
サーバ管理テーブルＴは、クラスタを構成するサーバ１を管理するためのテーブルである。各サーバ１は、互いに情報を送受信することで、サーバ管理テーブルＴの最新の内容を共有することができる。
図３に示すように、サーバ管理テーブルＴは、サーバＩＤ（Identifier）、プロセスＩＤ、搭載メモリ量、メモリ使用量、メモリ空き容量、減設候補フラグ、および一時サーバ指定フラグ、といった項目を有し、サーバ１ごとにレコードが作成される。
【００３５】
サーバＩＤの項目には、クラスタを構成するサーバ１を識別する識別子が格納される。前記識別子は、例えば、サーバ１に割り当てられたＩＰ（Internet Protocol）アドレスである。また、サーバ１に割り当てられるＭＡＣ（Media Access Controller）アドレスでもよい。
プロセスＩＤの項目には、該当のサーバ１上で動作中の１または複数のプロセスを識別する識別子が格納される。
【００３６】
搭載メモリ量の項目には、サーバ１が有するメモリのサイズが格納される。
メモリ使用量の項目には、サーバ１が使用中のメモリの容量が格納される。サーバ管理テーブルＴのメモリ使用量は、サーバ１上で動作中のすべてのプロセスが使用するメモリのサイズが含まれるが、サーバ１が有するデータの使用サイズを含めても、または含めなくてもよいし、ＯＳ２０の使用サイズを含めても、または含めなくてもよい。
メモリ空き容量の項目には、サーバ１が使用していないメモリの容量が格納される。
【００３７】
減設候補フラグの項目には、該当のサーバ１が減設候補サーバであるか否かを示すフラグが格納される。格納されるフラグには、減設候補サーバであることを示す「オン」と、減設候補サーバではないことを示す「オフ」がある。
一時サーバ指定フラグの項目には、該当サーバ１が一時サーバであるか否かを示すフラグが格納される。格納されるフラグには、一時サーバであることを示す「オン」と、一時サーバではないことを示す「オフ」がある。
【００３８】
図２に戻って、減設閾値は、サーバ１のメモリ使用量に関する閾値である。減設閾値は、例えば、クラスタシステムの保守者が任意に設定することができる。
図１に示すように、メモリ使用量の値が減設閾値を下回るサーバ１（図１では、最も左側のサーバ１）があった場合、そのサーバ１を減設候補サーバとする。このとき、サーバ管理テーブルＴにおいて、減設候補サーバの減設候補フラグはオンになる。所定の条件（後記）を満たしたのち、減設候補サーバは減設される。
【００３９】
≪処理≫
本実施形態の処理について説明する。処理の主体は、サーバ１の制御部であるが、説明の便宜上、「制御部」という語は省略する。
【００４０】
図４を参照して、サーバの減設処理を説明する。この処理は、クラスタを構成するサーバ１の各々が定期的に実行し、ステップＳ１から処理を開始する。なお、サーバの減設処理が行われない間は、クラスタシステム内で負荷分散処理に基づくプロセスの分散が実行されており、サーバの減設処理を実行する場合には、プロセスの分散よりもサーバの減設処理を優先する。
【００４１】
ステップＳ１において、サーバ１は、リソース情報取得部１１によって、自身を含むすべてのサーバ１のリソース情報を、すべてのサーバ１から取得する。ステップＳ１の後、ステップＳ２に進む。
【００４２】
ステップＳ２において、サーバ１は、取得したリソース情報を用いて、サーバ１ごとに、サーバ１上で動作している１または複数のプロセス、当該プロセスの動作に基づいて求められるメモリのメモリ使用量、および、メモリのメモリ空き容量を決定する。なお、決定したプロセスのプロセスＩＤ、メモリ使用量、および、メモリ空き容量は、サーバ管理テーブルＴに格納される。なお、サーバ１は、取得したリソース情報を用いて、サーバ１ごとの搭載メモリ量も決定し、サーバ管理テーブルＴに格納する。ステップＳ２の後、ステップＳ３に進む。
【００４３】
ステップＳ３において、サーバ１は、減設候補サーバ決定部１４によって、サーバ管理テーブルＴを参照して、減設閾値を下回るメモリ使用量を有するサーバ１が存在するか否かを判定する。存在する場合（ステップＳ３でＹｅｓ）、ステップＳ４に進み、存在しない場合（ステップＳ４でＮｏ）、ステップＳ１に戻ってサーバ１を監視する。
【００４４】
ステップＳ４において、サーバ１は、減設候補サーバ決定部１４によって、減設閾値を下回るメモリ使用量を有する、１または複数のサーバ１を、減設候補サーバとして決定するとともに、サーバ管理テーブルＴの対応する減設候補フラグをオンにする。ステップＳ４の後、ステップＳ５に進む。
【００４５】
ステップＳ５において、サーバ１は、空き余裕サーバ決定部１５によって、サーバ管理テーブルＴを参照して、十分なメモリ空き容量を有する空き余裕サーバが存在するか否かを判定する。ここで、「十分なメモリ空き容量」とは、例えば、減設候補サーバ上で動作するすべてのプロセスがメモリを使用するときに求められるメモリ使用量を上回る程度のメモリ空き容量という意味である。空き余裕サーバが存在する場合（ステップＳ５でＹｅｓ）、ステップＳ６に進む。一方、空き余裕サーバが存在しない場合（ステップＳ５でＮｏ）、ステップＳ１に戻って各サーバ１のメモリ使用量の監視を継続し、減設候補サーバ以外のサーバ１でのプロセスの実行終了によってプロセスの移行が実施可能になるのを待つ。
【００４６】
ステップＳ６において、サーバ１は、空き余裕サーバ決定部１５によって、すでに決定されている減設候補サーバに対する空き余裕サーバを決定する。もし、空き余裕サーバが複数存在する場合には、メモリ空き容量が最も小さい空き余裕サーバを選び、決定するとよい。これにより、選ばれなかった空き余裕サーバに大きなメモリ使用量を要するプロセスを移行することができる可能性を大きくし、クラスタ全体のリソースの利用効率を高くすることができる。ステップＳ６の後、ステップＳ７に進む。
【００４７】
ステップＳ７において、サーバ１は、プロセス移行部１２によって、減設候補サーバ上で動作するすべてのプロセスを決定した空き余裕サーバに移行する。なお、サーバ１は、データ移行部１３によって、メモリに格納しているデータを減設候補サーバに移行する。ステップＳ７の後、ステップＳ８に進む。
【００４８】
ステップＳ８において、サーバ１は、増減設実行部１６によって、プロセスが無くなった減設候補サーバを減設する。減設されたサーバ１については、サーバ管理テーブルＴから該当のレコードが削除される。ステップＳ８の後、図４の処理を終了する。
【００４９】
なお、クラスタを構成するすべてのサーバ１は、どのサーバ１が減設候補サーバに該当し、どのサーバ１が空き余裕サーバに該当するか、という情報を共有している。サーバ１自身が減設候補サーバに該当すれば、決定された空き余裕サーバに、サーバ１自身で動作中のプロセスを移行した後、減設する。また、サーバ１自身が空き余裕サーバに該当すれば、決定された減設候補サーバからプロセスを受け取った後、減設候補サーバの減設を確認する。減設候補サーバにも空き余裕サーバにも該当しないサーバ１は、どのサーバ１が減設されたかを常時把握している。
【００５０】
図４の処理によれば、各サーバ１にプロセスを確率的に分散させてクラスタ内で負荷分散を行っていたことに対して、減設候補サーバ上で動作するプロセスを無くす状況を誘導的に作り出すことができるので、サーバ１の減設を促進し、システムのコストを削減することができる。
【００５１】
［新規プロセスに対する必要最小限のサーバの増設］
クラスタシステムに新規プロセスが発生した場合、各サーバ１間で動作中のプロセスをどのように移動させてもすべてのサーバ１がメモリ不足に陥るため、サーバ１の増設を余儀なくされる場合がある。このような場合であっても、コストの観点から、サーバ１の増設は必要最小限にとどめたい。サーバ１の増設を必要最小限にとどめるためには、１サーバ当たりのメモリ利用効率が高くなるようなプロセス配置の最適化が必要である。プロセス配置を最適化するためには、新規プロセスのメモリ使用量を知っておく必要がある。しかし、新規プロセスを起動したことも無いのに、新規プロセスのメモリ使用量を知るのは困難である。
【００５２】
そこで、図１に示すように、クラスタを構成するサーバ１の中に一時サーバ１Ａを設ける。一時サーバ１Ａは、クラスタを構成する他のサーバ１（説明の便宜上、「通常サーバ」と称する場合がある）と同じ機能を有しており、一時サーバ１ＡのＳＳＩソフトウェア１０の機能構成は、図２に示すとおりである。
【００５３】
一時サーバ１Ａは、一時サーバ指定部１７によって指定される。指定された一時サーバ指定部１７について、サーバ管理テーブルＴの一時サーバ指定フラグはオンに更新される。クラスタシステムに発生した新規プロセスは、まず一時サーバ１Ａに配置されるように処理される。クラスタ中に存在する一時サーバ１Ａは、１体のみである。本実施形態では、一時サーバ１Ａは新規プロセスのメモリ使用量を推定するという役割を持つために減設しない。よって、一時サーバ１Ａに対して減設閾値および減設候補フラグは設定せず、一時サーバ１Ａが減設候補サーバとなることはない。
【００５４】
次に、図５を参照して、一時サーバによるサーバ増設処理を説明する。この処理は、クラスタに新規プロセスが発生し、一時サーバ１Ａに配置された場合に開始し、ステップＳ１１から処理を開始する。
【００５５】
ステップＳ１１において、一時サーバ１Ａは、配置された新規プロセスを初期起動する。ステップＳ１１の後、ステップＳ１２に進む。
【００５６】
ステップＳ１２において、一時サーバ１Ａは、メモリ使用量推定部１８によって、新規プロセスの起動後のメモリ使用状況を観測することにより、新規プロセスの動作に基づいて求められるメモリのメモリ使用量を推定する。ステップＳ１２の後、ステップＳ１に進む。
【００５７】
ステップＳ１２の後、一時サーバ１Ａは、図４を参照して説明した、ステップＳ１〜ステップＳ４の処理を行う。これらのステップＳ１〜ステップＳ４の処理によって、一時サーバ１Ａは、もし存在していれば、１または複数の減設候補サーバを決定する。ステップＳ３にて減設閾値を下回るメモリ使用量を有するサーバが存在しない場合（ステップＳ３でＮｏ）、およびステップＳ４の後、ステップＳ１３に進む。
【００５８】
ステップＳ１３において、一時サーバ１Ａは、移行可能サーバ決定部１９によって、サーバ管理テーブルＴを参照して、減設候補サーバ以外のサーバのうち、ステップＳ１２にて推定したメモリ使用量を上回るメモリ空き容量を有するサーバが存在するか否かを判定する。このような判定は、減設候補サーバ上で動作するプロセスを意図的に無くしたいため、新規プロセスを減設候補サーバに極力移行させたくない、という考えによる。ステップＳ１３にて提示した条件を満たすサーバが存在する場合（ステップＳ１３でＹｅｓ）、ステップＳ１４に進み、存在しない場合（ステップＳ１３でＮｏ）、ステップＳ１６に進む。
【００５９】
ステップＳ１４において、一時サーバ１Ａは、移行可能サーバ決定部１９によって、減設候補サーバ以外であって、推定したメモリ使用量を上回るメモリ空き容量を有するサーバを、第１の移行可能サーバ（移行可能サーバ）として決定する。ここで、当該サーバが複数存在する場合には、一時サーバ１Ａは、サーバ管理テーブルＴを参照して、メモリ空き容量が最も小さいサーバを第１の移行可能サーバとして決定する。このように決定し、決定した第１の移行可能サーバに新規プロセスを移行することで、大きなメモリ使用量を必要とするプロセスを大きなメモリ空き容量を有するサーバに移行する可能性を高くすることができる。そして、大きなメモリ使用量を必要とするプロセスに対してサーバの増設を行う可能性を低くすることができる。ステップＳ１４の後、ステップＳ１５に進む。
【００６０】
ステップＳ１５において、一時サーバ１Ａは、プロセス移行部１２によって、新規プロセスを、決定した第１の移行可能サーバに移行する。ステップＳ１４の後、図５の処理を終了する。
【００６１】
ステップＳ１６において、一時サーバ１Ａは、移行可能サーバ決定部１９によって、サーバ管理テーブルＴを参照して、減設候補サーバのうち、ステップＳ１２にて推定したメモリ使用量を上回るメモリ空き容量を有するサーバが存在するか否かを判定する。このような判定は、新規プロセスを移行できるサーバが減設候補サーバしかないので、プロセスを意図的に無くしたい減設候補サーバに仕方なく新規プロセスを移行させる、という考えによる。ステップＳ１６にて提示した条件を満たすサーバが存在する場合（ステップＳ１６でＹｅｓ）、ステップＳ１７に進み、存在しない場合（ステップＳ１６でＮｏ）、サーバ１を増設する必要があることを意味しており、ステップＳ１９に進む。
【００６２】
ステップＳ１７において、一時サーバ１Ａは、移行可能サーバ決定部１９によって、減設候補サーバであって、推定したメモリ使用量を上回るメモリ空き容量を有するサーバを、第２の移行可能サーバ（移行可能サーバ）として決定する。ここで、当該サーバが複数存在する場合には、一時サーバ１Ａは、サーバ管理テーブルＴを参照して、メモリ空き容量が最も小さい減設候補サーバを第２の移行可能サーバとして決定する。ステップＳ１７の処理の意図は、ステップＳ１４の場合と同様である。ステップＳ１７の後、ステップＳ１８に進む。
【００６３】
ステップＳ１８において、一時サーバ１Ａは、プロセス移行部１２によって、新規プロセスを、決定した第２の移行可能サーバに移行する。ステップＳ１８の後、図５の処理を終了する。
【００６４】
ステップＳ１９において、一時サーバ１Ａは、通常サーバに昇格し、新規プロセスが動作するサーバ１として稼働する。このとき、サーバ管理テーブルＴにおいて、通常サーバに昇格した一時サーバ１Ａの一時サーバ指定フラグはオフに更新される。ステップＳ１９の後、ステップＳ２０に進む。
【００６５】
ステップＳ２０において、通常サーバに昇格した一時サーバ１Ａは、新規の一時サーバ１Ａとなるサーバ１の増設をクラスタに要求する。この要求に対してクラスタがサーバ１を増設すると、クラスタを構成するすべてのサーバ１（通常サーバに昇格した元の一時サーバ１Ａも含む）は、一時サーバ指定部１７により、増設されたサーバ１を新規の一時サーバ１Ａとして指定する。このとき、サーバ管理テーブルＴにおいて、新規の一時サーバ１Ａのレコードが作成され、その一時サーバ指定フラグはオンになる。ステップＳ２０の後、図５の処理を終了する。
【００６６】
図５の処理によれば、新規プロセスの実行に影響を及ぼすことのない、必要最小限のサーバの増設を実現することができる。
【００６７】
≪まとめ≫
本実施形態によれば、メモリ使用量が小さく、リソースの利用効率が低い減設候補サーバと、減設候補サーバ上で動作するプロセスを配置できる空き余裕サーバを特定する。これにより、減設候補サーバの減設によってクラスタに関するコストを削減できるとともに、空き余裕サーバのリソースの利用効率が高まることでクラスタ全体のリソース利用効率を高くすることができる。したがって、サーバの減設によって、クラスタ全体のリソース利用効率を高くするためのプロセス配置ロジックを提供することができる。このようなプロセス配置ロジックは、既存のＳＳＩ技術の機能と親和性が高いロジックであり、ハードウェアの改造を必要とせず、ソフトウェアの改造のみで実現可能である。
【００６８】
また、新規プロセスの取り扱いに関して、一時サーバが前もって新規プロセスの動作に伴うメモリ使用量を推定することで、サーバ増設の必要性を判定することができる。この判定において、既存の移行可能サーバに新規プロセスを移行することを優先することによって、サーバの増設を必要最小限にとどめるとともに、移行可能サーバのリソースの利用効率を高めることができる。したがって、サーバの増設によって、クラスタ全体のリソース利用効率を高くするためのプロセス配置ロジックを提供することができる。このようなプロセス配置ロジックは、既存のＳＳＩ技術の機能と親和性が高いロジックであり、ハードウェアの改造を必要とせず、ソフトウェアの改造のみで実現可能である。
【００６９】
また、大きなメモリ使用量を必要とするプロセスを配置することができる移行可能サーバを優先的に残すことができるので、このようなプロセスに対してサーバを増設するという手段を極力とらずに済ませることができる（図５のステップＳ１４の説明、ステップＳ１７の説明を参照）。
【００７０】
また、減設候補サーバに新規プロセスを移行してしまうことで、メモリ使用量が減設候補サーバの減設閾値を超えてしまい、減設候補とならず、サーバの減設によるコスト削減という目的を果たせなくなってしまう、という不都合を避けることができる（図５のステップＳ１３の説明を参照）。
【００７１】
≪その他≫
本発明は、ＳＳＩに限らず、サーバ間で特定のプロセスを移動できるソフトウェアを有するサーバに対しても適用可能である。
【００７２】
サーバの減設処理（図４）では、原則として、減設候補サーバと決定されたサーバ１にプロセスを移行しないことが好ましい。プロセスを移行したら、減設閾値を超えてしまい減設候補サーバとはならず、減設する機会を失う可能性があるからである。しかし、例外的に、減設候補サーバにプロセスを移行する場合を許容してもよい。例えば、減設候補サーバ決定部１４が減設候補サーバを同時に２以上決定した場合には、空き余裕サーバ決定部１５は減設候補サーバの１つを空き余裕サーバとみなし、減設候補サーバ間でプロセスを移行してもよい。
【００７３】
本実施形態では、一時サーバによるサーバ増設処理（図５）において、一時サーバ１Ａには、減設閾値および減設候補フラグは設定しないようにした。しかし、一時サーバ１Ａに対して、減設閾値および減設候補フラグは設定してもよく、一時サーバ１Ａが減設候補サーバとなり得るようにしてもよい。一時サーバ１Ａが減設候補サーバとして減設された場合、各サーバ１の一時サーバ指定部１７によって新たな一時サーバ１Ａを指定することができる。
【００７４】
もし一時サーバによるサーバ増設処理（図５）のステップＳ１２において、メモリ使用量推定部１８による新規プロセスのメモリ使用量の推定に大きな誤差が生じた場合には、新規プロセスに対して必要となるメモリ使用量が第１の移行可能サーバまたは第２の移行可能サーバのメモリ空き容量に収まらない可能性がある。しかし、ＳＳＩソフトウェアには、ＣＰＵとメモリ間のアクセス速度を犠牲にすることで、１プロセスが複数のサーバ１のメモリを跨って使用する機能を有している。その機能を利用して、不足したメモリの空き容量を他のサーバ１のメモリの空き容量で補う処理を行えばよい。このような処理は、他のプロセスによるメモリの上書きといった、システム運用における致命的な事態を回避することを可能にする。
【００７５】
また、本実施形態で説明した種々の技術を適宜組み合わせた技術を実現することもできる。
本実施形態で説明したソフトウェアをハードウェアとして実現することもでき、ハードウェアをソフトウェアとして実現することもできる。
その他、ハードウェア、ソフトウェア、フローチャートなどについて、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【符号の説明】
【００７６】
１        サーバ
１０      ＳＳＩソフトウェア
１１      リソース情報取得部
１２      プロセス移行部
１３      データ移行部
１４      減設候補サーバ決定部
１５      空き余裕サーバ決定部
１６      増減設実行部
１７      一時サーバ指定部
１８      メモリ使用量推定部
１９      移行可能サーバ決定部
Ｔ        サーバ管理テーブル
２０      ＯＳ
【図１】
2016045682.tif 000003
【図２】
2016045682.tif 000004
【図３】
2016045682.tif 000005
【図４】
2016045682.tif 000006
【図５】
2016045682.tif 000007