JP4921054B2 - 負荷分散制御システム及び負荷分散制御方法 - Google Patents

負荷分散制御システム及び負荷分散制御方法 Download PDF

Info

Publication number
JP4921054B2
JP4921054B2 JP2006187997A JP2006187997A JP4921054B2 JP 4921054 B2 JP4921054 B2 JP 4921054B2 JP 2006187997 A JP2006187997 A JP 2006187997A JP 2006187997 A JP2006187997 A JP 2006187997A JP 4921054 B2 JP4921054 B2 JP 4921054B2
Authority
JP
Japan
Prior art keywords
job
storage
computer
capacity
file
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.)
Expired - Fee Related
Application number
JP2006187997A
Other languages
English (en)
Other versions
JP2008015888A (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2006187997A priority Critical patent/JP4921054B2/ja
Priority to US11/517,294 priority patent/US7996844B2/en
Publication of JP2008015888A publication Critical patent/JP2008015888A/ja
Application granted granted Critical
Publication of JP4921054B2 publication Critical patent/JP4921054B2/ja
Expired - Fee Related 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Description

本発明は複数の計算機を備えるシステムにおいて、複数の計算機の負荷を分散して、計算機にジョブを実行させるための負荷分散制御システム及び負荷分散制御方法に関するものである。
近年、計算機の負荷分散技術として各種のものが提案されている(後記の特許文献1、2、3を参照されたい)。負荷分散制御を行うに際しては、計算機が高性能になることにより、計算機に実行させるジョブを分散させることの良し悪しによって、実行ジョブに対する処理結果が求まるまでの処理時間(TAT(Turn Around Time))に大きな差が生じる。また、ワークステーション(WS)が普及していることにより、負荷分散のための制御パラメータが複雑化し、負荷分散を効率良く行うことが難しくなっている。
一方、アプリケーションの大規模・高機能化により、アプリケーションを実行して結果を出すまでの、計算機システムに必要な処理時間が急増しており、アプリケーションが果たそうとしている全てのジョブに対して、ジョブを安定的に実行するための環境が必要であるが、それが達成されるに至っていない。ジョブが完了前にジョブが異常に終了した際の原因を解析してみると、データの記憶手段であるディスクの容量が不足していることや、アプリケーションに対してオペレータがデータを間違って指示することが多数見受けられた。さらに、ディスクへのIO Waitが発生したCPUをみてみると、そのCPUの使用率が大幅に低下していることも多い。
特開平10−49504号公報 特開平11−3323号公報 特開平10−334057号公報
既述の負荷分散制御を行うに際して、特許文献1では、ジョブを単一ジョブあるいはジョブグループとして階層的に負荷分散単位に記憶保持してこれを管理し、保持管理された任意階層のジョブをジョブ登録マシンからジョブ実行マシンに負荷分散単位で転送する構成が採用されているが、ディスクを最適化したり、プログラムプロセスを安定化したりすることは十分配慮されていない。
特許文献2は、負荷状況を集中的に監視・管理し、この結果を基に負荷が最も低い計算機を選択して、この計算機にジョブを実行する構成を採用している。ディスクに関してはパラメータを用いて、実行可能なマシンの候補から外すことは可能であるが、このことを考慮すると計算機の稼働率が低下することになる。
さらに、特許文献3では、バッジジョブの資源使用特性を分類し、分類に適合した資源負荷状況にあるバッジジョブ実行サーバをバッジジョブ実行サーバ資源負荷状況取得サブシステムからの情報を基に動的に決定する構成を採用しているが、ディスクを最適化したり、プログラムプロセスを安定化したりすることは十分考慮されていない。
すなわち、従来の負荷分散技術であっても、RAIDの論理設計のためのアプリケーションプログラムなどが大量のデータを処理する場合に、アプリケーションプログラムを実行するジョブの処理が不安定になる場合や、ジョブの処理時間が長くなる場合や、さらに、データが格納されているストレージへの計算機のアクセス性能が低下する場合が発生していた。
例えば、後述のように“DLCM”の考え方から、計算機がアクセスするデータを複数のストレージに分散して、記憶資源を有効に使用しようとする技術がある。計算機がアクセスするストレージに、ジョブの実行に必要なデータが存在しない場合には、負荷分散が実現された環境下でも、計算機によるストレージへのI/Oアクセスが、待ち或いはエラーになるおそれがある。また、計算機がアクセスするストレージに、ジョブを完了するために必要な記憶容量が無い場合も同様である。
そこで、本発明は、複数の計算機を備え、計算機の負荷を分散させるシステムにおいて、データが格納されているストレージ装置への計算機のアクセス性能を向上させることにより、前記計算機がアプリケーションプログラムを実行して前記ジョブの処理を効率的に行い、以って前記TATを短縮可能な負荷分散システムを提供することを目的とする。
本発明は、前記目的を達成するために、ジョブを計算機が実行するのに必要なデータを格納するストレージを、ジョブを実行する上で最適化し、この最適化が終わったジョブを計算機に実行させる際、計算機の負荷を分散させるようにしたことを特徴とするものである。
さらに、本発明は、前記ジョブに対して、前記ストレージを最適化するステップと、最適化が終わったジョブを前記計算機に実行させるステップと、を処理する際に、キュー構造を採用し、ユーザ装置から送られた複数のジョブを順番に処理することによって、ジョブの処理を遅らせることなく前記目的を達成することを特徴とする。“最適化”の具体例には、計算機がジョブを実行する上で参照するデータを、ジョブの実行前に計算機がアクセスするストレージへ移動させること、あるいは、ジョブに必要な記憶容量をストレージに確保する、ことがある。
本発明の第1は、複数の計算機を備え、ユーザから受付けたジョブを、前記複数の計算機に分散して実行させる、負荷分散システムにおいて、前記複数の計算機が前記ジョブを実行するためにアクセスするストレージと、前記複数の計算機のうち、負荷が少ない計算機に前記ジョブを実行させる、第1の管理装置と、前記ユーザから、複数の前記ジョブを受付け、当該受付けた複数のジョブをキューイングして、第1のジョブキューに順番に格納する、第2の管理装置と、前記第1のジョブキューのジョブ順番に取り出し、前記計算機が前記取り出したジョブを実行するのに必要なデータに対する処理を前記ストレージ装置に対して実行する第3の管理装置と、前記処理が終了した複数のジョブを、前記計算機によって実行されることを待つ実行待ちジョブとして順番に格納する、第2のジョブキューと、を備え、前記第1の管理装置は、第2のジョブキューから前記複数のジョブを順番に取り出し、当該取り出したジョブを前記計算機に実行させる、ことを特徴とするものである。
本発明の第2は、複数の計算機のうち、計算余力がある計算機を選択し、選択された計算機にジョブを実行させる、負荷分散制御方法において、前記計算機に処理の要求があったジョブを第1の行列に格納する第1の工程と、前記第1の待ち行列から前記ジョブを取り出し、前記計算機が前記ジョブを実行する際にアクセスするストレージに、取り出したジョブの実行に必要なデータに対する処理を前記ストレージに対して実行する第2工程と、前記第2の工程の処理が終わったジョブを第2の行列に格納する第3の工程と、前記第2の行列のジョブを順番に取り出して、前記選択された計算機に、取り出されたジョブを実行させる第4の工程と、を備えることを特徴とするものである。
本発明によれば、複数の計算機を備え、計算機の負荷を分散させるシステムにおいて、データが格納されているストレージ装置への計算機のアクセス性能を向上させることにより、前記計算機がアプリケーションプログラムを実行して前記ジョブの処理を効率的に行い、以って前記TATを短縮可能な負荷分散システムを提供することが可能になる。
以下、本発明の実施形態を図面に基づいて説明する。図1は本発明の一実施形態を示す負荷分散制御システムのブロック構成図である。図1において、負荷分散制御システムは、計算機が高速にIOアクセス可能なインターフェースを有する、RAID(Redundant Arrays of Independent Disks)によって構成された複数のハードディスクドライブをアレイ状に備える、第1のストレージ101、大容量ディスクドライブを備える、第2のストレージと105、入庫用のディスク装置を備える、第3のストレージ106を備えているとともに、ストレージ101と情報の授受を行って、ジョブを実行する複数の計算機(112)からなる群を備えている。
ストレージ101は、ファイバチャネルをインターフェースとする複数のハードディスクドライブを備えている。ストレージ101は、スイッチングハブ102、ネットワークとしてのSAN(Storage Area Network)107を介して各計算機112に接続されている。ストレージ101の記憶資源によって論理ボリュームLU1,LU2,LU3・・・が構成されている。スイッチ102には複数のポートがあり、計算機112が特定のポートに接続している。ポートには論理ボリュームがマッピングされているために、計算機は特定の論理ボリュームに接続してジョブを実行する。ストレージ101には計算機のジョブ実行に必要なデータが格納されている。計算機はストレージ101のハードディスクドライブに格納されたデータに高速アクセスすることができる。ストレージ101は、スイッチングハブ102を介して管理用コンピュータ2に接続され、コンピュータ2は管理用コンピュータ1に接続され、コンピュータ1は管理用コンピュータ3に接続されている。
各計算機112はジョブを実行する実行コンピュータとして構成されている。各計算機112のOSは統一される必要がなく、異なったOSでも良い。各計算機112は、ジョブを実行するためのプログラムとは独立したブリッジプログラム113を備えて構成されている。ブリッジプログラムは、コンピュータ3のクラスタ管理プログラムと、ジョブを実行するプログラムとの間を仲介するものである。クラスタとは複数の計算機112からなる群である。複数の計算機は、何らかの基準に基づいてグループ化され、このグループ化された複数の複数の計算機112がクラスタとして管理される。
コンピュータ1は、ジョブ処理用管理装置として、FIFO(First In First Out)109、ジョブリリースプログラム110、LDSプログラム112を備えて構成されている。コンピュータ2は、ストレージ101,105,及び106を管理するレイドマネージャプログラムと、DLCM待ち キュー108、DLCMプログラム103を備え、大容量ストレージ105、入庫用ストレージ106に接続されている。
ここでDLCMについて説明する。DLCMとはDATA LIFE CYCLE MANEGEMENTの略であり、データの寿命に着目して、ジョブを実行する計算機112からアクセスされて間もないデータとアクセスされてから時間が経過されたデータとを別々の記憶領域に保管する技術のことである。前者のデータは、ジョブを実行する計算機112からアクセスされる頻度や可能性が高いために、計算機112が高速アクセスできる記憶デバイスを有するストレージ101に格納される。後者のデータは、アクセスされてからの経過時間にしたがって、ストレージ105、次いでストレージ106に格納されている。ストレージ106は、当面計算機112からアクセスされる予定の無いデータを格納する入庫用記憶手段として機能する。テープデバイスを備える記憶装置でも良い。
DLCMプログラム103は、DLCM待ちキューに格納された複数のジョブを順番に取り出し、ジョブを実行する上で必要な容量の記憶領域を見積もり、この容量の記憶領域がストレージ101に存在するか否かをチェックする。必要な記憶領域が無い場合には、DLCMプログラムはストレージ101内のデータのうち、アクセスから時間が経過しているデータを選択して、これをストレージ105に移動させる。これによって、ストレージ101内に計算機112が実行するジョブに必要な記憶容量を確保する。この記憶容量は、ジョブを実行する計算機112に割り当てられた、ストレージ101内の論理ボリュームに対して付与される。
DLCMプログラムは、ジョブの実行に必要なデータがストレージ101内に無い場合には、ストレージ105又は106からこのデータをストレージ101にマイグレーションする。この場合、ストレージ101に必要な記憶領域が無い場合には、既述のとおり、記憶領域をストレージ101に形成するようにする。
ジョブの実行前に、既述のようにDLCMプログラムはストレージ101,105,106に対して、記憶領域の確保やデータの移動などの、ストレージ101を最適化する事前準備を行なう。DLCM待ちキューとは、この事前準備を待っているジョブの待ち行列である。
コンピュータ2は、ストレージ101、105、106と情報の授受を行って各ストレージの状態を管理する管理装置としての機能を備えている。この機能はRAIDマネージャプログラムによって実行される。RAIDマネージャプログラムは、ストレージに格納されたファイル情報、ファイルへのアクセス日、及びサイズを管理している。
コンピュータ3は、負荷分散処理部として、クラスタ管理プログラム104を備える。クラスタ管理プログラム104は、コンピュータ1からの情報を基に、複数の計算機112からなる群(クラスタ)のうち、ジョブを実行すべきコンピュータを選択し、選択した計算機112に対してジョブの実行を指令する。クラスタ管理プログラムは、ジョブを実行する計算機として、そのジョブに対して実行権限があり、かつCPUの稼動率が最も低いものを選択する。
図1の構成による負荷分散システムをユーザが利用するに際しては、例えば、ユーザがジョブなどを依頼するためのWeb115を利用してアプリケーションジョブ(以下、「ジョブ」と称する。)をコンピュータ1に依頼する。コンピュータ1はLDSプログラム111にしたがってジョブの依頼を受付け、受付けたジョブをコンピュータ2のDLCM待ちキュー108に転送する。DLCM待ちキュー108に転送されたジョブはDLCMプログラム103の処理によって取り出され、取り出されたジョブにしたがってDLCMプログラム103の処理が実行される。DLCMプログラム103は、RAIDマネージャプログラム114のファイル情報を利用して、ストレージ101に対して、既述の最適化処理を実行する。
この処理結果がスイッチングハブ102を介して、ストレージ101からコンピュータ2に通知された後、DLCMプログラム103の処理結果に対してキューイング処理が実行され、キューイング処理されたジョブは、コンピュータ1のFIFO109に送り出される。FIFO109は実行待ちジョブのキュー、即ち、既述の事前準備処理がストレージ101に対して完了した、換言すれば、ストレージ101がジョブの実行に対してスタンバイできた、当該ジョブの実行待ち行列をいう。
ストレージリリースプログラム110はFIFO109に対してキューイング処理を実行して、FIFOに格納された実行待ちジョブのキューを取り出す。ストレージリリースプログラム110は、FIFO109から取り出したキューのジョブをLDS(負荷分散:Load Distribution system)プログラム111に依頼する。LDSプログラムは、依頼されたジョブについて認証などを行なってこれをDLCM待ちキュー108に渡すこと、FIFOから取り出されたジョブをクラスタ管理プログラム104に渡す機能を実行する。さらに、LDSプログラム111は、Web115から依頼されたジョブの内容とキューイング処理されたジョブの内容との比較を行い、両者の内容が一致すると、ジョブに関する情報をコンピュータ3に送信する。
コンピュータ3は、ジョブを受信したときには、クラスタ管理プログラム104の処理を基に、負荷分散処理を実施して、コンピュータ群112の中から、ジョブを実行すべき計算機112を選択し、選択された計算機112に対してジョブを送信する。ジョブを受信した計算機112はジョブを実行する。
このように、計算機112がジョブを実行するに先立って、コンピュータ2において、ストレージ101に対してデータ準備処理と空き領域確保処理を実行するようにしているため、実行計算機112がジョブする過程でストレージへのI/O待ちが発生しないようになる。すなわち、図1のシステムでは、ジョブを開始してこれを完了するまでのTATを短縮することができる。
さらに、これに加えて、図1のシステムでは、クラスタ管理プログラム104が、ジョブを実行すべき計算機を選択して、クラスタを構成するなるべく多くの計算機のCPU使用率が極力高く、好ましくは100%になるようにした。例えば、CPUの使用率が最も低い計算機に対してジョブをクラスタ管理プログラムが割り当てるようにした。負荷分散制御実現するために、計算機112のCPU使用率を100%になるように、ロード負荷バランスが最良の状態下でジョブを実行する必要がある。
そこで、計算機112に割り当てることができるジョブの最大数を計算機112のCPU搭載数にした。クラスタ管理プルグラム104は、計算機112当たりのCPU搭載数(計算機が同時に実行できるジョブ数)からなるパラメータで、各計算機の残計算能力を算出し、算出結果を基に最大のパフォーマンスが得られる計算機を選択することによって、計算機郡において負荷を分散する。このことを図2に基づいて説明する。
図2に示すように、計算機群112を、例えば、WS1、WS2、WS3、WS4に分けてこれをクラスタ(201)として、管理用テーブルに登録する。WS1、WS2、WS3、WS4の一つ一つが、ジョブを実行するワークステーションに相当する。クラスタ(201)にはジョブの処理順番であるキュー202と、クラスタ設定コンフィグレーションパラメータ203とが設定されている。キュー202は、ジョブB(キューB)とジョブC(キューC)とから構成されている。WS1、WS2、WS3、WS4はそれぞれキューBを同時2個実行でき、WS2とWS4がそれぞれジョブを一つ実行できる権限をもっている。キューBを同時に実行できるCPU数の最大値は6であり、キューCの最大値は2である。
クラスタ設定コンフィグレーションパラメータ203には、計算機ごとにCPU能力と同時実行可能ジョブ数が設定されている。さらに、キューを規定するパラメータとして、キューを実行可能な計算機名と、それぞれの計算機でそのキューに対応するジョブを同時に実行できる数が設定されている。そして、クラスタ管理プログラム104は、これらのパラメータと現在のジョブ実行数から、クラスタ管理テーブル204を作成し、クラスタ管理テーブル204の内容を基に計算機ごとの残計算能力を算出し、算出結果のうち最も残計算能力の値の大きい計算機に対してジョブを依頼する。
この場合、クラスタ管理プログラムは、計算機に実行を依頼したジョブの管理を、実行中管理テーブル205のジョブ依頼者のログイン名とジョブ管理番号で行う。このように、クラスタ管理プログラムは、各計算機(WS1、WS2、WS3、WS4)でのジョブ実行数を管理することにより、各計算機(WS1、WS2、WS3、WS4)の残計算能力を算出することができる。
クラスタ管理プログラムは、この残計算能力が高い計算機をクラスタの中から選択して、選択された計算機にジョブを実行させることで、最短のジョブTATが得られる負荷分散制御を実現する。クラスタ管理プログラムが、負荷分散制御を実現するためには、各計算機112から、計算機上で実行中のジョブ数、同時に実行可能なジョブ数(これは計算機が搭載するCPU数に等しい)に関する情報を取得することが望ましいし、また、これが必要でもある。計算機は、クラスタ管理プログラムからの問い合わせに対して、実行しているジョブ数を答えなければならい。
しかしながら、実行コンピュータ112としてPCをサポートしようとすると、PCはシングルタスクOSの下で稼動しているためにマルチタスクを処理できないことから、クラスタ管理プログラムからの問い合わせに対して確実に応答きないことがある。そこで、ジョブ依頼元であるクラスタ管理プログラム104と実行計算機112のジョブを実行するプログラムとの間に、ジョブを中継し、ジョブ実行プログラムに依頼したジョブのステータスを管理し、ステータスをクラスタ管理プログラムに報告できる機能を、実行プログラムから切り離しこの機能をブリッジプログラム113に搭載するようにした。これにより、ジョブを実行するコンピュータとして、ワークステーションの他にPCを利用することも可能になる。以下、具体的な内容を図3にしたがって説明する。
まず、クラスタ管理プログラム104がジョブ実行数を確実に把握するために、ジョブの依頼は、実行コマンドとキュー名およびジョブ依頼者のログイン名をLDSプログラム111に対して送ることによって達成される。LDSプログラム111はクラスタ管理プログラム104にジョブを依頼する。クラスタ管理プログラム104は、ジョブ管理番号を1カウントアップする。クラスタ管理プログラム104は、クラスタ管理テーブル204を参照して最も残計算能力の値が大きいコンピュータ(WS2)に対してジョブ依頼することを決定し、実行中ジョブ管理テーブル205の、決定された計算機に対して未使用エリアを探し、そこに、ジョブ依頼者のログイン名とジョブ管理番号を登録する。
クラスタ管理プログラムは、クラスタ管理テーブル204のジョブを依頼することに決定された計算機のキューの現在の実行数を1カウントアップすると同時に、当該計算機の残計算能力を求める処理を実行する。さらに、クラスタ管理プログラムは、計算機で稼動しているブリッジプログラム113に対してジョブ実行を依頼する。ジョブが依頼された計算機(実行サーバ)のジョブ実行プログラムは、自身の計算機で実行中のジョブ数を1カウントアップし、実行するジョブの最後で自計算機のブリッジプログラム113に対して、ジョブが終了したことを報告する。
ブリッジプログラム113に依頼されたジョブを計算機が実行した後、ブリッジプログラム113に対してジョブ終了が報告され、ブリッジプログラム113は自計算機で実行中のジョブ数を1カウントダウンし、さらにクラスタ管理プログラム104に対してジョブの終了を通知する。
ジョブ終了通知を受け取ったクラスタ管理プログラム104は、実行中のジョブ管理テーブル205において、ジョブを実行した計算機に割り当てられた、ジョブの内容を登録する領域を未使用状態に変更し、クラスタ管理テーブル204の計算機のキューの現在の実行数を1カウントダウンする。それと同時に、クラスタ管理プログラムは、この計算機の残り計算能力を求める処理を実行する。
クラスタ管理テーブル204が消滅した場合(例えば、ハード障害などによるリプート、プロセス消滅など)には、ジョブを実行している各計算機における、現在のジョブの実行数を復旧する必要がある。クラスタ管理プログラムは、ジョブの実行数を管理しているブリッジプログラム113に対して、ジョブ実行数の問い合わせをして、ジョブの実行数をブリッジプログラム113から取得してクラスタ管理テーブルを復旧する。
以下、図4を参照して説明する。クラスタを管理しているコンピュータ3のクラスタ管理プログラム104は、クラスタ管理テーブル204および実行中のジョブを管理する管理テーブル205を作成する前に、クラスタの計算機のブリッジプログラム113に対し、現在の実行ジョブ数の報告を依頼し、報告のあったジョブ数に基づいて管理テーブル204を作成する。この処理によって、クラスタ管理プログラムは、ジョブを実行する計算機の残計算能力を容易に管理し、かつ、クラスタを構成する計算機に対する負荷(ジョブ)を分散することができる。
図1のシステムは、複数のプログラムが協調することによって、達成されるが、いずれかのプログラムが何らかの原因で稼動停止に至ると、負荷分散処理ができなくなりシステムダウンに繋がるため、プログラムは安定して稼動しなければならない。そのためには、プログラムが自分の消滅を検知して、プログラムを再生することが望ましい。特に、全てのプログラムが再生機能を有することが望ましい。このことを図5にしたがって説明する。
コンピュータのシステムコールであるfork処理により、プログラムに基づくプロセスを親プロセス401と子プロセス402とに分割する構成が図5に記載されている。プログラムに基づく処理は、全て子プロセス402によって達成される。親プロセス401は子プロセス402の存在を監視し、子プロセス402が消滅したことを検知したときには、子プロセス402を生成する処理だけを行う。
具体的には、親プロセス401は、fork前処理403として、子プロセス数と子プロセスカウンタを初期化し、子プロセス終了シグナルを受け取った場合の手続きを定義する。次に、fork実行(初期)404では、fork処理を実施し、子プロセスカウンタを1加算する。
次に、fork実行(再起動)405では、子プロセス終了を待つ。何らかの原因で子プロセス402が消滅した場合は、親プロセス401では、子プロセス終了シグナルの割り込みが発生し、予め設定してあった子プロセスカウンタを1減算することで、消滅した子プロセス数分のfork処理を実施する。このような構成によって、常時、プログラムに基づく処理が保障されることになり、何らかの原因でプログラムに消滅など障害が発生しても、プログラムが再生されて、負荷分散を継続できる高い安定性をもったシステムが実現できる。
次に、計算機の残計算能力に基づいて、ジョブを実行する計算機を選択して、クラスタ内での計算機に対する負荷を分散する方式の具体的な内容を図6にしたがって説明する。まず、クラスタ管理プログラム104は、クラスタ管理テーブル204の各計算機(WS1、WS2、WS3、WS4)ごとにCPU能力と現在の実行数の各キュー分の合計値および最大同時実行数を利用して各計算機の残り計算能力を計算する。この計算式503は、残計算能力=CPU能力−(CPU能力×現在の実行数の各キュー分の合計値÷最大同時実行数)である。 クラスタ管理プログラムは、この計算を計算機(WS1、WS2、WS3、WS4)ごとに実施し、それぞれの計算機が計算の時点で持っている残り計算能力を把握し計算結果を比較することで、残り計算能力の値が最も高い計算機を選択することができる。このようにして選択された計算機は、その時点で最も効率よくCPUを使用できる状態にある。クラスタ管理プログラムは、選択された計算機のブリッジプログラム113に対してジョブを依頼する。このように、少しのパラメータと単純な計算式で、計算機の残存計算能力を把握することができる。
近年のコンピュータは高価で高性能になっているため、一つの目的だけに利用するのではなく、複数の目的で利用されることがある。目的ごとにクラスタを設定した場合に、クラスタ間でコンピュータが共有される。このマルチクラスタ構成における負荷分散処理を図7にしたがって説明する。
FIFO109からジョブリリースプログラムによってリリースされたジョブは、LDSプログラム111からクラスタ管理プログラム104に送られる。このジョブのキューを実行可能な全てのクラスタについてのクラスタ管理テーブル(#1〜#nのクラスタ管理テーブル)204を用いて、クラスタ管理プログラムは、ジョブを実行する計算機をジョブに対して割り当てる。クラスタ管理プログラムの、複数のクラスタ間を調停する機能であるアービタ(ABT)604により、ジョブを実行するクラスタ(例えば、クラスタ1、クラスタ2)と、ジョブを実行する計算機(例えば、WS1、WA2、PC1など)とがジョブに割り当てられる。また、アービタ604は、クラスタ1、クラスタ2に属している計算機を把握し、計算機ごとのCPUの稼動状況を既述するテーブル605を作成する。このテーブルが、計算機の残存能力を計算することにより利用される。クラスタ管理プログラムは、この残存残計算能力を全てのクラスタのクラスタ管理テーブル204に割り当てる。したがって、クラスタ管理プログラムは、複数のクラスタで1つの計算機を共有した場合でも負荷分散を可能とする。
次に、ジョブを実行するコンピュータを選択し、このジョブがこのコンピュータで実行されるまでのシーケンスについて、図8にしたがって説明する。
ジョブは、クラスタ管理プログラム104のジョブ依頼待ち(ステップ703)で受付けられ、このジョブを実行可能な計算機が抽出される(ステップ704)。具体的には、クラスタ管理プログラム104は、クラスタ管理テーブル204のジョブの最大同時実行数と計算機の残存計算能力、およびマルチクラスタで共用されるコンピュータのCPUアイドル状況(%)を使用する。この場合、ジョブを計算機に割り当てる前の計算機の残存計算能力値を全ての計算機で同じ、例えば、100(%)とする。ジョブを最大で同時に実行できる数については、クラスタ1の計算機であるWS2を3、クラスタ1のPC1を3、クラスタ1のPC2を2とする。マルチクラスタで共用される計算機PC1のCPUアイドル率については、クラスタ1とクラスタ2で最大同時実行数の大きい方を採用して計算することとしている。
ジョブ依頼前の時点では、残存計算能力はどの計算機についても同じなので、クラスタ管理テーブル204の最初に出てくるクラスタ1のWS2を選択し、選択されたWS2について残存計算能力を計算し直す。次に選択されるのはクラスタ1のPC1となる。PC1はマルチクラスタで共用される計算機であるため、前述の残計算能力算出式に加え、CPUアイドル率をかけてPC1の残計算能力を計算し直す。共有計算機の残計算能力算出式702を利用して計算すると、クラスタ1のPC1の残計算能力は、(100−100×1÷3)×0.66=44となり、クラスタ2のPC1の残計算能力は、(100−100×0÷2)×0.66=66となる。
ジョブを実行する計算機の全てについて残計算能力が最大値を検索する(ステップ705)。クラスタ2のPC1がジョブを実行する計算機として選択される。この手順により、クラスタ管理テーブル204の太枠で囲まれた箇所が残計算能力最大値となり、これに基づいてジョブを実行する計算機とクラスタ名が決定される。
このように、クラスタ管理テーブル204のジョブを同時に実行できる最大数と、CPUの残計算能力、およびマルチクラスタで共用される計算機についてのCPUアイドル状況の値を使用し、前述の計算式を用いてCPUの残計算能力を再計算することにより、マルチクラスタ構成の場合においても負荷分散処理を実現できる。
次に、選択された計算機にジョブを依頼するシーケンスについて説明する。クラスタ管理プログラムが、コンピュータへジョブの実行を依頼することは、ソケット通信技術を利用して、計算機で稼動しているブリッジプログラム113に対して行う。ソケット通信するには、通信相手の計算機名とポート番号が必要であり、このポート番号は予めクラスタごとに決められている(ステップ707、708)。つまり、クラスタとジョブを実行すべき計算機名からポート番号が決まる(ステップ706)。ジョブを実行する計算機が複数のタスクに属する場合、ブリッジプログラムはクラスタの数分動作している。ブリッジプログラム113をクラスタごとに持つシステム構成であれば、クラスタ管理プログラム104を再起動するとき、全てのクラスタを復元することを可能にする。
ブリッジプログラム113は、常時ソケットへの接続要求待ちであり(ステップ708)、クラスタ管理プログラム104からのジョブを受付け、クラスタ管理プログラムからジョブの実行コマンドを受け取ってジョブを実行する(ステップ709)。
次に、計算機112からストレージサブシステムへのI/Oがウエイトされ、ジョブが最大のパフォーマンスで実行できないことを解決するために、負荷分散システムに追加されたDLCM機能を図9にしたがって説明する。まず、ジョブはLDSプログラム111によって受付けられ、クラスタ管理プログラム104によって負荷分散処理が実行される前に、DLCMサブシステム801にジョブが送り込まれる。ジョブは一旦DLCM待ちキューに格納され、順番にDLCMプログラム103がジョブをキュー108から呼び出し、ジョブについてストレージサブシステム101の記憶領域を最適化する。
最適化とは、ジョブを実行する計算機が記憶資源にアクセスする際に、I/O待ちとならない状態に、ジョブの実行前に記憶資源を調整しておくことである。DLCMプログラム103はこの最適化を実現する。例えば、図1において説明したように、ストレージサブシステム101にジョブの実行に必要なデータの記憶領域を確保すること、及び/又は、他のストレージサブシステム105,106からストレージサブシステム101に必要なデータをマイグレーションすることである。DLCMプログラムに基づく処理を施されたジョブは、ジョブ実行待ちキューであるFIFOに格納される。ジョブリリースプログラムは、ジョブをFIFOから順番にリリースしてジョブを再度LDSプログラム111に戻す。次いで、LDSプログラムは、クラスタ管理プログラム104にジョブを渡すことによりジョブについての負荷分散処理を行う。すなわち、負荷分散処理される前処理として、ディスクI/Oネックが発生しない状況を作り、ジョブを最大のパフォーマンスで実行できるようにした。
DLCMプログラム103は、ジョブで使用されるデータの準備とジョブ実行で使用する空き領域(容量)を確保するために、ジョブをLDSプログラムに依頼する際に、ジョブが使用するデータのバスを示すIO情報806をジョブリクエストに追加して、ジョブをDLCMサブシステム801からLDSプログラム111に送り込む。
DLCM機能は、ジョブを実行するコンピュータが高速にアクセスできるインターフェースを持った記憶資源101に、大記憶容量という特性を有する記憶資源105や、さらに古いデータが入庫されている、記憶資源106から、ジョブリクエストに含まれるIO情報に基づき、データを移動する。
また、DLCM機能は、ジョブの実行に伴って使用されるデータの容量を見積もり、記憶デバイス(ディスクA)101に対して、見積もり分の空きデータ容量が確保されるまで、ストレージサブシステム101からデータが古い順に、データをストレージサブシステム)105に退避する処理を実施する。ストレージサブシステム105に退避用の領域がない場合には、古いデータの順にデータを記憶資源106に退避させる。
このDLCM処理が完了すると、FIFO109にジョブが送り出されジョブが実行待ち状態となる。ジョブリリースプログラム110は、ジョブをFIFO109から順番に呼び出し、LDSプログラム111にジョブを依頼する。LDSプログラム111に戻ってきたジョブは負荷分散処理に回される。
次に、ジョブの終了時に実施されるDLCM機能について図10を参照して説明する。ジョブの実行前に見積もられ、ストレージ101に確保された記憶容量量だけでは、容量不足で、計算機112においてジョブが異常終了する場合もある。そこで、計算機112はジョブが正常に終了したか否かをチェックし(901)、これがNGの場合には、DLCM待ちキューに、ジョブが正常に終了しなかったというステータスを付加して、ジョブを再度格納する。DLCMプログラム103は、ジョブの実行に必要なデータの容量の見積量を増やし、再度、ストレージサブに空き容量を確保する処理を実施し(ステップ902)、その後、ジョブを実行待ちするFIFO109に、再投入するリトライ制御(903)を行なう。
FIFO109はジョブのタイプの数分存在しても良い。例えば、一つのFIFOがジョブタイプAのキュー行列であり、他のFIFOがジョブタイプBのキュー行列である。既述DLCM待ちキューはジョブのタイプ毎に存在せず、全てのタイプのジョブキューに対して共通のものとなっている。ジョブタイプの例として、銀行業務、或いは設計業務などである。
なお、ジョブが大容量のデータを扱うものの、負荷分散処理によってジョブの実行が短時間で終了する場合、DLCMプログラム103による最適化処理がジョブの実行に対してボルトネックになることが考えられる。
これに対処するために、ジョブの終了後、ジョブで使用したデータ容量が残ったか否かをコンピュータが評価し(904)、ジョブ実行前に見積もった記憶容量に比べて、過剰にデータ容量を使用した場合には、過剰に使用したデータ容量分の空き容量をストレージサブシステムに確保するための処理を実施する(902)。これは次回以降に投入されるジョブの実行前で、実施するDLCM処理において、空きデータ容量確保処理がより短時間で終了させられることになり、ジョブ投入から終了までの時間を短くすることで、ボルトネックを解消することができる。
このように、ジョブの実行前に、ストレージサブシステム101にジョブに必要なデータを準備し、また、ジョブに必要なデータの空き容量の確保を行う処理を実施し、ジョブ終了後に、DLCMプログラムが見積もったデータの容量と実績データ容量の差分のデータ容量を確保しておく処理と、空きデータ容量不足によるジョブ異常終了時の空きデータ容量確保の再処理とリトライ制御を実施するDLCM機能を有するDLCMサブシステム801により、高品質・高性能な負荷分散システムを実現することができる。
以下、DLCM機能を、図11を参照して説明する。DLCMプログラムは、ジョブの実行するに際して予定される記憶容量を算出する(ステップ1001)。コンピュータ1に指示されたIO情報に対応するファイル情報1007と、初回に実行されるジョブかリトライされるジョブかによって、算出結果が異なる。ファイル情報1007は、ストレージ101にあるファイルへのアクセス日と、ファイルのサイズに関する情報である。ファイル情報は、ファイルに対するアクセス日の古い順に構成されている。
コンピュータ1に指示されたIO情報が、ストレージのファイル情報にも、ストレージ105のファイル情報にも、ストレージ106のファイル情報にもない場合は、ジョブが新規であるとして、デフォルトで決まった記憶容量を用いて、コンピュータ2のDLCMプログラムは、ストレージに記憶容量を確保する。記憶容量はパラメータで指示される。指示されたIO情報が、ファイル情報Bまたはファイル情報Cのどこかに存在する場合、ファイルを更新するジョブであるとDLCMプログラムが判断し、このファイルの現状の容量をストレージに確保する。現状容量に加えて、DLCMプログラムは、パラメータをストレージ101に指示して、現状容量に所定容量を加えることが可能である。ジョブのリトライ制御の際には、ジョブに必要なデータ容量がストレージサブ101に不足していることから、ジョブの実行に必要なファイルの現在の記憶容量の値の2倍をDLCMプログラムはストレージに確保する。なお、倍率はDLCMプログラムがパラメータを用いて変更することができる
次に、DLCMプログラム103は、計算機112によって使用されているストレージ101の記憶容量を取得する(ステップ1002)。次いで、DLCMプログラムは、実推評価値を算出する(ステップ1003)。これは、ストレージの最大の記憶容量(ディスクMax容量)と、フラグ処理が発生しない範囲のディスク使用率(使用可能利用率)と現在使用されている記憶容量および使用が予定されている記憶容量を利用して算出する。実推評価値の算出式は、ディスクMax容量×使用可能利用率−(現使用量+予定使用量)である。
ステップ1004において実推評価値が0より大きい値のケースとは、これから実行するジョブが、ストレージへのIO処理が原因で異常終了したり、IO Waitが発生したりして、CPU稼動率が低下した状況下でジョブを実行する可能性が低い状況にあることであり、この場合には、データが、既にストレージサブシステム101に存在するケースと、どの記憶資源にも存在しないケース(ステップ105)を除いて、DLCMプログラムは、ジョブで必要なデータをストレージサブシステムに準備しておく処理を実施し(ステップ1006)、その後FIFO109にジョブを送り出す。
反対に、実推評価値が0以下のケースとは、これから実行するジョブがストレージへのIO処理が原因で異常終了したり、IO Waitが発生したりしてCPU稼動率が低下した状況下で、ジョブを実行する可能性が高い状況にあるということである。この場合、DLCMプログラムは、ストレージに空き容量を確保する(ステップ1012)。
データ準備処理(ステップ1006)では、ジョブを実行するコンピュータがストレージ101に指示されたIO情報に関するデータを準備する処理を実施する。ここでは、ストレージ105に存在するデータをストレージ101に移すmodeA処理(ステップ108)と、ストレージ106に存在するデータを、ストレージ101に移すmodeBの処理(ステップ109)を実施する。
modeAの処理(ステップ1008)は、指示されたIO情報に対するファイル情報をストレージ105から取得し、当該データをストレージ105からストレージ101に移動する。
modeBの処理(ステップ109)は、指示されたIO情報に対応するファイル情報をストレージ105から取得し、該当データをストレージ106からストレージに101に移動する。これらの処理により、ジョブで使用するデータがストレージ101に移ったことになる。
空き容量確保処理(ステップ1012)は、ストレージ101に必要な空き容量を確保する処理であるが、データをストレージ101からストレージ105に移すmodeCの処理(ステップ1010)だけを実施すれば良いケースと、データをストレージ101からストレージ105に移すために、ストレージ105のデータをストレージ106に移すmodeDの処理(ステップ1011)を実施してから、modeC(ステップ1010)の処理を実施しないといけないケースがある。
modeCの処理(ステップ1010)は、ストレージ101のファイル情報を古い順から取り出し、そのサイズの合計が実推評価値よりも大きくなるまで移動データとしてファイル情報を記憶する。そして、記憶したファイル情報に該当するデータ全てをストレージ101からストレージ置105に移動する。modeDの処理(ステップ1011)は、modeC(ステップ110の処理)の機能と同じで、対象とするストレージの移動元がストレージ105で移動先がストレージ106としたものである。modeCの処理と、場合によって、modeDの処理とmodeCの処理の両方を実行した結果、ストレージ(ディスクA)101に必要な空き容量データを確保することになる。
次に、DLCM機能におけるデータ準備モードの決定と空き容量確保モードの決定について図12を参照して説明する。まず、データ準備モードの決定については、本事象が決定するケースは、ストレージ105あるいはストレージ106に存在するケースに限られることから、移動データがストレージ105に存在するかどうかを調べ(ステップ1101)、存在する場合はmodeAと決定し(ステップ1102)、存在しない場合はmodeBと決定する(ステップ1103)。
次に、空き容量確保モードを決定するに際しては、ストレージ105の現使用量を取得し(ステップ1104)、ストレージ105のディスクMax容量とストレージ105の使用可能利用率と既に算出した実推評価値を使用して、ストレージ105の実推評価値を算出する。実推評価値の算出式(1105)は、ディスクMax×容量×使用可能利用率−(現使用量×実推評価値)となる。この計算の結果、実推評価値が0より大きい場合、modeCと決定し(ステップ1107)、0以下の場合modeDと決定する(ステップ1108)。
modeDを実行した後には、再度、空き容量確保モードの決定を実行する。この場合には、必ずmodeCの実行が決定され、結果として、modeDを実行したあと、modeCを実行することになる。
次に、ジョブの依頼方法について図13を参照して説明する。本システムを使用するためには、ユーザは認証を受ける必要があり、本システムでは、例えば、UNIX(登録商標)ユーザアカウント管理を利用している。ユーザ認証管理機能は、Webの認証画面1201を用い、ユーザにユーザ名とパスワードを入力させ、UNIX(登録商標)のユーザアカウント管理プログラム1202を利用して、UIDに対するGIDの取得とUIDに対するパスワード一致チェックを実施する。これらが成功すると、本システムが利用可能ということになり、これ以降、UIDとGIDを利用して実際のジョブ依頼処理が実施される。
まず、ストレージ101にジョブで使用するための領域が確保される。これは、プロジェクトに対してLUを割り当てることで実現し、WebのLU割当画面1203を使い、ユーザに決定させる。この際、ストレージ101の管理者が予め作成しておいた、LU番号に対する該当GIDを定義したLU該当管理情報1204から、ユーザが使用可能なLUに対して使用状況一覧を表示し、ユーザはストレージ101の空き容量と先行しているプロジェクトとの関係から、ユーザがこれから使用するLUを決定し、このLU番号とプロジェクトWeb画面に入力する。
ユーザが入力を完了すると、システムは、LU割当管理情報1204のユーザが指定したLU番号の行の管理ユーザ欄にUIDを、プロジェクト欄にプロジェクトを登録し、その内容がLU管理情報1205となる
次にジョブ依頼について説明する。これも、Webのジョブ依頼画面1206を使用して行う。ジョブ依頼画面1206には、プロジェクト選択メニューとキューとコマンドとIO情報を入力するテキスト入力エリアがある。プロジェクト選択メニューは、LU該当管理情報1205からユーザのGIDと一致するプロジェクトのみを抽出して作られ、選択する方式である。
キューとコマンドおよびIO情報はユーザが入力する。これらの入力が完了すると、実際にジョブを実行するために、これらの情報が入力パラメータ1207として本システムに送られることになる。このように、本システムでは、Webを利用してジョブ依頼をすることができる。
次に、LU制御方式を、図14を参照して説明する。本システムでは、ユーザがWebを介して入力したパラメータ1210はLDSプログラム111に送られる。LDSプログラム111はユーザが指定したプログラム情報とLU割当管理情報1211のプロジェクト情報とを比較し、一致したLU番号1213を割り出し、LU番号1213をDLCM待ちキュー108に対して送り出す。
DLCMプログラム103は、DLCM待ちキュー108から入力したパラメータとLU番号1213を取り出し、まず、ストレージ101の該当LU番号をリードマウント処理し、指定されたIO情報がストレージ101に既に存在するか否かを調べてからアンマウント処理を行う。該当IO情報がストレージ101に存在しない場合には、ストレージ105をリードマウント処理し、指定されたIO情報がストレージ105に存在するか否かを調べ、アンマウント処理を実行する。ストレージ105にも存在しない場合には、ストレージ106に対しても同様の処理を実施する。該当IO情報がストレージ101に存在せず、ストレージ105またはストレージ106に存在する場合、ストレージ101の該当LU番号をライトマウント処理し、さらに指定されたIO情報が存在するストレージをライトマウント処理し、該当IO情報を移動し、移動完了後、双方のストレージをアンマウント処理する。さらに、前述の空き容量確保処理を実施したあと、DLCM待ちキュー108から取り出した入力パラメータとLU番号1213をFIFO109に送り出す処理を実施する。
ジョブリリースプログラム110は、FIFO109から入力パラメータとLU番号を取り出し、LDSプログラム111に送信する。LDSプログラム111はクラスタ管理プログラム104に対し、入力パラメータとLU番号1213を送信する。クラスタ管理プログラム104は、ジョブ実行コンピュータを決定し、決定したコンピュータのブリッジプログラム113に対し、入力パラメータとLU番号1213を送信する。ブリッジプログラム113は、受信したストレージ101のLU番号をマウント処理したあと、入力パラメータのコマンドを実行し、コマンド終了後、受信したLU番号をアンマウント処理する。このように、本システムでは、ユーザがWebからジョブ依頼する際に、プロジェクトを指定するだけで、ストレージ101に対するLU制御を自動的に実行することができる。
既述の説明において、ストレージとは、複数のハードディスク・光ディスクからなる記憶媒体を備えた、ディスク装置、ディスクアレイサブシステム、又は、記憶媒体としての複数の、フラッシュメモリなどの半導体メモリを備えた記憶装置である。
本発明の一実施形態を示す負荷分散制御システムのブロック構成図である。 クラスタ管理方法を説明するための図である。 実行ジョブ数の把握方法を説明するための図である。 実行ジョブ数の把握方法を説明するための図である。 負荷分散処理を高安定稼動で行うときの方法を説明するための図である。 実行CPU選択方法を説明するための図である。 マルチクラスタによる負荷分散制御方法を説明するための図である。 マルチクラスタによるアービトレーション制御方法を説明するため図である。 DLCMの構成を説明するためのブロック図である。 DLCMの制御方式を説明するための図である。 DLCMの機能を説明するための図である。 DLCM機能におけるデータ準備モード決定と空き容量確保モード決定方法を説明するための図である。 Webを用いたジョブの依頼方法を説明するための図である。 Webを用いてLU制御を行う方法を説明するための図である。
符号の説明
101 ストレージ
102 スイッチチングハブ
103 DLCMプログラム
104 クラスタ管理プログラム
105 大容量ストレージ
106 入庫用ストレージ
107 SAN
108 DLCM待ちキュー
109 FIFO
110 ジョブリリースプログラム
111 LDSプログラム
112 実行コンピュータ

Claims (8)

  1. 複数の計算機を備え、ジョブを前記複数の計算機に分散して実行させる、負荷分散システムにおいて、
    前記複数の計算機が前記ジョブを実行するためにアクセスする第1のストレージと、
    前記複数の計算機の少なくとも一つがアクセスしてから、所定の時間経過し、前記第1のストレージから移動されたデータを格納する、第2のストレージと、
    前記複数の計算機のうち、負荷が少ない計算機に前記ジョブを実行させる管理を行う、第1の管理装置と、
    ユーザから要求があったジョブを受付け、当該受付けた複数のジョブをキューイングして、第1のジョブキューに順番に格納する、第2の管理装置と、
    前記第1のジョブキューのジョブを順番に取り出し、前記負荷が少ない計算機が前記取り出したジョブを実行するための事前処理を前記第1及び第2のストレージに対して実行する第3の管理装置と、
    前記事前処理が終了した複数のジョブを、前記負荷が少ない計算機によって実行されることを待つ実行待ちジョブとして順番に格納する、第2のジョブキューと、
    を備え、
    前記第の管理装置は、前記第2のジョブキューから前記複数のジョブを順番に取り出し、当該取り出したジョブを前記第1の管理装置に送り、当該第1の管理装置は当該ジョブを前記負荷が少ない計算機に実行させ
    前記第3の管理装置は、前記事前処理として、
    前記要求されたジョブに対応するIO情報が前記第1のストレージのファイル及び前記第2のストレージのファイルにも無いと判定する場合、当該要求されたジョブを新規ジョブとして処理するのに必要な所定の記憶容量を予定量と判定し、
    前記IO情報が前記第2のストレージのファイルにあると判定する場合、当該ファイルの容量を前記予定量と判定し、
    前記要求されたジョブがリトライのジョブと判定する場合、当該ジョブに対応する前記ファイルの容量に対して、設定された倍率の容量を前記予定量と判定し、
    前記複数の計算機によって現に使用されている、前記第1のストレージ装置の容量と前記予定量とに基づいて、前記第1のストレージが前記要求されたジョブのために必要な容量を持っているか否かを評価し、
    前記評価を否定すると、前記第1のストレージの複数のファイルの情報を参照し、最後にアクセスされた日時が古い順に、前記複数のファイルの少なくとも一つを、前記第1のストレージの不足している容量に達するまで選択し、選択したファイルのデータを前記第1のストレージから前記第2のストレージに移動し、当該移動されたデータの容量を前記要求されたジョブに割当て、
    前記要求されたジョブに対応するIO情報が格納されたファイルが前記第1のストレージに無く、前記第2のストレージにあると判定する場合、当該ファイルのデータを前記第2ストレージから前記第1のストレージに移動する、ことを行う、
    負荷分散システム。
  2. 前記第1のストレージは前記第2のストレージより前記計算機が高速にアクセスできる、記憶デバイスを備えている、請求項記載の負荷分散システム。
  3. 前記複数の計算機の少なくとも一つから当面アクセスされる予定の無いデータを格納する第3のストレージを備え、
    前記第3の管理装置は、前記事前処理として、
    前記要求されたジョブに対応するIO情報が前記第1のストレージから前記第3のストレージのファイルに無いと判定する場合、当該要求されたジョブを新規ジョブとして処理するのに必要な所定の記憶容量を予定量と判定し、
    前記IO情報が、前記第2のストレージ又は第3のストレージのファイルにあると判定する場合、当該ファイルの容量を前記予定量と判定し、
    前記評価を否定すると、前記第2のストレージの複数のファイルの情報を参照し、最後にアクセスされた日時が古い順に、前記複数のファイルの少なくとも一つを、前記第1のストレージの不足している容量に達するまで選択し、選択したファイルのデータを前記第2のストレージから前記第3のストレージに移動し、次いで、前記第1のストレージの複数のファイルの情報を参照し、最後にアクセスされた日時が古い順に、前記複数のファイルの少なくとも一つを、前記第1のストレージの不足している容量に達するまで選択し、選択したファイルのデータを前記第1のストレージから前記第2のストレージに移動する、ことを行う請求項記載の負荷分散システム。
  4. 前記第1の管理装置は、前記複数の計算機の各々が搭載するCPU数をパラメータとして、前記各計算機の残計算能力を算出し、前記算出結果最大のコンピュータを、前記要求されたジョブを実行すべき計算機として選択する、請求項1記載の負荷分散制御システム。
  5. 前記第1の管理装置は、前記複数の計算機をクラスタとして管理するプログラムを備え、
    各計算機は前記管理プログラムとアクセスするブリッジプログラムを備え、
    前記計算機がジョブの実行過程で、前記ジョブの実行にする情報の授受を、前記クラスタ管理プログラムと前記ブリッジプログラムとの間で実行してなることを特徴とする請求項1に記載の負荷分散制御システム。
  6. 前記第1の管理装置は、前記クラスを構成する複数の計算機の各々が同時に実行できるジョブ数をパラメータとして、前記計算機の残計算能力を算出し、前記算出結果が最大の計算機を、前記要求されたジョブを実行すべき計算機として選択する、請求項に記載の負荷分散制御システム。
  7. 前記第3の管理装置は、ジョブを実行すべき計算機によってジョブが終了したときに、前記ジョブの実行前に前記ストレージに確保した空き容量よりも過剰な記憶容量を、前記要求されたジョブを実行する計算機が当該ジョブを処理する過程で使用したときには、その過剰分を含む空き容量を、前記第1のストレージに事前に確保する、請求項1記載の負荷分散制御システム。
  8. 複数の計算機と、
    前記複数の計算機が前記ジョブを実行するためにアクセスする第1のストレージと、
    前記複数の計算機の少なくとも一つがアクセスしてから、所定の時間経過し、前記第1のストレージから移動されたデータを格納する、第2のストレージと、を有する計算機システムに、前記ジョブを前記複数の計算機に分散して実行させる負荷分散制御方法であって、
    前記計算機システムは、
    前記複数の計算機のうち、負荷が少ない計算機に前記ジョブを実行させる管理を行う第1の工程と、
    ユーザから要求があったジョブを受付け、当該受付けた複数のジョブをキューイングして、第1のジョブキューに順番に格納する第2の工程と、
    前記第1のジョブキューのジョブを順番に取り出し、前記複数の計算機の少なくとも一つが前記取り出したジョブを実行するための事前処理を前記第1及び第2のストレージに対して実行する第3の工程と、
    前記事前処理が終了した複数のジョブを、前記負荷が少ない計算機によって実行されることを待つ実行待ちジョブとして順番に第2のジョブキーに格納する第4の工程と、
    前記第2のジョブキューから前記複数のジョブを順番に取り出し、当該取り出したジョブを前記計算機に実行させる第5の工程と、
    前記要求されたジョブに対応するIO情報が前記第1のストレージのファイル及び前記第2のストレージのファイルにも無いと判定する場合、当該要求されたジョブを新規ジョブとして処理するのに必要な所定の記憶容量を予定量と判定し、前記IO情報が前記第2のストレージのファイルにあると判定する場合、当該ファイルの容量を前記予定量と判定し、前記要求されたジョブがリトライのジョブと判定する場合、当該ジョブに対応する前記ファイルの容量に対して、設定された倍率の容量を前記予定量と判定する、第6の工程と、
    前記複数の計算機の少なくとも一つによって現に使用されている、前記第1のストレージ装置の容量と前記予定量とに基づいて、前記第1のストレージが前記要求されたジョブのために必要な容量を持っているか否かを評価し、前記評価を否定すると、前記第1のストレージの複数のファイルの情報を参照し、最後にアクセスされた日時が古い順に、前記複数のファイルの少なくとも一つを、前記第1のストレージの不足している容量に達するまで選択し、選択したファイルのデータを前記第1のストレージから前記第2のストレージに移動し、当該移動されたデータの容量を前記要求されたジョブに割当てる第7の工程と、
    前記要求されたジョブに対応するIO情報が格納されたファイルが前記第1のストレージに無く、前記第2のストレージにあると判定する場合、当該ファイルのデータを前記第2ストレージから前記第1のストレージに移動する第8の工程と、を実行する負荷分散制御方法。
JP2006187997A 2006-07-07 2006-07-07 負荷分散制御システム及び負荷分散制御方法 Expired - Fee Related JP4921054B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006187997A JP4921054B2 (ja) 2006-07-07 2006-07-07 負荷分散制御システム及び負荷分散制御方法
US11/517,294 US7996844B2 (en) 2006-07-07 2006-09-08 Load distribution control system and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006187997A JP4921054B2 (ja) 2006-07-07 2006-07-07 負荷分散制御システム及び負荷分散制御方法

Publications (2)

Publication Number Publication Date
JP2008015888A JP2008015888A (ja) 2008-01-24
JP4921054B2 true JP4921054B2 (ja) 2012-04-18

Family

ID=38951436

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006187997A Expired - Fee Related JP4921054B2 (ja) 2006-07-07 2006-07-07 負荷分散制御システム及び負荷分散制御方法

Country Status (2)

Country Link
US (1) US7996844B2 (ja)
JP (1) JP4921054B2 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4921291B2 (ja) * 2007-09-04 2012-04-25 キヤノン株式会社 ファクシミリ装置及びその制御方法、並びにプログラム
JP4985263B2 (ja) * 2007-09-21 2012-07-25 富士通株式会社 ジョブ連携システム、ジョブ連携方法、ジョブ連携プログラム
JP5256787B2 (ja) * 2008-03-07 2013-08-07 日本電気株式会社 キュー管理装置、制御プログラム、ジョブ処理システムおよび制御方法
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US9443216B2 (en) * 2009-06-19 2016-09-13 Verizon Patent And Licensing Inc. System and method for providing managed instant communication (or chat)-based helpdesk services
US8413161B2 (en) * 2009-09-29 2013-04-02 International Business Machines Corporation Work queue selection on a local processor within a multiple processor architecture
US9594599B1 (en) * 2009-10-14 2017-03-14 Nvidia Corporation Method and system for distributing work batches to processing units based on a number of enabled streaming multiprocessors
IN2012DN03826A (ja) 2010-01-28 2015-08-28 Hitachi Ltd
JP5515810B2 (ja) * 2010-02-05 2014-06-11 日本電気株式会社 負荷制御装置
US9218217B1 (en) * 2011-03-28 2015-12-22 Google Inc. Opportunistic job processing in distributed computing resources with an instantiated native client environment with limited read/write access
US8725875B2 (en) * 2011-06-21 2014-05-13 Intel Corporation Native cloud computing via network segmentation
US9311121B2 (en) 2012-12-21 2016-04-12 Commvault Systems, Inc. Archiving virtual machines in a data storage system
US9740702B2 (en) 2012-12-21 2017-08-22 Commvault Systems, Inc. Systems and methods to identify unprotected virtual machines
US20140196039A1 (en) 2013-01-08 2014-07-10 Commvault Systems, Inc. Virtual machine categorization system and method
US9939981B2 (en) 2013-09-12 2018-04-10 Commvault Systems, Inc. File manager integration with virtualization in an information management system with an enhanced storage manager, including user control and storage management of virtual machines
US20150081400A1 (en) * 2013-09-19 2015-03-19 Infosys Limited Watching ARM
US10031916B2 (en) * 2014-06-18 2018-07-24 Dell Products L.P. Methods and systems for virtualizing and managing cloud storage sources
US20160019317A1 (en) 2014-07-16 2016-01-21 Commvault Systems, Inc. Volume or virtual machine level backup and generating placeholders for virtual machine files
US9983936B2 (en) 2014-11-20 2018-05-29 Commvault Systems, Inc. Virtual machine change block tracking
JP6515510B2 (ja) * 2014-12-01 2019-05-22 日本電気株式会社 バッチジョブ処理装置、システム、バッチジョブ処理方法およびプログラム
US10666574B2 (en) 2015-09-28 2020-05-26 Amazon Technologies, Inc. Distributed stream-based database triggers
US10417102B2 (en) 2016-09-30 2019-09-17 Commvault Systems, Inc. Heartbeat monitoring of virtual machines for initiating failover operations in a data storage management system, including virtual machine distribution logic
US10162528B2 (en) 2016-10-25 2018-12-25 Commvault Systems, Inc. Targeted snapshot based on virtual machine location
US10678758B2 (en) 2016-11-21 2020-06-09 Commvault Systems, Inc. Cross-platform virtual machine data and memory backup and replication
US20180276085A1 (en) 2017-03-24 2018-09-27 Commvault Systems, Inc. Virtual machine recovery point generation
US10387073B2 (en) 2017-03-29 2019-08-20 Commvault Systems, Inc. External dynamic virtual machine synchronization
US10635497B2 (en) * 2017-05-05 2020-04-28 Cavium, Llc Method and apparatus for job pre-scheduling by distributed job manager in a digital multi-processor system
US10599480B2 (en) * 2017-05-05 2020-03-24 Red Hat, Inc. Cascading job scheduling in guests
US11842225B2 (en) * 2019-10-03 2023-12-12 Steering Solutions Ip Holding Corporation Systems and methods for decentralized-distributed processing of vehicle data
US11822955B2 (en) * 2020-01-17 2023-11-21 Steering Solutions Ip Holding Corporation System and method for decentralized vehicle software management
JP7126534B2 (ja) * 2020-09-29 2022-08-26 株式会社日立製作所 計算機システム、リソース再割当方法
US11656951B2 (en) 2020-10-28 2023-05-23 Commvault Systems, Inc. Data loss vulnerability detection

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2877973B2 (ja) * 1991-02-21 1999-04-05 日本電気株式会社 ファイルリコール制御方式
JPH0581090A (ja) * 1991-09-19 1993-04-02 Nec Corp フアイルリコール制御方式
JPH0675785A (ja) * 1992-06-29 1994-03-18 Fujitsu Ltd プレステージング処理方法、バッファ管理方法及びファイルシステム
JPH07234847A (ja) * 1994-02-25 1995-09-05 Hitachi Ltd ジョブのスケジューリング方法
JPH1049504A (ja) 1996-08-02 1998-02-20 Mitsubishi Electric Corp 負荷分散バッチシステム
JPH10334057A (ja) 1997-06-04 1998-12-18 Nippon Telegr & Teleph Corp <Ntt> 分散システム環境におけるバッチジョブの動的負荷分散処理方法およびそのシステム
JPH113323A (ja) 1997-06-10 1999-01-06 Nec Software Ltd ジョブ実行の負荷分散装置
JP2001022614A (ja) * 1999-07-08 2001-01-26 Hitachi Ltd 階層形記憶システム
JP2002073576A (ja) * 2000-08-31 2002-03-12 Toshiba Corp バッチジョブ制御システム
AU2002312508B2 (en) * 2000-09-11 2008-01-17 Agami Systems, Inc. Storage system having partitioned migratable metadata
JP2003296152A (ja) * 2002-03-29 2003-10-17 Toshiba Corp Hsmシステムおよび同システムのマイグレーション制御方法
JP4183443B2 (ja) * 2002-05-27 2008-11-19 株式会社日立製作所 データ再配置方法及び装置
JP2004348192A (ja) * 2003-05-20 2004-12-09 Hitachi Ltd Job分配制御方法
JP4168281B2 (ja) * 2004-09-16 2008-10-22 日本電気株式会社 並列処理システム、インタコネクションネットワーク、ノード及びネットワーク制御プログラム

Also Published As

Publication number Publication date
JP2008015888A (ja) 2008-01-24
US20080007765A1 (en) 2008-01-10
US7996844B2 (en) 2011-08-09

Similar Documents

Publication Publication Date Title
JP4921054B2 (ja) 負荷分散制御システム及び負荷分散制御方法
JP4884198B2 (ja) ストレージネットワークの性能管理方法、並びに、その方法を用いた計算機システム及び管理計算機
US8327103B1 (en) Scheduling data relocation activities using configurable fairness criteria
US8892780B2 (en) Management of shared storage I/O resources
US7593948B2 (en) Control of service workload management
US20080229320A1 (en) Method, an apparatus and a system for controlling of parallel execution of services
EP0747832A2 (en) Customer information control system and method in a loosely coupled parallel processing environment
US8381217B1 (en) System and method for preventing resource over-commitment due to remote management in a clustered network storage system
US20050027719A1 (en) Database control method
US11556391B2 (en) CPU utilization for service level I/O scheduling
US8677014B2 (en) Fine granularity exchange level load balancing in a multiprocessor storage area network
Shu et al. Design and implementation of an SAN system based on the fiber channel protocol
US20160182620A1 (en) Data distribution apparatus, data distribution method, and data distribution program for parallel computing processing system
EP2087430B1 (en) Lock manager rotation in a multiprocessor storage area network
US11875198B2 (en) Synchronization object issue detection using object type queues and associated monitor threads in a storage system
CA2176905A1 (en) Customer information control system and method with api start and cancel transaction functions in a loosely coupled parallel processing environment
JP5246872B2 (ja) ストレージシステムおよびストレージ管理方法
US9065740B2 (en) Prioritising data processing operations
JP2010097566A (ja) 情報処理装置、及び情報処理システムにおけるバッチ処理の割り当て方法
US10846094B2 (en) Method and system for managing data access in storage system
JP5415338B2 (ja) ストレージシステム、その負荷分散管理方法及びプログラム
US20060036790A1 (en) Method, system, and program for returning attention to a processing system requesting a lock
US11847512B1 (en) Method and apparatus for optimizing system call (syscall) processing
US20230359359A1 (en) Elastic request handling technique for optimizing workload performance
US20240104468A1 (en) Maintenance background task regulation using feedback from instrumented waiting points

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090217

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090521

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101005

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110127

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4921054

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

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees