JP7320659B1 - 情報処理システム及び情報処理方法 - Google Patents

情報処理システム及び情報処理方法 Download PDF

Info

Publication number
JP7320659B1
JP7320659B1 JP2022186865A JP2022186865A JP7320659B1 JP 7320659 B1 JP7320659 B1 JP 7320659B1 JP 2022186865 A JP2022186865 A JP 2022186865A JP 2022186865 A JP2022186865 A JP 2022186865A JP 7320659 B1 JP7320659 B1 JP 7320659B1
Authority
JP
Japan
Prior art keywords
node
job
information processing
job list
processing system
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.)
Active
Application number
JP2022186865A
Other languages
English (en)
Other versions
JP2024012038A (ja
Inventor
慎一郎 岡本
Original Assignee
アクタピオ,インコーポレイテッド
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 アクタピオ,インコーポレイテッド filed Critical アクタピオ,インコーポレイテッド
Application granted granted Critical
Publication of JP7320659B1 publication Critical patent/JP7320659B1/ja
Publication of JP2024012038A publication Critical patent/JP2024012038A/ja
Active 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/5038Allocation 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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Multi Processors (AREA)

Abstract

【課題】適切な分散処理を可能にすること。【解決手段】本願に係る情報処理システムは、分散処理を実行する第1ノード及び第2ノードを含む複数のノードを含む情報処理システムであって、第1ノードは、情報処理システムにおいて処理することが要求される情報処理が分割された複数のジョブを含むジョブリストを生成し、生成したジョブリストを、複数のノードの各々がアクセス可能な共有ストレージに格納し、第2ノードは、共有ストレージを参照し、ジョブリストのうち処理対象とするジョブである対象ジョブを決定し、対象ジョブの処理後にジョブリストを更新する。【選択図】図3

Description

本発明は、情報処理システム及び情報処理方法に関する。
従来、分散処理を行う分散処理システムに関する種々の技術が提供されている。例えば、マスタサーバが複数のスレーブサーバに処理を割り当てることによりジョブ全体の完了時間を短縮する技術が提供されている。
特開2015-170054号公報
しかし、上記の従来技術では、改善の余地がある。例えば、上記従来技術では、マスタサーバが複数のスレーブサーバに処理(ジョブ)を割り当てる必要があり、各スレーブサーバはマスタサーバにより割り当てが行われた後、割り当てられた処理を行うこととなる。そのため、マスタサーバによる割り当てが無ければスレーブサーバは処理を開始できず、適切に分散処理を行うことが難しい場合がある。
本願は、上記に鑑みてなされたものであって、適切な分散処理を可能にする情報処理システム及び情報処理方法を提供することを目的とする。
本願に係る情報処理システムは、分散処理を実行する第1ノード及び第2ノードを含む複数のノードを含む情報処理システムであって、前記第1ノードは、前記情報処理システムにおいて処理することが要求される情報処理が分割された複数のジョブを含むジョブリストを生成し、生成した前記ジョブリストを、前記複数のノードの各々がアクセス可能な共有ストレージに格納し、前記第2ノードは、前記共有ストレージを参照し、前記ジョブリストのうち処理対象とするジョブである対象ジョブを決定し、前記対象ジョブの処理後に前記ジョブリストを更新することを特徴とする。
実施形態の一態様によれば、適切な分散処理を可能にすることができるという効果を奏する。
図1は、実施形態に係る情報処理システムの構成例を示す図である。 図2は、実施形態に係る情報処理システムによる処理の一例を示す図である。 図3は、情報処理システムにおける処理手順を示すフローチャートである。 図4は、情報処理システムにおける処理概要を示す図である。 図5は、実施形態に係るサーバ装置の構成例を示す図である。 図6は、実施形態に係る処理手順を示すフローチャートである。 図7は、ハードウェア構成の一例を示す図である。
以下に、本願に係る情報処理システム及び情報処理方法を実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理システム及び情報処理方法が限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
(実施形態)
〔1.情報処理システム概要〕
以下では、分散処理システム2を含む情報処理システム1により実行される情報処理(分散処理)について説明する。例えば、情報処理システム1は、オープンソースのコンテナオーケストレーションシステムであるKubernetesに関する技術を用いて実現される。なお、情報処理システム1は、以下に示す情報処理を実行可能であれば、Kubernetesに限らず、任意の技術を適宜用いて実現されてもよい。
また、以下では、第1ノード10がマスタノードであり、第2ノード20a、20b等がスレーブノードである場合を一例として説明する。第2ノード20a、第2ノード20b等について、特に区別なく説明する場合には、「第2ノード20」と記載する場合がある。また、第1ノード10及び第2ノード20について、特に区別なく説明する場合には、単に「ノード」と記載する場合がある。
〔1-1.情報処理システムの構成例〕
上述した処理を行う情報処理システム1の装置構成の一例について、図1を用いて説明する。図1は、実施形態に係る情報処理システムの構成例を示す図である。図1に示すように、情報処理システム1には、端末装置50と、分散処理システム2とが含まれる。端末装置50と、分散処理システム2とは所定の通信網(ネットワークN)を介して、有線または無線により通信可能に接続される。図1の示す例では、分散処理システム2には、サーバ装置100aやサーバ装置100b等が含まれる。なお、図1では、サーバ装置100aやサーバ装置100bのみを図示するが、サーバ装置100aやサーバ装置100bに限らず、サーバ装置100cやサーバ装置100d等の3つ以上のサーバ装置100が含まれてもよい。また、サーバ装置100aやサーバ装置100b等について、特に区別なく説明する場合には、サーバ装置100と記載する。端末装置50は、少なくとも1つのサーバ装置100と通信する。
端末装置50は、分散処理システム2の管理者等の任意の主体(以下「ユーザ」ともいう)によって利用される情報処理装置である。端末装置50は、実施形態における処理を実現可能であれば、どのような装置であってもよい。例えば、端末装置50は、スマートフォンや、タブレット型端末や、ノート型PC(Personal Computer)や、デスクトップPCや、携帯電話機や、PDA(Personal Digital Assistant)等の装置であってもよい。図2に示す例では、端末装置50がノート型PC(ノートパソコン)である場合を示す。
端末装置50は、分散処理システム2に分散処理の実行を指示するコマンド等の指令情報の入力をユーザから受け付ける。端末装置50は、ユーザの指令情報を受け付ける画面(指令入力画面)を表示する。端末装置50は、表示された指令入力画面に入力されたユーザの指令情報を受け付ける。例えば、端末装置50は、図4の端末装置50-1、50-2に示すような指令情報の入力を受け付ける。端末装置50は、指令情報を分散処理システム2に送信する。
分散処理システム2は、分散処理を行うシステムである。分散処理システム2は、分散処理を実行する複数のサーバ装置100を含む。分散処理システム2は、サーバ装置100に限らず、種々の装置を含んでもよい。例えば、分散処理システム2には、ユーザからの指令情報に基づいて、サーバ装置100による分散処理に関する種々の管理を行う管理装置が含まれてもよい。例えば、分散処理システム2の管理装置が端末装置50と通信して指令情報を受信し、管理装置が指令情報に基づいて管理装置からの情報を基に各サーバ装置100が分散処理を実行してもよい。なお、管理装置はマスタノードに対応するサーバ装置100であってもよい。例えば、管理装置は第1ノード10に対応するサーバ装置100であってもよい。なお、上述した装置構成は一例に過ぎず、分散処理システム2は所望の処理が実現可能であれば、任意の装置構成が採用可能である。
サーバ装置100は、例えば分散処理の実行主体となる装置である。サーバ装置100は、任意のコンピュータにより実現される。例えば、各サーバ装置100は、分散処理システム2内のネットワークにより通信可能に接続される。なお、各サーバ装置100は、分散処理の可能であれば、どのような形態により通信可能に接続されてもよい。サーバ装置100の詳細については後述するが、以下各ノードに対応するサーバ装置100が行う処理について簡単に記載する。
第1ノード10に対応するサーバ装置100は、情報処理システム1において処理することが要求される情報処理(「対象情報処理」ともいう)が分割された複数のジョブを含むジョブリストを生成する。なお、サーバ装置100は、対象情報処理が複数のジョブに分割されればどのような手法により、対象情報処理が分割した複数のジョブを生成してもよい。例えば、サーバ装置100は、対象情報処理の内容に応じて適宜選択した分割手法により、対象情報処理を分割して複数のジョブを生成してもよい。第1ノード10に対応するサーバ装置100は、生成したジョブリストを、複数のノードの各々がアクセス可能な共有ストレージに格納する。
第1ノード10に対応するサーバ装置100は、共有ストレージを参照し、ジョブリストのうち処理対象とする対象ジョブを決定する。第1ノード10に対応するサーバ装置100は、対象ジョブの処理後にジョブリストを更新する。第1ノード10に対応するサーバ装置100は、ジョブリストを基に設定されたジョブキューを参照し、ジョブキューに含まれるジョブを対象ジョブに決定する。
第1ノード10に対応するサーバ装置100は、マスタノードに対応する。第1ノード10に対応するサーバ装置100は、自装置(第1ノード10)の実行状態を管理する第1フラグ(Master実行フラグ)の値を設定する。第1ノード10に対応するサーバ装置100は、第1ノード10が処理を開始した場合、第1フラグを実行中に対応する第1値に設定する。第1ノード10に対応するサーバ装置100は、第1フラグが第1ノード10の処理が完了したことを示す第2値であり、かつ第2フラグが第2ノード20の処理が完了したことを示す第2値である場合、処理を終了する。
第2ノード20に対応するサーバ装置100は、共有ストレージを参照し、ジョブリストのうち処理対象とするジョブである対象ジョブを決定する。第2ノード20に対応するサーバ装置100は、対象ジョブの処理後にジョブリストを更新する。
第2ノード20に対応するサーバ装置100は、スレーブノードに対応する。第2ノード20に対応するサーバ装置100は、共有ストレージを参照し、ジョブリストのうち未処理のジョブを対象ジョブに決定する。第2ノード20に対応するサーバ装置100は、ジョブリストを基に設定されたジョブキューを参照し、ジョブキューに含まれるジョブを対象ジョブに決定する。
第2ノード20に対応するサーバ装置100は、自装置(第2ノード20)の実行状態を管理する第2フラグ(Slave実行フラグ)の値を設定する。第2ノード20に対応するサーバ装置100は、第1フラグが第1値である場合、共有ストレージを参照し、対象ジョブに決定し、対象ジョブの処理を実行する。第2ノード20に対応するサーバ装置100は、第2ノード20が処理を開始した場合、第2フラグを実行中に対応する第1値に設定する。
図1で示した情報処理システム1の装置構成は一例に過ぎず、以下に示す情報処理(分散処理)を実現可能であれば、どのような構成であってもよいが、以下では、図1に示した装置構成の情報処理システム1を一例として説明する。
〔1-2.情報処理例〕
図2を用いて、実施形態に係る情報処理の一例について説明する。図2は、実施形態に係る情報処理システムによる処理の一例を示す図である。図2では、ユーザが利用する端末装置50からの要求に応じて、分散処理システム2が分散処理を実行し、処理結果に関する情報を端末装置50へ提供する場合を一例として示す。
まず、情報処理システム1の機能構成について説明する。図2に示すように、情報処理システム1は、端末装置50と、第1ノード10、第2ノード20a、第2ノード20b等の複数のノードと、サーバ装置100とが含まれる。
図2に示す第1ノード10や第2ノード20は、図1に示すサーバ装置100により実現される。なお、第1ノード10や第2ノード20等のノードがどのサーバ装置100により実現されるかは任意の態様が採用可能である。例えば、1つのノードが1つのサーバ装置100により実現されてもよいし、複数のサーバ装置100により実現されてもよい。例えば、第1ノード10がサーバ装置100aにより実現され、第2ノード20の各々がサーバ装置100a以外の他のサーバ装置100により実現されてもよい。第1ノード10がサーバ装置100aにより実現され、第2ノード20aがサーバ装置100bにより実現され、第2ノード20bがサーバ装置100cにより実現されてもよい。
情報処理システム1は、分散処理を実行する第1ノード及び第2ノードを含む複数のノードを含むシステムである。例えば、情報処理システム1は、第1ノード及び第2ノードを含む複数のノードにより分散処理を実行する分散処理システム2を含む。情報処理システム1は、第1ノード10の実行状態を管理する第1フラグと、第2ノード20の実行状態を管理する第2フラグとを用いて分散処理を実行する。
第1ノード10は、情報処理システム1において処理することが要求される情報処理(対象情報処理)が分割された複数のジョブを含むジョブリストを生成する。例えば、第1ノード10は、種々の従来技術を適宜用いて、任意の手法により対象情報処理を分割して複数のジョブを生成する。第1ノード10は、生成したジョブリストを、複数のノードの各々がアクセス可能な共有ストレージに格納する。第1ノード10は、共有ストレージを参照し、ジョブリストのうち処理対象とする対象ジョブを決定する。
第1ノード10は、対象ジョブの処理後にジョブリストを更新する。第1ノード10は、ジョブリストを基に設定されたジョブキューを参照し、ジョブキューに含まれるジョブを対象ジョブに決定する。
第1ノード10は、マスタノードである。第1ノード10は、自ノード(第1ノード10)の実行状態を管理する第1フラグ(Master実行フラグ)の値を設定する。第1ノード10は、第1ノード10が処理を開始した場合、第1フラグを実行中に対応する第1値に設定する。第1ノード10は、第1フラグが第1ノード10の処理が完了したことを示す第2値であり、かつ第2フラグが第2ノード20の処理が完了したことを示す第2値である場合、処理を終了する。
第2ノード20は、共有ストレージを参照し、ジョブリストのうち処理対象とするジョブである対象ジョブを決定する。第2ノード20は、対象ジョブの処理後にジョブリストを更新する。
第2ノード20は、スレーブノードである。第2ノード20は、共有ストレージを参照し、ジョブリストのうち未処理のジョブを対象ジョブに決定する。第2ノード20は、ジョブリストを基に設定されたジョブキューを参照し、ジョブキューに含まれるジョブを対象ジョブに決定する。
第2ノード20は、自ノード(第2ノード20)の実行状態を管理する第2フラグ(False実行フラグ)の値を設定する。第2ノード20は、第1フラグが第1値である場合、共有ストレージを参照し、対象ジョブに決定し、対象ジョブの処理を実行する。第2ノード20は、第2ノード20が処理を開始した場合、第2フラグを実行中に対応する第1値に設定する。
なお、第1ノード10及び第2ノード20等ノードを処理主体として記載するものについては、物理的な構成においては、そのノードに対応するサーバ装置100が処理主体であるものとする。
図2の例では、端末装置50は、分散処理システム2へ指令情報を送信する(ステップS1)。例えば、端末装置50を利用するユーザは、端末装置50を操作して指令情報を入力し、端末装置50に指令情報を送信させる。例えば、分散処理システム2は、端末装置50から指令情報を受信する。例えば、分散処理システム2の管理装置(例えば管理装置として機能するサーバ装置100)は、端末装置50から指令情報を受信する。
分散処理システム2は、分散処理を実行する(ステップS2)。例えば、第1ノード10及び第2ノード20を含む分散処理システム2は、指令情報を基に分散処理を実行する。例えば、第1ノード10は、情報処理システム1において処理することが要求される情報処理が分割された複数のジョブを含むジョブリストを生成する。第1ノード10は、生成したジョブリストを、複数のノードの各々がアクセス可能な共有ストレージに格納する。第2ノード20は、共有ストレージを参照し、ジョブリストのうち処理対象とするジョブである対象ジョブを決定する。第2ノード20は、対象ジョブの処理後にジョブリストを更新する。また、第1ノード10は、共有ストレージを参照し、ジョブリストのうち処理対象とする対象ジョブを決定する。第1ノード10は、対象ジョブの処理後にジョブリストを更新する。
分散処理システム2は、分散処理の処理結果を示す情報をユーザへ提供する(ステップS3)。例えば、分散処理システム2は、分散処理の処理結果を示す情報を指令元のユーザが利用する端末装置50へ送信する。例えば、分散処理システム2の管理装置(例えば管理装置として機能するサーバ装置100)は、分散処理の処理結果を示す情報を指令元のユーザが利用する端末装置50へ送信する。例えば、分散処理システム2から分散処理の処理結果を受信した端末装置50は、分散処理の処理結果を表示する。
〔1-3.マスタスレーブに基づく処理手順〕
次に、図3を用いて、情報処理システム1におけるマスタスレーブに基づく情報処理の手順について説明する。図3は、情報処理システムにおける処理手順を示すフローチャートである。
図3に示すように、情報処理システム1では、マスタノードである第1ノード10は、Master実行フラグをTrueに設定する(ステップS101)。例えば、第1ノード10は、マスタノードが実行中であることを示す状態(第1値)にMaster実行フラグ(第1フラグ)を設定する。例えば、第1ノード10は、第1値に第1フラグの値を変更する。
そして、情報処理システム1では、第1ノード10は、ジョブリストを作成する(ステップS102)。例えば、第1ノード10は、複数のジョブを含むジョブリストを生成する。例えば、第1ノード10は、分散処理システム2に与えられたタスクを複数のジョブに分割し、分割した複数のジョブを含むジョブリストを生成する。
そして、情報処理システム1では、第1ノード10は、ジョブをキューに設定する(ステップS103)。例えば、第1ノード10は、ジョブリストに含まれる複数のジョブをキューに設定することにより、キュー(「ジョブキュー」ともいう)を生成する。例えば、第1ノード10は、ジョブリストに含まれる複数のジョブの各々をキューに追加する処理(エンキュー)を行うことにより、ジョブリストに含まれる複数のジョブが先入れ先出しのリスト構造(キュー構造)で保持されるジョブキューを生成する。例えば、第1ノード10は、生成したジョブキューを複数のノードの各々がアクセス可能な共有ストレージに格納する。
そして、情報処理システム1では、第1ノード10は、ジョブキューをチェックする(ステップS104)。例えば、第1ノード10は、共有ストレージに格納されたジョブキューをチェックする。
情報処理システム1では、第1ノード10は、ジョブキューにジョブが存在する場合(ステップS105:Yes)、ジョブを実行する(ステップS106)。例えば、第1ノード10は、ジョブキューにジョブが存在する場合、ジョブキューに含まれるジョブのうち処理対象とするジョブ(「対象ジョブ」ともいう)を決定し、決定した対象ジョブを実行する。例えば、第1ノード10は、ジョブキューにジョブが存在する場合、ジョブキューからジョブを取り出す処理(デキュー)を行うことにより、ジョブキューからジョブを取得し、取得したジョブを対象ジョブに決定する。これにより、第1ノード10は、ジョブキューから取り出したジョブを対象ジョブとして処理を実行する。
情報処理システム1では、第1ノード10は、ジョブを終了し、結果を登録する(ステップS107)。例えば、第1ノード10は、対象ジョブの処理を終了した場合、その処理結果を共有ストレージに登録する。例えば、第1ノード10は、対象ジョブの処理を終了した場合、共有ストレージに格納されたジョブリストのうち対象ジョブに対応するジョブにその処理結果を対応付けて登録する。そして、情報処理システム1では、第1ノード10は、ステップS107の処理後、ステップS104に戻って処理を繰り返す。
情報処理システム1では、第1ノード10は、ジョブキューにジョブが存在しない場合(ステップS105:No)、Master実行フラグをFalseに設定する(ステップS108)。例えば、第1ノード10は、マスタノードが実行中ではないことを示す状態(第2値)に実行フラグ(第1フラグ)を設定する。例えば、第1ノード10は、第2値に第1フラグの値を変更する。
そして、情報処理システム1では、第1ノード10は、Slave実行フラグをチェックする(ステップS109)。第1ノード10は、第2ノード20の実行フラグ(第2フラグ)がTrueである場合(ステップS109:True)、ステップS109に戻って処理を繰り返す。例えば、第1ノード10は、第2ノード20の実行フラグ(第2フラグ)がスレーブノードが実行中であることを示す状態(第1値)に設定されている場合、ステップS109に戻って処理を繰り返す。例えば、第1ノード10は、第2ノード20が複数ある場合、実行フラグがTrueである第2ノード20が1つでもある場合、ステップS109に戻って処理を繰り返す。
一方、第1ノード10は、第2ノード20の実行フラグがFalseである場合(ステップS109:False)、処理を終了する。例えば、第1ノード10は、第2ノード20の実行フラグ(第2フラグ)がスレーブノードが実行中ではないことを示す状態(第2値)に設定されている場合、処理を終了する。例えば、第1ノード10は、第2ノード20が複数ある場合、全ての第2ノード20の実行フラグがFalseである場合、処理を終了する。
図3に示すように、情報処理システム1では、スレーブノードである第2ノード20は、Master実行フラグをチェックする(ステップS201)。第2ノード20は、第1ノード10の実行フラグがTrueである場合(ステップS201:True)、ジョブキューをチェックする(ステップS202)。例えば、第2ノード20は、第1ノード10の実行フラグがマスタノードが実行中であることを示す状態に設定されている場合、複数のノードの各々がアクセス可能な共有ストレージに格納されたジョブキューをチェックする。
情報処理システム1では、第2ノード20は、ジョブキューにジョブが存在しない場合(ステップS203:No)、ステップS201に戻って処理を繰り返す。
情報処理システム1では、第2ノード20は、ジョブキューにジョブが存在する場合(ステップS203:Yes)、Slave実行フラグをTrueに設定する(ステップS204)。例えば、第2ノード20は、スレーブノードが実行中であることを示す状態(第1値)に実行フラグ(自ノードに対応する第2フラグ)を設定する。例えば、第2ノード20は、第1値に第2フラグの値を変更する。
そして、第2ノード20は、ジョブを実行する(ステップS205)。例えば、第2ノード20は、ジョブキューにジョブが存在する場合、ジョブキューに含まれるジョブのうち処理対象とするジョブ(対象ジョブ)を決定し、決定した対象ジョブを実行する。例えば、第2ノード20は、ジョブキューにジョブが存在する場合、ジョブキューからジョブを取り出す処理(デキュー)を行うことにより、ジョブキューからジョブを取得し、取得したジョブを対象ジョブに決定する。これにより、第2ノード20は、ジョブキューから取り出したジョブを対象ジョブとして処理を実行する。
情報処理システム1では、第2ノード20は、ジョブを終了し、結果を登録する(ステップS206)。例えば、第2ノード20は、対象ジョブの処理を終了した場合、その処理結果を共有ストレージに登録する。例えば、第2ノード20は、対象ジョブの処理を終了した場合、共有ストレージに格納されたジョブリストのうち対象ジョブに対応するジョブにその処理結果を対応付けて登録する。そして、第2ノード20は、Slave実行フラグをFalseに設定する(ステップS207)。例えば、第2ノード20は、スレーブノードが実行中ではないことを示す状態(第2値)に実行フラグ(自ノードに対応する第2フラグ)を設定する。例えば、第2ノード20は、第2値に第2フラグの値を変更する。そして、情報処理システム1では、第2ノード20は、ステップS207の処理後、ステップS201に戻って処理を繰り返す。
第2ノード20は、第1ノード10の実行フラグがFalseである場合(ステップS201:False)、第2ノード20は、待機モードオプションをチェックする(ステップS208)。第2ノード20は、待機モードオプションがONである場合(ステップS208:ON)、ステップS201に戻って処理を繰り返す。一方、第2ノード20は、待機モードオプションがOFFである場合(ステップS208:OFF)、処理を終了する。
また、情報処理システム1では、ノードが実行中のジョブを終了するコマンドを受け付けてもよい。例えば、情報処理システム1では、ジョブkillが実行された場合(ステップS301)、対応するジョブの実行を終了させる。例えば、情報処理システム1では、マスタノードのジョブkillが実行された場合、マスタノードの実行を終了させる。例えば、情報処理システム1では、第1ノード10のジョブkillが実行された場合、第1ノード10の実行を終了させる。例えば、情報処理システム1では、スレーブノードのジョブkillが実行された場合、スレーブノードの実行を終了させる。例えば、情報処理システム1では、第2ノード20のジョブkillが実行された場合、その第2ノード20の実行を終了させる。なお、情報処理システム1では、ステップS301の処理は行われなくてもよい。
〔1-4.マスタスレーブに基づく処理概要〕
次に、図4を用いて、情報処理システム1におけるマスタスレーブに基づく情報処理の概要について説明する。図4は、情報処理システムにおける処理概要を示す図である。例えば、図4は、KubernetesのReplicationControllerを用いて、情報処理システム1において大規模並列分散処理を実現できる様に分散処理を実装(実現)する場合を示す。なお、図4に示す端末装置50-1及び端末装置50-2は、各々生成するノード(Pod)の種類が異なる場合を示す。なお、端末装置50-1及び端末装置50-2を区別せずに説明する場合は「端末装置50」と記載する場合がある。
図4では、端末装置50-1は、Step#1に示すような指令情報を基にTerminal Pod(第1ノード10に対応)を生成(Create)する。端末装置50-1中に示すStep#1は、Terminal Pod上においてMasterモード(通常モード)で実行する一例を示す。例えば、Step#1の3~5行目は、実行環境準備のためのコマンド(指令情報)の一例を示す。図4中のTerminal Podは、マスタノードに対応する。図4中のTerminal Podは、例えばデータ処理/機械学習/ディープラーニング向けマルチテナントKubernetes環境であるACP(AI Cloud Platform)上で実現される。
図4中のTerminal Podは、共有ストレージで、ジョブキュー及び処理結果登録用データベースを管理する。例えば、共有ストレージは、KubernetesのPersistentVolume等のオブジェクトにより実現されてもよい。例えば、ジョブキューの排他制御は共有ストレージ上のロックファイル等が使用される。例えば、実行状態フラグは、共有ストレージ上のファイルを使用する。
図4では、端末装置50-2は、Step#2に示すような生成する数を指定する「replicas: 2」を含む指令情報を基に2つのOptimizer Slave Pod(第2ノード20に対応)を生成(Create)する。図2では、2つのOptimizer Slave Podのうち、Optimizer Slave Pod - Replica #1が第2ノード20aに対応し、Optimizer Slave Pod - Replica #2が第2ノード20bに対応する。端末装置50-2中に示すStep#2は、Optimizer Slave Podを2つ生成する場合の一例を示す。
例えば、Step#2の「replicas」の値を変更することで、任意の数のOptimizer Slave Podを生成することができ、スケール可能となる。図4中の各Optimizer Slave Podは、スレーブノードに対応する。図4中の各Optimizer Slave Podは、例えばデータ処理/機械学習/ディープラーニング向けマルチテナントKubernetes環境であるACP(AI Cloud Platform)上で実現される。例えば、上述した処理により1コマンドで数百の演算装置(GPU等)の並列分散処理が可能となる。
図4中の各Optimizer Slave Podは、ジョブキューからジョブを取得して実行する(図4中の1.Get Trails及び2.Runに対応)。そして、図4中の各Optimizer Slave Podは、その結果をデータベース(処理結果登録用データベース)に登録する(図4中の3.Put Resultsに対応)。
同様に、図4中のTerminal Podは、ジョブキューからジョブを取得して実行する(図4中の1.Get Trails及び2.Runに対応)。そして、図4中のTerminal Podは、その結果をデータベース(処理結果登録用データベース)に登録する(図4中の3.Put Resultsに対応)。
このように、図4に示す例では、Terminal Pod(第1ノード10に対応)は、Optimizer Slave Pod(第2ノード20に対応)を管理せず、Optimizer Slave Pod(第2ノード20に対応)の各々は、自身でジョブキューからジョブを取得して実行し、その結果をデータベースに登録する。
例えば、従来、Kubernetes等のクラウドサービス上で、任意(独自)処理の大規模並列分散処理を行うフレームワークやサービス等は存在しない。そのため、任意の大規模並列分散処理(数十~数百並列を想定)を実行したい場合、Kubernetes等のクラウドサービス上で新たなシステムを開発する必要があるが、それには、労力、時間、コストを必要とする。
一方で、上述したように、並列分散処理のMaster(マスタノード)とSlave(スレイブノード)とを疎結合にし、全てのノードが自律的に処理を行うことにより、KubernetesのReplicationControllerを用いて、情報処理システム1において並列分散処理を容易に実現することができる。上述したように、情報処理システム1は、クラウドシステムであって、情報処理を複数の実行要求に分割する。そして、情報処理システム1では、マスタがユーザから処理を受け付けると、処理を実現する実行要求を生成する。情報処理システム1では、生成した実行要求をスレーブが読み出せるストレージ領域に格納する。情報処理システム1では、スレーブが、ストレージを参照し、実行されていない実行要求を実行する。情報処理システム1は、クラウドシステムにおいて、複数のマシンと、共有ストレージとを設定して、共有ストレージ領域にマシンが実行した結果を登録する。
〔1-5.サーバ装置の構成〕
次に、図5を用いて、実施形態に係るサーバ装置100の構成について説明する。図5は、実施形態に係るサーバ装置100の構成例を示す図である。図5に示すように、サーバ装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、サーバ装置100は、サーバ装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、所定の通信網(ネットワーク)と有線または無線で接続され、端末装置50や他のサーバ装置100との間で情報の送受信を行う。
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。例えば、共有ストレージを有するサーバ装置100(例えば第1ノード10に対応するサーバ装置100等)に対応する場合、記憶部120は、共有ストレージに格納される各種情報を記憶する。この場合、記憶部120は、ジョブリストやジョブキュー等に関する各種情報を記憶する。例えば、記憶部120は、ジョブリストやジョブキューを記憶する。例えば、記憶部120は、ジョブリストに含まれる各ジョブの処理結果を記憶する。
例えば、第1ノード10に対応するサーバ装置100の場合、記憶部120は、少なくとも第1フラグを記憶する。例えば、第1ノード10に対応するサーバ装置100の場合、記憶部120は、第1フラグ及び第2フラグを記憶してもよい。例えば、第2ノード20に対応するサーバ装置100の場合、記憶部120は、第2フラグを記憶してもよい。なお、上記は一例に過ぎず、記憶部120は、処理に必要な各種の情報を記憶する。
(制御部130)
図5の説明に戻って、制御部130は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)やMPU(Micro Processing Unit)等によって、サーバ装置100内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
制御部130は、各種の処理を実行する実行部として機能する。制御部130は、タスクを処理する処理部として機能する。
制御部130は、各種情報を取得する取得部として機能する。例えば、制御部130は、記憶部120から各種情報を取得する。制御部130は、各種情報を他の情報処理装置から取得する。制御部130は、端末装置50や他のサーバ装置100から各種情報を取得する。制御部130は、通信部110を介して、端末装置50や他のサーバ装置100から情報を受信する。
制御部130は、通信部110を介して、ユーザが利用する端末装置50からの各種要求を受信する。制御部130は、端末装置50からの各種要求に応じた処理を実行する。制御部130は、各種要求を行う要求部として機能する。
制御部130は、各種情報を生成する生成部として機能する。制御部130は、記憶部120に記憶された情報を用いて各種情報を生成する。制御部130は、決定処理を実行する決定部として機能する。制御部130は、記憶部120に記憶された情報を用いて各種情報を決定する。
制御部130は、各種情報を提供する提供部をして機能する。制御部130は、通信部110を介して、端末装置50へ情報を送信する。制御部130は、ユーザが利用する端末装置50へ情報提供サービスを提供する。
制御部130は、共有ストレージを参照し、ジョブリストのうち処理対象とするジョブ(対象ジョブ)を決定する。制御部130は、共有ストレージを参照し、ジョブリストのうち未処理のジョブを対象ジョブに決定する。制御部130は、対象ジョブの処理後にジョブリストを更新する。制御部130は、ジョブリストを基に設定されたジョブキューを参照し、ジョブキューに含まれるジョブを対象ジョブに決定する。
第1ノード10に対応するサーバ装置100の場合、制御部130は、情報処理システム1において処理することが要求される情報処理が分割された複数のジョブを含むジョブリストを生成する。制御部130は、種々の従来技術を適宜用いて、任意の手法により対象情報処理を分割して複数のジョブを生成する。第1ノード10に対応するサーバ装置100の場合、制御部130は、生成したジョブリストを、複数のノードの各々がアクセス可能な共有ストレージに格納する。
第1ノード10に対応するサーバ装置100の場合、制御部130は、自装置(第1ノード10)の実行状態を管理する第1フラグ(Master実行フラグ)の値を設定する。この場合、制御部130は、例えば記憶部120に記憶された第1フラグの値を設定(変更)する。第1ノード10に対応するサーバ装置100の場合、制御部130は、第1ノード10が処理を開始した場合、第1フラグを実行中に対応する第1値に設定する。第1ノード10に対応するサーバ装置100の場合、制御部130は、第1フラグが第1ノード10の処理が完了したことを示す第2値であり、かつ第2フラグが第2ノード20の処理が完了したことを示す第2値である場合、処理を終了する。
第2ノード20に対応するサーバ装置100、制御部130は、自装置(第2ノード20)の実行状態を管理する第2フラグ(False実行フラグ)の値を設定する。この場合、制御部130は、例えば記憶部120に記憶された第2フラグの値を設定(変更)する。第2ノード20に対応するサーバ装置100、制御部130は、第1フラグが第1値である場合、共有ストレージを参照し、対象ジョブに決定し、対象ジョブの処理を実行する。第2ノード20に対応するサーバ装置100、制御部130は、第2ノード20が処理を開始した場合、第2フラグを実行中に対応する第1値に設定する。
〔2.処理手順〕
次に、図6を用いて、実施形態に係る情報処理システム1による情報処理の手順について説明する。図6は、実施形態に係る処理手順を示すフローチャートである。
図6に示すように、情報処理システム1では、第1ノード10が情報処理システム1において処理することが要求される情報処理が分割された複数のジョブを含むジョブリストを生成する(ステップS11)。例えば、第1ノード10を実現するサーバ装置100は、情報処理システム1において処理することが要求される情報処理が分割された複数のジョブを含むジョブリストを生成する。例えば、第1ノード10に対応するサーバ装置100aは、情報処理システム1において処理することが要求される情報処理が分割された複数のジョブを含むジョブリストを生成する。
情報処理システム1では、第1ノード10が生成したジョブリストを、複数のノードの各々がアクセス可能な共有ストレージに格納する(ステップS12)。例えば、第1ノード10を実現するサーバ装置100は、生成したジョブリストを、複数のノードの各々がアクセス可能な共有ストレージ(例えば、サーバ装置100自装置の記憶部120)に格納する。例えば、第1ノード10に対応するサーバ装置100aは、生成したジョブリストを、複数のノードの各々がアクセス可能な共有ストレージ(例えば、サーバ装置100a自装置の記憶部120)に格納する。
情報処理システム1では、第2ノード20が共有ストレージを参照し、ジョブリストのうち処理対象とするジョブである対象ジョブを決定する(ステップS13)。例えば、第2ノード20を実現するサーバ装置100は、共有ストレージ(例えば、第1ノード10を実現するサーバ装置100の記憶部120)を参照し、ジョブリストのうち処理対象とするジョブである対象ジョブを決定する。例えば、第2ノード20aに対応するサーバ装置100bは、共有ストレージ(例えば、第1ノード10に対応するサーバ装置100aの記憶部120)を参照し、ジョブリストのうち処理対象とするジョブである対象ジョブを決定する。
情報処理システム1では、第2ノード20が対象ジョブの処理後にジョブリストを更新する(ステップS14)。例えば、第2ノード20を実現するサーバ装置100は、対象ジョブの処理後にジョブリストを更新する。例えば、第2ノード20に対応するサーバ装置100bは、対象ジョブの処理後に、第1ノード10に対応するサーバ装置100aの記憶部120に格納されたジョブリストを更新する。
〔3.効果〕
上述してきたように、実施形態に係る情報処理システム1は、分散処理を実行する第1ノード及び第2ノードを含む複数のノードを含む情報処理システム1であって、第1ノード10は、情報処理システム1において処理することが要求される情報処理が分割された複数のジョブを含むジョブリストを生成し、生成したジョブリストを、複数のノードの各々がアクセス可能な共有ストレージに格納し、第2ノード20は、共有ストレージを参照し、ジョブリストのうち処理対象とするジョブである対象ジョブを決定し、対象ジョブの処理後にジョブリストを更新する。
これにより、実施形態に係る情報処理システム1は、第2ノード20が共有ストレージを参照して対象ジョブを決定し、対象ジョブの処理後にジョブリストを更新することにより、第1ノード10からの割り当てに依らず、第2ノード20がジョブを実行することができるため、適切な分散処理を可能にすることができる。
また、実施形態に係る情報処理システム1において、第1ノード10は、マスタノードであり、第2ノード20は、スレーブノードである。これにより、実施形態に係る情報処理システム1は、マスタスレーブ形式での分割処理により、適切な分散処理を可能にすることができる。
また、実施形態に係る情報処理システム1において、第2ノード20は、共有ストレージを参照し、ジョブリストのうち未処理のジョブを対象ジョブに決定する。これにより、実施形態に係る情報処理システム1は、第2ノード20がジョブリストの未処理のジョブを順次処理することにより、適切な分散処理を可能にすることができる。
また、実施形態に係る情報処理システム1において、第2ノード20は、ジョブリストを基に設定されたジョブキューを参照し、ジョブキューに含まれるジョブを対象ジョブに決定する。これにより、実施形態に係る情報処理システム1は、第2ノード20がジョブキューを参照しジョブリストの未処理のジョブを順次処理することにより、適切な分散処理を可能にすることができる。
また、実施形態に係る情報処理システム1において、第1ノード10は、共有ストレージを参照し、ジョブリストのうち処理対象とする対象ジョブを決定し、対象ジョブの処理後にジョブリストを更新する。これにより、実施形態に係る情報処理システム1は、第1ノード10が共有ストレージを参照して対象ジョブを決定し、対象ジョブの処理後にジョブリストを更新することにより、適切な分散処理を可能にすることができる。
また、実施形態に係る情報処理システム1において、第1ノード10は、ジョブリストを基に設定されたジョブキューを参照し、ジョブキューに含まれるジョブを対象ジョブに決定する。これにより、実施形態に係る情報処理システム1は、第1ノード10がジョブキューを参照しジョブリストの未処理のジョブを順次処理することにより、適切な分散処理を可能にすることができる。
また、実施形態に係る情報処理システム1は、第1ノード10の実行状態を管理する第1フラグと、第2ノード20の実行状態を管理する第2フラグとを用いて分散処理を実行する。これにより、実施形態に係る情報処理システム1は、第1ノード10に対応する第1フラグと、第2ノード20に対応する第2フラグとの2つ種別のフラグを用いることにより、適切な分散処理を可能にすることができる。
また、実施形態に係る情報処理システム1において、第1ノード10は、第1ノード10が処理を開始した場合、第1フラグを実行中に対応する第1値に設定する。これにより、実施形態に係る情報処理システム1は、第1ノード10が自身状況に応じて第1フラグの値を設定することにより、適切な分散処理を可能にすることができる。
また、実施形態に係る情報処理システム1は、第2ノード20は、第1フラグが第1値である場合、共有ストレージを参照し、対象ジョブに決定し、対象ジョブの処理を実行する。これにより、実施形態に係る情報処理システム1は、第2ノード20が第1ノード10の状況に応じて、共有ストレージを参照し、対象ジョブに決定し、対象ジョブの処理を実行することにより、適切な分散処理を可能にすることができる。
また、実施形態に係る情報処理システム1において、第2ノード20は、第2ノード20が処理を開始した場合、第2フラグを実行中に対応する第1値に設定する。これにより、実施形態に係る情報処理システム1は、第2ノード20が自身状況に応じて第2フラグの値を設定することにより、適切な分散処理を可能にすることができる。
また、実施形態に係る情報処理システム1において、第1ノード10は、第1フラグが第1ノード10の処理が完了したことを示す第2値であり、かつ第2フラグが第2ノード20の処理が完了したことを示す第2値である場合、処理を終了する。これにより、実施形態に係る情報処理システム1は、第1ノード10が第1ノード10に対応する第1フラグと、第2ノード20に対応する第2フラグとの2つ種別のフラグを基に処理を終了することで、適切な分散処理を可能にすることができる。
〔4.ハードウェア構成〕
また、上述した実施形態に係る端末装置50やサーバ装置100は、例えば図7に示すような構成のコンピュータ1000によって実現される。以下、サーバ装置100を例に挙げて説明する。図7は、ハードウェア構成の一例を示す図である。コンピュータ1000は、出力装置1010、入力装置1020と接続され、演算装置1030、一次記憶装置1040、二次記憶装置1050、出力I/F(Interface)1060、入力I/F1070、ネットワークI/F1080がバス1090により接続された形態を有する。
演算装置1030は、一次記憶装置1040や二次記憶装置1050に格納されたプログラムや入力装置1020から読み出したプログラム等に基づいて動作し、各種の処理を実行する。演算装置1030は、例えばCPU(Central Processing Unit)、GPU(Graphics Processing Unit)、MPU(Micro Processing Unit)、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等により実現される。
一次記憶装置1040は、RAM(Random Access Memory)等、演算装置1030が各種の演算に用いるデータを一次的に記憶するメモリ装置である。また、二次記憶装置1050は、演算装置1030が各種の演算に用いるデータや、各種のデータベースが登録される記憶装置であり、ROM(Read Only Memory)、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ等により実現される。二次記憶装置1050は、内蔵ストレージであってもよいし、外付けストレージであってもよい。また、二次記憶装置1050は、USBメモリやSD(Secure Digital)メモリカード等の取り外し可能な記憶媒体であってもよい。また、二次記憶装置1050は、クラウドストレージ(オンラインストレージ)やNAS(Network Attached Storage)、ファイルサーバ等であってもよい。
出力I/F1060は、ディスプレイ、プロジェクタ、及びプリンタ等といった各種の情報を出力する出力装置1010に対し、出力対象となる情報を送信するためのインターフェイスであり、例えば、USB(Universal Serial Bus)やDVI(Digital Visual Interface)、HDMI(登録商標)(High Definition Multimedia Interface)といった規格のコネクタにより実現される。また、入力I/F1070は、マウス、キーボード、キーパッド、ボタン、及びスキャナ等といった各種の入力装置1020から情報を受信するためのインターフェイスであり、例えば、USB等により実現される。
また、出力I/F1060及び入力I/F1070はそれぞれ出力装置1010及び入力装置1020と無線で接続してもよい。すなわち、出力装置1010及び入力装置1020は、ワイヤレス機器であってもよい。
また、出力装置1010及び入力装置1020は、タッチパネルのように一体化していてもよい。この場合、出力I/F1060及び入力I/F1070も、入出力I/Fとして一体化していてもよい。
なお、入力装置1020は、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、又は半導体メモリ等から情報を読み出す装置であってもよい。
ネットワークI/F1080は、ネットワークNを介して他の機器からデータを受信して演算装置1030へ送り、また、ネットワークNを介して演算装置1030が生成したデータを他の機器へ送信する。
演算装置1030は、出力I/F1060や入力I/F1070を介して、出力装置1010や入力装置1020の制御を行う。例えば、演算装置1030は、入力装置1020や二次記憶装置1050からプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行する。
例えば、コンピュータ1000がサーバ装置100として機能する場合、コンピュータ1000の演算装置1030は、一次記憶装置1040上にロードされたプログラムを実行することにより、制御部130の機能を実現する。また、コンピュータ1000の演算装置1030は、ネットワークI/F1080を介して他の機器から取得したプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行してもよい。また、コンピュータ1000の演算装置1030は、ネットワークI/F1080を介して他の機器と連携し、プログラムの機能やデータ等を他の機器の他のプログラムから呼び出して利用してもよい。
〔5.その他〕
以上、本願の実施形態を説明したが、これら実施形態の内容により本発明が限定されるものではない。また、前述した構成要素には、当業者が容易に想定できるもの、実質的に同一のもの、いわゆる均等の範囲のものが含まれる。さらに、前述した構成要素は適宜組み合わせることが可能である。さらに、前述した実施形態の要旨を逸脱しない範囲で構成要素の種々の省略、置換又は変更を行うことができる。
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
例えば、上述したサーバ装置100は、複数のサーバコンピュータで実現してもよく、また、機能によっては外部のプラットホーム等をAPI(Application Programming Interface)やネットワークコンピューティング等で呼び出して実現するなど、構成は柔軟に変更できる。
また、上述してきた実施形態及び変形例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、制御部は、制御手段や制御回路に読み替えることができる。
1 情報処理システム
2 分散処理システム
50 端末装置
100 サーバ装置(情報処理装置)
110 通信部
120 記憶部
130 制御部

Claims (10)

  1. 分散処理を実行する第1ノード及び第2ノードを含む複数のノードを含む情報処理システムであって、
    前記第1ノードは、前記情報処理システムにおいて処理することが要求される情報処理が分割された複数のジョブを含むジョブリストを生成し、生成した前記ジョブリストを、前記複数のノードの各々がアクセス可能な共有ストレージに格納し、
    前記第2ノードは、前記共有ストレージを参照し、前記ジョブリストのうち処理対象とするジョブである対象ジョブを決定し、前記対象ジョブの処理後に前記ジョブリストを更新し、
    前記第2ノードは、前記共有ストレージ、及び前記ジョブリストを基に設定されたジョブキューを参照し、前記ジョブリストのうち未処理のジョブであって、前記ジョブキューに含まれるジョブを前記対象ジョブに決定する
    ことを特徴とする情報処理システム。
  2. 分散処理を実行する第1ノード及び第2ノードを含む複数のノードを含む情報処理システムであって、
    前記第1ノードは、前記情報処理システムにおいて処理することが要求される情報処理が分割された複数のジョブを含むジョブリストを生成し、生成した前記ジョブリストを、前記複数のノードの各々がアクセス可能な共有ストレージに格納し、
    前記第2ノードは、前記共有ストレージを参照し、前記ジョブリストのうち処理対象とするジョブである対象ジョブを決定し、前記対象ジョブの処理後に前記ジョブリストを更新し、
    前記第1ノードは、前記共有ストレージ、及び前記ジョブリストを基に設定されたジョブキューを参照し、前記ジョブリストのうち前記ジョブキューに含まれるジョブを処理対象とする前記対象ジョブ決定し、前記対象ジョブの処理後に前記ジョブリストを更新する
    ことを特徴とする情報処理システム。
  3. 分散処理を実行する第1ノード及び第2ノードを含む複数のノードを含み、前記第1ノードの実行状態を管理する第1フラグと、前記第2ノードの実行状態を管理する第2フラグとを用いて分散処理を実行する情報処理システムであって、
    前記第1ノードは、前記情報処理システムにおいて処理することが要求される情報処理が分割された複数のジョブを含むジョブリストを生成し、生成した前記ジョブリストを、前記複数のノードの各々がアクセス可能な共有ストレージに格納し、
    前記第2ノードは、前記共有ストレージを参照し、前記ジョブリストのうち処理対象とするジョブである対象ジョブを決定し、前記対象ジョブの処理後に前記ジョブリストを更新し、
    前記第1ノードは、前記第1ノードが処理を開始した場合、前記第1フラグを実行中に対応する第1値に設定し、
    前記第2ノードは、前記第1フラグが前記第1値である場合、前記共有ストレージを参照し、前記対象ジョブに決定し、前記対象ジョブの処理を実行する
    ことを特徴とする情報処理システム。
  4. 分散処理を実行する第1ノード及び第2ノードを含む複数のノードを含み、前記第1ノードの実行状態を管理する第1フラグと、前記第2ノードの実行状態を管理する第2フラグとを用いて分散処理を実行する情報処理システムであって、
    前記第1ノードは、前記情報処理システムにおいて処理することが要求される情報処理が分割された複数のジョブを含むジョブリストを生成し、生成した前記ジョブリストを、前記複数のノードの各々がアクセス可能な共有ストレージに格納し、
    前記第2ノードは、前記共有ストレージを参照し、前記ジョブリストのうち処理対象とするジョブである対象ジョブを決定し、前記対象ジョブの処理後に前記ジョブリストを更新し、
    前記第1ノードは、前記第1フラグが前記第1ノードの処理が完了したことを示す第2値であり、かつ前記第2フラグが前記第2ノードの処理が完了したことを示す前記第2値である場合、処理を終了する
    ことを特徴とする情報処理システム。
  5. 前記第2ノードは、前記第2ノードが処理を開始した場合、前記第2フラグを実行中に対応する第1値に設定する
    ことを特徴とする請求項3または請求項4に記載の情報処理システム。
  6. 前記第1ノードは、マスタノードであり、
    前記第2ノードは、スレーブノードである
    ことを特徴とする請求項1~5のいずれか1項に記載の情報処理システム。
  7. 分散処理を実行する第1ノード及び第2ノードを含む複数のノードを含む情報処理システムが実行する情報処理方法であって、
    前記第1ノードが、前記情報処理システムにおいて処理することが要求される情報処理が分割された複数のジョブを含むジョブリストを生成し、生成した前記ジョブリストを、前記複数のノードの各々がアクセス可能な共有ストレージに格納し、
    前記第2ノードが、前記ジョブリストを参照し、前記ジョブリストのうち処理対象とするジョブである対象ジョブを決定し、前記対象ジョブの処理後に前記ジョブリストを更新し、
    前記第2ノードは、前記共有ストレージ、及び前記ジョブリストを基に設定されたジョブキューを参照し、前記ジョブリストのうち未処理のジョブであって、前記ジョブキューに含まれるジョブを前記対象ジョブに決定する
    ことを特徴とする情報処理方法。
  8. 分散処理を実行する第1ノード及び第2ノードを含む複数のノードを含む情報処理システムが実行する情報処理方法であって、
    前記第1ノードが、前記情報処理システムにおいて処理することが要求される情報処理が分割された複数のジョブを含むジョブリストを生成し、生成した前記ジョブリストを、前記複数のノードの各々がアクセス可能な共有ストレージに格納し、
    前記第2ノードが、前記ジョブリストを参照し、前記ジョブリストのうち処理対象とするジョブである対象ジョブを決定し、前記対象ジョブの処理後に前記ジョブリストを更新し、
    前記第1ノードは、前記共有ストレージ、及び前記ジョブリストを基に設定されたジョブキューを参照し、前記ジョブリストのうち前記ジョブキューに含まれるジョブを処理対象とする前記対象ジョブに決定し、前記対象ジョブの処理後に前記ジョブリストを更新する
    ことを特徴とする情報処理方法。
  9. 分散処理を実行する第1ノード及び第2ノードを含む複数のノードを含み、前記第1ノードの実行状態を管理する第1フラグと、前記第2ノードの実行状態を管理する第2フラグとを用いて分散処理を実行する情報処理システムが実行する情報処理方法であって、
    前記第1ノードが、前記情報処理システムにおいて処理することが要求される情報処理が分割された複数のジョブを含むジョブリストを生成し、生成した前記ジョブリストを、前記複数のノードの各々がアクセス可能な共有ストレージに格納し、
    前記第2ノードが、前記ジョブリストを参照し、前記ジョブリストのうち処理対象とするジョブである対象ジョブを決定し、前記対象ジョブの処理後に前記ジョブリストを更新し、
    前記第1ノードは、前記第1ノードが処理を開始した場合、前記第1フラグを実行中に対応する第1値に設定し、
    前記第2ノードは、前記第1フラグが前記第1値である場合、前記共有ストレージを参照し、前記対象ジョブに決定し、前記対象ジョブの処理を実行する
    ことを特徴とする情報処理方法。
  10. 分散処理を実行する第1ノード及び第2ノードを含む複数のノードを含み、前記第1ノードの実行状態を管理する第1フラグと、前記第2ノードの実行状態を管理する第2フラグとを用いて分散処理を実行する情報処理システムが実行する情報処理方法であって、
    前記第1ノードが、前記情報処理システムにおいて処理することが要求される情報処理が分割された複数のジョブを含むジョブリストを生成し、生成した前記ジョブリストを、前記複数のノードの各々がアクセス可能な共有ストレージに格納し、
    前記第2ノードが、前記ジョブリストを参照し、前記ジョブリストのうち処理対象とするジョブである対象ジョブを決定し、前記対象ジョブの処理後に前記ジョブリストを更新し、
    前記第1ノードは、前記第1フラグが前記第1ノードの処理が完了したことを示す第2値であり、かつ前記第2フラグが前記第2ノードの処理が完了したことを示す前記第2値である場合、処理を終了する
    ことを特徴とする情報処理方法。
JP2022186865A 2022-07-14 2022-11-22 情報処理システム及び情報処理方法 Active JP7320659B1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202263389198P 2022-07-14 2022-07-14
US63/389,198 2022-07-14

Publications (2)

Publication Number Publication Date
JP7320659B1 true JP7320659B1 (ja) 2023-08-03
JP2024012038A JP2024012038A (ja) 2024-01-25

Family

ID=87469840

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022186865A Active JP7320659B1 (ja) 2022-07-14 2022-11-22 情報処理システム及び情報処理方法

Country Status (2)

Country Link
US (1) US20240020165A1 (ja)
JP (1) JP7320659B1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011123881A (ja) 2009-11-30 2011-06-23 Iron Mountain Inc 一連の従属関係が予め定められたアクティビティを有するワークフローの複数のタスクサーバ上での実行
JP5337854B2 (ja) 2011-09-30 2013-11-06 リケンテクノス株式会社 医療用栓
US20150089505A1 (en) 2013-09-26 2015-03-26 Infosys Limited Systems and methods for fault tolerant batch processing in a virtual environment
CN110083453A (zh) 2019-04-28 2019-08-02 南京邮电大学 一种云计算环境下基于Min-Max算法的节能资源调度方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3288750B2 (ja) * 1992-06-02 2002-06-04 横河電機株式会社 ロボット制御装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011123881A (ja) 2009-11-30 2011-06-23 Iron Mountain Inc 一連の従属関係が予め定められたアクティビティを有するワークフローの複数のタスクサーバ上での実行
JP5337854B2 (ja) 2011-09-30 2013-11-06 リケンテクノス株式会社 医療用栓
US20150089505A1 (en) 2013-09-26 2015-03-26 Infosys Limited Systems and methods for fault tolerant batch processing in a virtual environment
CN110083453A (zh) 2019-04-28 2019-08-02 南京邮电大学 一种云计算环境下基于Min-Max算法的节能资源调度方法

Also Published As

Publication number Publication date
JP2024012038A (ja) 2024-01-25
US20240020165A1 (en) 2024-01-18

Similar Documents

Publication Publication Date Title
EP3210134B1 (en) Composite partition functions
JP5862359B2 (ja) シンクライアントシステム、接続管理サーバ、接続管理方法、及び接続管理プログラム
US20110307788A1 (en) Role-based presentation views
CN109684270A (zh) 数据库归档方法、装置、系统、设备及可读存储介质
JP2009217321A (ja) 情報処理装置及び情報処理プログラム
US8832156B2 (en) Distributed computing management
US20230126168A1 (en) Scalable visualization of a containerized application in a multiple-cluster and multiple deployment application environment
CN112905596B (zh) 数据处理的方法、装置、计算机设备以及存储介质
US11429311B1 (en) Method and system for managing requests in a distributed system
CN112219190A (zh) 用于实时环境的动态计算资源指派和可扩展计算环境生成
US20220171646A1 (en) Scalable visualization of a containerized application in a multiple-cluster environment
JP7320659B1 (ja) 情報処理システム及び情報処理方法
US9298517B2 (en) Exclusive control request allocation method and system
US11816088B2 (en) Method and system for managing cross data source data access requests
JP2019096244A (ja) 情報処理システムおよび情報処理方法
CN117473798B (zh) 仿真项目管理方法、装置、设备和存储介质
CN114676093B (zh) 一种文件管理方法、装置、电子设备及存储介质
EP4304154A1 (en) Information processing device, information processing method, program, and information processing system
US20220129313A1 (en) Introspection of a containerized application in a runtime environment
WO2023051164A1 (en) Resource reuse for pipeline workloads
US20170147408A1 (en) Common resource updating apparatus and common resource updating method
JP5294352B2 (ja) シンクライアントシステム、セッション管理装置、セッション管理方法およびプログラム
JP2017174106A (ja) 管理装置、サーバ、シンクライアントシステム、管理方法及びプログラム
EP3716062A1 (en) Method and system of generating microservices for cloud computing systems
JP2004094446A (ja) データ処理装置およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221122

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20221122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230426

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230724

R150 Certificate of patent or registration of utility model

Ref document number: 7320659

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150