JP6369286B2 - プロセス間通信プログラム、解放要求方法、および並列演算装置 - Google Patents

プロセス間通信プログラム、解放要求方法、および並列演算装置 Download PDF

Info

Publication number
JP6369286B2
JP6369286B2 JP2014215884A JP2014215884A JP6369286B2 JP 6369286 B2 JP6369286 B2 JP 6369286B2 JP 2014215884 A JP2014215884 A JP 2014215884A JP 2014215884 A JP2014215884 A JP 2014215884A JP 6369286 B2 JP6369286 B2 JP 6369286B2
Authority
JP
Japan
Prior art keywords
release
release request
communication
management information
stag
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
JP2014215884A
Other languages
English (en)
Other versions
JP2016085494A (ja
Inventor
井原 宣孝
宣孝 井原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2014215884A priority Critical patent/JP6369286B2/ja
Priority to EP15186021.0A priority patent/EP3012740A1/en
Priority to US14/867,034 priority patent/US10078446B2/en
Publication of JP2016085494A publication Critical patent/JP2016085494A/ja
Application granted granted Critical
Publication of JP6369286B2 publication Critical patent/JP6369286B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、プロセス間通信プログラム、解放要求方法、および並列演算装置に関する。
HPC(High Performance Computing)などにおける並列プログラムでは、プロセス間でデータの送受信が頻繁に行われる。プロセス間でデータを送受信するには、ユーザによる送受信用のデータ領域が確保される。更にMPI(Message Passing Interface)などの通信ライブラリが内部で使用するためのバッファ領域が確保される。プロセス間通信では、確保した領域の先頭アドレスと先頭アドレスからのオフセットを指定して、データの送受信が行われる。
プロセス間通信のためにユーザ空間に確保されたメモリ領域(送受信領域)は、OS(Operating System)で管理される。OSは、プロセス間通信のための送受信用のバッファの管理のため、例えばその確保されたメモリ領域と一対一に対応するステアリングと呼ばれる管理表を用いる。OSのネットワークインターフェース(NI)ドライバは、ステアリングとそれにつけられたステアリングのタグ(STag)によってユーザの使用する送受信領域を特定する。
ステアリングおよびSTagはユーザ空間で送受信用のバッファの獲得を行った際に、OSが管理するカーネル空間内のメモリ領域に格納される。そしてOSは、バッファを解放した場合、ステアリングおよびSTagの登録を解除し、ステアリングおよびSTagが格納されていた記憶領域を再利用できるようする。
なおホストメモリ間通信に関して、通信の効率化に関するいくつかの技術が考えられている。例えば、通信回線への無駄なトラヒックの流入の抑制と、データ受信側コンピュータ装置のマイクロプロセッサの負荷抑制を行う技術がある。また、RNIC(Remote direct memory access enabled Network Interface Controller)による効率的iSCSI(Internet Small Computer System Interface)オフロード・インプリメンテーションに関する技術もある。
特開2007−304786号公報 特表2008−529109号公報
従来、プロセス間通信の送受信用のバッファが解放されると、1つずつ、ステアリングおよびSTagの登録解除が行われる。しかし、バッファの解放のたびにSTagの登録解除処理が発生することによってオーバーヘッドが増えてしまうという問題がある。しかも、使用頻度の高いステアリングおよびSTagを再利用しようとする場合は、再登録のオーバーヘッドも加算されてしまう。例えば、STagの登録解除を行う場合、システムコールとハードアクセスで一回あたり4〜5μ秒のオーバーヘッドがかかる。それに対し、簡単なプロセス間通信であれば、一対一通信が実行される時間は1μ秒程度である。そうするとプロセス間通信を行うために実行されるSTagの登録解除のコストが、プロセス間通信のコストに比べ約4〜5倍もかかってしまう。その結果、プロセス間通信を伴う処理全体の効率が低下する。
1つの側面では、本発明は、プロセス間通信を伴う処理の効率化を図ることを目的とする。
1つの案では、コンピュータに、以下の処理を実行させるプロセス間通信プログラムが提供される。プロセス間通信プログラムに基づいて、コンピュータは、プロセス間通信対象のデータを格納するバッファの管理情報を記憶する記憶領域の解放を要求する第1解放要求が出力されるごとに、第1解放要求を蓄積する。次にコンピュータは、蓄積された第1解放要求の数が閾値に達すると、蓄積された第1解放要求のうちの少なくとも一部を、実行対象の第1解放要求として選択する。そしてコンピュータは、実行対象の第1解放要求に示されている管理情報の記憶領域の解放をまとめて要求する第2解放要求を出力する。
1態様によれば、プロセス間通信を伴う処理の効率化を図ることができる。
第1の実施の形態に係る並列演算装置の例を示す図である。 第2の実施の形態のシステム構成例を示す図である。 第2の実施の形態に用いるノードのハードウェアの一構成例を示す図である。 プロセス間通信のための通信機能を示す図である。 プロセス間通信の様子を示す図である。 ステアリングとSTagの例を示す図である。 STagを用いたプロセス間通信の例を示す図である。 STagの一斉解放の管理を行うために通信管理部が保持する情報を示す図である。 STag問い合わせ処理の手順の一例を示すフローチャートである。 STagの登録解除処理手順の第1の例を示すフローチャートである。 STagの登録解除処理手順の第2の例を示すフローチャートである。
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
第1の実施の形態は、並列演算装置において、プロセス間通信のために確保されたバッファの管理情報のメモリ領域からの解放要求を効率的に行うものである。
図1は、第1の実施の形態に係る並列演算装置の例を示す図である。並列演算装置10は、記憶部11と演算部12とを有する。記憶部11は、例えばメモリである。演算部12は、例えば1または複数のプロセッサである。演算部12は、複数のプロセス13a,13b,13c,・・・、プロセス間通信管理部16、およびOS17を含む。複数のプロセス13a,13b,13c,・・・、プロセス間通信管理部16、およびOS17は、例えばプログラムモジュールを演算部12で実行することにより実現される。
並列演算装置10は、複数のプロセス13a,13b,13c,・・・により、並列演算を行う。複数のプロセス13a,13b,13c,・・・は、プロセス間通信管理部16を介して、互いに通信することができる。プロセス間通信管理部16は、プロセス間通信に関するOS17への処理要求を管理する。プロセス間通信は、他の装置内のプロセスとの間でも行うことができる。
プロセス間通信を行う場合、複数のプロセス13a,13b,13c,・・・それぞれについて、通信用のバッファ14a,14b,14c,・・・が記憶部11のユーザ空間内に確保される。通信用のバッファ14a,14b,14c,・・・は、通信相手ごとに確保される。また通信用のバッファ14a,14b,14c,・・・は、送信用のバッファと受信用のバッファとが別に確保される。
バッファ14a,14b,14c,・・・それぞれに対応付けて、記憶部11のカーネル空間内に設けられた管理情報記憶領域18に、管理情報18a,18b,18c,・・・が格納される。管理情報18a,18b,18c,・・・には、対応するバッファが格納された記憶領域のアドレスなどの情報が設定されている。カーネル空間で動作するOS17は、管理情報18a,18b,18c,・・・により、プロセス間通信の際の送信元のデータの格納場所や、送信先のデータの格納場所を認識する。また、管理情報18a,18b,18c,・・・には、識別子19a,19b,19c,・・・が付与されている。
例えばプロセス13aがプロセス間通信を行う際には、通信相手に対応して確保した送信用のバッファにデータを格納する。そしてプロセス13aは、データの送信をOS17に依頼する。その際、管理情報の識別子を指定することで、送信元のデータを格納したバッファや、データの送信先となるバッファが指定される。OS17は、例えばRDMA(Remote Direct Memory Access)により、送信先のプロセスが確保した受信用のバッファ内に、データを格納する。プロセス間通信が終了すると、プロセス13aは、使用したバッファの管理情報の解放を要求する第1解放要求1を出力する。第1解放要求1には、例えば管理情報の識別子が1つだけ含まれる。
ここで、複数のプロセス13a,13b,13c,・・・それぞれが第1解放要求1を出力するごとに、その第1解放要求1をOS17に送信してしまうと、OS17への解放要求の頻度が高くなる。その結果、プロセス間通信を伴う処理全体の処理効率が低下する。
そこで第1の実施の形態では、プロセス間通信管理部16が、第1解放要求1が出力されるごとに、第1解放要求1を、記憶部11のユーザ空間内に設けられた解放候補リスト15に蓄積する。解放候補リスト15には、例えば、出力された時期が古い方から順に、第1解放要求1が並べて格納される。なお同一の管理情報に関する第1解放要求が複数出力された場合、最後に出力された第1解放要求のみを蓄積する。プロセス間通信管理部16は、蓄積された第1解放要求の数が閾値n(nは1以上の整数)に達すると、蓄積された第1解放要求のうちの少なくとも一部を、実行対象の第1解放要求として選択する。例えばプロセス間通信管理部16は、出力時期が古い方から所定数k(kは1以上、n以下の整数)の第1解放要求の中から、実行対象の第1解放要求を選択する。なおプロセス間通信管理部16は、管理情報を再利用しているか否かを管理することもできる。管理情報の再利用の有無を管理している場合、プロセス間通信管理部16は、現在再利用されていない管理情報の記憶領域の解放を要求する第1解放要求を、実行対象の第1解放要求として選択することができる。
またプロセス間通信管理部16は、管理情報記憶領域18内の空き領域が枯渇しそうなことを検知した場合にも、実行対象の第1解放要求を選択し、第2解放要求2を出力してもよい。管理情報記憶領域18内の空き領域が枯渇しそうな場合とは、例えば管理情報記憶領域18内の空き領域が所定値以下になった場合である。
実行対象の第1解放要求を選択すると、プロセス間通信管理部16は、実行対象の第1解放要求に示されている管理情報の記憶領域の解放をまとめて要求する第2解放要求2を、OS17に対して出力する。第2解放要求2には、例えば管理情報の識別子が複数含まれる。
OS17は、第2解放要求2に基づいて、管理情報が記憶された記憶領域を解放する。例えばOS17が管理情報に対する識別子の登録を解除すると、管理情報が記憶された記憶領域が解放される。
なお、上記の閾値nは、解放処理にかかる時間の影響が少なくなるように最適に調整されているものとする。閾値nが小さすぎると、第2解放要求の出力頻度が高くなり、解放処理の効率化の効果が薄れてしまう。また閾値nが大きすぎると、解放候補リスト15に登録される解放候補が多くなり、解放候補リスト15内の解放候補の管理のための負荷が大きくなる。例えば、管理情報の再利用の有無の管理負荷や、同じ管理情報に関する解放要求が既に登録されているかどうかの判断処理の負荷が大きくなる。そこで解放候補の管理負荷が過大とならない範囲のできるだけ大きな値が、閾値nに設定される。
このように第1の実施の形態では、プロセス13a,13b,13cから第1解放要求1が出力された場合、その第1解放要求1が順番に解放候補リスト15に、解放候補として登録される。そして、解放候補である第1解放要求は、解放処理にかかる時間の影響が少なくなるように最適に調整された個数(閾値n)になるまで保持される。解放候補の第1解放要求の数が閾値nに達すると、古い方から一定の範囲内の、再利用されていない管理情報の第1解放要求が実行対象として選択される。そして選択された第1解放要求に示されるすべての管理情報の解放をまとめて要求する第2解放要求2がOS17に対して出力される。するとOS17により、第2解放要求2に示された管理情報の記憶領域が解放される。解放された記憶領域は、空き領域となる。なお、管理情報記憶領域18内の空き領域の枯渇が発生しそうな場合は、解放候補として蓄積された第1解放要求1の数が閾値nに達していなくても、第2解放要求2による解放処理が行われる。
これにより、OS17に対して管理情報の解放を要求する頻度が低くなり、プロセス間通信に伴って発生するオーバーヘッドが抑制される。しかも、再利用されている管理情報に対する第1解放要求1は、実行対象から除外されるため、再利用されている管理情報が、利用中に解放されてしまうことを回避できる。また、出力時期が古い方から所定数の範囲内の第1解放要求を実行対象とすることで、出力時期が新しい第1解放要求は、実行対象から除外される。その結果、短時間で繰り返し使用されるような使用頻度の高い管理情報については解放せずにすみ、使用頻度の高い管理情報について、再利用のたびに新たに管理情報を再設定するような事態の発生を抑止できる。
なお、図1に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
〔第2の実施の形態〕
次に、第2の実施の形態について説明する。第2の実施の形態は、OSによる送受信領域の管理情報としてステアリングを用い、複数のノード間の集団通信を行う例である。
図2は、第2の実施の形態のシステム構成例を示す図である。図2に示すように、複数のノード100,200,300,400がNS(ネットワークスイッチ)20を介して接続されている。また複数のノード100,200,300,400は、バリア同期用ネットワーク21でも接続されている。バリア同期用ネットワーク21は、プロセス間のバリア同期用の通信の送受信に用いられる。バリア同期とは、並列で処理を実行するプロセスについて、処理がある箇所まで来ると、他のプロセスが所定の箇所(バリア)に到達するまで、処理を止めておく同期処理である。
図3は、第2の実施の形態に用いるノードのハードウェアの一構成例を示す図である。ノード100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、ノード100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に必要な各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
バス109に接続されている周辺機器としては、HDD(Hard Disk Drive)103、BI(バリアインタフェース)104、光学ドライブ装置106、機器接続インタフェース107およびNI(ネットワークインターフェース)108がある。
HDD103は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、ノード100の補助記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置を使用することもできる。
BI(バリアインタフェース)104は、バリア同期用ネットワーク21を介して、他のノード200,300,400との間でバリア同期用の通信を行う。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース107は、ノード100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
NI108は、NS20に接続されている。NI108は、NS20を介して、他のノード200,300,400との間でデータの送受信を行う。
以上のようなハードウェア構成によって、第2の実施の形態のノード100の処理機能を実現することができる。他のノード200,300,400も、図3に示したノード100と同様のハードウェアにより実現することができる。また、第1の実施の形態に示した並列演算装置10も、図3に示したノード100と同様のハードウェアにより実現することができる。
ノード100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。ノード100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、ノード100に実行させるプログラムをHDD103に格納しておくことができる。プロセッサ101は、HDD103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またノード100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、HDD103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
以上のようなシステムにより、複数のノード100,200,300,400を用いた並列処理が実行される。並列処理では、各ノードのプロセス間での通信が発生する。
図4は、プロセス間通信のための通信機能を示す図である。ノード100は、MPI110、通信管理部120、NIドライバ130、およびNI108を用いて、プロセス間通信を実現する。MPI110、通信管理部120、NIドライバ130、およびNI108は階層構造となっており、要求や情報のやり取りは隣接する階層間で行われる。
MPI110は、並列処理における高度なプロセス間通信環境を提供する通信インタフェースである。MPI110は、通信管理部120とNIドライバ130とを介してNI108を使用する。MPI110は、例えばMPIライブラリを、ユーザのアプリケーションを実行するプロセスが呼び出すことで使用できる。例えばジョブが実行されると各ノードでMPI110を利用したプロセスが立ち上がり、各プロセスはプロセス間通信を行うため、メモリ領域に通信用のバッファを獲得する。
通信管理部120は、MPI110を用いた通信要求の受け渡しを、OS内のNIドライバ130との間で行う。通信管理部120は、例えば低レベル通信ライブラリを呼び出すことで利用できる。MPI110と通信管理部120とは、ユーザ空間で動作する。ユーザ空間は、アプリケーションなどが動作するメモリ空間である。なお通信管理部120は、図1に示した第1の実施の形態におけるプロセス間通信管理部16の一例である。
NIドライバ130は、NI108を制御する。NI108は、NIドライバ130からの指示に応じて、他のノードとの間のデータ通信を行う。NIドライバ130は、カーネル空間で動作する。カーネル空間は、OSが使用するメモリ空間である。例えばNIドライバ130は、MPI110を利用したプロセスが通信用のバッファが獲得したとき、そのバッファに一意に対応するステアリングをカーネル空間内に用意する。
図4には、ノード100の通信機能を示しているが、他のノード200,300,400もノード100と同様の通信機能を備えている。
次に、プロセス間通信について具体的に説明する。並列ジョブのプロセス間通信はノード間の1対1データ通信が元になっている。集団通信は、1対1データ通信の組み合わせとなる。ノード間の1対1データ通信では、送信元のノードのメモリ領域にある送信バッファに書かれたデータが、NI108とNS20を介して受信ノードのメモリ領域にある受信バッファに書き込まれる。
図5は、プロセス間通信の様子を示す図である。送信プロセス40は、ユーザ空間内に送信バッファ41として使用するメモリ領域を確保する。受信プロセス50は、ユーザ空間内に受信バッファ51として使用するメモリ領域を確保する。メモリ領域の確保は、例えばC言語用に用意された関数のmallocによって行うことができる。
送信プロセス40は、受信プロセス50に送信する送信データ42を、送信バッファ41内に格納する。そして、送信プロセス40は、送信データ42を受信バッファ51内に送信する。データ転送時には、送信プロセス40は、送信バッファ41の先頭のアドレスと、送信データ42までのオフセットにより、送信データ42を指定する。また送信プロセス40は、受信バッファ51の先頭のアドレスと、データ格納領域までのオフセットにより、データの格納領域を指定する。なお送信プロセスが指定するアドレスは、プロセスごとに設けられた仮想メモリ空間でのアドレスである。
送信されたデータは、受信バッファ51内に受信データ52として格納される。そして受信プロセス50は、受信バッファ51から受信データ52を読み出し、受信データ52を用いた処理を行う。
各プロセスにおけるバッファの確保は、通信相手ごとに行われる。例えばノード100内のプロセスが、他の3つのノード200,300,400それぞれのプロセスにデータを送信する場合、送信元のプロセスは、送信バッファを3カ所に確保することとなる。
なお、図5では省略しているが、送信プロセス40から受信プロセス50へのデータの送信は、NIドライバ130とNI108とを介して行われる。
次に、OS内のNIドライバ130で管理されるステアリングとSTagについて説明する。
図6は、ステアリングとSTagの例を示す図である。OSは、カーネル空間のメモリ領域をステアリング記憶部60とし、ステアリング記憶部60にステアリング61,62,63,・・・を格納する。ステアリング61,62,63,・・・は、ユーザ空間に確保されたバッファと1対1で対応する。
ステアリング61,62,63,・・・には、プロセスID、メモリブロック番号、メモリブロック仮想アドレス、サイズなどの情報が含まれる。プロセスIDは、ステアリングに対応するバッファ領域を確保したプロセスの識別子である。メモリブロック番号は、プロセスが確保したバッファ領域に対応する実メモリ上でのブロック番号である。メモリブロック仮想アドレスは、プロセスが確保したバッファ領域の仮想アドレスである。サイズは、プロセスが確保したバッファ領域のサイズである。
各ステアリング61,62,63,・・・にはSTag71,72,73,・・・が付与されている。STag71,72,73,・・・は、ステアリングの識別子である。データを送信するプロセスは、STag71,72,73,・・・を用いて、送信バッファの管理情報であるステアリングを特定できる。ステアリングが特定されれば、そのステアリングに対応する送信バッファの記憶領域も特定される。
図7は、STagを用いたプロセス間通信の例を示す図である。図7の例では、ノード100内のプロセスがノード200内のプロセスにデータを送信する場合を想定している。
ノード100内のユーザ空間には、送信元のプロセス140によって送信バッファ141が確保されている。送信バッファ141には、送信データが格納されている。
そしてノード100内のプロセス140がデータを送信するとき、そのプロセス140は、通信管理部120を介して、NIドライバ130にSTagの取得を要求する。するとNIドライバ130が、ステアリング記憶部60内にステアリングを設け、そのステアリングのSTagを通信管理部120に送信する。これにより、ユーザ空間内の送信バッファ141と、送信バッファ141の管理用のステアリングとが1対1で対応付けられ、ステアリングがSTagによって一意に特定される。
同様に受信側のノード200においても、データの受信側のプロセス240が、受信バッファ241を確保する。そしてプロセス240は、受信バッファ241を管理するためのステアリングのSTagの取得要求を送信する。するとNIドライバ230が、ステアリング記憶部60内にステアリングを設け、そのステアリングのSTagをプロセス240に送信する。これにより、ユーザ空間内の受信バッファ241と、受信バッファ241の管理用のステアリングとが1対1で対応付けられ、ステアリングがSTagによって一意に特定される。
このとき取得されたノード200側のSTagは、所定の取り決めに従って、送信側のプロセス140に通知される。例えば、ノード100,200間で事前に決めておいたSTagが示すバッファに、プロセス240が取得したSTagを書き込み、書き込まれたSTagをプロセス140が読み取る(get通信する)。これにより、プロセス140は、送付先の受信バッファ241を特定するSTagを取得できる。また、プロセス140,240間で、使用するSTagを事前に取り決めておくこともできる。
そして、各ノード100,200のNIドライバ130,230を介して、送信データ141aがノード100からノード200に送信される。例えばプロセス140は、STagにより送信バッファ141と受信バッファ241とを指定したデータ送信要求を出力する。このデータ送信要求では、例えば送信バッファ141内のオフセットで送信データ141aの位置が特定され、受信バッファ241内のオフセットで、送信したデータの格納場所が特定される。NIドライバ130は、指定されたSTagに対応するメモリ領域から送信データ141aを取得して、ノード200に送信する。ノード200では、NIドライバ230がデータを受信し、STagで指定されたステアリングに対応する受信バッファ241に、受信データ241aを格納する。
このように、プロセス間通信では、プロセスが用意した送受信用のバッファを管理するため、バッファに一意に対応するステアリングがカーネル空間内に用意される。このステアリングは、OS内のNIドライバ130,230で管理される。図6に示したように、ステアリングには識別用のSTagが付与されている。ここで、通信する相手プロセス数が増加した場合、通信相手となるすべてのプロセス分のバッファが確保される。そのため、並列計算における並列の度合いが高くなると、通信相手のプロセスが増え、獲得するバッファ数が増加し、それに伴って、ステアリングおよびSTagの登録数も増加する。
なおNIドライバ130,230で管理するステアリング数が膨大になると、カーネル空間で使用するメモリ容量が過大となり、システムの処理効率低下の要因となる。そこで、使用していないステアリングの記憶領域は、適宜解放される。ステアリングの記憶領域は、対応するSTagの登録解除に伴って実施される。すなわち、STagの登録を解除すると、STagに対応するステアリングの登録も解除され、その結果、ステアリングが格納されていた記憶領域が解放される。
ここで、プロセス間通信用に確保したバッファ領域を使用しなくなって解放するごとに、一つ一つSTagの登録解除をし、ステアリングの記憶領域を解放していたのでは、解放処理が毎回入ることによるオーバーヘッドが増えてしまう。しかも、使用頻度の高いステアリングを再利用しようとする場合、再登録のオーバーヘッドも加算されてしまう。
そこで、例えば、ステアリングおよびSTagは使われなくなっても保持されたままにして、STagの登録解除およびステアリングの記憶領域の解放は、プロセスが終了した時に一斉に行うことも考えられる。しかし、この場合、プロセス数が非常に多い並列プログラムを実行しようとした場合、ステアリング数が、ステアリング記憶部60に格納できる上限に達してしまい、ステアリングを登録する記憶領域が枯渇してしまうという問題が発生する。ステアリングを登録する記憶領域の枯渇が発生すると、内部処理の不具合として、通信を行おうとしているプロセスは強制終了されてしまう。プロセスが強制終了すると、そのプロセスで実行しているプログラムの追行が不可能となってしまう。
また、MPIの集団通信では1対1のデータ通信が複雑に絡み合っており、毎回異なるメモリ領域を使う通信(毎回異なるSTagを用いる通信)と毎回同じメモリ領域を使う通信(毎回同じSTagを用いる通信)が混在している。毎回異なるメモリ領域を使う通信ではSTagの登録解除を毎回行ってもよいが、毎回同じメモリ領域を使う通信の場合、STagの登録解除をデータ通信が終了するごとに行っていたのでは非効率である。
そこで第2の実施の形態では、通信管理部120が、使用しなくなったバッファに対応するSTagを解放候補として登録する。この時点ではSTagの登録解除は行わない。通信管理部120は、解放候補が一定数に達したところでSTagが再利用されていないか確認をし、使用されていないステアリングのSTagを一まとめにした解放要求を、NIドライバ130に送信する。このように、複数の解放要求を1つにまとめることで、解放要求の出力頻度を低下させ、ステアリング解放処理の効率を向上させることができる。しかも解放候補が一定数に達したときに解放処理を行うため、多数のプロセスが並列実行された場合であっても、ステアリング記憶部60の空き容量が枯渇する前に、不使用のステアリングの記憶領域を一斉解放できる。
また第2の実施の形態では、解放候補は、プロセスから依頼された順番に登録され、一斉に解放されるときには古い候補から一定の範囲内の解放候補について、ステアリングの記憶領域を解放するようにする。これにより、新しく候補となったSTagは登録解除されずに保持される。すなわち、使用しなくなってからの期間が短いバッファは、長期間不使用のままのバッファに比べて再利用される可能性が高いため、対応するステアリングの解放の対象から除外される。これにより、使用頻度の高いSTagが登録解除されることが抑止され、再登録処理の多発による処理効率の低下が抑止される。また、解放候補として蓄積するSTagの数を最適に調整することで、登録解除の回数を減らし、登録解除が頻繁に発生することによるオーバーヘッドが抑止できる。
また第2の実施の形態では、ステアリング記憶部60の空き容量が枯渇しそうになったときにも、STagの登録解除を行う。これにより、ステアリング記憶部60の空き容量が枯渇することが、より確実に抑止できる。
図8は、STagの一斉解放の管理を行うために通信管理部が保持する情報を示す図である。通信管理部120は、使用状況管理テーブル121、解放候補リスト122、および解放リスト123を、ユーザ空間のメモリに格納する。
使用状況管理テーブル121は、STagに対応するバッファの使用状況を関するデータテーブルである。使用状況管理テーブル121には、STagの値に対応付けて、使用中カウンタの値が設定される。使用中カウンタは、STagが使用されるごとに1ずつカウントアップされ、使用が終了するごとに1ずつカウントダウンされる。使用中カウンタの値が「0」のSTagは、使用が終了している。
解放候補リスト122は、解放候補のSTagのリストである。バッファを用いたプロセス間通信のデータ転送が完了するごとに、そのバッファに対応するSTagの値が、解放候補リスト122に登録される。解放候補リスト122は、例えば上位に登録されているSTagほど、古い(解放候補になってからの時間が長い)解放候補である。
解放リスト123は、一斉解放を行う際に、実行対象となるSTagのリストである。解放リスト123に登録されているすべてのSTagを指定した解放要求がNIドライバ130に送信されることで、複数のSTagが一斉に解放される。
次に、通信管理部120における、NIドライバ130へのSTag問い合わせ処理について説明する。
図9は、STag問い合わせ処理の手順の一例を示すフローチャートである。
[ステップS101]通信管理部120は、プロセスからの、データ送受信用のバッファに対応付けられたSTagの問い合わせ要求を、MPI110を介して受信する。問い合わせ要求には、例えばバッファの仮想アドレスが含まれる。
[ステップS102]通信管理部120は、ステアリング記憶部60から、問い合わせ要求に示されたバッファに対応するステアリングを、ステアリング記憶部60から検索する。例えば通信管理部120は、ステアリング記憶部60内の各ステアリングのメモリブロック仮想アドレスと、問い合わせ要求に示された仮想アドレスとを比較し、一致するステアリングを検索する。
[ステップS103]通信管理部120は、該当ステアリングがあれば、処理をステップS105に進める。該当ステアリングがなければ、処理をステップS104に進める。
[ステップS104]通信管理部120は、NIドライバ130へ、STagの割り当てを依頼する。するとNIドライバ130において、ステアリング記憶部60内の不使用のステアリングが、問い合わせ要求で示されたバッファ用に割り当てられ、そのステアリングにSTagが割り当てられる。割り当てられたSTagが、NIドライバ130から通信管理部120に送信される。なお、STagを割り当てたステアリングには、問い合わせ要求の出力元のプロセスが確保したバッファの記憶領域に関する情報が設定される。
[ステップS105]通信管理部120は、使用状況管理テーブル121の、問い合わせ要求にバッファのSTagの使用中カウンタに、1を加算する。
[ステップS106]通信管理部120は、MPIによる問い合わせ要求への応答として、STagを返す。
このように、バッファに対応するSTagの問い合わせがあると、そのSTagの使用済カウンタがカウントアップされる。
次に、STagの登録解除手順について説明する。STagの登録解除を実行するタイミングには、解放候補が所定数以上蓄積された場合と、使用できるステアリングが枯渇した場合とがある。以下、それぞれの場合の処理手順について説明する。
図10は、STagの登録解除処理手順の第1の例を示すフローチャートである。第1の例は、解放候補が所定数以上蓄積された場合にSTagの登録解除を行うものである。
[ステップS111]通信管理部120は、プロセスからの、STagを指定した解放要求を、MPI110を介して受信する。
[ステップS112]通信管理部120は、解放要求に示されたSTagが、解放候補か否かを判断する。例えば通信管理部120は、解放要求に示されたSTagを、解放候補リスト122から検索する。解放候補リスト122に該当するSTagがあれば、そのSTagは既に解放候補になっていると判断される。解放候補であれば、処理がステップS113に進められる。解放候補でなければ、処理がステップS114に進められる。
[ステップS113]通信管理部120は、解放候補リスト122内の該当する解放候補のSTagを、最新の解放候補となる位置に移動する。このような解放候補の移動は、同じSTagを指定した解放要求が複数回出力された場合、最後の解放要求に応じたSTagのみを解放候補リスト122に残すことと同じである。その後、処理がステップS115に進められる。
[ステップS114]通信管理部120は、解放要求に示されたSTagを、最新の解放候補として解放候補リスト122に登録する。
[ステップS115]通信管理部120は、使用状況管理テーブル121における、解放要求に示されたSTagの使用中カウンタの値を、1だけ減算する。
[ステップS116]通信管理部120は、STagの使用中カウンタの値が「0」になったか否かを判断する。使用中カウンタの値が「0」であれば、そのSTagに対応するステアリングが使用されていない。使用中カウンタの値が「0」であれば、処理がステップS117に進められる。使用中カウンタの値が「0」でなければ、STag解放処理が終了する。
[ステップS117]通信管理部120は、解放候補リスト122内に解放候補として登録されたSTagの数が所定値(例えば150)以上か否かを判断する。解放候補の数が所定値以上であれば、処理がステップS118に進められる。解放候補の数が所定値未満であれば、STag解放処理が終了する。
[ステップS118]通信管理部120は、ステップS119〜S121の処理の繰り返し回数をカウントし、該当処理を例えば100回繰り返す。
[ステップS119]通信管理部120は、解放候補リスト122内の解放候補を、古い方から順に選択する。
[ステップS120]通信管理部120は、使用状況管理テーブル121を参照し、選択した解放候補(STag)の使用中カウンタの値が「0」か否かを判断する。使用中カウンタの値が「0」であれば、処理がステップS121に進められる。使用中カウンタの値が「0」でなければ、その解放候補に対応するステアリングが再利用されているため、解放候補のまま保留として、処理がステップS122に進められる。
[ステップS121]通信管理部120は、選択したSTagを、解放リスト123に登録すると共に解放候補リスト122から削除する。
[ステップS122]通信管理部120は、ステップS119〜S121の処理の100回の繰り返しが完了したら、処理をステップS123に進める。繰り返し回数が100回に達していなければ、ステップS119〜S121の処理が繰り返される。
[ステップS123]通信管理部120は、解放リスト123に登録されているSTagの一斉の解放要求を、NIドライバ130に送信する。
[ステップS124]解放要求に応じて、NIドライバ130が、解放リスト123に登録されているSTagの登録を一斉に解除する。すなわち、登録解除されたSTagが付与されたステアリングも同時に登録解除され、そのステアリングが格納されていた記憶領域が解放される。解放された記憶領域は、空き領域として扱われる。NIドライバ130は、解放できなかったSTagがある場合、そのSTagを通信管理部120に通知する。
[ステップS125]通信管理部120は、解放できなかったSTagを解放候補として解放候補リスト122に登録する。この際、解放リスト123に登録されているSTagは、すべて削除される。
このようにして、解放候補が所定数以上蓄積されたときに、複数のSTagをまとめて、対応するステアリングの記憶領域の解放を依頼することができる。これにより、NIドライバ130への解放要求の送信頻度を少なくすることができ、ステアリングの記憶領域の解放に要する処理の効率化を図ることができる。
図11は、STagの登録解除処理手順の第2の例を示すフローチャートである。第2の例は、解放候補が所定数以上蓄積された場合にSTagの登録解除を行うものである。図11に示す処理のうち、ステップS132〜S139の処理は、図10に示すステップS118〜S125と同様である。異なるのは、ステップS131のみである。
[ステップS131]通信管理部120は、ステアリング記憶部60の空き領域の枯渇のおそれを検知する。例えば通信管理部120は、新たに使用できるステアリングの数を、定期的に確認する。予めステアリングの最大数が決まっていれば、その最大数と、現在STagが付与されているステアリング数との差分が、新たに使用できるステアリングの数である。通信管理部120は、新たに使用できるステアリングの数が所定値以下であれば、使用できるステアリングの枯渇のおそれがあると判断する。通信管理部120は、新たに使用できるステアリングの枯渇のおそれがあると判断した場合、以下のステップS132〜S139の処理を実行する。
このようにして、ステアリング記憶部60の空き領域が枯渇する前に、複数のSTagをまとめて登録解除を依頼し、すでに存在するステアリングが格納されている記憶領域を解放することができる。例えば解放候補が少ない(150未満)状況でも、ステアリングの獲得処理が頻発し、ステアリング記憶部60の空き領域が不足気味になれば、その時点で不使用となっているステアリングの登録が解除し、記憶領域が解放される。これにより、ステアリング記憶部60の空き領域が枯渇し、新たなステアリングを設定できなくなることを抑止できる。
以上のようにして、複数の解放要求を1つにまとめてOS内のNIドライバに送信することができ、解放要求の送信回数を削減できる。解放要求の送信回数を削減できれば、解放要求に伴うオーバーヘッドが削減され、プロセス間通信の処理効率が向上する。
例えば、STagの登録解除にかかる時間は、システムコールとハードアクセスの時間で一回あたり4〜5μ秒のオーバーヘッドがかかる。それに対し、一対一通信が実行される時間は1μ秒程度であり、通信のたびにSTagの登録解除を行うと通信の4〜5倍も大きなオーバーヘッドとなってしまう。解放候補が150個蓄積されるまでには、一対一通信が150回行われている。150回分の通信時間は、1μ秒×150回=150μ秒である。そうすると、プロセス間通信に関する処理全体に対する登録解除時間の影響は、2〜4%程度まで縮小される。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
1 第1解放要求
2 第2解放要求
10 並列演算装置
11 記憶部
12 演算部
13a,13b,13c,・・・ プロセス
14a,14b,14c,・・・ バッファ
15 解放候補リスト
16 プロセス間通信管理部
17 OS
18 管理情報記憶領域
18a,18b,18c,・・・ 管理情報
19a,19b,19c,・・・ 識別子

Claims (7)

  1. コンピュータに、
    プロセス間通信対象のデータを格納するバッファの管理情報を記憶する記憶領域の解放を要求する第1解放要求が出力されるごとに、前記第1解放要求を蓄積し、
    蓄積された前記第1解放要求の数が閾値に達すると、蓄積された前記第1解放要求のうちの少なくとも一部を、実行対象の第1解放要求として選択し、
    前記実行対象の第1解放要求に示されている管理情報の記憶領域の解放をまとめて要求する第2解放要求を出力する、
    処理を実行させるプロセス間通信プログラム。
  2. 前記選択では、現在再利用されていない管理情報の記憶領域の解放を要求する前記第1解放要求を、前記実行対象の第1解放要求として選択する請求項1記載のプロセス間通信プログラム。
  3. 前記選択では、出力時期が古い方から所定数の前記第1解放要求の中から、前記実行対象の第1解放要求を選択する請求項1または2記載のプロセス間通信プログラム。
  4. 前記第1解放要求の蓄積では、同一の管理情報に関する前記第1解放要求が複数出力された場合、最後に出力された前記第1解放要求のみを蓄積する請求項1乃至3のいずれかに記載のプロセス間通信プログラム。
  5. 前記コンピュータに、さらに、
    管理情報を記憶するための空き領域が所定値以下になると、蓄積された前記第1解放要求のうちの少なくとも一部を、前記実行対象の第1解放要求として選択する処理を実行させる請求項1乃至4のいずれかに記載のプロセス間通信プログラム。
  6. コンピュータが、
    プロセス間通信対象のデータを格納するバッファの管理情報を記憶する記憶領域の解放を要求する第1解放要求が出力されるごとに、前記第1解放要求を蓄積し、
    蓄積された前記第1解放要求の数が閾値に達すると、蓄積された前記第1解放要求のうちの少なくとも一部を、実行対象の第1解放要求として選択し、
    前記実行対象の第1解放要求に示されている管理情報の記憶領域の解放をまとめて要求する第2解放要求を出力する、
    解放要求方法。
  7. プロセス間通信対象のデータを格納するバッファの管理情報を記憶する記憶部と、
    管理情報を記憶する記憶領域の解放を要求する第1解放要求が出力されるごとに、前記第1解放要求を蓄積し、蓄積された前記第1解放要求の数が閾値に達すると、蓄積された前記第1解放要求のうちの少なくとも一部を、実行対象の第1解放要求として選択し、前記実行対象の第1解放要求に示されている管理情報の記憶領域の解放をまとめて要求する第2解放要求を出力する演算部と、
    を有する並列演算装置。
JP2014215884A 2014-10-23 2014-10-23 プロセス間通信プログラム、解放要求方法、および並列演算装置 Active JP6369286B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014215884A JP6369286B2 (ja) 2014-10-23 2014-10-23 プロセス間通信プログラム、解放要求方法、および並列演算装置
EP15186021.0A EP3012740A1 (en) 2014-10-23 2015-09-21 Inter-process communication program, release requesting method, and parallel computing apparatus
US14/867,034 US10078446B2 (en) 2014-10-23 2015-09-28 Release requesting method and parallel computing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014215884A JP6369286B2 (ja) 2014-10-23 2014-10-23 プロセス間通信プログラム、解放要求方法、および並列演算装置

Publications (2)

Publication Number Publication Date
JP2016085494A JP2016085494A (ja) 2016-05-19
JP6369286B2 true JP6369286B2 (ja) 2018-08-08

Family

ID=54238222

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014215884A Active JP6369286B2 (ja) 2014-10-23 2014-10-23 プロセス間通信プログラム、解放要求方法、および並列演算装置

Country Status (3)

Country Link
US (1) US10078446B2 (ja)
EP (1) EP3012740A1 (ja)
JP (1) JP6369286B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7060805B2 (ja) * 2018-07-18 2022-04-27 富士通株式会社 通信バッファ管理プログラム、情報処理装置および通信バッファ管理方法
JP2022052484A (ja) * 2020-09-23 2022-04-04 富士通株式会社 ストレージ装置及びストレージ制御方法
US12008259B1 (en) * 2021-09-29 2024-06-11 Ethernovia Inc. Data processing and transmission using hardware serialization and deserialization functions

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06261098A (ja) * 1993-03-09 1994-09-16 Fujitsu Ltd 受信処理装置
JPH06324998A (ja) * 1993-05-14 1994-11-25 Fujitsu Ltd メッセージ受信方式
JP3579526B2 (ja) * 1995-10-31 2004-10-20 エヌ・ティ・ティ・コミュニケーションズ株式会社 記憶装置へのアクセス処理方法とそのシステム
JP3076280B2 (ja) * 1997-08-26 2000-08-14 日本電気航空宇宙システム株式会社 共有メモリを使用したプロセス間通信方式
JPH11353197A (ja) * 1998-06-11 1999-12-24 Nec Corp 共有プール資源制御方式
US6430665B1 (en) * 1999-06-25 2002-08-06 Sun Microsystems, Inc. System and method for heuristically allocating memory
US7653736B2 (en) * 2001-12-14 2010-01-26 Nxp B.V. Data processing system having multiple processors and a communications means in a data processing system
US7617376B2 (en) * 2003-08-14 2009-11-10 Hewlett-Packard Development Company, L.P. Method and apparatus for accessing a memory
JP4144609B2 (ja) * 2004-09-29 2008-09-03 ソニー株式会社 情報処理装置、メモリ領域管理方法、並びにコンピュータ・プログラム
US20060165084A1 (en) 2005-01-21 2006-07-27 International Business Machines Corporation RNIC-BASED OFFLOAD OF iSCSI DATA MOVEMENT FUNCTION BY TARGET
JP2007304786A (ja) 2006-05-10 2007-11-22 Nec Corp コンピュータ装置間のホストメモリコピー方法、コンピュータ装置、およびコンピュータプログラム
US20080162799A1 (en) * 2006-12-28 2008-07-03 Bryan Spry Mechanism for write optimization to a memory device
US7886118B2 (en) * 2007-01-04 2011-02-08 International Business Machines Corporation Detecting illegal reuse of memory with low resource impact
US7840751B2 (en) * 2007-06-29 2010-11-23 Seagate Technology Llc Command queue management of back watered requests
US20090049449A1 (en) * 2007-08-15 2009-02-19 Srinidhi Varadarajan Method and apparatus for operating system independent resource allocation and control
JP2009133722A (ja) * 2007-11-30 2009-06-18 Tokyo Electron Ltd プローブ装置
KR101467514B1 (ko) * 2010-05-14 2014-12-01 삼성전자 주식회사 사용자 응답 시간을 고려한 메모리 관리 장치 및 방법
JP5994601B2 (ja) * 2012-11-27 2016-09-21 富士通株式会社 並列計算機、並列計算機の制御プログラム及び並列計算機の制御方法
US9182941B2 (en) * 2014-01-06 2015-11-10 Oracle International Corporation Flow control with buffer reclamation
US10546558B2 (en) * 2014-04-25 2020-01-28 Apple Inc. Request aggregation with opportunism
US9671975B2 (en) * 2014-06-16 2017-06-06 International Business Machines Corporation Partial release management
US9632704B2 (en) * 2015-02-09 2017-04-25 International Business Machines Corporation Management of physical extents for space efficient storage volumes

Also Published As

Publication number Publication date
EP3012740A1 (en) 2016-04-27
US10078446B2 (en) 2018-09-18
JP2016085494A (ja) 2016-05-19
US20160117106A1 (en) 2016-04-28

Similar Documents

Publication Publication Date Title
US9760314B2 (en) Methods for sharing NVM SSD across a cluster group and devices thereof
US20130152086A1 (en) Apparatus and method for managing virtual memory
WO2017054197A1 (zh) 一种扩展联动的方法、装置及系统
US20110314157A1 (en) Information processing system, management apparatus, processing requesting apparatus, information processing method, and computer readable medium storing program
JP6477266B2 (ja) ダンプ管理装置、ダンプ管理プログラム及びダンプ管理方法
JP6369286B2 (ja) プロセス間通信プログラム、解放要求方法、および並列演算装置
US20180260257A1 (en) Pld management method and pld management system
JP2019213118A (ja) 車載装置、情報処理方法、および、情報処理プログラム
KR20150001146A (ko) 스토리지 시스템 및 그의 동작 방법
JP6620609B2 (ja) 分散処理実行管理プログラム、分散処理実行管理方法および分散処理実行管理装置
CN110235106B (zh) 完成侧客户端节流
JP6921355B2 (ja) センサ情報収集システム、センサ情報収集方法、データ取得端末、及び、プログラム
US20190087181A1 (en) Storage system
AU2011229395B2 (en) Dual mode reader writer lock
JP6666553B2 (ja) 情報処理装置、ジョブ管理方法およびジョブ管理プログラム
JP5783259B2 (ja) コンピュータシステム
JP5879982B2 (ja) ストレージ装置、ストレージ制御プログラムおよびストレージ制御方法
JP6339978B2 (ja) リソース割当管理装置およびリソース割当管理方法
JP7354979B2 (ja) 通信管理装置、通信管理方法、および通信管理プログラム
WO2021187476A1 (ja) クライアント、i/oサーバ、方法、および記録媒体
US10515027B2 (en) Storage device sharing through queue transfer
US20210004261A1 (en) Switching apparatus and switching method
KR101753840B1 (ko) 읽기 리소스 공유를 통한 고가용성 스토리지 시스템
KR101496336B1 (ko) 태스크 정보 이동 방법 및 시스템
JP6384180B2 (ja) 仮想マシン管理装置、仮想マシン管理システム、仮想マシン管理方法、及び仮想マシン管理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170704

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180531

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180612

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180625

R150 Certificate of patent or registration of utility model

Ref document number: 6369286

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150