JP2007249491A - マルチサーバ環境においてバッチジョブを分散させるプログラム、装置、および方法 - Google Patents

マルチサーバ環境においてバッチジョブを分散させるプログラム、装置、および方法 Download PDF

Info

Publication number
JP2007249491A
JP2007249491A JP2006070814A JP2006070814A JP2007249491A JP 2007249491 A JP2007249491 A JP 2007249491A JP 2006070814 A JP2006070814 A JP 2006070814A JP 2006070814 A JP2006070814 A JP 2006070814A JP 2007249491 A JP2007249491 A JP 2007249491A
Authority
JP
Japan
Prior art keywords
batch job
server
execution
load
data
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
JP2006070814A
Other languages
English (en)
Inventor
Shinji Ishiguro
辰士 石黒
Moriyoshi Watanabe
司芳 渡辺
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 JP2006070814A priority Critical patent/JP2007249491A/ja
Priority to US11/471,813 priority patent/US20070220516A1/en
Publication of JP2007249491A publication Critical patent/JP2007249491A/ja
Pending legal-status Critical Current

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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5019Workload prediction

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】バッチジョブを実行させるサーバを複数の実行サーバの中から選ぶときに、バッチジョブの実行にかかる時間の範囲全体の中で最適な実行サーバを選択する。
【解決手段】バッチジョブ特性と入力データの件数からそのバッチジョブの実行にかかる時間を予測し、その時間の範囲全体で各実行サーバの負荷状況を予測し、それにもとづいてバッチジョブを実行させる実行サーバを選択する。また、バッチジョブを実行するたびに、そのバッチジョブの実行により生じた負荷を計測し、その実測値にもとづいてバッチジョブ特性を更新することによって、バッチジョブ特性の確度および実行サーバの選択の精度を高める。
【選択図】図1

Description

本発明は、バッチジョブを実行するサーバが複数存在するマルチサーバ環境において、バッチジョブを実行させるサーバを適切に選択し、効率的に負荷を分散させる技術に関する。
複数のバッチジョブを複数のサーバに分散して実行させることでスループットを向上させる手法がある。静的に分散の仕方を定めておくこともできるが、動的に分散することによって、より効率的な負荷分散が可能になる。
特許文献1に記載されたシステムでは、バッチジョブを実行する複数のサーバの負荷状況を監視している。バッチジョブの実行依頼があると、予め設定されたバッチジョブの資源使用特性にもとづいてそのバッチジョブを型(例えば、メモリやI/O資源に比べてCPU資源を主に使う「CPU資源使用型」など)に分類し、その型のジョブを実行するのに適した負荷状況のサーバを選ぶ。類似のシステムは特許文献2にも開示されている。
ところで、バッチジョブはオンラインジョブと異なり、まとまった量の入力データを一括して処理する。よって、入力データ量を変えて一つのバッチジョブを複数回実行すると、使用するコンピュータ資源の量も実行時間も、入力データ量(処理件数)に依存して異なるという特性がある。
また、大量の入力データを処理するバッチジョブを実行するのには、例えば、1時間から2時間程度の長い時間を要することがしばしばある。したがって、バッチジョブを起動する時に低負荷だったサーバが、バッチジョブを実行しているうちに、そのバッチジョブ以外の要因を含む様々な要因で高負荷になってしまう可能性を無視することができない。バッチジョブを起動する時のサーバ負荷状況だけにもとづいて、そのようなサーバにバッチジョブを実行させてしまうと、最適な分散を実現することができない。
しかし、特許文献1や特許文献2に記載されたシステムでは、バッチジョブの実行にかかる時間という要素を考慮しておらず、バッチジョブを分散させるための判断に用いるサーバの負荷状況は、バッチジョブの実行依頼があった時点の直近の負荷状況のみである。
また、特許文献1や特許文献2などのシステムにおいては、バッチジョブの特性が適切に把握されていることが肝要だが、従来はバッチジョブの特性を把握すること自体が難しく、時間と手間を要するという問題があった。その理由は、第一に、バッチジョブの処理時間の要因である処理データ量、ユーザ資源の競合、システム資源の競合、競合の結果生じる待ち時間などを総合して可視化する標準的な仕組みやツールがないので、バッチジョブの特性を把握するためのアプリケーションプログラムをユーザが独自に開発する必要があるためである。第二の理由は、システム負荷をプロセスごとに集計する標準的な機能はサーバに備わっているが、バッチジョブごとの集計は人手で行うか、ユーザが独自のアプリケーションプログラムを作成する必要があるためである。
特開平10−334057号公報 特開平4−34640号公報
本発明の課題は、バッチジョブを実行するサーバが複数存在するマルチサーバ環境において、バッチジョブを実行させるサーバを選択する際に、バッチジョブの実行にかかる時間の範囲全体の中で最適なサーバを選択することである。また、その選択の際に用いるバッチジョブの特性を自動的に記録し、特性を把握する手間を軽減することも本発明の課題である。
図1は本発明の原理を示す図である。本発明によるプログラムは、バッチジョブを実行するサーバが複数存在するマルチサーバ環境において、バッチジョブを実行させるサーバを選択するのに用いられる。本発明によるプログラムは、ステップS1において、バッチジョブの特性と入力データ量から、そのバッチジョブを実行するのにかかる実行時間を予測する。そしてステップS2において、その実行時間の範囲における各サーバの負荷状況を予測する。最後にステップS3において、予測した負荷状況にもとづいて、そのバッチジョブを実行させるサーバを選択する。選択されたサーバでバッチジョブを実行することにより、マルチサーバ環境におけるバッチジョブの適切な分散が実現される。
また、こうして選択されたサーバでバッチジョブが実行されるたびに、その実行に起因する負荷を計測して記録し、記録したデータをもとにバッチジョブの特性を更新する。
本発明によれば、ある一点の時刻におけるサーバの負荷状況ではなく、バッチジョブの実行にかかると予測される時間の範囲でサーバの負荷状況が予測され、その予測にもとづいてバッチジョブを実行するサーバが選択される。よって、たとえ複数のサーバの負荷状況が時間帯によって変化する環境で、処理時間の長いバッチジョブを実行させようとする場合であっても、適切なサーバを選択することができる。そのため、マルチサーバ環境においてバッチジョブを従来よりも効率的に分散することが可能となる。
また、バッチジョブの特性が自動的に作成・更新されるため、システム管理者などの人間がバッチジョブの特性を把握する手間を軽減できる。さらに、バッチジョブの特性を表すデータの収集量が多いほど、記録されたバッチジョブの特性の確度が高まるので、バッチジョブを実行させるサーバを選択するときの判断の精度も高まり、より効率的な運用が実現できる。
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
まず、図2と図3を用いて、バッチジョブを実行するサーバを選択する方法の概略を説明する。次に、図4を用いて、本発明によってバッチジョブの実行サーバを選択しバッチジョブを分散実行させるシステムの全体の構成を説明する。その後、図5から図8を用いて、本発明で使われる各種のデータの構成について説明してから、図9から図12を用いて処理の流れを説明する。
図2は、1つのバッチジョブを実行することによる負荷の一例を示すグラフである。図2のグラフの縦軸は負荷を示し、横軸は時間を示す。図2の例ではCPU使用量とメモリ使用量の2種類の負荷が示されている。一般的に、バッチジョブは処理対象のデータを一件ずつ順次処理していくことが多いため、図2のように負荷の変動幅が小さいことが多い。よって、負荷が時間とともに変化するのではなく、一定量の負荷が持続すると近似的に見なしても問題がない。
図3は、バッチジョブを実行するサーバの負荷の一例を示すグラフである。図3のグラフの縦軸は負荷を示し、横軸は時間を示す。図3の例ではサーバAとサーバBのそれぞれについて、CPU使用率とメモリ使用率の2種類の負荷が示されている。サーバは1つのバッチジョブだけを実行するのではないため、図3に示したように、負荷は時間によって大きく変動することがある。
あるバッチジョブを時刻tから実行しようとしたとき、図3の例では、時刻tにおける負荷は、サーバAの方がサーバBよりも低い。従来の手法では、時刻tにおける負荷にもとづいてバッチジョブを実行させるサーバを選択するため、時刻tにおいてCPU使用率、メモリ使用率の双方で有利なサーバAが選択される。しかし、サーバAの負荷は時間とともに増大する傾向にあるのに対し、サーバBの負荷は時間とともに減少する傾向にあることを考慮すると、サーバAを選択することは最適な負荷分散を意味しない。
ここで、説明を簡略化するために、便宜上、サーバAとサーバBのハードウェア性能の差が無視できる程度だと仮定すると、あるバッチジョブをサーバAで実行するのにかかると予測される時間と、そのバッチジョブをサーバBで実行するのにかかると予測される時間は同一と見なせる(予測の方法は後述する)。この時間をdとし、時刻tはt=t+dなる時刻とする。時刻tから時刻tまでの範囲は、バッチジョブの実行開始から実行終了と予測されるまでの範囲であり、以下ではこの予測された時間範囲を、バッチジョブの実行範囲と呼ぶ。本発明では、バッチジョブの実行範囲におけるサーバAとサーバBのそれぞれの負荷を考慮して、バッチジョブを実行させるサーバが選択される。図3の例では、バッチジョブの実行範囲における負荷の総量は、CPU使用率に関しても、メモリ使用率に関しても、サーバBの方がサーバAよりも小さいため、サーバBが選択される。
なお、バッチジョブの実行範囲全体における負荷の総量は、図3のグラフにおいて、CPU使用率やメモリ使用率を、それぞれ時刻tからtまで積分した値に相当する。よって、一般に積分値の近似値を求めるときと同様に、tからtの区間を複数の区間に区切って区分求積することにより、バッチジョブの実行範囲全体における負荷の総量が予測できる。
ところで、もしバッチジョブの実行により発生する負荷が実行範囲において大きく変化(増加や減少など)するなら、バッチジョブを実行させるサーバを選ぶときに、その変化の傾向と、実行範囲におけるサーバ負荷の変化の傾向のマッチングを考慮する必要がある。しかし、実際には、1つのバッチジョブの実行により発生する負荷はそれほど大きく変動しない場合が多い(図2)。よって、本発明では、バッチジョブをどのサーバに実行させるかの判断において、変化の傾向のマッチングを考慮しない。つまり、図3のサーバ負荷の変化の傾向(増加するか減少するかなど)を考慮せず、サーバ負荷の総量にもとづいて判断する。また、バッチジョブの実行範囲全体におけるサーバ負荷の総量とサーバ負荷の平均値は比例関係にあるので、サーバ負荷の総量のかわりにサーバ負荷の平均値を利用して、バッチジョブをどのサーバに実行させるかを判断することができる。このことは、図10のフローチャートに示す処理で利用する。
図4は、本発明によってバッチジョブの実行サーバを選択しバッチジョブを分散実行させるシステムの一実施形態における構成図である。図4に示したバッチシステム101は、受付サーバ102と、複数の実行サーバ103−1、103−2、……、103−Nからなる実行サーバ群103と、リポジトリ104とを備える。受付サーバ102は、バッチジョブの実行要求を受け付けると、バッチジョブの実行にかかる時間を予測し、そのバッチジョブの実行範囲内での各実行サーバ103−1、103−2、……、103−Nの負荷状況を予測し、予測した負荷状況にもとづいて実行サーバ群103の中から適切な実行サーバを選択して、その実行サーバにバッチジョブを実行させる。受付サーバはこれらの予測と選択を、リポジトリ104に格納されたデータにもとづいて行う。図中の番号(1)から(15)は処理の流れを示すが、詳しくは後述する。
受付サーバ102は、バッチジョブをスケジュールする機能(以下「スケジュール機能」という)を有するサーバ・コンピュータである。実行サーバ103−1、103−2、……、103−Nは、それぞれがバッチジョブを実行する機能(以下「実行機能」という)を有するサーバ・コンピュータである。以下では、ほぼ同性能のサーバをクラスタ化して運用している場合など、実行サーバ103−1、103−2、……、103−Nの性能の差が無視できる程度の場合について主に述べる。リポジトリ104はディスク装置(記憶装置)上に配置され、バッチジョブの分散に必要な各種のデータ(図5から図8)が格納されている。受付サーバ102および実行サーバ103−1、103−2、……、103−Nは、リポジトリ104が配置されたディスク装置にアクセス可能であり、リポジトリ内のデータの参照・更新等を行うことができる。
スケジュール機能は、1台の物理的なサーバ(つまり受付サーバ102)に存在する。実行機能は、2台以上の物理的なサーバ(つまりに実行サーバ103−1、103−2、……、103−N)に存在する。受付サーバ102は、実行サーバ群103のうちの1台のサーバと物理的に同一のサーバであってもよく、実行サーバ群103のいずれとも物理的に異なるサーバであってもよい。
リポジトリ104を配置したディスク装置のフォーマットは、リポジトリ104を利用する各サーバ(受付サーバ102および実行サーバ103−1、103−2、……、103−N)が参照可能なフォーマットでなくてはならない。ただし、汎用的なフォーマットである必要はなく、バッチシステム101の独自フォーマットでもよい。
リポジトリ104には、システムの運用状態を示すデータ(以下「運用データ」という)、バッチジョブの特性を示すデータ(以下「バッチジョブ特性」という)、サーバの負荷状況を示すデータ(以下「サーバ負荷情報」という)、バッチショブを実行させる実行サーバを選択するための規則(以下「分散条件」という)が格納されている。
これらリポジトリ104内の各情報は、一つのファイルに格納してもよいし、複数のファイルに分けて格納してもよい。リポジトリ104を配置したディスク装置は、受付サーバ102や実行サーバ103−1、103−2、……、103−Nのいずれのローカルディスクとも物理的に異なるディスク装置でもよく、これらサーバのいずれかのローカルディスクと物理的に同一の装置であってもよい。また、リポジトリ104が物理的に2つ以上のディスク装置に分かれて配置されていてもよい。例えば、バッチジョブ特性と分散条件が受付サーバ102のローカルディスクに格納され、運用データとサーバ負荷情報が、いずれのサーバのローカルディスクとも物理的に異なるディスク装置に格納されるようにしてもよい。
運用データは、バッチジョブを実行した際の履歴やサーバ負荷の履歴を管理するためのデータである。運用データの例を図5に示すが、詳しくは後述する。
バッチジョブ特性は、図5に示した運用データからバッチジョブごとにデータが抽出されて作成される。バッチジョブ特性は、各バッチジョブの特性を管理するためのデータである。バッチジョブ特性としてリポジトリ104には、例えば、ジョブ識別名、ジョブステップ数、実行時間、CPU使用量、メモリ使用量、物理I/O発行回数などの項目が格納されてもよい。実施の態様に応じて、これらの項目のうち必要な項目がバッチジョブ特性としてリポジトリ104に格納される。バッチジョブ特性の例を図6に示すが、詳しくは後述する。
サーバ負荷情報は、時間帯ごとの各実行サーバ103−1、103−2、……、103−Nの負荷を管理するための情報である。サーバ負荷情報としてリポジトリ104には、例えば、CPU使用量、CPU使用率、メモリ使用量、メモリ使用率、物理I/Oの平均待ち時間、ファイルの使用量、記憶装置の空き容量などの項目が格納されてもよい。実施の態様に応じて、これらの項目のうち必要な項目がサーバ負荷情報としてリポジトリ104に格納される。サーバの負荷情報の例を図7に示すが、詳しくは後述する。
分散条件は、バッチジョブを実行するサーバを選択するときに参照する規則を保持している。分散条件の一例を図8に示すが、詳しくは後述する。
受付サーバ102は、バッチジョブの実行要求を受け付けるジョブ受付サブシステム105、ジョブを実行させる実行サーバを選択するジョブ分散サブシステム106、運用データを記録するための運用データ採取サブシステム107、バッチジョブ特性を更新するためのジョブ情報更新サブシステム108、という4つのサブシステムを含む。これら4つのサブシステムは連携している。
実行サーバ103−1、103−2、……、103−Nのそれぞれは、バッチジョブを実行するジョブ実行サブシステム109、運用データを記録する運用データ採取サブシステム110、サーバ負荷情報を収集する性能情報収集サブシステム111、収集したサーバ負荷情報にもとづきリポジトリ104の内容を更新するサーバ情報採取サブシステム112、という4つのサブシステムを含む。これら4つのサブシステムは連携している。
受付サーバ102および各実行サーバ103−1、103−2、……、103−Nにはそれぞれ4つのサブシステムがあるが、4つのサブシステムを、連携して動作する4つの独立したプログラムにより実現してもよく、4つの機能を含む1つのプログラムにより実現してもよい。あるいは、2つまたは3つの機能を1つのプログラムにまとめたり、1つの機能を複数の連携したプログラムにより実現したりしてもよく、当業者なら様々な態様で実施することが可能である。4つのサブシステムで行う処理内容の詳細は後述する。
図5は運用データの格納例である。運用データはリポジトリ104内に格納されるデータで、バッチシステム101の運用状態を示す。図5は表形式で表現した例だが、実データは表形式以外の形式で格納されていてもよい。後述するように、運用データは受付サーバ102内の運用データ採取サブシステム107および各実行サーバ103−1、103−2、……、103−N内の運用データ採取サブシステム110によって記録される。
図5の表には、レコード(行)を格納した日時を示す「格納日時」列、レコードの種別を示す「レコード情報種別」列がある。レコードの種別により、格納すべきデータ項目の数や内容は異なる。そのため、データ項目の各列(「データ項目1」、「データ項目2」、……)は、レコードの種別により、使用されるか否かが異なり、使用される場合も格納されるデータの意味が異なる。
図5の例では種別の異なる4つのレコードが存在する。1番目のレコードの内容は、格納日時が「2006/02/01 10:00:00.001」、レコード種別が「10」(バッチジョブに関する一連の処理を開始したことを示すコード)、データ項目1が「JOB1」(このバッチジョブの識別名)である。データ項目2以降の列は使っていない。このレコードは、JOB1というバッチジョブの処理を開始したことを2006/02/01 10:00:00.001に記録したことを意味する。運用データにおいてレコード種別が「10」のレコードを以下では「ジョブ開始データ」と呼ぶ。
2番目のレコードの内容は、格納日時が「2006/02/01 10:00:00.050」、レコード種別が「20」(バッチジョブの実行時間と負荷を予測したことを示すコード)、データ項目1が「JOB1」、データ項目2が「1000」(JOB1の入力データの件数)、データ項目3が「3300秒」(JOB1の実行にかかると予測された時間)、データ項目4が「600.0秒」(JOB1の実行にかかると予測されたCPU使用量、つまりCPU占有時間)、データ項目5が「9%」(JOB1の実行によって増加すると予測されたCPU使用率)、データ項目6が「4.5MB」(JOB1が使用すると予測されたメモリ使用量)である。このレコードは、JOB1の実行にかかる時間および負荷を予測したことを2006/02/01 10:00:00.050に記録したことを意味し、その予測内容がデータ項目2以降に記録されている。データ項目7以降は図示されていないが、実施の態様に応じて必要な項目が予測され、予測結果が格納されている。運用データにおいてレコード種別が「20」のレコードを以下では「ジョブ実行予測データ」と呼ぶ。
なお、バッチジョブの実行にかかる時間やCPU使用率は、どの実行サーバに対する予測かによって予測値が異なるが、ここでは実行サーバごとの差は図示されていない。例えば、実行サーバ103−1、103−2、……、103−Nのハードウェアの違いが無視できる程度であれば、1つのCPU使用率が1つのデータ項目に記録されるだけで十分である。一方、各実行サーバ103−1、103−2、……、103−Nのハードウェア性能が、無視することができない程度に異なる場合は、例えば、各実行サーバに対するCPU使用率をそれぞれ予測して別の列にそれぞれ予測値を格納してもよい。あるいは、ある1つのCPU使用率だけを基準として記録し、各実行サーバ103−1、103−2、……、103−NにおけるCPU使用率はその基準から所定の方法で換算することとしてもよい。
3番目のレコードの内容は、格納日時が「2006/02/01 10:55:30.010」、レコード種別が「30」(バッチジョブの実行が終了したことを示すコード)、データ項目1が「JOB1」、データ項目2が「582.0秒」(JOB1が使用したCPUの量の実測値)、データ項目3が「10%」(JOB1によって増加したCPU使用率の実測値)、データ項目4が「4.3MB」(JOB1が使用したメモリの量の実測値)、データ項目5が「5%」(JOB1が使用したメモリの割合の実測値)、データ項目6が「16000」(JOB1によって発生した物理I/Oの回数)である。このレコードは、JOB1の実行が終了したことを2006/02/01 10:55:30.010に記録したことを意味し、その実行にかかった負荷の実測値がデータ項目2以降に記録されている。データ項目7以降は図示されていないが、実施の態様に応じて必要な項目が計測され、その実測値が記録されている。運用データにおいてレコード種別が「30」のレコードを以下では「ジョブ実測データ」と呼ぶ。
4番目のレコードの内容は、格納日時が「2006/02/01 10:55:30.100」、レコード種別が「90」(バッチジョブに関する一連の処理が全て終了したことを示すコード)、データ項目1が「JOB1」である。データ項目2以降の列は使っていない。このレコードは、JOB1に関する一連の処理が終了したことを2006/02/01 10:55:30.100に記録したことを意味する。運用データにおいてレコード種別が「90」のレコードを以下では「ジョブ終了データ」と呼ぶ。
なお、運用データは上記の4つの種別に限定されるものではなく、実施の態様に応じて、任意の種別を追加することができる。例えば、図7に示すサーバ負荷情報に相当するデータを運用データとして記録してもよい。また、レコード種別を数字コード以外の形式で表現するなど、表現形式は実施の態様に応じて任意に選択してよい。また、運用データとして記録するデータ項目は、実施の態様に応じて任意に定めてよい。例えば、入力データ量(入力レコード数)、CPUの使用量、CPUの使用率、メモリの使用量、メモリの使用率、物理I/Oの発行回数、ファイルの使用量、ファイルの使用数、ファイルの占有時間、ユーザ資源の競合、システム資源の競合、競合が発生したときの待ち時間、などの中から実施の態様に応じた項目を記録することができる。
図6はバッチジョブ特性の格納例である。バッチジョブ特性はリポジトリ104内に格納されるデータで、バッチジョブの特性を示す。後述するように、バッチジョブ特性は自動的に作成・更新される。よって、従来のようにシステム管理者などが手間と時間をかけてバッチジョブ特性を把握する必要がない。また、常に最新のバッチジョブ特性が得られる。図6は表形式で表現した例だが、実データは表形式以外の形式で格納されていてもよい。後述するように、バッチジョブ特性は受付サーバ102内のジョブ情報更新サブシステム108によって記録される。
図6の表には、バッチジョブの識別名を示す「ジョブ識別名」列、何に関する特性を記録したレコード(行)なのかを示す「データ種別1」列および「データ種別2」列、個々の特性の特性値を記録した「データ値」列がある。
図6の例では、データ種別1とデータ種別2の2つの列の組み合わせにより、階層的にデータ種別を示している。データ種別1とデータ種別2は、図6の例では「10」(実行時間を示すコード)や「90」(実測誤差を示すコード)のように、コード化された数字が記録されている。
図6では、データ種別として、「実行数」、「実行時間」、「CPU情報」、「メモリ情報」、「物理I/O情報」という種別があり、それぞれの種別をさらに細分化した種別に対してデータ値が記録されている。
バッチジョブ特性のデータ種別としては、入力データ量(入力レコード数)、CPUの使用量、CPUの使用率、メモリの使用量、メモリの使用率、物理I/Oの発行回数、ファイルの使用量、ファイルの使用数、ファイルの占有時間、ユーザ資源の競合、システム資源の競合、競合が発生したときの待ち時間、などを利用することができる。実施の態様に応じて、必要なデータ種別をバッチジョブ特性として利用すればよい。
なお、図6は「JOB1」という識別名のバッチジョブの特性のみを図示しているが、実際には、複数のバッチジョブの特性が格納されている。また、図6の例では多くの行は処理データ1件当たりの値に換算された値がデータ値列に記録されているが、データ種別の性質によっては、1件当たりに換算しないデータ値を記録してもよい。1件当たりの値に換算された値か否かは、データ種別1とデータ種別2の組み合わせで表されるデータ種別に応じて、予め定められている。また、データ種別を数字コード以外の形式で表現したり、1列で表現したりするなど、表現形式は実施の態様に応じて任意に選択してよい。
また、データ種別として図6に示したものが必須というわけではなく、これらのうちの一部のみを用いてもよい。逆に、図6に示していない他のデータ種別について記録してもよい。ただし、バッチジョブ特性は後述の方法により運用データ(図5)から作成されるため、バッチジョブ特性として利用する項目は運用データ作成時にも記録する必要がある。
また、実行サーバ103−1、103−2、……、103−Nのハードウェア性能が、無視することができない程度に異なる場合は、一部のデータ種別について、実行サーバごとにバッチジョブ特性を記録した方がよい場合がある。例えば、実行時間やCPU使用率などは、実行サーバのハードウェア性能によって影響を受けるため、実行サーバごとに記録することが望ましい場合がある。一方、メモリ使用量や物理I/Oの発行回数などは、通常は実行サーバのハードウェア性能の影響をあまり受けないから、実行サーバごとに記録する必要はない。
図7は、サーバ負荷情報の格納例である。サーバ負荷情報はリポジトリ104内に格納されるデータで、実行サーバ103−1、103−2、……、103−Nそれぞれの負荷状況を示す。図7は表形式で表現した例だが、実データは表形式以外の形式で格納されていてもよい。後述するように、サーバ負荷情報は各実行サーバ103−1、103−2、……、103−N内の性能情報収集サブシステム111により収集され、サーバ情報採取サブシステム112により記録される。また、図7のデータをグラフ表示すると、図3に似た折れ線グラフが得られる。
図7の表には、実行サーバの識別名を示す「サーバ識別名」列、実行サーバの負荷状況を測定し、サーバ負荷情報としてレコード(行)に格納した時刻を示す「採取時間帯」列、負荷情報の種別を示す「データ種別1」列および「データ種別2」列、個々の負荷情報の実測値を記録した「データ値」列がある。
まず、図7の例の前提条件について説明する。図7は、実行サーバ103−1、103−2、……、103−Nの負荷状況を10分ごとに測定し、サーバ負荷情報として記録する場合の例である。また、図7は、「バッチジョブのほとんどが日次業務に関するものなので、実行サーバの負荷は1日周期で変動し、同じ時刻の負荷はどの日でもほぼ同じ量となる」という前提にもとづく。
上記の前提のもとで、サーバ負荷情報は、毎日、例えば0時0分から10分ごとに23時50分まで測定されて記録される。また、同じ時刻の負荷はどの日でもほぼ同じ量だという前提があるため、前日の同時刻の記録が上書きされる。さらに、最新の測定時刻におけるデータが特別な「最新状態」データとして別途記録される。つまり、各実行サーバ103−1、103−2、……、103−Nに対して、それぞれ(60÷10)×24+1=145個のデータのブロックが記録されている(以下、データのブロックとは、図7において採取時間帯の値ごとにまとめられた複数行のことを指すものとする)。例えば、0時30分には、前日の0時30分に記録された0時30分のブロックが上書きされるとともに、10分前の0時20分に記録された「最新状態」のブロックが上書きされる。すなわち、「最新状態」のブロックのデータ値の内容は、残りの144個のブロックのうちのいずれか1つと同じである。
サーバ負荷情報は上記のように特定の時刻に記録されるが、ある時間帯のサーバ負荷状況を代表するものとして特定の時刻のデータを記録しているとも見なせる。例えば、10分ごとに記録されるサーバ負荷情報は、10分間の負荷状況の代表であると見なせる。よって、「採取時間帯」などの表現をすることもある。
さて、こうして記録される個々のデータについて、図7の0時10分のブロックを例に以下で説明する。このブロックには、実行サーバ103−1、103−2、……、103−Nのうち、サーバ識別名が「SVR1」である実行サーバの負荷状況を0時10分に実測した結果が記録されている。負荷状況を示す負荷情報は、具体的には、CPU使用率が71%、メモリ使用量が1.1GB、ハードディスク使用量(図中の「/dev/hda」はハードディスクを示す例)が8.5GB、物理I/Oの平均待ち時間が16ms、などである。また、あわせて、SVR1に搭載しているメモリ総量が2GBであり、ハードディスク総量が40GBである、などの情報も記録している。使用率や空き容量は、総量と使用量から算出することができる。
実施の態様によっては、10分以外の間隔で測定および記録を行ってもよい。また、実際には、週次業務、月次業務など、他の周期で実行されるバッチジョブもあるので、採取時間帯(採取時刻)ではなく、採取日時を記録するようにしてもよい。その場合、上記の例のように直近の1日(つまり24時間)のサーバ負荷情報だけを蓄積するのではなく、周期の長さに合わせた量のサーバ負荷情報を蓄積することが望ましい。例えば、バッチシステム101が、月次業務、週次業務、日次業務のそれぞれの周期の影響を受ける場合、最も長い周期である1ヶ月分のサーバ負荷情報を蓄積し、1ヶ月前の同時刻のブロックを上書きすることが望ましい。なお、実施の態様によって適切な周期の長さは異なるものの、一般に、バッチジョブの多くは定例的に実行されるので、実行サーバの負荷状況にはある程度の周期性が存在する。
また、データ種別として図7に示したものが必須というわけではなく、これらのうちの一部のみを用いてもよい。逆に、図7に示していない他のデータ種別について記録してもよい。例えば、CPUの使用率、CPUの使用量、メモリの使用率、メモリの使用量、物理I/Oの平均待ち時間、ファイルの使用量、記憶装置の空き容量、などの中から、実施の態様に応じて必要なデータ種別をサーバ負荷情報として記録することができる。ただし、周期の違いはあるものの、いずれにせよサーバ負荷情報は時刻と関連づけて記録されている必要がある。メモリやハードディスクの総量などのハードウェア資源の量は、ハードウェアの増設などを行わなければ変化しないから、サーバ負荷情報として10分ごとに記録するのではなく、サーバ負荷情報とは別の静的なデータとしてリポジトリ104などに別途記録しておいてもよい。
図8は、分散条件の例である。分散条件は、リポジトリ104内に格納されるデータで、バッチジョブを実行するサーバを選択するときに参照する規則である。本発明においては、分散条件が事前に何らかの方法で決定され、リポジトリ104内に格納されているものとする。
図8には「条件1」と「条件2」という2つの分散条件があり、条件1が条件2に優先して適用されるべきだという優先順序が指定されている。条件1の意味は、「メモリ使用率が50%未満のサーバの中でCPU使用率が一番低いサーバを選択せよ」である。条件2の意味は、「メモリ使用率が50%未満のサーバが存在しないならば、メモリ使用率が一番低いサーバを選択せよ」である。この例の場合、条件1が条件2に優先するという順序が指定されているので、条件2を、「メモリ使用率が一番低いサーバを選択せよ」を意味する規則「MIN(メモリ使用率) IN ALL」に置き換えても同じ結果が得られる。
図8の例は、複数の実行サーバを比較してその中から条件を満たす実行サーバを選択する分散条件の例だが、他の実行サーバとの相対的な比較ではなく、それぞれの実行サーバに対して「メモリ使用率が50%以上のサーバを選択してはいけない」などの固定的な制約条件を課してもよい。一般に実行サーバ103−1、103−2、……、103−Nは、バッチジョブ以外にオンラインジョブも実行する場合が多い。よって、オンラインジョブの実行用に一定のハードウェア資源を確保するため、上記のような固定的な制約条件を分散条件として予め定めておいてもよい。
なお、分散条件は、実施の態様に応じて、図8に示した書式以外の任意の書式で表現することが可能である。
図9は、バッチシステム101で実行される処理のフローチャートである。図9の処理は、バッチジョブごとに実行される処理である。
ステップS101では、受付サーバ102のジョブ受付サブシステム105がバッチジョブの実行要求を受け付ける。図9のフローチャートにおいて、以後このバッチジョブをカレントバッチジョブと呼ぶことにする。ステップS101は図4の(1)に相当する。バッチジョブの実行要求は、バッチシステム101の外部から与えられる。優先度などに応じてジョブ同士の実行順序を調整する必要がある場合も、バッチシステム101の外部で調整が済んでいるものとする。つまり、本発明においては、ジョブ受付サブシステム105が実行要求を受け付けた順に一つずつバッチジョブの実行要求を処理していくという前提が成立している。
ステップS102では、カレントバッチジョブに関して、ジョブ開始データ(図5)をリポジトリ104内の運用データに追加するよう、ジョブ受付サブシステム105が運用データ採取サブシステム107に依頼する。そしてステップS103に移行する。ステップS102は図4の(2)に相当する。
ステップS103では、運用データ採取サブシステム107がジョブ開始データを運用データに追加する。つまり、リポジトリ104内の運用データにジョブ開始データが記録される。そしてステップS104に移行する。ステップS103は図4の(3)に相当する。
ステップS104では、カレントバッチジョブを実行する実行サーバを実行サーバ群103の中から選択して、その実行サーバにカレントバッチジョブを実行させるよう、ジョブ受付サブシステム105がジョブ分散サブシステム106に依頼する。そしてステップS105に移行する。ステップS104は図4の(4)に相当する。
ステップS105では、ジョブ分散サブシステム106がカレントバッチジョブの実行にかかる時間を予測し、予測した時間の範囲の中で最適な実行サーバを決定する。ここで実行サーバ103−sが選択されたものとする(1≦s≦N)。ステップS105のこの処理の詳細は図10とあわせて後述する。さらにステップS105では、カレントバッチジョブの実行に必要な資源(時間やメモリ使用量など)をジョブ分散サブシステム106が予測し、運用データ採取サブシステム107がジョブ実行予測データ(図5)をリポジトリ104内の運用データに追加する(つまり記録する)。そしてステップS106に移行する。ステップS105は図4の(5)に相当する。
ステップS106では、実行サーバ103−s内のジョブ実行サブシステム109に対し、ジョブ分散サブシステム106がカレントバッチジョブの実行を依頼する。ここでは受付サーバ102と実行サーバ103−sのサーバ間通信が行われる。そしてステップS107に移行する。ステップS106は図4の(6)に相当する。
ステップS107では、実行サーバ103−s内において、ジョブ実行サブシステム109が性能情報収集サブシステム111に対し、カレントバッチジョブのバッチジョブ特性のデータに対応するデータを記録するよう依頼する。具体的には、カレントバッチジョブの実行に起因するサーバ103−sの負荷をモニタして、運用データ(図5)のジョブ実測データに含まれる各データ項目(例えばメモリ使用量)のデータ値を計測して記録するよう依頼する。そしてジョブ実行サブシステム109がカレントバッチジョブを実行し、性能情報収集サブシステム111はそれによって発生した実行サーバ103−sの負荷をモニタする。カレントバッチジョブを正常に実行し終わるとステップS108に移行する。ステップS107は図4の(7)に相当する。
ステップS108では、性能情報収集サブシステム111がモニタした負荷状況をもとにジョブ実測データを記録するよう、性能情報収集サブシステム111が運用データ採取サブシステム110に依頼し、モニタしたデータを運用データ採取サブシステム110に与える。そして、運用データ採取サブシステム110は依頼にもとづき、ジョブ実測データをリポジトリ104内の運用データに追加する(つまり記録する)。そしてステップS109に移行する。ステップS108は図4の(8)に相当する。
ステップS109では、カレントバッチジョブの実行が終了した旨を、ジョブ実行サブシステム109からジョブ受付サブシステム105に通知する。ここでもステップS106と同様に、受付サーバ102と実行サーバ103−sのサーバ間通信が行われる。そしてステップS110に移行する。ステップS109は図4の(9)に相当する。
ステップS110では、通知にもとづき、カレントバッチジョブに関して、ジョブ終了データ(図5)をリポジトリ104内の運用データに追加するよう、ジョブ受付サブシステム105が運用データ採取サブシステム107に依頼する。そして、運用データ採取サブシステム107は依頼にもとづき、ジョブ終了データをリポジトリ104内の運用データに追加する(つまり記録する)。そしてステップS111に移行する。ステップS110は図4の(10)に相当する。
ステップS111では、リポジトリ104内のバッチジョブ特性を更新するよう、ジョブ受付サブシステム105がジョブ情報更新サブシステム108に依頼する。そしてステップS112に移行する。ステップS111は図4の(11)に相当する。
ステップS112では、ジョブ情報更新サブシステム108がカレントバッチジョブのバッチジョブ特性を更新する。つまり、リポジトリ104の格納内容が更新される。更新は、ステップS108で記録されたジョブ実測データにもとづいて行われるが、詳細は後述する。ステップS112の実行後、処理を終了する。ステップS112は図4の(12)に相当する。
図10は、図9のステップS105で行う、バッチジョブの実行サーバを決定する処理を詳細に示したフローチャートである。図10の処理は、受付サーバ102内のジョブ分散サブシステム106により実行される。
まず図10で用いる変数について説明する。tとtは図3と同様で、バッチジョブの実行範囲を示す時刻である。つまり、tはバッチジョブの開始予定時刻で、tはバッチジョブの実行が終了すると予測される時刻である。jは1つの実行サーバ103−jを実行サーバ群103の中から指定するための添え字である。サーバ負荷情報(図7)のデータ種別の数をLとする。kはサーバ負荷情報のデータ種別を指定するための添え字である。jとkは、後述のMjk、Sjk、Djk、Cjk、Ajk、Xjk、Yjkにおいて添え字として使われる。これらの変数は、受付サーバ102のCPU(Central Processing Unit)内のレジスタやメモリに格納され、参照または更新される。
ステップS201では、リポジトリ104を検索して、カレントバッチジョブに対応するバッチジョブ特性(図6)がリポジトリ104に格納されているかどうかを調べる。格納されていればそのバッチジョブ特性を受付サーバ102内のメモリなどに記憶する。
ステップS202では、ステップS201で調べた結果にもとづき、カレントバッチジョブに対応するバッチジョブ特性が存在するか否か判定する。存在すれば判定がYesとなってステップS203に移行し、存在しなければ判定がNoとなってステップS214に移行する。
ステップS203では、カレントバッチジョブの入力データ量を求める。そして、入力データ量とステップS201で記憶したバッチジョブ特性とにもとづいてカレントバッチジョブの実行にかかる時間を予測する。入力データ量は、例えば処理件数で表してもよく、処理件数と1件に含まれるデータ項目数など複数の要素を考慮した量で表してもよい。例えば、入力データがテキストファイルで与えられ、1件の入力データが1行に書かれている場合、当該テキストファイルの行数を調べ、入力データ量として使ってもよい。
また、例えば、図6のバッチジョブ特性の例では、JOB1の実行時間は処理データ1件あたり3.3秒とある。よって、カレントバッチジョブがJOB1で、入力データ量として1000件という処理件数が与えられた場合、本実施形態においては、カレントバッチジョブの実行にかかる時間は、3.3×1000=3300秒という乗算を受付サーバ102のCPUで実行することにより予測される。他の実施形態では乗算以外の算出方法を用いてもよい。カレントバッチジョブの実行開始予定時刻tは実施の態様に応じて適当な方法で決めればよいので、この予測により、カレントバッチジョブの実行が終了すると予測される時刻tが決定される(この例ではtはtの3300秒後である)。ステップS203の終了後、ステップS204に移行する。
ステップS204では実行サーバを指定する添え字jに0を代入して初期化する。そしてステップS205に移行する。
ステップS205からステップS211の各ステップにより繰り返しループが形成されている。ステップS205では、まずjに1を足し、サーバ負荷を予測する対象として実行サーバ103−jを選択する。そしてステップS206に移行する。
ステップS206では、リポジトリ104に格納されたサーバ負荷情報(図7)のうち、実行サーバ103−jに対応するデータで、「最新状態」のブロックのものと、カレントバッチジョブの実行範囲に対応するブロックのものを読み込み、受付サーバ102のメモリなどに記憶する。図7のサーバ負荷情報は、1日周期でほぼ同じ負荷状態が繰り返されるという前提が成立する場合の例である。この例の場合、ステップS206では、時刻tからtの範囲内の時刻のブロックのサーバ負荷情報を読み込む。読み込んだ各時刻のブロックのサーバ負荷情報自体は過去の実績にもとづく情報だが、ここでは、未来の時刻tからtの範囲におけるサーバ負荷情報の予測値を得るために利用している。本実施例においては、読み込んだ各時刻のブロックのサーバ負荷情報そのものを、対応する未来に時刻におけるサーバ負荷情報の予測値として利用している。
なお、サーバの負荷状況が変動する周期の長さが異なる実施態様においては、その周期に合わせた適切なデータを読み込む。例えば、周期の長さが1ヶ月の場合、サーバ負荷情報は1ヶ月分蓄積されているので、1ヶ月前の日の時刻tからtの範囲内の時刻のブロックのサーバ負荷情報を読み込む。必要なデータを読み込んだら、ステップS207に移行する。
ステップS207では、カレントバッチジョブの実行範囲における、実行サーバ103−jの負荷の平均値を、サーバ負荷情報のデータ種別ごとに算出する。L個のデータ種別のうちk番目のデータ種別について算出した平均値をMjkとして受付サーバ102のメモリなどに記憶する。図3に関して説明したとおり、カレントバッチジョブの実行範囲におけるサーバ負荷の総量のかわりに、実行範囲におけるサーバ負荷の平均値を用いても、負荷の総量を考慮したのと同じ判定結果が得られる。よって、ステップS207では平均値を算出している。なお、ステップS206で読み込んだデータは過去のサーバ負荷情報であり、算出した平均値Mjkは、未来(時刻tからtの範囲)における負荷の平均を過去のデータにもとづいて予測したものである。
ステップS207で算出するサーバ負荷の平均値が、カレントバッチジョブの実行範囲における平均値であるという点は、本発明の特徴である。これにより、バッチジョブの実行サーバを従来よりも適切に選択することができ、分散の効率を改善できる。つまり、従来のようにバッチジョブを実行する直前でのサーバ負荷状況だけを考慮するよりも、カレントバッチジョブの実行範囲全体の負荷状況を考慮することによって、より適切な選択が可能となる。また、平均値Mjkを算出する範囲が、カレントバッチジョブの実行範囲という特定の時間帯であるため、例えば1ヶ月ごとのサーバの負荷状況の平均など、カレントバッチジョブの実行範囲と無関係な大雑把な範囲の負荷状況の平均と比べると、Mjkの方がより正確な予測値である。
なお、図7の例ではサーバ負荷情報が10分ごとに記録されるが、時刻tとtは10分ごとの切りのよい時刻とは限らない。その場合は、必要に応じて適切な端数処理を行ってもよい。
ステップS207で1≦k≦Lなる全てのkについて平均値Mjkを算出したら、ステップS208に移行する。ステップS208からステップS210までは、図10の処理を実行している時点に近い未来の時刻をtとして指定する場合に、より精度よく最適な実行サーバを決定するために行うステップである。
ステップS208では、サーバ負荷情報の各データ種別について、平均値Mjkと、時刻tにおけるサーバ負荷情報のデータ値Sjkとの差Djkを算出する。つまり、Djk=Mjk−Sjkである。なお、サーバ負荷情報は一定間隔で記録されるため、時刻tと同時刻のデータがあるとは限らない。その場合、Sjkは、時刻tの前後の時刻のサーバ負荷情報から補間により算出してもよく、時刻tの直前または直後の時刻のサーバ負荷情報で代用してもよい。1≦k≦Lなる全てのkについて差Djkを算出したら、ステップS209に移行する。
ステップS209では、1≦k≦Lなる全てのkについて、ステップS206で読み込んだ最新状態のブロックのサーバ負荷情報のk番目のデータ種別のデータ値CjkにDjkを加算してAjkを算出する。Ajkは、Mjkを補正して信頼度を高めた値に相当する。理由は以下のとおりである。
ステップS206からS208の動作から明らかなとおり、MjkとSjkは、過去のデータにもとづいて算出される値である。本発明では、実行サーバの負荷状況に周期性があり、周期性を利用して過去の負荷情報から未来の負荷状況を予測できるということを前提としているが、予測には誤差が伴う。一方、Cjkは最新の実測値なので、情報の信頼度が高い。上記のようにtは図10の処理を実行している時点に近い時刻なので、Cjkを記録した時刻にも近い。よって、過去のデータにもとづいて算出した時刻tにおける負荷情報Sjkを、実測値Cjkに補正することにより、情報の信頼度が高まると期待できる。一方、実行サーバを選択するために必要なデータは、Cjkではなく、カレントバッチジョブの実行範囲における実行サーバ103−jの負荷の平均値である。よって、SjkとCjkの関係から、Mjkを補正してAjkを算出する。上述の説明からAjkは、Ajk=Cjk+Djk=Cjk+Mjk−Sjk=Mjk+(Cjk−Sjk)と表現でき、Mjkを補正した値に相当することが分かる。つまり、Ajkは、カレントバッチジョブの実行範囲における実行サーバ103−jの負荷の平均値として予測される値であって、精度を上げるための補正を行った後の値である。
例えば、図7のようにサーバ負荷状況が1日周期で変動し10分ごとにサーバ負荷情報を記録している場合で、図10の処理を実行している時点が10時12分、tが10時14分、tが11時30分の場合、「最新状態」のサーバ負荷情報は10時10分に記録されたものである。つまり、Cjkは10時10分の実測値である。一方、MjkとSjkは前日のサーバ負荷情報にもとづいた値である。よって、上記のようにAjkを算出することにより、カレントバッチジョブの実行範囲における実行サーバ103−jの負荷の平均値の予測値の精度向上を図る。
ステップS209で1≦k≦Lなる全てのkについてAjkを算出したら、ステップS210に移行する。
ステップS210では、1≦k≦Lなる全てのkについて、カレントバッチジョブのバッチジョブ特性から、カレントバッチジョブの実行によって発生する負荷Xjkを予測する。カレントバッチジョブのバッチジョブ特性は、既にステップS201でメモリなどに記憶されている。そして、カレントバッチジョブを実行した場合の、カレントバッチジョブの実行範囲における実行サーバ103−jの負荷状況を、1≦k≦Lなる全てのkについて、XjkとAjkにもとづいて予測する。この予測値をYjkとして記憶しておく。
例えば、図6のバッチジョブ特性の例において、カレントバッチジョブがJOB1であり、k番目のデータ種別が物理I/Oの発行回数の場合、Xjkは少なくとも「16回」というデータ値にもとづいて予測される。実施の態様によっては、さらにカレントバッチジョブの実行範囲の時間の長さ、処理件数、実測誤差(上記の例では、図6の物理I/Oの発行回数に関する実測誤差「2.1回」に相当する)なども加味してXjkを予測してもよい。例えば、上記の例で処理件数が1000件のとき、Xjk=(16+2.1)×1000÷(t−t)、Yjk=Ajk+Xjkと算出し、それをXjkとYjkの予測値としてもよい。もちろん、これ以外の任意の算出方法を用いて予測してもよい。
また、実行サーバ103−1、103−2、……、103−Nのハードウェア性能の差が無視できる程度であれば、1≦j≦Nなる全てのjについてXjkの値を等しいと見なすことができる。この場合、ステップS205からステップS211の繰り返しループで、ステップS210を実行するたびにXjkを算出するのではなく、j=1のときのみXjk(=X1k)を算出し、j>1のときは、既に算出され記憶されているX1kをXjkとして用いてもよい。
ステップS210で1≦k≦Lなる全てのkについてYjkを算出したら、ステップS211に移行する。
ステップS211では、カレントバッチジョブを実行した場合の、カレントバッチジョブの実行範囲における負荷状況を、全ての実行サーバについて算出したかどうかを判定する。つまり、j=Nか否かを判定する。全ての実行サーバについて算出し終えた場合(j=N)、判定はYesとなってステップS212に移行し、そうでない場合(j<N)、判定はNoとなってステップS205に戻る。なお、j>Nとならないことは、ステップS204、S205、S211から明らかであろう。
ステップS212では、ステップS210で算出したYjkとリポジトリ104に格納された分散条件にしたがって、カレントバッチジョブの実行サーバを決定する。分散条件が図8の例の場合、まず「条件1」を使って、メモリ使用率が50%未満の実行サーバの中でCPU使用率が一番低い実行サーバを探す。バッチジョブ特性において、メモリ使用率がm番目のデータ種別であり、CPU使用率がc番目のデータ種別であるとすると、1≦j≦Nなる全てのYjmのうち、Yjm<50%となるjの集合を求める。この集合が空でなければ、その中でYjcが最小となるjを求める。求めた値をsとすると、実行サーバ103−sをカレントバッチジョブの実行サーバとして選択する。Yjm<50%となるjが存在しない場合は「条件2」を使う。つまり、メモリ使用率が一番低いサーバを探すため、1≦j≦Nなる全てのjにおいてYjmが最小となるjを求める。求めた値をsとすると、実行サーバ103−sをカレントバッチジョブの実行サーバとして選択する。「条件1」または「条件2」によって実行サーバ103−sが選択されると、処理はステップS213に移行する。
ステップS213では、ジョブ分散サブシステム106が運用データ採取サブシステム107に、ジョブ実行予測データをリポジトリ104内の運用データ(図5)に追加させる。ジョブ実行予測データとして記録する項目は、図5に関して説明したとおりである。それらの項目は、ステップS210で算出したXsk(1≦k≦L)の全部または一部に相当する。ステップS213の実行後、処理を終了する。
ところで、ステップS202で判定がNoとなった場合はステップS214に移行する。ステップS214からステップS216は例外処理のためのステップである。サーバ負荷情報(図7)に関して述べたとおり、バッチジョブの大部分は定例的に実行される。一方、ステップS202で判定がNoとなるのは、カレントバッチジョブに対応するバッチジョブ特性がリポジトリ104に記録されていない場合である。つまり、1回だけ実行されるバッチジョブや初めて実行されるバッチジョブの場合であり、例外的な場合である。あるバッチジョブの実行が2回目以降なら、1回目に実行したときに図9のステップS112において既にバッチジョブ特性(図6)がリポジトリ104に記録されているから、ステップS202の判定がYesとなり、ステップS214は実行されない。また、実施の態様によっては、システム管理者などが手動でバッチジョブ特性を指定するオプションを設けてもよく、その場合は、初めて実行するバッチジョブでも予めバッチジョブ特性が記録されている(つまりステップS202で判定がYesとなる)こともある。
ステップS214では実行サーバを指定する添え字jに0を代入して初期化する。そしてステップS215に移行する。
ステップS215とステップS216により繰り返しループが形成されている。ステップS215では、まずjに1を足す。そして、リポジトリ104に格納されたサーバ負荷情報のうち、実行サーバ103−jの「最新状態」のブロックのデータを読み込む。そして、実行サーバ103−jのk番目のデータ種別をYjkとして受付サーバ102のメモリなどに記憶する。1≦k≦Lなる全てのkに対してYjkを記憶したら、ステップS216に移行する。
ステップS216では、「最新状態」のブロックのサーバ負荷情報を、全ての実行サーバについて読み込んだかどうかを判定する。つまり、j=Nか否かを判定する。全ての実行サーバについて読み込み済みの場合(j=N)、判定はYesとなってステップS212に移行し、そうでない場合(j<N)、判定はNoとなってステップS215に戻る。なお、j>Nとならないことは明らかであろう。
ステップS212では前述のとおり、分散条件にしたがって実行サーバを選択する。つまり、ステップS216からステップS212に移行する場合の処理は、バッチジョブの実行依頼があった時点の直近の負荷状況のみにもとづいてバッチジョブの実行サーバを選択する従来の手法と同様である。
なお、図3、図5、図6についての説明から分かるように、実行サーバ103−1、103−2、……、103−Nのハードウェア性能の差を無視することができない場合は、ステップS203での予測を各実行サーバに対して個々に行わなくてはならないこともある。その場合、ステップS206で読み込むデータのブロックの範囲も影響を受ける。また、ステップS203で予測した実行時間が長い実行サーバを、カレントバッチジョブを実行させる実行サーバの候補から除外するなどの処理を追加してもよい。例えば、予測した実行時間が所定の閾値より長い実行サーバを除外してもよく、予測した実行時間の長さを実行サーバ群103内で比較して、相対的な順位などから除外対象を決めてもよい。また、ステップS212で使われる分散条件に、実行時間の長さに応じた条件を含めてもよい。
図11は、図9のステップS112で行う、運用データ(図5)にもとづいてバッチジョブ特性(図6)を更新する処理を詳細に示したフローチャートである。図11の処理は、受付サーバ102内のジョブ情報更新サブシステム108により実行される。
ステップS301では、リポジトリ104に格納された運用データ(図5)のうち、カレントバッチジョブのジョブ開始データ、ジョブ実行予測データ、ジョブ実測データ、ジョブ終了データを読み込み、受付サーバ102のメモリ等に記憶する。そしてステップS302に移行する。
ステップS302では、ジョブ終了データの格納日時とジョブ開始データの格納日時の差から、カレントバッチジョブの処理時間を算出する。そして、処理件数1件あたりの処理時間Tを算出し、ステップS303に移行する。なお、実施の態様によっては、ジョブ実測データにカレントバッチジョブの処理時間やTを記録しておき、ステップS302ではそれを読み込んでもよい。また、ジョブ終了データの格納日時とジョブ開始データの格納日時の差を処理件数で割ってTを算出してもよく、別の方法でTを算出してもよい(例えば、入力データの件数に関わらず一定の時間を要する処理を含むバッチジョブの場合など)。
ステップS303では、ステップS301で読み込んだジョブ実測データの各データ項目のうち、バッチジョブ特性として記録すべき項目について、処理件数1件あたりのデータ値を算出する。バッチジョブ特性として記録すべきデータ種別の数をBとすると、1≦i≦Bなる全てのiに対して、i番目のデータ種別に対応するジョブ実測データ中のデータ値と処理件数とにもとづいて、処理件数1件あたりのデータ値Cを算出する。Cは、例えば、i番目のデータ種別に対応するジョブ実測データ中のデータ値を処理件数で割って求めてもよい。単純な割り算が適切でないデータ種別の場合は、それ以外の方法で算出してもよい。例えば、メモリ使用量は、プログラムのロードなど処理件数に関わらず使用される部分と、処理件数にほぼ比例して使用される部分を含むので、単純な割り算が適さないことがある。1≦i≦Bなる全てのiに対してCを算出したら、ステップS304に移行する。
ステップS304では、1≦i≦Bなる全てのiに対して、i番目のデータ種別に対応する、処理件数1件あたりの予測誤差Eを算出する。具体的には、ステップS301で読み込んだジョブ実行予測データとジョブ実測データで、i番目のデータ種別に対応するデータ項目のデータ値をそれぞれ求め、2つのデータ値の差を算出する。その差と処理件数とにもとづいて、処理件数1件あたりの予測誤差Eを算出する。Eは、Cと同様に割り算によって算出してもよく、他の計算方法で算出してもよい。1≦i≦Bなる全てのiに対してEを算出したら、ステップS305に移行する。
ステップS305では、リポジトリ104にカレントバッチジョブのバッチジョブ特性が存在するか否かを判定する。存在する場合、判定はYesとなってステップS307に移行し、存在しない場合、判定はNoとなってステップS306に移行する。この判定は図9のステップS201、S202と同様で、判定がNoとなるのは、1回だけ実行されるバッチジョブや初めて実行されるバッチジョブの場合である。
ステップS306では、T、C、Eからカレントバッチジョブのバッチジョブ特性のデータを作成し、リポジトリ104に追加する。バッチジョブ特性のデータ種別に応じて、T、C、Eの値をそのままバッチジョブ特性のデータ値として用いてもよく、何らかの加工をしてから用いてもよい。
ステップS307では、T、C、Eにもとづいて、カレントバッチジョブのバッチジョブ特性を更新する。例えば、過去の平均をバッチジョブ特性として記録する実施態様では、現在記録されているバッチジョブ特性の各データ値と、各データ値のデータ種別に対応するT、C、Eのいずれかの値とを加重平均した値に更新する。加重平均に用いる重みは、例えば、バッチジョブ特性のデータとして記録された今までの処理件数の総数と、今回のカレントバッチジョブの実行における処理件数にもとづいて定めることができる。また、別の実施態様では、最新の実行時におけるT、C、Eの値そのものをバッチジョブ特性として記録してもよい。さらに別の実施態様では、カレントバッチジョブの直近のn回(nは予め決められた定数)の実行におけるT、C、Eの値をバッチジョブ特性として記録してもよく、さらにそれらn回のデータの平均値などをあわせて記録してもよい。いずれの実施態様の場合も、ステップS307では、T、C、Eにもとづいた更新が行われることは共通している。
ステップS306またはステップS307の処理が終わると、バッチジョブ特性の更新処理が終了する。
本発明によれば、バッチジョブ特性が以上のように自動的に記録され、更新されるため、従来は難しかったバッチジョブ特性の正確な把握が容易になる。また、バッチジョブを実行するたびに更新されるので、バッチジョブ特性がバッチジョブの運用方針の変更などの理由で変化した場合でも、変化に合わせてバッチジョブ特性が自動的に更新される。
図12は、サーバ負荷情報(図7)をリポジトリ104に記録する処理を詳細に示したフローチャートである。図12の処理は、各実行サーバ103−1、103−2、……、103−Nの性能情報収集サブシステム111とサーバ情報採取サブシステム112により一定の間隔で実行される。一定の間隔とは、バッチシステム101のシステム管理者などの人間が手動で設定した間隔や、バッチシステム101のデフォルト値として予め定められた間隔である。図7の例ではこの間隔は10分である。
以下では便宜上、実行サーバ103−a内で時刻tに行われる処理の例を説明する(1≦a≦N)。
ステップS401では、実行サーバ103−aのサーバ情報採取サブシステム112が実行サーバ103−aの性能情報収集サブシステム111に実行サーバ103−aの負荷情報の採取を依頼する。そしてステップS402に移行する。なお、ステップS401は図4の(13)に相当する。
ステップS402では、実行サーバ103−aの現在の負荷情報を性能情報収集サブシステム111が採取し、サーバ情報採取サブシステム112に結果を返す。ここで採取されるのは、図7のサーバ負荷情報の各データ種別に対応するデータ値である。そしてステップS403に移行する。なお、ステップS402は図4の(14)に相当する。
ステップS403では、サーバ情報採取サブシステム112がステップS402で受け取ったデータをもとに、リポジトリ104のサーバ負荷情報を更新する。図7の例のように1日周期の場合、更新するのは、実行サーバ103−aのサーバ識別名のブロックのうち、「最新状態」のブロックと、時刻tのブロックである。まず、「最新状態」のブロックの各データ種別に対応するデータ値を、ステップS402で受け取ったデータの値に書き換える。次に時刻tのブロックを更新するが、その更新方法は実施の態様によって異なる。ある実施態様では、時刻tのブロックの各データ種別に対応するデータ値を、ステップS402で受け取ったデータの値に書き換える。つまり、常に最新の実測値をサーバ負荷情報として記録しておく。別の実施態様では、時刻tのブロックに現在記録されているデータと、ステップS402で受け取ったデータの双方にもとづいて、所定の方法(例えば所定の重み付けによる加重平均)により算出した値を、時刻tのブロックの各データ種別に対応するデータ値として記録する。
ステップS403の処理が終わると、サーバ負荷情報を更新する処理が終わる。
なお、サーバ負荷情報を蓄積する周期によって、ステップS403において更新すべきブロックが異なることは、図7に関する説明などから明らかであろう。
また、上記と別の実施態様においては、ステップS402で一旦、サーバ負荷情報を運用データ(図5)としてリポジトリ104に記録し、ステップS403でその運用データからサーバ負荷情報の形式に変換してサーバ負荷情報を更新してもよい。その場合、バッチジョブ特性とサーバ負荷情報がともに運用データにもとづいて作成される。
本発明によるバッチジョブシステム101を構成する受付サーバ102および実行サーバ103−1、103−2、……、103−Nは、それぞれ、図13に示すような一般的な情報処理装置(コンピュータ)として実現される。また、このような情報処理装置によって、ジョブ分散サブシステム106などの機能を実現する本発明のプログラムが実行され、本発明が実施される。
図13の情報処理装置は、中央処理装置(CPU)200、ROM(Read Only Memory)201、RAM(Random Access Memory)202、通信インターフェイス203、記憶装置204、入出力装置205、可搬型記憶媒体の駆動装置206を備え、これらの全てがバス207によって接続されている。
また、受付サーバ102と各実行サーバ103−1、103−2、……、103−Nとは、それぞれの通信インターフェイス203とネットワーク209を介して通信可能である。例えば、図9のステップS106やステップS109などは、そのようなサーバ間の通信により実現される。ネットワーク209は例えばLAN(Local Area Network)であり、1つのLANにバッチシステム101を構成する各サーバがそれぞれ通信インターフェイス203を介して接続されていてもよい。
記憶装置204としてはハードディスク、磁気ディスクなど様々な形式の記憶装置を使用することができる。
リポジトリ104は、受付サーバ102または実行サーバ群103のうちのいずれかのサーバ内の記憶装置204に配置されてもよい。この場合、リポジトリ104が配置されているサーバはバス207を通じて、それ以外のサーバは通信インターフェイス203とネットワーク209を通じて、図9から図12に示したような処理の際にリポジトリ104内のデータの参照・更新等を行う。あるいは、リポジトリ104はいずれのサーバとも独立の記憶装置(記憶装置204と同様の装置)に配置されてもよい。この場合、図9から図12に示したような処理の際、各サーバは通信インターフェイス203とネットワーク209を通じてリポジトリ104内のデータの参照・更新等を行う。
記憶装置204またはROM201には、本発明によるプログラムなどが格納されている。そのプログラムがCPU200によって実行されることにより、本発明によるバッチジョブの分散が実行される。プログラムの実行時には、リポジトリ104が配置されている記憶装置から必要に応じてデータが読み出され、CPU200内のレジスタやRAM202に記憶され、CPU200での処理に利用される。また、リポジトリ104のデータが適宜更新される。
本発明によるプログラムは、プログラム提供者208からネットワーク209、および通信インターフェイス203を介して、例えば記憶装置204に格納され、CPU200によって実行されてもよい。また、市販されて流通している可搬型記憶媒体210に本発明によるプログラムが格納され、可搬型記憶媒体210が駆動装置206にセットされ、格納されたプログラムが例えばRAM202にロードされてCPU200によって実行されてもよい。可搬型記憶媒体210としてはCD−ROM、フレキシブルディスク、光ディスク、光磁気ディスク、DVDなど様々な形式の記憶媒体を使用することができる。
(付記1)
バッチジョブを実行させるコンピュータを複数のコンピュータの中から選択するバッチジョブ受付コンピュータで使用されるプログラムであって、
前記バッチジョブの特性および前記バッチジョブに与える入力データの量にもとづいて、前記バッチジョブの実行にかかる実行時間を予測する実行時間予測ステップと、
前記バッチジョブの実行開始予定時刻を始点とし前記予測した実行時間の長さを有する時間範囲における、前記複数のコンピュータのそれぞれの負荷状況を予測する負荷状況予測ステップと、
前記予測した負荷状況にもとづいて、前記バッチジョブを実行させるコンピュータを前記複数のコンピュータの中から選択する選択ステップと、
を前記バッチジョブ受付コンピュータに実行させることを特徴とするプログラム。
(付記2)
前記選択ステップにおいて選択されたコンピュータで前記バッチジョブが実行されたとき生じた負荷に関する情報にもとづいて、前記バッチジョブの前記特性を更新するバッチジョブ特性更新ステップをさらに有することを特徴とする付記1に記載のプログラム。
(付記3)
前記バッチジョブの前記特性は、予め記憶されているか前記バッチジョブ特性更新ステップで更新されて記憶されたものであり、
前記実行時間予測ステップにおいて、記憶された前記バッチジョブの前記特性を読み出して使用する
ことを特徴とする付記2に記載のプログラム。
(付記4)
前記負荷状況予測ステップにおいて、前記時間範囲に含まれる所定の間隔の複数の時刻のそれぞれにおける負荷状況を予測し、該予測した複数の時刻における負荷状況にもとづいて前記時間範囲における前記負荷状況を予測することを特徴とする付記1に記載のプログラム。
(付記5)
前記負荷状況予測ステップにおいて、
時刻と対応づけて記憶された、前記複数のコンピュータそれぞれの過去における負荷状況を表す負荷情報の中から、前記複数の時刻のそれぞれに対応する前記負荷情報を読み出し、
読み出した前記負荷情報にもとづいて前記複数の時刻のそれぞれにおける負荷状況を予測する
ことを特徴とする付記4に記載のプログラム。
(付記6)
前記負荷状況予測ステップにおいて、前記負荷状況を表す負荷情報は数値表現であり、前記複数の時刻に対して予測された前記負荷状況に対応する前記負荷情報の平均にもとづいて、前記時間範囲における前記負荷状況を予測することを特徴とする付記4に記載のプログラム。
(付記7)
前記負荷状況予測ステップにおいて、さらに、前記複数のコンピュータの負荷状況の実測値のうち前記負荷状況予測ステップの実行時点の直近の実測値にもとづいて予測することを特徴とする付記1に記載のプログラム。
(付記8)
前記選択ステップにおいて、予め記憶手段に記憶された規則を読み出し、前記複数のコンピュータのそれぞれに対して予測された前記負荷状況を表す負荷情報を前記規則に適用し、前記規則にしたがって前記負荷情報それぞれの値および前記負荷情報同士の相対関係にもとづいて前記複数のコンピュータのうちの一つを選択することを特徴とする付記1に記載のプログラム。
(付記9)
前記負荷情報は、前記複数のコンピュータの、CPUの使用率、CPUの使用量、メモリの使用率、メモリの使用量、物理入出力の平均待ち時間、ファイルの使用量、記憶装置の空き容量のうち少なくとも1種類の情報を含み、
前記規則は、予め優先順序が定められた1つ以上の分散条件からなり、
前記分散条件のそれぞれは、前記負荷情報を適用したとき、前記負荷情報に含まれる所定の種類の情報の値にもとづく前記複数のコンピュータの順序にもとづき、該分散条件に該当するコンピュータが存在すれば該コンピュータを指定するよう、設定されており、
前記選択ステップにおいて、前記優先順序にしたがって前記分散条件に前記負荷情報を適用し、最初に指定されたコンピュータを選択する
ことを特徴とする付記8に記載のプログラム。
(付記10)
前記バッチジョブの前記特性にもとづいて、前記バッチジョブの実行により生じるバッチジョブ負荷を予測するバッチジョブ負荷予測ステップをさらに有し、
前記選択ステップにおいて、さらに前記バッチジョブ負荷にもとづいて選択することを特徴とする付記1に記載のプログラム。
(付記11)
バッチジョブを実行させるコンピュータを複数のコンピュータの中から選択する装置であって、
前記バッチジョブの特性を記憶するとともに、前記複数のコンピュータそれぞれの過去における負荷状況を表す負荷情報を時刻と対応づけて記憶する記憶手段と、
前記記憶手段から前記バッチジョブの前記特性を読み出し、読み出した前記バッチジョブの前記特性および前記バッチジョブに与える入力データの量にもとづいて、前記バッチジョブの実行にかかる実行時間を予測する実行時間予測手段と、
前記記憶手段から前記負荷情報を読み出し、前記バッチジョブの実行開始予定時刻を始点とし前記予測した実行時間の長さを有する時間範囲における、前記複数のコンピュータのそれぞれの負荷状況を、読み出した前記負荷情報にもとづいて予測する負荷状況予測手段と、
前記予測した負荷状況にもとづいて、前記バッチジョブを実行させるコンピュータを前記複数のコンピュータの中から選択する選択手段と、
を備えることを特徴とする装置。
(付記12)
バッチジョブを実行させるコンピュータを複数のコンピュータの中から選択するバッチジョブ受付コンピュータで使用される方法であって、
前記バッチジョブの特性および前記バッチジョブに与える入力データの量にもとづいて、前記バッチジョブの実行にかかる実行時間を予測し、
前記バッチジョブの実行開始予定時刻を始点とし前記予測した実行時間の長さを有する時間範囲における、前記複数のコンピュータのそれぞれの負荷状況を予測し、
前記予測した負荷状況にもとづいて、前記バッチジョブを実行させるコンピュータを前記複数のコンピュータの中から選択する
ことを特徴とする方法。
(付記13)
バッチジョブを実行させるコンピュータを複数のコンピュータの中から選択するバッチジョブ受付コンピュータで使用されるコンピュータ読み取り可能記憶媒体であって、
前記バッチジョブの特性および前記バッチジョブに与える入力データの量にもとづいて、前記バッチジョブの実行にかかる実行時間を予測する実行時間予測ステップと、
前記バッチジョブの実行開始予定時刻を始点とし前記予測した実行時間の長さを有する時間範囲における、前記複数のコンピュータのそれぞれの負荷状況を予測する負荷状況予測ステップと、
前記予測した負荷状況にもとづいて、前記バッチジョブを実行させるコンピュータを前記複数のコンピュータの中から選択する選択ステップと、
を前記バッチジョブ受付コンピュータに実行させるプログラムを格納していることを特徴とするコンピュータ読み取り可能記憶媒体。
本発明の原理を示す図である。 1つのバッチジョブを実行することによる負荷の一例を示すグラフである。 バッチジョブを実行するサーバの負荷の一例を示すグラフである。 本発明によってバッチジョブの実行サーバを選択しバッチジョブを分散実行させるシステムの一実施形態における機能ブロック図である。 運用データの格納例である。 バッチジョブ特性の格納例である。 サーバ負荷情報の格納例である。 分散条件の例である。 バッチシステムで実行される処理のフローチャートである。 バッチジョブの実行サーバを決定する処理のフローチャートである。 バッチジョブ特性を更新する処理のフローチャートである。 サーバ負荷情報を記録する処理のフローチャートである。 本発明のプログラムを実行するコンピュータのブロック図である。
符号の説明
101 バッチシステム
102 受付サーバ
103 実行サーバ群
103−1、103−2、……、103−N 実行サーバ
104 リポジトリ
105 ジョブ受付サブシステム
106 ジョブ分散サブシステム
107 運用データ採取サブシステム
108 ジョブ情報更新サブシステム
109 ジョブ実行サブシステム
110 運用データ採取サブシステム
111 性能情報収集サブシステム
112 サーバ情報採取サブシステム
200 CPU
201 ROM
202 RAM
203 通信インターフェイス
204 記憶装置
205 入出力装置
206 駆動装置
207 バス
208 プログラム提供者
209 ネットワーク
210 可搬型記憶媒体

Claims (5)

  1. バッチジョブを実行させるコンピュータを複数のコンピュータの中から選択するバッチジョブ受付コンピュータで使用されるプログラムであって、
    前記バッチジョブの特性および前記バッチジョブに与える入力データの量にもとづいて、前記バッチジョブの実行にかかる実行時間を予測する実行時間予測ステップと、
    前記バッチジョブの実行開始予定時刻を始点とし前記予測した実行時間の長さを有する時間範囲における、前記複数のコンピュータのそれぞれの負荷状況を予測する負荷状況予測ステップと、
    前記予測した負荷状況にもとづいて、前記バッチジョブを実行させるコンピュータを前記複数のコンピュータの中から選択する選択ステップと、
    を前記バッチジョブ受付コンピュータに実行させることを特徴とするプログラム。
  2. 前記選択ステップにおいて選択されたコンピュータで前記バッチジョブが実行されたとき生じた負荷に関する情報にもとづいて、前記バッチジョブの前記特性を更新するバッチジョブ特性更新ステップをさらに有することを特徴とする請求項1に記載のプログラム。
  3. 前記負荷状況予測ステップにおいて、前記時間範囲に含まれる所定の間隔の複数の時刻のそれぞれにおける負荷状況を予測し、該予測した複数の時刻における負荷状況にもとづいて前記時間範囲における前記負荷状況を予測することを特徴とする請求項1に記載のプログラム。
  4. 前記バッチジョブの前記特性にもとづいて、前記バッチジョブの実行により生じるバッチジョブ負荷を予測するバッチジョブ負荷予測ステップをさらに有し、
    前記選択ステップにおいて、さらに前記バッチジョブ負荷にもとづいて選択することを特徴とする請求項1に記載のプログラム。
  5. バッチジョブを実行させるコンピュータを複数のコンピュータの中から選択する装置であって、
    前記バッチジョブの特性を記憶するとともに、前記複数のコンピュータそれぞれの過去における負荷状況を表す負荷情報を時刻と対応づけて記憶する記憶手段と、
    前記記憶手段から前記バッチジョブの前記特性を読み出し、読み出した前記バッチジョブの前記特性および前記バッチジョブに与える入力データの量にもとづいて、前記バッチジョブの実行にかかる実行時間を予測する実行時間予測手段と、
    前記記憶手段から前記負荷情報を読み出し、前記バッチジョブの実行開始予定時刻を始点とし前記予測した実行時間の長さを有する時間範囲における、前記複数のコンピュータのそれぞれの負荷状況を、読み出した前記負荷情報にもとづいて予測する負荷状況予測手段と、
    前記予測した負荷状況にもとづいて、前記バッチジョブを実行させるコンピュータを前記複数のコンピュータの中から選択する選択手段と、
    を備えることを特徴とする装置。
JP2006070814A 2006-03-15 2006-03-15 マルチサーバ環境においてバッチジョブを分散させるプログラム、装置、および方法 Pending JP2007249491A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006070814A JP2007249491A (ja) 2006-03-15 2006-03-15 マルチサーバ環境においてバッチジョブを分散させるプログラム、装置、および方法
US11/471,813 US20070220516A1 (en) 2006-03-15 2006-06-21 Program, apparatus and method for distributing batch job in multiple server environment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006070814A JP2007249491A (ja) 2006-03-15 2006-03-15 マルチサーバ環境においてバッチジョブを分散させるプログラム、装置、および方法

Publications (1)

Publication Number Publication Date
JP2007249491A true JP2007249491A (ja) 2007-09-27

Family

ID=38519512

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006070814A Pending JP2007249491A (ja) 2006-03-15 2006-03-15 マルチサーバ環境においてバッチジョブを分散させるプログラム、装置、および方法

Country Status (2)

Country Link
US (1) US20070220516A1 (ja)
JP (1) JP2007249491A (ja)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009282754A (ja) * 2008-05-22 2009-12-03 Hitachi Ltd バッチ処理監視装置、方法及びプログラム
JP2010039513A (ja) * 2008-07-31 2010-02-18 Internatl Business Mach Corp <Ibm> 消費電力を推定するシステムおよび方法
JP2010218277A (ja) * 2009-03-17 2010-09-30 Toyota Motor Corp 故障診断システム、電子制御ユニット、故障診断方法
JP2010258660A (ja) * 2009-04-23 2010-11-11 Fujitsu Ltd ネットワーク装置
JP2010257332A (ja) * 2009-04-27 2010-11-11 Shimadzu Corp 分析装置制御システム
JP2011076469A (ja) * 2009-09-30 2011-04-14 Nomura Research Institute Ltd 負荷管理装置、情報処理システムおよび負荷管理方法
JP2011170751A (ja) * 2010-02-22 2011-09-01 Nec Corp バスシステム
JP2012043010A (ja) * 2010-08-12 2012-03-01 Nec Corp 負荷分散システム、及び負荷分散方法
JP2013041574A (ja) * 2011-07-21 2013-02-28 Hitachi Ltd 情報処理システム運用管理装置、運用管理方法及び運用管理プログラム
JPWO2011141992A1 (ja) * 2010-05-10 2013-07-22 トヨタ自動車株式会社 故障診断装置及び故障診断方法
JP2014170363A (ja) * 2013-03-04 2014-09-18 Nec Corp 情報処理装置、ジョブスケジューリング方法およびジョブスケジューリングプログラム
JP2015056087A (ja) * 2013-09-13 2015-03-23 株式会社日立製作所 サーバ負荷分散方法およびプログラム
JP2015153011A (ja) * 2014-02-12 2015-08-24 西日本電信電話株式会社 ジョブ実行計画装置
US9218275B2 (en) 2012-09-25 2015-12-22 Nec Corporation Memory management control system, memory management control method, and storage medium storing memory management control program
JP2016133964A (ja) * 2015-01-19 2016-07-25 株式会社日立製作所 計算資源割当て方法およびシステム
JP2017068393A (ja) * 2015-09-29 2017-04-06 日本電気株式会社 情報処理装置、情報処理方法、及び、プログラム
JP2017174235A (ja) * 2016-03-24 2017-09-28 富士通株式会社 制御方法、制御プログラムおよび制御装置
JP2018156146A (ja) * 2017-03-15 2018-10-04 日本電気株式会社 情報処理装置
KR20240043252A (ko) 2022-09-27 2024-04-03 한국기술교육대학교 산학협력단 분산 컴퓨팅을 이용한 디지털 트윈의 시뮬레이션 장치 및 방법

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9608929B2 (en) * 2005-03-22 2017-03-28 Live Nation Entertainment, Inc. System and method for dynamic queue management using queue protocols
US8584122B2 (en) 2006-03-31 2013-11-12 Ebay Inc. Batch scheduling
US20080115130A1 (en) * 2006-11-14 2008-05-15 Michael Danninger Method and system for launching applications in response to the closure of other applications
US20090217282A1 (en) * 2008-02-26 2009-08-27 Vikram Rai Predicting cpu availability for short to medium time frames on time shared systems
JP5181183B2 (ja) * 2008-03-14 2013-04-10 インターナショナル・ビジネス・マシーンズ・コーポレーション 変換装置、サーバシステム、変換方法およびプログラム
US8250577B2 (en) * 2008-04-16 2012-08-21 International Business Machines Corporation Mechanism to enable and ensure failover integrity and high availability of batch processing
US7809833B2 (en) * 2008-07-15 2010-10-05 International Business Machines Corporation Asymmetric dynamic server clustering with inter-cluster workload balancing
CN102144220B (zh) * 2008-09-08 2015-01-07 英国电讯有限公司 分布式数据处理系统
US8245229B2 (en) * 2008-09-30 2012-08-14 Microsoft Corporation Temporal batching of I/O jobs
US8346995B2 (en) 2008-09-30 2013-01-01 Microsoft Corporation Balancing usage of hardware devices among clients
CN101821728B (zh) * 2008-10-15 2017-07-07 甲骨文国际公司 批处理系统
GB2466851A (en) * 2009-01-13 2010-07-14 Oracle Int Corp Method and interface for defining a complex Boolean expression
US9569257B2 (en) * 2009-05-27 2017-02-14 Sap Se Method and system to perform time consuming follow-up processes
CA2668958A1 (en) * 2009-06-12 2010-12-12 Ibm Canada Limited - Ibm Canada Limitee System and method for managing batch production
JP4797095B2 (ja) * 2009-07-24 2011-10-19 株式会社日立製作所 バッチ処理多重化方法
CN102053859B (zh) * 2009-11-09 2013-03-27 中国移动通信集团甘肃有限公司 批量数据处理的方法与装置
JP2011123817A (ja) * 2009-12-14 2011-06-23 Fujitsu Ltd ジョブ振分装置、ジョブ振分プログラム及びジョブ振分方法
WO2011121709A1 (ja) * 2010-03-29 2011-10-06 株式会社東芝 半導体装置
JP5388134B2 (ja) * 2010-08-06 2014-01-15 株式会社日立製作所 計算機システム、及び、移動データ決定方法
JP5582016B2 (ja) * 2010-12-15 2014-09-03 ソニー株式会社 タスク管理装置、タスク管理方法、及びプログラム
US9466042B2 (en) * 2012-01-24 2016-10-11 International Business Machines Corporation Facilitating the design of information technology solutions
US9104491B2 (en) * 2012-02-21 2015-08-11 Disney Enterprises, Inc. Batch scheduler management of speculative and non-speculative tasks based on conditions of tasks and compute resources
US9501326B2 (en) * 2013-03-19 2016-11-22 Hitachi, Ltd. Processing control system, processing control method, and processing control program
JP2015194805A (ja) * 2014-03-31 2015-11-05 富士通株式会社 予測プログラム,予測装置及び予測方法
US10509683B2 (en) * 2015-09-25 2019-12-17 Microsoft Technology Licensing, Llc Modeling resource usage for a job
US10778600B2 (en) * 2016-03-30 2020-09-15 Intel Corporation Adaptive workload distribution for network of video processors
US10025625B2 (en) 2016-03-31 2018-07-17 Microsoft Technology Licensing, Llc Batched tasks
JP6571046B2 (ja) * 2016-06-21 2019-09-04 株式会社東芝 サーバ装置、情報処理方法及びプログラム
JP6827327B2 (ja) * 2017-01-05 2021-02-10 株式会社日立製作所 分散コンピューティングシステム
US10942780B1 (en) * 2018-05-21 2021-03-09 Twitter, Inc. Resource use and operational load of performing computing and storage tasks in distributed systems
US11520560B2 (en) * 2018-12-31 2022-12-06 Kevin D. Howard Computer processing and outcome prediction systems and methods
CN114003175B (zh) * 2021-11-02 2024-02-06 青岛海信日立空调系统有限公司 一种空调器及其控制系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62160563A (ja) * 1986-01-09 1987-07-16 Toshiba Corp 情報処理システム
JPH05313921A (ja) * 1992-05-14 1993-11-26 Hitachi Ltd ジョブ実行制御方式
JPH06110851A (ja) * 1992-09-30 1994-04-22 Toshiba Corp 計算機システムの負荷分散制御方式
JPH10334057A (ja) * 1997-06-04 1998-12-18 Nippon Telegr & Teleph Corp <Ntt> 分散システム環境におけるバッチジョブの動的負荷分散処理方法およびそのシステム
JP2002024194A (ja) * 2000-07-05 2002-01-25 Matsushita Electric Ind Co Ltd ジョブ分散処理方法および分散処理システム
JP2004005288A (ja) * 2002-06-03 2004-01-08 Hitachi Ltd バッチ性能見積り方法及び装置
JP2005011023A (ja) * 2003-06-18 2005-01-13 Hitachi Ltd ジョブスケジューリング方法及びシステム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6446070B1 (en) * 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6539445B1 (en) * 2000-01-10 2003-03-25 Imagex.Com, Inc. Method for load balancing in an application server system
US8856793B2 (en) * 2004-05-11 2014-10-07 International Business Machines Corporation System, method and program for scheduling computer program jobs

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62160563A (ja) * 1986-01-09 1987-07-16 Toshiba Corp 情報処理システム
JPH05313921A (ja) * 1992-05-14 1993-11-26 Hitachi Ltd ジョブ実行制御方式
JPH06110851A (ja) * 1992-09-30 1994-04-22 Toshiba Corp 計算機システムの負荷分散制御方式
JPH10334057A (ja) * 1997-06-04 1998-12-18 Nippon Telegr & Teleph Corp <Ntt> 分散システム環境におけるバッチジョブの動的負荷分散処理方法およびそのシステム
JP2002024194A (ja) * 2000-07-05 2002-01-25 Matsushita Electric Ind Co Ltd ジョブ分散処理方法および分散処理システム
JP2004005288A (ja) * 2002-06-03 2004-01-08 Hitachi Ltd バッチ性能見積り方法及び装置
JP2005011023A (ja) * 2003-06-18 2005-01-13 Hitachi Ltd ジョブスケジューリング方法及びシステム

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009282754A (ja) * 2008-05-22 2009-12-03 Hitachi Ltd バッチ処理監視装置、方法及びプログラム
JP2010039513A (ja) * 2008-07-31 2010-02-18 Internatl Business Mach Corp <Ibm> 消費電力を推定するシステムおよび方法
US8656216B2 (en) 2009-03-17 2014-02-18 Toyota Jidosha Kabushiki Kaisha Failure diagnostic system, electronic control unit for vehicle, failure diagnostic method
JP2010218277A (ja) * 2009-03-17 2010-09-30 Toyota Motor Corp 故障診断システム、電子制御ユニット、故障診断方法
JP2010258660A (ja) * 2009-04-23 2010-11-11 Fujitsu Ltd ネットワーク装置
JP2010257332A (ja) * 2009-04-27 2010-11-11 Shimadzu Corp 分析装置制御システム
JP2011076469A (ja) * 2009-09-30 2011-04-14 Nomura Research Institute Ltd 負荷管理装置、情報処理システムおよび負荷管理方法
JP2011170751A (ja) * 2010-02-22 2011-09-01 Nec Corp バスシステム
JPWO2011141992A1 (ja) * 2010-05-10 2013-07-22 トヨタ自動車株式会社 故障診断装置及び故障診断方法
JP2012043010A (ja) * 2010-08-12 2012-03-01 Nec Corp 負荷分散システム、及び負荷分散方法
JP2013041574A (ja) * 2011-07-21 2013-02-28 Hitachi Ltd 情報処理システム運用管理装置、運用管理方法及び運用管理プログラム
US9218275B2 (en) 2012-09-25 2015-12-22 Nec Corporation Memory management control system, memory management control method, and storage medium storing memory management control program
US9244740B2 (en) 2013-03-04 2016-01-26 Nec Corporation Information processing device, job scheduling method, and job scheduling program
JP2014170363A (ja) * 2013-03-04 2014-09-18 Nec Corp 情報処理装置、ジョブスケジューリング方法およびジョブスケジューリングプログラム
JP2015056087A (ja) * 2013-09-13 2015-03-23 株式会社日立製作所 サーバ負荷分散方法およびプログラム
JP2015153011A (ja) * 2014-02-12 2015-08-24 西日本電信電話株式会社 ジョブ実行計画装置
JP2016133964A (ja) * 2015-01-19 2016-07-25 株式会社日立製作所 計算資源割当て方法およびシステム
JP2017068393A (ja) * 2015-09-29 2017-04-06 日本電気株式会社 情報処理装置、情報処理方法、及び、プログラム
JP2017174235A (ja) * 2016-03-24 2017-09-28 富士通株式会社 制御方法、制御プログラムおよび制御装置
US10248458B2 (en) 2016-03-24 2019-04-02 Fujitsu Limited Control method, non-transitory computer-readable storage medium, and control device
JP2018156146A (ja) * 2017-03-15 2018-10-04 日本電気株式会社 情報処理装置
KR20240043252A (ko) 2022-09-27 2024-04-03 한국기술교육대학교 산학협력단 분산 컴퓨팅을 이용한 디지털 트윈의 시뮬레이션 장치 및 방법

Also Published As

Publication number Publication date
US20070220516A1 (en) 2007-09-20

Similar Documents

Publication Publication Date Title
JP2007249491A (ja) マルチサーバ環境においてバッチジョブを分散させるプログラム、装置、および方法
US8793693B2 (en) Apparatus and method for predicting a processing time of a computer
US7721290B2 (en) Job scheduling management method using system resources, and a system and recording medium for implementing the method
US8171060B2 (en) Storage system and method for operating storage system
US7937257B2 (en) Estimating performance of application based on automatic resizing of shared memory for messaging
US10459915B2 (en) Managing queries
EP0725339A2 (en) Apparatus and method for managing a distributed data processing system workload according to a plurality of distinct processing goal types
JPWO2006100752A1 (ja) 分散処理管理装置、分散処理管理方法、分散処理管理プログラム
US10248618B1 (en) Scheduling snapshots
US7716431B2 (en) Analysis technique of execution states in computer system
WO2020172852A1 (en) Computing resource scheduling method, scheduler, internet of things system, and computer readable medium
JP6885193B2 (ja) 並列処理装置、ジョブ管理方法、およびジョブ管理プログラム
JP2021064049A (ja) 計算機システム及び数理モデルの生成支援方法
JP5470177B2 (ja) トレースシステム
JPH1078937A (ja) 複数コンピュータ間の業務分散システム、業務分散方法 および業務分散プログラムを記録した記録媒体
US9305045B1 (en) Data-temperature-based compression in a database system
US20160253591A1 (en) Method and apparatus for managing performance of database
JP4155403B2 (ja) システム構成制御方法及びその処理プログラム並びにその実施システム
JP3826602B2 (ja) システム運用管理装置
JP7200577B2 (ja) 情報処理装置、情報処理システム、情報処理方法、及びプログラム。
US20230010652A1 (en) Systems and methods for automatic index creation in database deployment
US20240176485A1 (en) Storage management system and method for managing storage apparatus
JP5804970B2 (ja) データ処理装置及びデータ処理方法及びプログラム
US20180011890A1 (en) Management system, and management method
WO2013118287A1 (ja) データ処理方法、データ処理プログラム、及び、計算機システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080605

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100223

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100420

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100817

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101018

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101130