JP2019067301A - プログラム実行装置およびプログラム実行方法 - Google Patents
プログラム実行装置およびプログラム実行方法 Download PDFInfo
- Publication number
- JP2019067301A JP2019067301A JP2017194511A JP2017194511A JP2019067301A JP 2019067301 A JP2019067301 A JP 2019067301A JP 2017194511 A JP2017194511 A JP 2017194511A JP 2017194511 A JP2017194511 A JP 2017194511A JP 2019067301 A JP2019067301 A JP 2019067301A
- Authority
- JP
- Japan
- Prior art keywords
- program
- area
- state
- unit
- event
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
- G06F9/4862—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
【課題】ネットワークにかかる負荷を抑えつつ、分散配置されたデータに対するコンピューティング処理を高速に実行する。【解決手段】中央拠点101のプログラムからの移送要求の受信時にプログラム実行中の状態に基づいて、中央拠点101から分散拠点102へのプログラムの移送タイミングを設定し、そのプログラムの移送タイミングに基づいてアプリ状態領域131および通信管理状態領域133の状態情報を中央拠点101から分散拠点102に移送する。【選択図】図1
Description
本発明は、分散配置されたデータの処理を実行することが可能なプログラム実行装置およびプログラム実行方法に関する。
広域分散配置されたデータに対するコンピューティング処理を高速に実行する装置および方法としては、非特許文献1、2に記載の技術が知られている。
非特許文献1記載の技術では、特定のデバイスから遠隔に離れたデバイスにアプリケーションを移送し、アプリケーションの実行を継続する技術を提供している。
非特許文献2記載の技術は、アプリケーションの現在実行中の状態情報だけでなく、オペレーティングシステム(以下、OSと称す。)の現在実行中の状態情報を遠隔のサーバに転送することを可能にする。
Cisco, "Application Context Transfer for Distributed Computing Resources", Patent US2013/0212212, Aug. 2013.
Hsu, "Application Migration with Dynamic Operating System Containers", Patent US 2014/0137125 A1, May, 2014.
しかしながら、アプリケーションの移送の際にアプリケーションの現在実行中の状態情報のみを転送する方法では、ネットワーク通信プロトコルスタック等のOS機能の現在実行中の状態が転送されない。このため、ネットワーク通信等のOS機能を用いながらコンピューティング処理を行うアプリケーションに適用できなかった。
また、アプリケーションおよびOSが現在実行中のワーク状態を含む全ての状態を移送させながらアプリケーションおよびOSを実行させると、多大なデータのネットワーク転送が発生することがあり、実行遅延を招くことがあった。
本発明は、上記事情に鑑みなされたものであり、その目的は、ネットワークにかかる負荷を抑えつつ、分散配置されたデータに対するコンピューティング処理を高速に実行することが可能なプログラム実行装置およびプログラム実行方法を提供することにある。
上記目的を達成するため、第1の観点に係るプログラム実行装置は、プログラムからの移送要求の受信時に前記プログラム実行中の状態に基づいて、前記プログラムの移送タイミングを設定するイベント管理部と、前記イベント管理部にて設定された移送タイミングに基づいて前記プログラムの状態情報を移送する状態送信部とを備える。
本発明によれば、ネットワークにかかる負荷を抑えつつ、分散配置されたデータに対するコンピューティング処理を高速に実行することができる。
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素およびその組み合わせの全てが発明の解決部に必須であるとは限らない。
図1は、実施形態に係るプログラム実行システムの構成を示すブロック図である。なお、以下の説明では、中央拠点101がプログラムの移送元、分散拠点102がプログラムの移送先である場合を例にとる。
図1において、プログラム実行システムには、中央拠点101および分散拠点102が設けられている。中央拠点101および分散拠点102は、通信ネットワークを介して接続されている。この通信ネットワークは、インターネットなどの広域通信網であってもよいし、LAN(Local Area Network)であってもよいし、これらが混在していてもよい。中央拠点101および分散拠点102には、プログラムにより処理されるデータを分散配置することができる。この時、中央拠点101および分散拠点102間でプログラムを移送させつつ、中央拠点101および分散拠点102に分散配置されたビックデータの分析などを行うことができる。
また、中央拠点101には、ファイルロケーション管理サーバ115およびファイルサーバ116が設けられている。分散拠点102には、ファイルサーバ117が設けられている。ファイルロケーション管理サーバ115には、ファイルロケーションデータ135が格納されている。ファイルロケーションデータ135は、どの分析対象ファイル136、137がどのファイルサーバ116、117に格納されているかを管理する。ファイルサーバ116、117には、分析対象ファイル136、137がそれぞれ格納されている。
また、中央拠点101および分散拠点102には、プログラム実行基盤111、112および主メモリ113、114がそれぞれ設けられている。プログラム実行基盤111、112は、主メモリ113、114に記憶されたプログラムを実行することにより、プログラム実行装置103、104を中央拠点101および分散拠点102にそれぞれ実現することができる。
プログラム実行装置103、104は、中央拠点101および分散拠点102間でプログラムを移送させつつ、中央拠点101および分散拠点102に分散配置されたデータの処理を行う。ここで、中央拠点101から分散拠点102へプログラムを移送する場合、そのプログラムで使用されるワーク領域を初期化可能なステップまで中央拠点101でプログラムを実行し、その次のステップから分散拠点102でそのプログラムの実行が引き継がれるように移送タイミングを設定することができる。
プログラム実行装置103、104で実行されるプログラムで使用される領域は、ワーク領域と状態領域に分けて管理することができる。プログラムには、アプリケーションおよびOSを含むことができる。この時、プログラムで使用される領域をプリケーションおよびOSごとにワーク領域と状態領域に分けて管理することができる。ワーク領域を初期化可能なステップまで中央拠点101でプログラムを実行してから、そのプログラムを分散拠点102に移送することにより、中央拠点101から分散拠点102へのワーク情報の送信を不要とすることができる。
プログラム実行装置103、104には、分析アプリ121、121´、通信管理部122、122´、イベント管理部123、125およびデータアクセス部124、126が設けられている。さらに、プログラム実行装置103には状態送信部127が設けられ、プログラム実行装置104には状態復元部128が設けられている。
分析アプリ121、121´は、分析を行うためのアプリケーションを実行する。ここで言う分析には、データを加工する一連の処理を含むことができる。この時、分析アプリ121、121´は分析対象ファイル136、137をGet/Putすることができる。通信管理部122、122´は、分析アプリ121、121´からのデータ送信要求に基づいてデータ送信処理を実行したり、分析アプリ121、121´からのデータ受信要求に基づいてデータ受信処理を実行したりする。通信管理部122、122´は、分析アプリ121、121´が使用するOSに組み込むことができる。
イベント管理部123、125は、分析アプリ121、121´からの移送要求の受信時に、分析アプリ121、121´および通信管理部122、122´の実行中の状態に基づいて、分析アプリ121、121´および通信管理部122、122´の移送タイミングを設定する。データアクセス部124、126は、分析アプリ121、121´からの要求に基づいて、分析アプリ121、121´で処理されるデータを保持するファイルサーバ116、117のIPアドレスを検出する。状態送信部127は、イベント管理部123にて設定された移送タイミングに基づいてアプリ状態領域131および通信管理状態領域133の状態情報を移送する。状態復元部128は、状態送信部127から移送されたアプリ状態領域131および通信管理状態領域133の状態情報に基づいて、中央拠点101の分析アプリ121および通信管理部122の状態を分散拠点102上で復元し、分析アプリ121および通信管理部122の実行を引き継ぐ。
イベント管理部123には、メモリ領域確保部123aおよび移送待機部123bが設けられている。メモリ領域確保部123aは、アプリ状態領域131、アプリワーク領域132、通信管理状態領域133および通信管理ワーク領域134を主メモリ113に確保する。移送待機部123bは、分析アプリ121および通信管理部122による現在実行中のイベント処理の完了まで分析アプリ121および通信管理部122の移送を待機させる。なお、ここで言うイベントとは、ユーザ入力やOSなどからの要求に応じて処理を実行するプログラムの実行単位である。この時、イベント単位でプログラミングを行うことができる。また、プログラムの実行に用いられるワーク領域はイベントごとに初期化することができる。
ここで、イベント管理部123は、分析アプリ121および通信管理部122に対して、アプリ状態領域131、アプリワーク領域132、通信管理状態領域133および通信管理ワーク領域134を確保するAPI(Application Programming Interface)を提供することができる。さらに、イベント管理部123は、分析アプリ121が移送先を指定するAPIおよび移送準備完了を宣言するAPIを提供することができる。
主メモリ113、114には、アプリ状態領域131、131´、アプリワーク領域132、132´、通信管理状態領域133、133´および通信管理ワーク領域134、134´がそれぞれ格納される。アプリ状態領域131、131´およびアプリワーク領域132、132´は、分析アプリ121、121´がそれぞれ使用する。通信管理状態領域133、133´および通信管理ワーク領域134、134´は、通信管理部122、122´がそれぞれ使用する。
アプリ状態領域131、131´には、分析アプリ121、121´が実行中の状態情報がそれぞれ格納される。アプリワーク領域132、132´には、分析アプリ121、121´が実行中のワーク情報がそれぞれ格納される。通信管理状態領域133、133´には、通信管理部122、122´が実行中のイベント処理に関する状態情報がそれぞれ格納される。通信管理ワーク領域134、134´には、通信管理部122、122´が実行中のイベント処理に関するワーク情報がそれぞれ格納される。
そして、イベント管理部123は、分析アプリ121または通信管理部122がアプリ状態領域131、アプリワーク領域132、通信管理状態領域133および通信管理ワーク領域134を確保するAPIを呼び出すと、アプリ状態領域131、アプリワーク領域132、通信管理状態領域133および通信管理ワーク領域134のアドレス情報を管理するテーブルを更新し、アプリ状態領域131、アプリワーク領域132、通信管理状態領域133および通信管理ワーク領域134を主メモリ113上に確保する。
さらに、イベント管理部123は、分析アプリ121が移送先を指定するAPIを呼び出すと、分析アプリ121がアプリワーク領域132内のデータの参照/更新処理を完了し、移送準備完了を宣言するAPIを呼び出すまで待機する。
さらに、イベント管理部123は、分析アプリ121が移送準備完了を宣言するAPIを呼び出すと、通信管理部122にコミット通知を発行し、通信管理部122による通信管理ワーク領域134内のデータの参照/更新処理完了を待ち合わせる。その後、イベント管理部123は、分析アプリ121および通信管理部122の移送指示を状態送信部127に発行する。
移送指示を受けた状態送信部127は、アプリ状態領域131および通信管理状態領域133の状態情報と、アプリ状態領域131、アプリワーク領域132、通信管理状態領域133および通信管理ワーク領域134のアドレス情報を状態復元部128に送信する。
状態復元部128は、状態送信部127から受信したアプリ状態領域131および通信管理状態領域133の状態情報を主メモリ114上にコピーし、アプリ状態領域131および通信管理状態領域133の状態を分散拠点102上で復元する。この時、アプリ状態領域131および通信管理状態領域133の状態情報を記憶するアプリ状態領域131´および通信管理状態領域133´を主メモリ114上に確保することができる。
さらに、状態復元部128は、状態送信部127から受信したアプリワーク領域132および通信管理ワーク領域134のアドレス情報に基づいて、アプリワーク領域132´および通信管理ワーク領域134´を主メモリ114上に確保する。そして、アプリワーク領域132´および通信管理ワーク領域134´を初期化し、分析アプリ121および通信管理部122の移送先である分散拠点102において、分析アプリ121´および通信管理部122´を実行する。
ここで、分析アプリ121および通信管理部122が現在実行中のイベント処理の完了まで分析アプリ121および通信管理部122の移送を待機させることにより、アプリワーク領域132および通信管理ワーク領域134のワーク情報を分析アプリ121および通信管理部122の移送先に送信することなく、分析アプリ121および通信管理部122の実行を移送先で引き継がせることができる。この時、分析アプリ121の状態情報だけでなく通信管理部122の状態情報も移送先に送信することができる。このため、ネットワーク転送にかかる負荷の増大を抑制しつつ、ネットワーク通信等のOS機能を用いながらコンピューティング処理を行うアプリケーションに適用することができる。
なお、分析アプリ121、121´は、データアクセス部123、124をそれぞれ介して分析対象ファイルの136、137Get/Put操作を行うことができる。そして、データアクセス部123、124は、分析アプリ121、121´からのファイルGet要求またはファイルPut要求に基づいて、移送先のIPアドレスを検出することができる。
この時、分析アプリ121、121´がその移送先を指定することにより、分析アプリ121、121´の移送先で使用される分析対象ファイル136、137の保存先を精度よく検出することができ、分析アプリ121、121´の移送先を効率よく見つけ出すことができる。
なお、上述した実施形態では、OSの状態情報として通信管理に関する状態情報を例にとったが、OSの状態情報は、通信管理に関する状態情報以外であってもよい。
図2は、実施形態に係るプログラム実行システムのハードウェア構成を示すブロック図である。
図2において、プログラム実行基盤111、112には、CPU201、202およびI/O制御部203、204がそれぞれ設けられている。CPU201、202は、メモリバス211、212をそれぞれ介して主メモリ113、114と接続されている。
図2において、プログラム実行基盤111、112には、CPU201、202およびI/O制御部203、204がそれぞれ設けられている。CPU201、202は、メモリバス211、212をそれぞれ介して主メモリ113、114と接続されている。
主メモリ113には、状態送信プログラム127p、データアクセスプログラム125p、イベント管理プログラム123p、通信管理プログラム122pおよび分析アプリプログラム121pが格納される。そして、CPU201が状態送信プログラム127p、データアクセスプログラム125p、イベント管理プログラム123p、通信管理プログラム122pおよび分析アプリプログラム121pを実行することにより、状態送信部127、データアクセス部125、イベント管理部123、通信管理部122および分析アプリ121を中央拠点101上で実現することができる。
また、CPU201は、プログラムの指示に応じて主メモリ113上のアプリ状態領域131、アプリワーク領域132、通信管理状態領域133、通信管理ワーク領域134の参照/更新処理を行う。
さらに、CPU201、202は、I/Oバス213、214をそれぞれ介してI/O制御部203、204と接続されている。そして、CPU201、202は、プログラムの指示に応じてファイルローケーションサーバ115やファイルサーバ116、117に対してI/O処理を実行する。また、CPU201、202は、遠隔のプログラム実行基盤111、112のI/O制御部23、204に対してデータ送信を行い、遠隔のプログラム実行基盤111、112に接続された主メモリ113、114にデータを書き込むこともできる。
図3は、実施形態に係るファイルロケーションデータのデータ構造を示す図である。
図3において、ファイルロケーションデータ135には、分析対象ファイル136、137ごとにエントリを設けることができる。
図3において、ファイルロケーションデータ135には、分析対象ファイル136、137ごとにエントリを設けることができる。
ファイルロケーションデータ135には、グローバルファイル名301を格納するフィールド、ファイルサーバIPアドレス302を格納するフィールドおよびローカルファイル名303を格納するフィールドを設けることができる。
グローバルファイル名301は、全拠点に存在する分析対象ファイル136、137を一意に識別し、分析アプリ121が分析対象ファイル136、137を指定するために使用することができる。ファイルサーバIPアドレス302は、分析対象ファイル136、137を格納しているファイルサーバ116、117を特定することができる。ローカルファイル名303は、ファイルサーバ116、117におけるファイル管理で使用することができる。
図4は、実施形態に係るデータアクセス部の処理を示すフローチャートである。
図4において、データアクセス部123は、イベント管理部123、124からのGet要求またはPut要求の受信を契機に動作を開始する(ステップ401)。Get要求またはPut要求には、アクセス対象となる分析対象ファイル136、137を指定するグローバルファイル名301と、実行要否の種別を示す情報があわせて与えられる。
図4において、データアクセス部123は、イベント管理部123、124からのGet要求またはPut要求の受信を契機に動作を開始する(ステップ401)。Get要求またはPut要求には、アクセス対象となる分析対象ファイル136、137を指定するグローバルファイル名301と、実行要否の種別を示す情報があわせて与えられる。
次に、データアクセス部123は、ファイルロケーション管理サーバ115からファイルロケーションデータ135を取得する(ステップ402)。この際、ステップ401で指定されたグローバルファイル名301に合致するエントリを検索し、そのエントリに対応するファイルサーバIPアドレス302およびローカルファイル名303を取得する。
次に、データアクセス部123は、ステップ401にて与えられた実行要否種別を検査する(ステップ403)。、実行要であれば、ステップ402で取得したファイルサーバIPアドレス302で指定されたファイルサーバ116、117に対してI/Oを発行し、ローカルファイル名303で指定されたファイルのGet操作もしくはPut操作を行う(ステップ404)。
次に、データアクセス部123は、ステップ404のGet操作もしくはPut操作の実行結果をイベント管理部123に送信し(ステップ405)、処理を終了する。
一方、ステップ403において実行不要と判定した場合には、ステップ402で取得したファイルサーバIPアドレス302、ローカルファイル名303の情報をイベント管理部123に通知する(ステップ406)。この時、データアクセス部123は、ファイルサーバ116、117に対する実際のGet操作もしくはPut操作を行わずに処理を終了する。
図5は、実施形態に係るイベント管理部の全体的な処理を示すフローチャートである。
図5において、イベント管理部123は、分析アプリ121または通信管理部122からのイベント処理要求受信を契機に動作を開始する(ステップ501)。
次に、イベント管理部123は、ステップ501で要求されたイベントの種類を判別する(ステップ502)。
図5において、イベント管理部123は、分析アプリ121または通信管理部122からのイベント処理要求受信を契機に動作を開始する(ステップ501)。
次に、イベント管理部123は、ステップ501で要求されたイベントの種類を判別する(ステップ502)。
イベントの種類には、領域確保要求、イベント送信要求、イベント受信要求、ファイルGet要求、ファイルPut要求およびイベント処理完了要求がある。イベント管理部123は、これらいずれかのイベント処理要求を受信すると、それぞれの要求処理を実行する(ステップ503からステップ508)。各要求処理の詳細は後述する。
次に、イベント管理部123は、分析アプリ121または通信管理部122にイベント処理完了を通知し(ステップ509)、処理を完了する。
次に、イベント管理部123は、分析アプリ121または通信管理部122にイベント処理完了を通知し(ステップ509)、処理を完了する。
図6は、実施形態に係るイベント管理部の領域確保要求処理に使用するデータ構造を示す図である。
図6において、イベント管理部123は、空き領域リスト601と使用領域リスト602というデータ構造を利用して主メモリ113の領域を管理し、空き領域リスト601と使用領域リスト602で管理されるデータを主メモリ113上に保持する。空き領域リスト601には未使用メモリ領域の情報が格納され、使用領域リスト602には使用中メモリ領域の情報が格納される。
図6において、イベント管理部123は、空き領域リスト601と使用領域リスト602というデータ構造を利用して主メモリ113の領域を管理し、空き領域リスト601と使用領域リスト602で管理されるデータを主メモリ113上に保持する。空き領域リスト601には未使用メモリ領域の情報が格納され、使用領域リスト602には使用中メモリ領域の情報が格納される。
空き領域リスト601は、それぞれの未使用メモリ領域の領域開始アドレス611および領域サイズ612の情報をリスト構造で管理する。
使用領域リスト602は、それぞれの使用中メモリ領域について、使用しているプログラム名621、主メモリ113に割り当てられた領域が状態領域かワーク領域かを識別する領域種別622、領域開始アドレス623および領域サイズ624の情報をリスト構造で管理する。
図7は、実施形態に係るイベント管理部の領域確保要求処理を示すフローチャートである。
図7において、イベント管理部123は、分析アプリ121または通信管理部122から領域確保要求を受け取る(ステップ701)。領域確保要求には、主メモリ113に確保される領域が状態領域かワーク領域かを識別する領域種別622および領域サイズ624の情報を含む。
図7において、イベント管理部123は、分析アプリ121または通信管理部122から領域確保要求を受け取る(ステップ701)。領域確保要求には、主メモリ113に確保される領域が状態領域かワーク領域かを識別する領域種別622および領域サイズ624の情報を含む。
次に、イベント管理部123は、空き領域リスト601を探索し、指定した領域サイズ以上の未使用のメモリ領域を取得する(ステップ702)。そして、空き領域リスト601を更新し、取得したメモリ領域を空き領域リスト601から削除する。さらに、確保したメモリ領域の領域開始アドレス623を、分析アプリ121または通信管理部122に通知する。
次に、イベント管理部123は、使用領域リスト602を更新し、ステップ702で確保したメモリ領域を使用メモリ領域として管理する(ステップ703)。
図8は、実施形態に係るイベント管理部のイベント送信要求処理およびイベント受信要求処理に使用するイベントリストのデータ構造を示す図である。
図8において、イベント管理部123は、分析アプリ121または通信管理部122からイベント送信要求が発行されたが、分析アプリ121または通信管理部122からイベント受信要求が発行されていないため、イベント管理部123にて滞留しているイベントの一覧をイベントリスト801というデータ構造を用いて管理する。この時、イベントリスト801のデータ構造を主メモリ113上に保持する。
図8において、イベント管理部123は、分析アプリ121または通信管理部122からイベント送信要求が発行されたが、分析アプリ121または通信管理部122からイベント受信要求が発行されていないため、イベント管理部123にて滞留しているイベントの一覧をイベントリスト801というデータ構造を用いて管理する。この時、イベントリスト801のデータ構造を主メモリ113上に保持する。
イベントリスト801には、イベント送信要求を発行した送信先プログラム名811、イベント送信要求で送信されたイベント種別812およびイベント送信要求であわせて送信されたイベント情報813を格納するエントリがリスト状に接続される。
図9は、実施形態に係るイベント管理部のイベント送信要求処理を示すフローチャートである。
図9において、イベント管理部123は、分析アプリ121または通信管理部122からイベント送信要求を受け取る(ステップ901)。イベント送信要求には、送信先プログラム名811、イベント種別812、イベントと付随して送信されるイベント情報813が含まれる。
図9において、イベント管理部123は、分析アプリ121または通信管理部122からイベント送信要求を受け取る(ステップ901)。イベント送信要求には、送信先プログラム名811、イベント種別812、イベントと付随して送信されるイベント情報813が含まれる。
次に、イベント管理部123は、送信先プログラム名811、イベント種別812およびイベント情報813を格納したエントリを生成する。そして、そのエントリをイベントリスト801に接続することでイベントリスト801を更新し(ステップ902)、処理を完了する。
図10は、実施形態に係るイベント管理部のイベント受信要求処理を示すフローチャートである。
図10において、イベント管理部123は、分析アプリ121または通信管理部122からイベント送信要求を受け取る(ステップ1001)。
次に、イベント管理部123は、イベントリスト801を探索する。そして、ステップ1001にてイベント受信要求を発行したプログラムを送信先プログラム名811に格納するエントリを検索する(ステップ1002)。
図10において、イベント管理部123は、分析アプリ121または通信管理部122からイベント送信要求を受け取る(ステップ1001)。
次に、イベント管理部123は、イベントリスト801を探索する。そして、ステップ1001にてイベント受信要求を発行したプログラムを送信先プログラム名811に格納するエントリを検索する(ステップ1002)。
次に、イベント管理部123は、送信先プログラム名811が合致するエントリが存在すれば、そのエントリに格納されているイベント種別812およびイベント情報813を、ステップ1001にてイベント受信要求を発行したプログラムに通知する。さらに、当該エントリをイベントリスト801から削除することでイベントリスト801を更新し(ステップ1003)、処理を完了する。
図11は、実施形態に係るイベント管理部のファイルGet要求処理およびファイル
Put要求処理要求処理を示すフローチャートである。
図11において、イベント管理部123は、分析アプリ121からファイルGet要求またはファイルPut要求を受け取る(ステップ1101)。ファイルGet要求またはファイルPut要求には、GetまたはPutの対象となる分析対象ファイル136、137かを識別するグローバルファイル名301が含まれる。また、ファイルGet要求またはファイルPut要求を発行したプログラムを、分析対象ファイル136、137と同一拠点に属するプログラム実行基盤111、112にGetまたはPut操作の前に移送すべきかを示す移送要求の有無を示す情報も含まれる。
Put要求処理要求処理を示すフローチャートである。
図11において、イベント管理部123は、分析アプリ121からファイルGet要求またはファイルPut要求を受け取る(ステップ1101)。ファイルGet要求またはファイルPut要求には、GetまたはPutの対象となる分析対象ファイル136、137かを識別するグローバルファイル名301が含まれる。また、ファイルGet要求またはファイルPut要求を発行したプログラムを、分析対象ファイル136、137と同一拠点に属するプログラム実行基盤111、112にGetまたはPut操作の前に移送すべきかを示す移送要求の有無を示す情報も含まれる。
次に、イベント管理部123は、ファイルGet要求またはファイルPut要求を発行したプログラムの移送要求の有無を判別する(ステップ1102)。移送要求がある場合、イベント管理部123は、データアクセス部125にGet要求またはPut要求を発行する(ステップ1103)。このGet要求またはPut要求には、ステップ1101にて分析アプリ121から受信したグローバルファイル名301を含める。また、Get操作またはPut操作の実行不要を示す情報も含める。
次に、イベント管理部123は、データアクセス部125から、ファイルサーバIPアドレス302およびローカルファイル名303を含むファイルロケーションデータ135を取得する(ステップ1104)。
次に、イベント管理部123は、状態送信部127に移送要求を発行する(ステップ1105)。この移送要求には、Get/Put要求種別の他に、ステップ1104にて取得したファイルサーバIPアドレス302をもとに決定した移送先情報、さらに、ステップ1101で受信したグローバルファイル名301を含む。本移送要求発行後、処理を終了する。
次に、イベント管理部123は、状態送信部127に移送要求を発行する(ステップ1105)。この移送要求には、Get/Put要求種別の他に、ステップ1104にて取得したファイルサーバIPアドレス302をもとに決定した移送先情報、さらに、ステップ1101で受信したグローバルファイル名301を含む。本移送要求発行後、処理を終了する。
一方、ステップ1102において移送要求がない場合、イベント管理部123は、データアクセス部125にGet要求またはPut要求を発行する(ステップ1106)。このGet要求またはPut要求は、ステップ1101で受信したグローバルファイル名301の他に、Get操作またはPut操作の実行要を示す情報を含む。
次に、イベント管理部123は、データアクセス部か125らGet応答またはPut応答を受信する(ステップ1107)。
次に、イベント管理部123は、ステップ1107で受信したGet応答またはPut応答を分析アプリ121に送信し(ステップ1108)、処理を終了する。
次に、イベント管理部123は、データアクセス部か125らGet応答またはPut応答を受信する(ステップ1107)。
次に、イベント管理部123は、ステップ1107で受信したGet応答またはPut応答を分析アプリ121に送信し(ステップ1108)、処理を終了する。
図12は、実施形態に係るイベント管理部のイベント処理完了要求処理を示すフローチャートである。
図12において、イベント管理部123は、分析アプリ121からイベント処理完了通知を受信する(ステップ1201)。
次に、イベント管理部123は、通信管理部122にコミット通知を送信する(ステップ1202)。このコミットは、分析アプリ121のイベント処理の完了の確定を示すことができる。通信管理部122は、コミット通知を受信すると、通信管理ワーク領域134を初期化することができる。
次に、イベント管理部123は、状態送信部127にコミット通知を送信し(ステップ1203)、処理を終了する。
図12において、イベント管理部123は、分析アプリ121からイベント処理完了通知を受信する(ステップ1201)。
次に、イベント管理部123は、通信管理部122にコミット通知を送信する(ステップ1202)。このコミットは、分析アプリ121のイベント処理の完了の確定を示すことができる。通信管理部122は、コミット通知を受信すると、通信管理ワーク領域134を初期化することができる。
次に、イベント管理部123は、状態送信部127にコミット通知を送信し(ステップ1203)、処理を終了する。
図13は、実施形態に係る状態送信部の処理を示すフローチャートである。
図13において、状態送信部127は、イベント管理部123からの移送要求の受信を契機に動作を開始する(ステップ1301)。この移送要求には、Get/Put要求種別、移送先情報およびグローバルファイル名301が含まれる。
次に、状態送信部127は、イベント管理部123、124からのコミット通知の受信を待ち合わせる(ステップ1302)。
図13において、状態送信部127は、イベント管理部123からの移送要求の受信を契機に動作を開始する(ステップ1301)。この移送要求には、Get/Put要求種別、移送先情報およびグローバルファイル名301が含まれる。
次に、状態送信部127は、イベント管理部123、124からのコミット通知の受信を待ち合わせる(ステップ1302)。
次に、状態送信部127は、データ情報復元部128に対するI/O処理を実行し、移送実行に必要な移送情報の転送を行う。本ステップで転送される移送情報には、ステップ1301で受信したGet/Put要求種別、グローバルファイル名301、主メモリ113に格納されているアプリ状態領域131および通信管理状態領域133の状態情報、使用領域リスト602が含まれる。使用領域リスト602を参照することにより、アプリ状態領域131および通信管理状態領域133の主メモリ113上の場所を得ることができる(ステップ1303)。この移送情報の転送を行ったら、処理を終了する。
ここで、状態送信部127がデータ情報復元部128に移送情報を転送する際に、アプリワーク領域132および通信管理ワーク領域134のワーク情報を転送しないようにすることにより、ネットワーク転送にかかる負荷の増大を抑制することができ、プログラムの移送に伴う遅延を低減することができる。
また、イベント管理部123、124からのコミット通知の受信を待ち合わせてから、状態送信部127がデータ情報復元部128に移送情報を転送することにより、中央拠点101から移送されたプログラムの分散拠点102での実行時に、中央拠点101のアプリワーク領域132および通信管理ワーク領域134のワーク情報を不要とすることができる。
さらに、状態送信部127はアプリ状態領域131の状態情報とともに通信管理状態領域133の状態情報をデータ情報復元部128に転送することにより、ネットワーク通信等のOS機能を用いながらコンピューティング処理を行うアプリケーションに適用することができる。
図14は、実施形態に係る状態復元部の処理を示すフローチャートである。
図14において、状態復元部128は、状態送信部127からの移送情報の受信を契機に動作を開始する(ステップ1401)。本移送情報には、Get/Put要求種別、グローバルファイル名301、主メモリ113に格納されているアプリ状態領域131および通信管理状態領域133の状態情報および使用領域リスト602が含まれる。
図14において、状態復元部128は、状態送信部127からの移送情報の受信を契機に動作を開始する(ステップ1401)。本移送情報には、Get/Put要求種別、グローバルファイル名301、主メモリ113に格納されているアプリ状態領域131および通信管理状態領域133の状態情報および使用領域リスト602が含まれる。
次に、状態復元部128は、ステップ1401で受信した使用領域リスト602を主メモリ114にコピーする(ステップ1402)。
次に、状態復元部128は、ステップ1401で受信したアプリ状態領域131および通信管理状態領域133の状態情報を主メモリ114にコピーする。さらに、ステップ1401で受信した使用領域リスト602の情報から、主メモリ114のアプリワーク領域132´および通信管理ワーク領域134´のアドレスを算出し、そのアプリワーク領域132´および通信管理ワーク領域134を初期化する(ステップ1403)。
次に、状態復元部128は、ステップ1401で受信したGet/Put要求種別に応じて、データアクセス部125、126に対してGet要求もしくはPut要求を発行する(ステップ1404)。このGet要求もしくはPut要求には、ステップ1401で受信したグローバルファイル名301が含まれる。さらに、分析対象ファイル136、137に対するGet処理やPut処理の実行要を示す情報が含まれる。
次に、状態復元部128は、データアクセス部125、126からGet応答またはPut応答を受信するのを待ち合わせる(ステップ1405)。
次に、状態復元部128は、ステップ1404で受信したGet応答またはPut応答を分析アプリ121´に通知し(ステップ1406)、処理を終了する。
次に、状態復元部128は、ステップ1404で受信したGet応答またはPut応答を分析アプリ121´に通知し(ステップ1406)、処理を終了する。
図15は、実施形態に係る通信管理部の構成を示すブロック図である。
図15において、通信管理部122には、ソケット管理部1501、TCP/IPプロトコルスタック1502および仮想NIC(Network Interface Card)制御部1503が設けられている。
図15において、通信管理部122には、ソケット管理部1501、TCP/IPプロトコルスタック1502および仮想NIC(Network Interface Card)制御部1503が設けられている。
ソケット管理部1501は、イベント管理部123を介して分析アプリ121からデータ送信要求イベントやデータ受信要求イベントを受信し、TCP/IPプロトコルスタック1502に対する送信要求発行や、TCP/IPプロトコルスタック1502が受信したデータの分析アプリ121への通知を行う。
TCP/IPプロトコルスタック1502は、TCP/IPプロトコルに従ったデータの送受信処理を行う。この送受信処理に必要な状態情報を保持するために、TCP/IPセッション状態領域1511が通信管理状態領域133、133´に確保され、TCP/IP ack状態領域1512が通信管理ワーク領域134、134´に確保される。
仮想NIC制御部1503は、プログラム実行基盤111、112のI/O制御部203、204とデータを送受することで、遠隔拠点にあるプログラム実行装置のプログラム実行基盤111、112との通信ネットワークを介したデータ送受信を行う。
ソケット管理部1501、TCP/IPプロトコルスタック1502、仮想NIC制御部1503およびI/O制御部203、204の間でデータの送受信を行うため、ソケット送信バッファ領域1513、ソケット受信バッファ領域1514、仮想NIC制御部送信バッファ領域1515、仮想NIC制御部受信バッファ領域1516、I/O制御部送信バッファ領域1517、I/O制御部受信バッファ領域1518が通信管理ワーク領域134、134´に確保される。
ここで、TCP/IP ack状態領域1512、ソケット送信バッファ領域1513、ソケット受信バッファ領域1514、仮想NIC制御部送信バッファ領域1515、仮想NIC制御部受信バッファ領域1516、I/O制御部送信バッファ領域1517、I/O制御部受信バッファ領域1518を通信管理ワーク領域134、134´に確保することにより、コミット通知の受信後にこれらの領域に格納されたデータを削除することが可能となり、通信管理部122の移送の際に転送するデータ量を削減することができる。
また、TCP/IPセッション状態領域1511のみを通信管理状態領域133、133´に確保し、プログラムの移送時にTCP/IPセッション状態領域1511が通信管理状態領域133、133´に保持されたままにすることにより、中央拠点101と分散拠点102との間で通信を確立することが可能となる。
図16は、実施形態に係るTCP/IPセッション状態情報のデータ構造を示す図である。
図16において、TCP/IPセッション状態領域1511に格納されるTCP/IPセッション状態情報はソケットごとにエントリが存在するテーブル構造を持つ。各エントリには、ソケットID1601、当該ソケットのコネクション情報を格納するローカルIPアドレス1602、ローカルポート番号1603、リモートIPアドレス1604、リモートポート番号1605の他に、TCP/IPパケットに付与されるシーケンス番号を格納する送信シーケンス番号1606、受信シーケンス番号1607を格納するフィールドが存在する。
図16において、TCP/IPセッション状態領域1511に格納されるTCP/IPセッション状態情報はソケットごとにエントリが存在するテーブル構造を持つ。各エントリには、ソケットID1601、当該ソケットのコネクション情報を格納するローカルIPアドレス1602、ローカルポート番号1603、リモートIPアドレス1604、リモートポート番号1605の他に、TCP/IPパケットに付与されるシーケンス番号を格納する送信シーケンス番号1606、受信シーケンス番号1607を格納するフィールドが存在する。
中央拠点101のプログラムの移送先が分散拠点102である場合、ローカルIPアドレス1602およびローカルポート番号1603は中央拠点101に割り当て、リモートIPアドレス1604およびリモートポート番号1605は分散拠点102に割り当てることができる。ローカルIPアドレス1602、ローカルポート番号1603、リモートIPアドレス1604およびリモートポート番号1605を用いることで、中央拠点101と分散拠点102との間で移送の通信を行うことができる。
送信シーケンス番号1606および受信シーケンス番号1607は、データ通信に失敗した時やデータの欠落があった場合などの再送用に用いることができる。
図17は、実施形態に係るTCP/IP ack状態情報のデータ構造を示す図である。
図17において、TCP/IP ack状態領域1512に格納されるTCP/IP ack状態情報はソケットごとにエントリが存在するテーブル構造を持つ。各エントリには、ソケットID1701の他に、ack済み番号1702を格納するフィールドが存在する。ack済み番号1702は、送信データに対して受信されたackのシーケンス番号を管理する。
図17において、TCP/IP ack状態領域1512に格納されるTCP/IP ack状態情報はソケットごとにエントリが存在するテーブル構造を持つ。各エントリには、ソケットID1701の他に、ack済み番号1702を格納するフィールドが存在する。ack済み番号1702は、送信データに対して受信されたackのシーケンス番号を管理する。
図18は、実施形態に係るデータ送信要求イベント受信時の通信管理部の処理を示すフローチャートである。
図18において、イベント管理部123、124は、分析アプリ121からの通信管理部宛データ送信要求イベントのイベント送信要求を受信する(ステップ1801)。本イベントには、イベント種別812としてデータ送信要求イベントを識別する情報が存在し、イベント情報813としてソケットID1601や送信データを指定する情報が存在する。
図18において、イベント管理部123、124は、分析アプリ121からの通信管理部宛データ送信要求イベントのイベント送信要求を受信する(ステップ1801)。本イベントには、イベント種別812としてデータ送信要求イベントを識別する情報が存在し、イベント情報813としてソケットID1601や送信データを指定する情報が存在する。
次に、通信管理部122は、イベント受信要求をイベント管理部123、124に送信する(ステップ1802)。このイベント受信要求は、イベント管理部123、124からackを受信するための予約である。このイベント受信要求は、ステップ1806の後に実行してもよいし、ステップ1807の後に実行してもよい。
次に、ソケット管理部1501は、イベント管理部123、124からステップ1801で送信されたデータ送信要求イベントを受信する(ステップ1803)。この際、イベント情報813としてステップ1801にてあわせて送信されたソケットID1601や送信データを指定する情報も受信する。
次に、ソケット管理部1501は、ステップ1803で受信したソケットID1601および送信データをソケット送信バッファ領域1513に格納し、TCP/IPプロトコルスタック1502に送信要求を発行する(ステップ1804)。
次に、TCP/IPプロトコルスタック1502は、ソケット送信バッファ領域1513に格納された送信データの送信処理を行う(ステップ1805)。この時、ソケット送信バッファ領域1513に格納されているソケットID1601に合致するTCP/IPセッション状態情報のエントリを検索し、そのエントリに対応するローカルIPアドレス1602、ローカルポート番号1603、リモートIPアドレス1604、リモートポート番号1605および送信シーケンス番号1606をTCP/IPヘッダとして送信データに付与する。そして、当該送信データを仮想NIC制御部送信バッファ領域1515に格納する。また、そのエントリの送信シーケンス番号1606を更新し、連続した送信シーケンス番号が次の送信データに付与されるよう制御する。さらに、仮想NIC制御部1503に送信要求を発行する。
次に、仮想NIC制御部1503は、仮想NIC制御部送信バッファ領域1515に格納されているデータをI/O制御部送信バッファ領域1517に移動する。そして、I/O制御部203、204に対して送信要求を発行する(ステップ1806)。
次に、I/O制御部203、204は、I/O制御部送信バッファ領域1517内のデータをリモートIPアドレス1604で指定されたプログラム実行基盤111、112に送信する。さらに、I/O制御部送信バッファ領域1517内のデータを削除する(ステップ1807)。
次に、I/O制御部203、204は、遠隔のプログラム実行基盤111、112からackデータを受信する。そして、仮想NIC時制御部1503に対してackデータ受信通知を発行する(ステップ1808)。
次に、仮想NIC制御部1503は、TCP/IPプロトコルスタック1502に対してackデータ受信通知を発行する(ステップ1809)。
次に、TCP/IPプロトコルスタック1502は、TCP ack状態情報に対応するエントリのack済み番号を、TCP/IPセッション状態情報の対応するエントリの送信シーケンス番号1606の値に更新する。そして、ソケット送信バッファ領域1513に格納していた送信データを削除する(ステップ1810)。
図19は、実施形態に係るデータ受信要求イベント受信時の通信管理部の処理を示すフローチャートである。
図19において、I/O制御部203、204は、遠隔のプログラム実行基盤111、112からデータを受信し、I/O制御部受信バッファ領域1518に受信データを格納する。そして、仮想NIC制御部1503に受信通知を発行する(ステップ1901)。
図19において、I/O制御部203、204は、遠隔のプログラム実行基盤111、112からデータを受信し、I/O制御部受信バッファ領域1518に受信データを格納する。そして、仮想NIC制御部1503に受信通知を発行する(ステップ1901)。
次に、仮想NIC制御部1503は、I/O制御部受信バッファ領域1518内のデータを仮想NIC制御部受信バッファ領域1516に移動し、TCP/IPプロトコルスタック1502に対して受信通知を発行する(ステップ1902)。
次に、TCP/IPプロトコルスタック1502は、仮想NIC制御部受信バッファ領域1516のデータをソケット受信バッファ領域1514に移動する。そして、ソケット管理部1501に受信通知を発行する。さらに、仮想NIC制御部受信バッファ領域1516に格納されているデータに付与されているローカルIPアドレス1602、ローカルポート番号1603、リモートIPアドレス1604およびリモートポート番号1605に対応するTCP/IPセッション状態情報のエントリを検索し、そのエントリに対応するソケットID1601および受信シーケンス番号1607の値を取得する。ソケットID1601の値はソケット受信バッファ領域1514に受信データとあわせて格納する。また、受信シーケンス番号1607と、仮想NIC制御部受信バッファ領域1516に格納されているデータに付与されている送信シーケンス番号1606が一致することを検査し、遠隔のプログラム実行基盤111、112から欠落や順番の入れ替えなくデータが到達していることを確認する。そして、ackデータ送信要求を仮想NIC制御部1503経由でI/O制御部203、204に発行し、遠隔のプログラム実行基111、112盤にackデータを送信する(ステップ1903)。この送信の後、TCP/IPセッション状態情報の受信シーケンス番号1607を更新し、次の受信データに対するackデータ送信も正しく行えるよう制御する。
次に、イベント管理部123、124は、分析アプリ121からの通信管理部宛データ受信要求イベントを受信する(ステップ1904)。このイベントには、イベント種別812としてデータ送信要求イベントを識別する情報が存在し、イベント情報813としてソケットID1601や受信バッファアドレスを指定する情報が存在する。
次に、通信管理部122は、イベント受信要求をイベント管理部123、124に送信する(ステップ1905)。
次に、通信管理部122は、イベント受信要求をイベント管理部123、124に送信する(ステップ1905)。
次に、ソケット管理部1501は、イベント管理部123、124からステップ1801で送信されたデータ受信要求イベントを受信する(ステップ1906)。この際、イベント情報813としてステップ1904にてあわせて送信されたソケットID1601や受信バッファアドレスを指定する情報も受信する。
次に、ソケット管理部1501は、ステップ1906で受信したソケットID1601に対応するソケット受信バッファ領域1514内のデータを、ステップ1906で受信した受信バッファアドレスで指定される領域に移動し、ソケット受信バッファ領域1514に格納していたデータを削除し(ステップ1907)、処理を完了する。
次に、ソケット管理部1501は、ステップ1906で受信したソケットID1601に対応するソケット受信バッファ領域1514内のデータを、ステップ1906で受信した受信バッファアドレスで指定される領域に移動し、ソケット受信バッファ領域1514に格納していたデータを削除し(ステップ1907)、処理を完了する。
図20は、実施形態に係るコミット通知受信時の通信管理部の処理を示すフローチャートである。
図20において、ソケット管理部1501は、イベント管理部123、124からのコミット通知を受信する(ステップ2001)。
次に、ソケット管理部1501は、ソケット送信バッファ領域1513内のデータが空になるまで待ち合わせる(ステップ2002)。この時、ステップ1801からステップ1811で示される実行中の分析アプリ121からのデータ送信要求イベント処理が完全に処理し終わるまで待ち合わせることができる。
図20において、ソケット管理部1501は、イベント管理部123、124からのコミット通知を受信する(ステップ2001)。
次に、ソケット管理部1501は、ソケット送信バッファ領域1513内のデータが空になるまで待ち合わせる(ステップ2002)。この時、ステップ1801からステップ1811で示される実行中の分析アプリ121からのデータ送信要求イベント処理が完全に処理し終わるまで待ち合わせることができる。
次に、ソケット管理部1501は、ソケット受信バッファ領域(1514)内のデータが空になるまで待ち合わせる(ステップ2003)。この時、ステップ1901からステップ1908で示される実行中の分析アプリ121からのデータ受信要求イベント処理が完全に処理し終わるまで待ち合わせることができる。この待ち合わせが完了すれば、コミット通知受信時の処理が完了する。そして、この待ち合わせの完了後にプログラムを移送することができる。
101…中央拠点、102…分散拠点、103、104…プログラム実行装置、111、112…プログラム実行基盤、113、114…主メモリ、121…分析アプリ、122…通信管理部、123、125…イベント管理部、123a…メモリ領域確保部、123b…移送待機部、124、126…データアクセス部、127…状態送信部、128…状態復元部、131…アプリ状態領域、132…アプリワーク領域、133…通信管理状態領域、134…通信管理ワーク領域
Claims (15)
- プログラムからの移送要求の受信時に前記プログラム実行中の状態に基づいて、前記プログラムの移送タイミングを設定するイベント管理部と、
前記イベント管理部にて設定された移送タイミングに基づいて前記プログラムの状態情報を移送する状態送信部とを備えるプログラム実行装置。 - 前記イベント管理部は、
前記プログラムの実行に用いられる状態領域とワーク領域とをメモリに確保するメモリ領域確保部と、
前記プログラムによる現在実行中のイベント処理の完了まで前記プログラムの移送を待機させる移送待機部とを備え、
前記状態送信部は、前記イベント処理の完了通知に基づいて、前記状態領域に保持された状態情報を移送する請求項1に記載のプログラム実行装置。 - 前記プログラムによる現在実行中のイベント処理の完了後に、前記ワーク領域が初期化され、前記状態送信部は、前記ワーク態領域に保持されたワーク情報は移送しない請求項2に記載のプログラム実行装置。
- 前記プログラムからのデータ送信要求に基づいてデータ送信処理を実行するデータ送信処理部と、
前記プログラムからのデータ受信要求に基づいてデータ受信処理を実行するデータ受信処理部と、
前記データ送信処理および前記データ受信処理を管理する通信管理部とをさらに備え、
前記通信管理部は、
前記データ送信処理部および前記データ受信処理部にて参照されるセッション情報格納領域を前記状態領域に配置し、
前記データ送信処理部および前記データ受信処理部にて参照または更新されるバッファ領域を前記ワーク領域に配置し、
前記イベント処理の完了通知に基づいて、前記バッファ領域が空になるまで前記プログラムの移送を待機させる請求項2または3に記載のプログラム実行装置。 - 前記通信管理部は、
アプリケーションごとに設けられ、前記プログラムの移送先のプログラム実行基盤とデータ送受信を行う仮想NIC制御部を備える請求項4に記載のプログラム実行装置。 - 前記プログラムはアプリケーションとオペレーティングシステムとを備え、
前記メモリ領域確保部は、前記アプリケーションの実行に用いられるアプリ状態領域とアプリワーク領域とを前記メモリに確保するとともに、前記オペレーティングシステムの実行に用いられる通信管理状態領域と通信管理ワーク領域とを前記メモリに確保し、
前記状態送信部は、前記イベント処理の完了通知に基づいて、前記アプリ状態領域に保持されたアプリ状態情報、前記通信管理状態領域に保持された通信管理状態情報、前記アプリ状態領域のアドレス情報および前記通信管理状態領域のアドレス情報を移送する請求項2から5のいずれか1項に記載のプログラム実行装置。 - 前記通信管理状態領域にはTCP/IPセッション状態が記憶され、
前記通信管理ワーク領域にはバッファ領域が確保され、
前記オペレーティングシステムは、前記アプリケーションのイベント処理の完了を示すコミット通知の受信後に前記バッファ領域を初期化する請求項6に記載のプログラム実行装置。 - 前記アプリケーションが前記プログラムの状態情報の移送先を指定する請求項6または7に記載のプログラム実行装置。
- 前記プログラムからの要求に基づいて、前記プログラムで実行されるデータを保持するファイルサーバのIPアドレスを検出するデータアクセス部を備え、
前記状態送信部は、前記IPアドレスに基づいて決定される移送先に前記プログラムの状態情報を移送する請求項1から8のいずれか1項に記載のプログラム実行装置。 - 前記データアクセス部は、前記プログラムからのファイルGet要求またはファイルPut要求に基づいて前記IPアドレスを検出する請求項9に記載のプログラム実行装置。
- 前記状態送信部から移送された前記プログラムの状態情報に基づいて前記プログラムの状態を復元し、前記プログラムの実行を引き継ぐ状態復元部をさらに備える請求項1から10のいずれか1項に記載のプログラム実行装置。
- 第1プログラム実行基盤が設けられた第1拠点と第2プログラム実行基盤が設けられた第2拠点との間でプログラムを移送させて前記プログラムを実行するプログラム実行方法であって、
前記第1拠点のプログラムからの移送要求の受信時に前記プログラム実行中の状態に基づいて、前記第1拠点から前記第2拠点への前記プログラムの移送タイミングを設定し、、
前記プログラムの移送タイミングに基づいて前記プログラムの状態情報を前記第1拠点から前記第2拠点に移送するプログラム実行方法。 - 前記プログラムの実行に用いられる状態領域とワーク領域とを前記第1拠点のメモリに確保し、
前記プログラムによる現在実行中のイベント処理の完了まで前記プログラムの移送を待機させ、
前記イベント処理の完了通知に基づいて、前記状態領域に保持された状態情報を前記第1拠点から前記第2拠点に移送する請求項12に記載のプログラム実行方法。 - 前記プログラムからのデータ送信要求に基づいてデータ送信処理を実行し、
前記プログラムからのデータ受信要求に基づいてデータ受信処理を実行し、
前記データ送信処理および前記データ受信処理にて参照されるセッション情報格納領域を前記状態領域に配置し、
前記データ送信処理および前記データ受信処理にて参照または更新されるバッファ領域を前記ワーク領域に配置し、
前記イベント処理の完了通知に基づいて、前記バッファ領域が空になるまで前記プログラムの移送を待機させる請求項13に記載のプログラム実行方法。 - 前記第1拠点のプログラムからの要求に基づいて、前記プログラムで実行されるデータを保持する前記第2拠点のファイルサーバのIPアドレスを検出し、
前記IPアドレスに基づいて決定される前記第2拠点に前記プログラムの状態情報を移送する請求項12から14のいずれか1項に記載のプログラム実行方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017194511A JP2019067301A (ja) | 2017-10-04 | 2017-10-04 | プログラム実行装置およびプログラム実行方法 |
US15/927,355 US10761883B2 (en) | 2017-10-04 | 2018-03-21 | Program executing apparatus and program execution method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017194511A JP2019067301A (ja) | 2017-10-04 | 2017-10-04 | プログラム実行装置およびプログラム実行方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019067301A true JP2019067301A (ja) | 2019-04-25 |
Family
ID=65896655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017194511A Pending JP2019067301A (ja) | 2017-10-04 | 2017-10-04 | プログラム実行装置およびプログラム実行方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10761883B2 (ja) |
JP (1) | JP2019067301A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102521873B1 (ko) * | 2021-07-30 | 2023-04-13 | 소프트기어 가부시키가이샤 | 정보 처리 프로그램, 정보 처리 장치, 및 정보 처리 방법 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8756602B2 (en) * | 2010-11-14 | 2014-06-17 | Brocade Communications Systems, Inc. | Virtual machine and application migration over local and wide area networks without timeout |
WO2013002777A1 (en) | 2011-06-29 | 2013-01-03 | Hewlett-Packard Development Company, L.P. | Application migration with dynamic operating system containers |
US9507630B2 (en) | 2012-02-09 | 2016-11-29 | Cisco Technology, Inc. | Application context transfer for distributed computing resources |
JP5658197B2 (ja) * | 2012-06-04 | 2015-01-21 | 株式会社日立製作所 | 計算機システム、仮想化機構、及び計算機システムの制御方法 |
-
2017
- 2017-10-04 JP JP2017194511A patent/JP2019067301A/ja active Pending
-
2018
- 2018-03-21 US US15/927,355 patent/US10761883B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US10761883B2 (en) | 2020-09-01 |
US20190102219A1 (en) | 2019-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11010240B2 (en) | Tracking status and restarting distributed replication | |
US20200348852A1 (en) | Distributed object replication architecture | |
US11349915B2 (en) | Distributed replication and deduplication of an object from a source site to a destination site | |
CN110177118B (zh) | 一种基于rdma的rpc通信方法 | |
JP3382953B2 (ja) | 有限メモリコンピュータシステム上におけるクライアント管理フロー制御方法及び装置 | |
US9794196B2 (en) | Application-controlled network packet classification | |
EP1498822B1 (en) | State migration in multiple NIC RDMA enabled devices | |
US9888048B1 (en) | Supporting millions of parallel light weight data streams in a distributed system | |
JP6963168B2 (ja) | 情報処理装置、メモリ制御方法およびメモリ制御プログラム | |
US8713186B2 (en) | Server-side connection resource pooling | |
US9854045B2 (en) | Generic cloud enabling of stateful applications | |
US10764364B2 (en) | Live migration of partitions | |
CN111400307B (zh) | 支持远程并发访问的持久哈希表访问系统 | |
US8156177B2 (en) | Fail-safe system for managing of client-server communication | |
US10620871B1 (en) | Storage scheme for a distributed storage system | |
US10212259B2 (en) | Management of transmission control blocks (TCBs) supporting TCP connection requests in multiprocessing environments | |
US20170357682A1 (en) | Method and apparatus for information management | |
US10154079B2 (en) | Pre-boot file transfer system | |
CN113411363A (zh) | 一种镜像文件的上传方法、相关设备及计算机存储介质 | |
US20120197961A1 (en) | Method and system for information exchange utilizing an asynchronous persistent store protocol | |
US20090157896A1 (en) | Tcp offload engine apparatus and method for system call processing for static file transmission | |
JP2019067301A (ja) | プログラム実行装置およびプログラム実行方法 | |
US8442939B2 (en) | File sharing method, computer system, and job scheduler | |
US10749957B2 (en) | Method and apparatus for information management | |
CN111901689A (zh) | 流媒体数据的传输方法、装置、终端设备和存储介质 |