JP2020144631A - 情報処理装置、情報処理システム及び情報処理方法 - Google Patents
情報処理装置、情報処理システム及び情報処理方法 Download PDFInfo
- Publication number
- JP2020144631A JP2020144631A JP2019041066A JP2019041066A JP2020144631A JP 2020144631 A JP2020144631 A JP 2020144631A JP 2019041066 A JP2019041066 A JP 2019041066A JP 2019041066 A JP2019041066 A JP 2019041066A JP 2020144631 A JP2020144631 A JP 2020144631A
- Authority
- JP
- Japan
- Prior art keywords
- accelerator
- processing
- command
- information processing
- soft
- 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
- 230000010365 information processing Effects 0.000 title claims abstract description 55
- 238000003672 processing method Methods 0.000 title claims abstract description 13
- 238000012545 processing Methods 0.000 claims abstract description 255
- 238000000034 method Methods 0.000 claims description 58
- 230000008569 process Effects 0.000 claims description 52
- 238000006243 chemical reaction Methods 0.000 claims description 11
- 238000012423 maintenance Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 230000002776 aggregation Effects 0.000 description 12
- 238000004220 aggregation Methods 0.000 description 12
- 238000012360 testing method Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 241000282813 Aepyceros melampus Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 238000004092 self-diagnosis Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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
-
- 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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Operations Research (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Advance Control (AREA)
- Retry When Errors Occur (AREA)
Abstract
【課題】アクセラレータの導入により処理性能の向上を図るとともに、アクセラレータ導入時のシステムの可用性を高める情報処理装置、情報処理システム及び情報処理方法を提供する。【解決手段】情報処理システムのハードウェア構成において、分散データベースシステム1のワーカノード20は、プロセッサ(CPU21)と、コマンドのアクセラレータ処理を実行可能なアクセラレータ24と、CPU21上で稼働し、コマンドのソフトモデル処理を実行可能なソフトモデルと、を備える。ワーカノード20において、CPU21は、クエリプランに含まれるアクセラレータオペレータを複数のアクセラレータコマンドに分解し、分解したアクセラレータコマンドをアクセラレータ24又はソフトモデルに投入し、アクセラレータコマンドの処理主体を変更する切替条件に該当する場合に、アクセラレータコマンドの投入先をアクセラレータ24からソフトモデルに切り替える。【選択図】図1
Description
本発明は、情報処理装置、情報処理システム及び情報処理方法に関し、例えばビッグデータを分析するデータシステムの情報処理装置、情報処理システム及び情報処理方法に適用して好適なものである。
近年、ビッグデータ分析の分野において、分散データベースのSQL on Hadoopが普及しつつある。例えば代表的なSQL on Hadoopには、Apache DrillやApache Impala等がある。
SQL on Hadoopは、複数のノードサーバから構成されており、障害等によりクエリ処理中にいくつかのノードが利用不可となった場合には当該クエリはエラーとして応答し、正常動作する他ノードで次回以降のSQLクエリ処理を実行する。例えば特許文献1には、複数の制御対象デバイスのいずれかに異常が検出されたときに、異常デバイスの運転を停止して、残りデバイスで縮退運転を行う技術が開示されている。
ところで、分散データベースシステムにおいて、大量のデータを高速処理するためには性能確保のために多数のノードが必要となるが、この結果としてシステム規模が増大し、導入コストやメンテナンスコストが増加するという問題があった。
ここで、上記問題を解決するための方法の1つとして、分散データベースシステムのノードにアクセラレータを搭載してノード当たりの性能を向上させることで、ノード数を減らしてシステム規模を抑制する方法が提案される。アクセラレータの代表例には、FPGA(Field Programmable Gate Array)がある。FPGAは、書き換え可能な専用回路として動作して、並列処理による効率良い処理を実現できる。
しかしながら、FPGAは専用回路であるため、特定の処理の高速実行に向くというメリットがある一方で、メモリ等のリソース量が制約されるために柔軟性に欠けるというデメリットがあり、従来のソフトウェアのみで実現されるデータベースに比して、機能が限定されてしまうという課題があった。また、システムに新しくFPGAデバイスを追加することから、その障害処理も考慮する必要があった。
本発明は以上の点を考慮してなされたもので、アクセラレータの導入により処理性能の向上を図るとともに、アクセラレータ導入時の柔軟性向上や障害対応を実現することによりシステムの可用性を高めることが可能な情報処理装置、情報処理システム及び情報処理方法を提案しようとするものである。
かかる課題を解決するため本発明においては、配布されたクエリプランに従ってクエリ処理を実行する情報処理装置であって、プロセッサと、専用回路を用いてコマンドを処理するアクセラレータ処理を実行可能なアクセラレータと、前記プロセッサ上で稼働し、ソフトウェアを用いてコマンドを処理するソフトモデル処理を実行可能なソフトモデルと、を備え、前記プロセッサは、前記クエリプランに含まれるアクセラレータオペレータを複数のアクセラレータコマンドに分解し、分解した前記アクセラレータコマンドを前記アクセラレータまたは前記ソフトモデルに投入し、前記アクセラレータコマンドの処理主体を変更する切替条件に該当する場合に、前記アクセラレータコマンドの投入先を前記アクセラレータから前記ソフトモデルに切り替える情報処理装置が提供される。
また、かかる課題を解決するため本発明においては、複数のワーカノードを結合したクラスタでクエリを処理する情報処理システムであって、前記クラスタ内の第1のワーカノードに前記クエリを送信するアプリケーションサーバと、前記アプリケーションサーバから前記クエリを受信し、当該クエリに基づいて生成したクエリプランを前記クラスタ内の第2のワーカノードに配布する前記第1のワーカノードと、前記第1のワーカノードから配布された前記クエリプランに従ってクエリ処理を実行する前記第2のワーカノードと、を備える情報処理システムが提供される。さらにこの情報処理システムにおいて、前記第2のワーカノードは、プロセッサと、専用回路を用いてコマンドを処理するアクセラレータ処理を実行可能なアクセラレータと、前記プロセッサ上で稼働し、ソフトウェアを用いてコマンドを処理するソフトモデル処理を実行可能なソフトモデルと、を有し、前記プロセッサは、前記クエリプランに含まれるアクセラレータオペレータを複数のアクセラレータコマンドに分解し、分解した前記アクセラレータコマンドを前記アクセラレータまたは前記ソフトモデルに投入し、前記アクセラレータコマンドの処理主体を変更する切替条件に該当する場合に、前記アクセラレータコマンドの投入先を前記アクセラレータから前記ソフトモデルに切り替える。
また、かかる課題を解決するため本発明においては、配布されたクエリプランに従ってクエリ処理を実行する情報処理装置による情報処理方法であって、前記情報処理装置が、プロセッサと、専用回路を用いてコマンドを処理するアクセラレータ処理を実行可能なアクセラレータと、前記プロセッサ上で稼働し、ソフトウェアを用いてコマンドを処理するソフトモデル処理を実行可能なソフトモデルと、を有し、前記プロセッサが、前記クエリプランに含まれるアクセラレータオペレータを複数のアクセラレータコマンドに分解し、分解した前記アクセラレータコマンドを前記アクセラレータまたは前記ソフトモデルに投入し、前記アクセラレータコマンドの処理主体を変更する切替条件に該当する場合に、前記アクセラレータコマンドの投入先を前記アクセラレータから前記ソフトモデルに切り替える情報処理方法が提供される。
本発明によれば、アクセラレータの導入により処理性能の向上を図るとともに、アクセラレータ導入時のシステムの可用性を高めることができる。
以下、図面を参照して、本発明の一実施の形態を詳述する。
(1)全体構成
図1は、本発明の一実施の形態に係る情報処理システムのハードウェア構成を示すブロック図である。図1において、分散データベースシステム1は、全体として本実施の形態に係る情報処理システムの一例である。
図1は、本発明の一実施の形態に係る情報処理システムのハードウェア構成を示すブロック図である。図1において、分散データベースシステム1は、全体として本実施の形態に係る情報処理システムの一例である。
図1に示したように、分散データベースシステム1は、アプリケーションサーバ(APP Server)10と、1または複数のワーカノード(Worker node)20を束ねたクラスタ30と、これらを相互に通信可能に接続するネットワーク40とを備えて構成される。
それぞれのワーカノード20は、LAN(Local Area Network)又はインターネット等からなるネットワーク40を介して相互に接続され、またアプリケーションサーバ10と接続されている。ワーカノード20は、CPU(Central Processing Unit)21と、メモリ(Memory)22と、NIC(Network Interface Card)23と、アクセラレータ(Accelerator)24と、アクセラレータ外付けメモリ(Memory)25と、1または複数のドライブ(Drive)26とを備えて構成される。
CPU21は、ドライブ26に格納されるデータをメモリ22上に展開してデータを処理し、NIC23を介して他のワーカノード20やアプリケーションサーバ10と通信する。また、CPU21は、自CPU上で動くプログラムの処理(CPU処理)の一部を、アクセラレータ24にオフロードすることができる。
アクセラレータ24は、CPU21の指示に従って、メモリ22に展開されたデータの一部または全てをアクセラレータ外付けメモリ25に転送してデータを処理し、その処理結果をメモリ22に返す。アクセラレータ24は、専用回路によってCPU処理の一部を効率良く処理することが可能なデバイスであり、具体的には例えば、FPGA(Field Programmable Gate Array)やGPU(Graphic Processing Unit)等である。アクセラレータ24とCPU21とは、PCIe(PCI Express)等で接続される。また、アクセラレータ外付けメモリ25は、具体的には例えば、DDR(Double-Data-Rate)メモリである。
ドライブ26は、具体的には例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)等である。
このような分散データベースシステム1では、およそ以下の流れで処理が行われる。
まず初めに、アプリケーションサーバ10上で動作するBI(Business Intelligence)ツール等が、不図示のメンバシップ管理ノードへの問合せの上で、クラスタ30内の複数のワーカノード20のうちからクエリを送信すべき第一のワーカノード20を決定し、当該第一のワーカノード20にSQLクエリを送信する。次に、第一のワーカノード20は、受信したSQLクエリの解析処理を行い、クエリの処理手順を示したクエリプランを生成し、他のワーカノード20に当該クエリプランを配布する。次に、他の各ワーカノード20は、配布されたクエリプランに従って、必要なデータをドライブ26から読み出して処理し、処理結果を第一のワーカノード20に返す。そして、第一のワーカノード20は、クラスタ30内の全てのワーカノード20からの結果のまとめ処理を行い、アプリケーションサーバ10にSQLクエリの結果として応答を返す。
図2は、本実施の形態に係る情報処理装置の機能構成を示すブロック図である。図2において、ワーカノード100,200は、本実施の形態に係る情報処理装置の一例であり、図1に示した分散データベースシステム1のワーカノード20に相当する。このうち、ワーカノード100は、SQLクエリが送信されるマスタロールのワーカノード(上述した「第一のワーカノード20」)であり、ワーカノード200は、クエリプランが配布されるワーカノード(すなわち、上述した「他のワーカノード20」)の1つである。また、詳細は後述するが、図2には、SQLクエリが入力されたときに当該SQLクエリに基づくクエリプランが実行されるまでの処理の流れが、矢印で示されている。
図2に示したように、ワーカノード100における機能構成は、ソフトウェア機能ブロック(Software block)110と、アクセラレータ(Accelerator)120とに区分される。ソフトウェア機能ブロック110は、図1に示したCPU21自身による処理によって実現される。一方、アクセラレータ120は、専用回路を有するアクセラレータ24による処理によって実現され、CPU処理の一部を代行することができる。
ソフトウェア機能ブロック110は、クエリパーサ(Query parser)111、クエリプランナ(Query planner)112、クエリ実行エンジン(Query Exec engine)113、分散ファイルシステム(Distributed File System)114、アクセラレータストレージプラグイン(Accl. Storage plugin)115、アクセラレータミドルウェア(Accl. middleware)116、アクセラレータドライバ(Accl. driver)117、及びアクセラレータソフトウェアモデル(Accl. Software model)118から構成される。アクセラレータソフトウェアモデル118は、以後、ソフトモデル118と記す。なお、以後の説明では表記の簡略のために、アクセラレータストレージプラグインを「プラグイン」アクセラレータミドルウェアを「ミドル」、アクセラレータソフトウェアモデルを「ソフトモデル」と称することがある。
同様に、ワーカノード200における機能構成は、ソフトウェア機能ブロック210とアクセラレータ220とに区分され、ソフトウェア機能ブロック210は、クエリパーサ211、クエリプランナ212、クエリ実行エンジン213、分散ファイルシステム214、アクセラレータストレージプラグイン(プラグイン)215、アクセラレータミドルウェア(ミドル)216、アクセラレータドライバ217、及びアクセラレータソフトウェアモデル(ソフトモデル)218から構成される。
なお、ワーカノード100,200の構成は共通していることから、以降の説明では、一方のワーカノードの構成を用いて説明することで、他方のワーカノードの構成について説明を省略することがある。
アプリケーションサーバ10からSQLクエリが送信されたとき、ワーカノード100,200では、以下の流れで処理が行われる。ここでは処理の概要を説明し、詳細な処理シーケンスは図5を参照しながら後述する。
まず初めに、アプリケーションサーバ10からネットワーク40を介してSQLクエリが第一のワーカノード20(100)に入力されると、クエリパーサ111がSQLクエリの解析処理を行う。
次に、解析処理の結果を受けてクエリプランナ112が、プラグイン115と連携しながら、アクセラレータ用のクエリプランの生成を行う。アクセラレータ用のクエリプランは、スキャン、フィルタ、集約、エクスチェンジ、ジョイン等からなるクエリプランのうち、例えばアクセラレータ120(220)で処理可能なスキャン、フィルタ及び集約をひとまとめにした「アクセラレータオペレータ」を含むクエリプランである。詳細は図4を参照しながら後述する。そして、クエリプランナ112によって生成されたクエリプランは、他ワーカノード200に配布される。なお、図2に示したように、クエリプランの配布先に自ワーカノード100が含まれるようにしてもよいが、その場合の自ワーカノード100での以降の処理の説明は省略する。
クエリプランが配布されたワーカノード200では、クエリ実行エンジン213が、クエリプランを解析して、プラグイン215にアクセラレータオペレータの処理指令を出す。次にプラグイン215は、ミドル216にアクセラレータオペレータと同等の処理指示(アクセラレータオペレータ)を出す。ミドル216は、当該処理指示を受けて、分散ファイルシステム214からデータを読み出して、アクセラレータドライバ217を介してアクセラレータ220に読み出しデータに対する処理指示(アクセラレータコマンド)を出す。
ここで仮にアクセラレータ220がエラー応答を返してきた場合、ミドル216は、ソフトモデル218に処理指示を切り替えて処理を継続する。ソフトモデル218は、アクセラレータ220の機能をソフトウェアで模擬したものであり、CPU21で実行される。したがってソフトモデル218は、アクセラレータコマンドと同等のコマンドを入力として、アクセラレータ220と同等な結果を返す。
そして、ミドル216は、アクセラレータ220あるいはソフトモデル218に処理させた複数のアクセラレータコマンドの結果のまとめ処理を行い、プラグイン215に結果を返す。プラグイン215は、クエリ実行エンジン213に結果を返し、クエリ実行エンジン213は、エクスチェンジオペレータやジョインオペレータの指示に従い、残りの処理を行った後、最終結果を第一のワーカノード20(100)のクエリ実行エンジン113に送信する。
最後に、第一のワーカノード20(100)は、クラスタ30内の他のワーカノード20(ワーカノード200を含む)における処理結果を最終的にまとめて、SQLクエリの結果をネットワーク40を介してアプリケーションサーバ10に応答する。
なお、クエリプランは、複数のオペレータから構成され、オペレータ間の処理順序が規定されている。また、アクセラレータオペレータの処理は、複数のアクセラレータコマンドの処理結果をまとめ処理することで実行され、アクセラレータコマンドはアクセラレータの最小処理単位である。例えば、アクセラレータクエリプランが、処理順にアクセラレータオペレータ、エクスチェンジオペレータ、ジョインオペレータとすると、当該アクセラレータオペレータは、複数のアクセラレータコマンドの処理に分解されて実行される。その後、エクスチェンジオペレータ、ジョインオペレータの順にクエリ実行エンジン213によって実行される(図4も参照)。
また、アクセラレータ220の処理には専用回路が用いられるため、ソフトウェア機能ブロック210で使用されるCPU21やメモリ22に比べて、アクセラレータ内のメモリ量やレジスタサイズが制約される。一方、アクセラレータ220の処理単位であるアクセラレータコマンドの処理対象データは、アクセラレータメモリ量の制約を考慮していない。そのため、場合によっては当該処理対象データをアクセラレータ220で読み込んだ際にオーバーフローが発生してしまう(アクセラレータオーバーフローエラー)。アクセラレータオーバーフローエラーの詳細は、図9を参照しながら後述する。
このようなオーバーフローが発生した場合、本実施の形態では、上述したようにアクセラレータ220からソフトモデル218に切り替えて処理を行う。ソフトモデル218には、アクセラレータ220のようなメモリ量やレジスタサイズの制約条件がほぼないため、アクセラレータ220ではエラーとなるデータとコマンドの組み合わせにおいても、ソフトモデル218による処理ではエラーとならずに、正しい処理結果を出力することが可能となる。かくして、本実施の形態に係るワーカノード200では、処理の継続が可能となり、システムの可用性を高める効果が得られる。
(2)切替制御テーブル
上記説明では、アクセラレータ処理からソフトモデル処理への切替契機の一例として、アクセラレータオーバーフローエラーの発生時を挙げたが、本実施の形態はこれに限定されるものではない。以下に、様々な切替条件とその復帰条件の一例を説明する。
上記説明では、アクセラレータ処理からソフトモデル処理への切替契機の一例として、アクセラレータオーバーフローエラーの発生時を挙げたが、本実施の形態はこれに限定されるものではない。以下に、様々な切替条件とその復帰条件の一例を説明する。
図3は、切替制御テーブルの一例を示す図である。切替制御テーブルは、ミドル216によるアクセラレータ220からソフトモデル218への処理切替に関する切替や復帰の条件が設定・登録されたテーブル形式の制御用データである。
図3に示した切替制御テーブル310は、整理番号3111と、モード種別が記載された種別3112と、アクセラレータ220からソフトモデル218に処理を切り替える際の条件が記載されたソフトモデル切替条件3113と、ソフトモデル218に処理を切り替えた後にアクセラレータ220による処理に復帰させる際の条件が記載されたアクセラレータ復帰条件3114とから構成されている。
種別3112は、例えば、障害モード、保守モード、ソフトモード、及び未サポートモードに分類される。各モード別に具体的な制御切替の一例を説明する。
障害モードは、アクセラレータ220(アクセラレータ24全体と捉えてもよい)の障害時に利用されるモード種別である。アクセラレータ220の障害時の一例として、放射線等の影響によるソフトエラーによってコレクタブルな一時エラー状態となることが挙げられる。このようなコレクタブルソフトエラーが発生したときには、当該エラーの通算発生回数が規定回(例えばX回)に達したか否かによって、障害モードの「#1」または「#2」に分類される。具体的には、当該エラーの通算発生回数をカウンタ等で管理しておき、そのカウンタ値と所定の閾値(本例では「X」)とを比較すればよい。
図3によれば、コレクタブルソフトエラーが発生してその通算発生回数が規定回未満である場合は、一時的な障害エラーと判断できるため、ミドル216は、ソフトモデル218に切り替えてアクセラレータ220で実行させようとしたコマンド(当該コマンド)の処理を継続し、当該エラーの解消を以て、アクセラレータ220による処理に復帰させる(#1)。コレクタブルソフトエラーの解消は、例えば誤り訂正処理の完了等によって実現される。一方、コレクタブルソフトエラーが発生してその通算発生回数が規定回に到達した場合は、当該エラーが解消されたとしても再発する可能性が高いと推測されることから、恒久的な障害エラーと判断する。このとき、ミドル216は、ソフトモデル218に切り替えて当該コマンドの処理を継続するが、当該エラーの解消後もアクセラレータ220への復帰は行われず、以降のコマンド処理はソフトモデル218で実行される(#2)。なお、「#2」の復帰条件は、例えば所定の保守が行われるまでとしてもよく、このようにする場合は、保守によって不良回路の交換等が行われることで、コレクタブルソフトエラーの再発を回避できることが想定される。
また、アクセラレータ220の障害時の別例として、アクセラレータ220がPCIeリンクエラーで利用不可になった場合や、アクセラレータ220がファームウェアやロジックに矛盾を検出してエラーとなった場合(FW/ロジック矛盾エラー)が挙げられる。このような場合、所定の保守が行われるまでアクセラレータ220による処理は困難と想定されるため、何れも恒久障害と判定される(#3,#4)。したがって、ミドル216は、ソフトモデル218に切り替えて当該コマンドの処理を継続するだけでなく、その後のコマンドについてもソフトモデル218に処理を行わせる。
保守モードは、保守の際に利用されるモード種別である。保守モードの一例として、アクセラレータ24の保守交換時に管理者が保守交換モードをONに設定したことを判定した場合、ミドル216は、以後の処理をソフトモデル218に常時切り替える(#5)。このような場合、アクセラレータ24の保守交換が終了し、管理者によって保守交換モードがOFFに設定されたことを条件として、アクセラレータ220への復帰が行われる。
また、保守モードの別例としてはセルフテスト(自己診断)時が挙げられる。セルフテストでは、アクセラレータ220(24)の状態を監視するために特定のテストパターンが周期的に実行され、この間、アクセラレータ220による通常のSQLクエリ処理は実行不可となる。そこで、ミドル216は、セルフテストモードがONに設定されたことを判定した場合に、ソフトモデル218に切り替えて代替で処理を行わせ、セルフテストの完了を判定した場合に、アクセラレータ220による処理に復帰させる(#6)。
ソフトモードは、ワーカノード200(20)にアクセラレータ220(24)がない状態において利用されるモード種別であり、このとき、ソフトモデル218のみでアクセラレーション処理が実現される。具体的には、ミドル216は、ソフトアクセラレータモードのON設定を判定した場合に、ソフトモデル218に切り替えて代替で処理を行わせ、ソフトアクセラレータモードのOFF設定を判定した場合に、アクセラレータ220による処理に復帰させる(#7)。
未サポートモードは、処理対象データがアクセラレータのサポートしないフォーマット等である場合に利用されるモード種別である。未サポートモードに該当する事例の一例として、前述したアクセラレータオーバーフローエラーの発生が挙げられる。すなわち、アクセラレータ内のメモリ量やレジスタサイズの制約によってオーバーフローしてしまうようなデータとコマンドの場合には、ミドル216は、ソフトモデル218に切り替えて当該コマンドの処理を継続させる(#8,#9)。
なお、図3の場合、アクセラレータオーバーフローエラーの発生時は、当該エラーが連続して発生した回数が規定回(例えばY回)に達したか否かによって、異なる復帰条件が設定されている。アクセラレータオーバーフローエラーは、アクセラレータ220(24)の障害ではなく、データとコマンドの組み合わせに依存して発生してしまうものであるため、連続発生回数が規定回未満である場合は、当該コマンド処理の完了で復帰とする(#8)。一方、規定回までアクセラレータオーバーフローが連続して発生した場合には、処理中のSQLクエリにおいて、アクセラレータ220をオーバーフローさせてしまう性質を有するデータやコマンドが続いていると想定されることから、#8のようにコマンド処理単位で復帰させると繰り返しが頻発して処理速度の低下が懸念される。そこで、このような場合には、当該コマンドだけでなく、その後のコマンドもソフトモデル処理を行うこととし、当該SQLクエリの処理完了(より厳密には、当該SQLクエリのクエリプランに含まれる実行中のアクセラレータオペレータの処理完了)を以て復帰させることとしている(#9)。
以上に説明したように、本実施の形態では、切替制御テーブルに基づいて、障害等の状況に応じて適切に、アクセラレータ220によるアクセラレータ処理とソフトモデル218によるソフトモデル処理との切替を制御することができることにより、システムの可用性の向上やアクセラレーション効果の最大化(すなわち、ソフトモデルへの切替による性能低下の最小化)を図る効果が得られる。
なお、ソフトモデル218によるアクセラレーション処理(ソフトモデル処理)は、アクセラレータ220による同様の処理(アクセラレータ処理)に比べて、処理速度が劣る。しかし、ソフトモデル処理の場合、スキャンとフィルタと集約とが一つになったアクセラレータオペレータを処理することができることを利用して、本実施の形態では、ソフトモデル処理の処理負荷を低減して処理速度を高める工夫を採用することができる。以下に詳しく説明する。
図4は、アクセラレータクエリプランのソフトモデル処理を説明するための図である。図4(A)には、従来のデータベースから使われてきたクエリプランの処理概要が示され、図4(B)には、本実施の形態で採用可能なアクセラレータクエリプランのソフトモデル処理の処理概要が示されている。
図4(A)に示したように、従来のクエリプランは、スキャン、フィルタ、集約、エクスチェンジ等のオペレータから構成され、その処理順序が規定されている。このときまず、スキャンオペレータ時に、SQLクエリ文で参照している全てのデータファイル(カラムデータ)がメモリに展開され、データフォーマット変換(メモリフォーマット変換)が実施される。次に、フィルタオペレータ時に、メモリフォーマット変換された全カラムデータに対してカラムのフィルタ条件式判定が行われる。そして次の集約オペレータ時に、フィルタ条件にヒットしたカラムデータのみが集約される。その後、エクスチェンジオペレータでは、他ノードとのデータ交換が実施される。このような従来のクエリプラン処理では、スキャン処理の負荷が高くなってしまう。
これに対し、図4(B)に示したように、本実施の形態のソフトモデル処理によるアクセラレータクエリプランは、スキャン処理、フィルタ処理、及び集約処理が1つのアクセラレータオペレータとして表現されている。ここで、SQLクエリ文で参照しているデータファイルのうち、フィルタ処理でフィルタ条件にヒットしないカラムデータは、その後の集約処理でも利用しないことが確定するため、データフォーマット変換は不要であり、スキップすることができる。そして、ソフトモデル処理は、内部的な処理順序や処理内容を変更することが容易である。そこで、本実施の形態のソフトモデル処理では、アクセラレータオペレータのうち、まずスキャン処理時に、データファイルのうちフィルタ条件に利用するカラムデータのみに対してデータフォーマット変換(メモリフォーマット変換)を実施し、その後のフィルタ処理時に、メモリフォーマット変換後のデータカラムに対してフィルタ条件式判定を実施し、集約処理時に、フィルタ条件にヒットしたカラムデータのみを集約する。したがって、本実施の形態によるソフトモデル処理は、フィルタと集約計算に実際に利用するカラムデータのみを、負荷の高いメモリフォーマット変換の対象とすればよく、従来のデータベース処理に比べて、アクセラレータオペレータの処理負荷を軽減でき、処理速度の向上に期待できる。特に、本ソフトモデル処理は、フィルタ条件にヒットしないカラムの割合が多いほど、スキャン処理の負荷を軽減することが可能となり、従来のソフトウェアデータベースのデータベース処理方法に比べて高速化の効果が高くなる。
(3)クエリ処理
図5は、クエリ処理の詳細な手順を示すシーケンス図である。前述したように、アプリケーションサーバ10からSQLクエリが送信されたとき、ワーカノード100のクエリプランナ112がアクセラレータ用のクエリプランを生成し、ワーカノード200に配布される。図5には、このクエリプランが配布された後にワーカノード200で実行されるクエリ処理について、詳細な処理シーケンスが示されている。
図5は、クエリ処理の詳細な手順を示すシーケンス図である。前述したように、アプリケーションサーバ10からSQLクエリが送信されたとき、ワーカノード100のクエリプランナ112がアクセラレータ用のクエリプランを生成し、ワーカノード200に配布される。図5には、このクエリプランが配布された後にワーカノード200で実行されるクエリ処理について、詳細な処理シーケンスが示されている。
まず、クエリプランナ112からクエリ実行エンジン213にクエリプランが入力される(ステップS101)。クエリ実行エンジン213は、当該クエリプランにアクセラレータオペレータが含まれている場合は、プラグイン215にアクセラレータオペレータ処理要求を送る(ステップS102)。プラグイン215は、受信したアクセラレータオペレータ処理要求に応じて、同等のアクセラレータオペレータをミドル216に渡す。
次に、ミドル216は、プラグイン215から渡されたアクセラレータオペレータを複数のコマンドに分解し、順次アクセラレータ220に投入する(ステップS103)。コマンドの分解は、分割されたデータ単位で作成される。
アクセラレータ220は、投入されたコマンドに応じたコマンド処理を実行し(ステップS104)、その処理結果をミドル216に応答する(ステップS105)。
ここで、ミドル216が、アクセラレータ220の一時的な利用不可を検知したとする(ステップS106)。利用不可の検知は、例えばアクセラレータ220の内部で発生する障害でアクセラレータ220が検知できるものに関してはアクセラレータ220からの割込み通知等で知らせてもよいし、ミドル216が保守交換モードやセルフテストモード等の制御情報を確認して検知するようにしてもよい。
ステップS106でアクセラレータ220の一時的な利用不可が検知された場合、ミドル216は、図3に例示した切替制御テーブルに基づいてソフトモデル切替条件3113の何れかに一致するか否かを判定し、一致した場合はソフトモデル218にコマンドを投入する(ステップS107)。ソフトモデル218は当該コマンドの処理を実行し(ステップS108)、処理結果をミドル216に応答する(ステップS109)。なお一般に、ステップS108におけるソフトモデル処理の処理時間は、ステップS104におけるアクセラレータ処理よりも長くなる。
次に、ステップS109の後のタイミングで、ミドル216が、アクセラレータ220の復帰を検知したとする(ステップS110)。復帰の検知は、例えばアクセラレータ220が検知できるものに関してはアクセラレータ220からの割込み通知等で知らせてもよいし、ミドル216が保守交換モードやセルフテストモード等の制御情報を確認して検知するようにしてもよい。
ステップS110でアクセラレータ220の復帰が検知された場合、次のコマンドからアクセラレータ220にコマンドを投入する(ステップS111)。そして、ステップS104〜S105と同様に、アクセラレータ220は、投入されたコマンドに応じたコマンド処理を実行し(ステップS112)、その処理結果をミドル216に応答する(ステップS113)。
以後は、切替制御テーブルのソフトモデル切替条件3113の何れかに一致する状況が検知されない限り、ミドル216は、ステップS102で受けたアクセラレータオペレータに関する未処理コマンドがなくなるまで、アクセラレータ220にコマンドを順次投入し、ステップS111〜S113の処理を繰り返す。そして、上記アクセラレータオペレータに関する全てのコマンド処理が終了すると、ミドル216は、各コマンドの処理結果のまとめ処理を行ってプラグイン215に結果を返し、プラグイン215は最終的な処理結果をクエリ実行エンジン213に応答する(ステップS114)。
そして、クエリ実行エンジン213は、ステップS101で入力されたクエリプランに含まれる残りのオペレータ処理を実行し(ステップS115)、全てのオペレータ処理が終了すると、クエリ処理結果をワーカノード100に応答する(ステップS116)。以上で、ステップS101で入力されたクエリプランに対するワーカノード200におけるクエリ処理が完了する。
なお、例えばステップS105において、アクセラレータ220によるコマンド処理についてオーバーフローエラーやFW/ロジック矛盾エラー等の発生が報告された場合には、当該コマンドの再実行が必要となる。本実施の形態では、これらのエラー等は図3に例示した切替制御テーブルのソフトモデル切替条件3113に登録されており、当該エラー等が発生した場合、ミドル216は、ソフトモデル処理に切り替えて上記コマンドの再実行を指示する。具体的には、ミドル216は、上記コマンドと同一のコマンドをソフトモデル218に投入し(ステップS107)、ソフトモデル218が当該コマンドを処理し(ステップS108)、その処理結果をミドル216に応答する(ステップS109)。このようにすることで、アクセラレータ処理で再実行が必要となったコマンドについて、ソフトモデル処理によるコマンド処理のやり直しが可能となり、オーバーフローエラーやFW/ロジック矛盾エラー等を原因とするクエリ処理の停止を回避することができる。
次に、ワーカノード200におけるクエリ処理のうち、アクセラレータミドルウェア(ミドル)216による処理について、更に詳しく説明する。
図6は、アクセラレータミドルウェアによる制御フローを示すフローチャートである。図6には、ミドル216が、アクセラレータオペレータを受け取ってから、アクセラレータオペレータに関する全てのコマンド処理が終了してまとめ処理を行うまで(図5のステップS102〜S114に相当)における制御フローが例示されている。
まず、ミドル216は、プラグイン215からアクセラレータオペレータ処理の指示を受けると、分割されたデータ単位で複数のコマンドを作成するコマンド分割を行う(ステップS201)。
次いでミドル216は、未処理のコマンドの有無を判定し(ステップS202)、未処理のコマンドが有った場合は(ステップS202のYES)、ステップS203に進み、未処理のコマンドがなかった場合(ステップS202のNO)、すなわち、全てのコマンドが処理済みであった場合は、ステップS210に進む。
ステップS203〜S209では、ミドル216は、1つの未処理コマンドについて、以下の制御を行う。
まず、ミドル216は、現在の処理モードがソフトモデル処理モードであるか否かを判定する(ステップS203)。前述したように、本実施の形態に係る情報処理システム(例えばワーカノード200)において、ミドル216は、所定の切替制御テーブルに従ってコマンド処理の処理主体を、アクセラレータ220とミドル216との間で切り替えることができる。本説明では、アクセラレータ220にコマンド処理を実行させる処理モードをアクセラレータ処理モードと呼び、ミドル216にコマンド処理を実行させる処理モードをソフトモデル処理モードと呼んでいる。ステップS203においてソフトモデル処理モードと判定した場合は(ステップS203のYES)、ステップS207に進む。一方、ステップS203においてソフトモデル処理モードではないと判定した場合(ステップS203のNO)、すなわちアクセラレータ処理モードであった場合は、ステップS204に進む。
ステップS204では、ミドル216は、処理モードをソフトモデル処理モードに切り替えるか否かを、切替制御テーブルのソフトモデル切り替え条件3113の何れかの項目と一致するか否かによって判定する。ソフトモデル切替条件3113の何れかに一致した場合(ステップS204のYES)、ミドル216は処理モードをアクセラレータ処理モードからソフトモデル処理モードに切り替える処理を行い(ステップS205)、ステップS207に進む。一方、ソフトモデル切替条件3113の何れにも一致しなかった場合は(ステップS204のNO)、アクセラレータ処理モードが維持されるので、ミドル216は、アクセラレータ220に上記1つの未処理コマンドを実行させる(ステップS206)。そして、ステップS206のコマンド実行の完了後はステップS202に戻って以降の処理を繰り返す。
ステップS207に移行した場合、処理モードはソフトモデル処理モードになっている。そこで、ミドル216は、ソフトモデル218に上記1つの未処理コマンドを実行させる(ステップS207)。そして、ステップS207のコマンド実行の完了後はステップS208に進む。
ステップS208では、ミドル216は、処理モードをアクセラレータ処理モードに復帰させるか否かを、切替制御テーブルのアクセラレータ復帰条件3114に一致するか否かによって判定する。より具体的には、以前のステップS204の処理で一致すると判定されたソフトモデル切替条件3113と同じレコードにおけるアクセラレータ復帰条件3114を満たす場合に、アクセラレータ復帰条件3114に一致すると判定し(ステップS208のYES)、このときミドル216は、処理モードをソフトモデル処理モードからアクセラレータ処理モードに復帰させる処理を行い(ステップS209)、その後ステップS202に戻って以降の処理を繰り返す。一方、アクセラレータ復帰条件3114を満たさなかった場合は(ステップS208のNO)、処理モードの復帰を行わずに、すなわちソフトモデル処理モードのまま、ステップS202に戻って以降の処理を繰り返す。
そして、未処理コマンドに対するステップS203〜S209の処理が繰り返され、全てのコマンドが処理済みになると、ステップS210において、ミドル216は、各コマンドのまとめ処理を行ってその結果をプラグイン215に返す。以上をもって、受け取ったアクセラレータオペレータに対するSQLクエリ処理が完了する。
以上に説明したように、ミドル216は、受け取ったアクセラレータオペレータに対するコマンド実行の制御において、所定の切替条件及び復帰条件に基づいて処理モードを制御することにより、適切にソフトモデル218を利用することができる。
(4)アクセラレータオーバーフロー
以下では、ソフトモデル処理への切替条件として例示したアクセラレータオーバーフローに関する補足説明として、アクセラレータの構成、データベースファイルの構成、及びアクセラレータオーバーフローの発生条件の具体例について説明する。
以下では、ソフトモデル処理への切替条件として例示したアクセラレータオーバーフローに関する補足説明として、アクセラレータの構成、データベースファイルの構成、及びアクセラレータオーバーフローの発生条件の具体例について説明する。
図7は、アクセラレータの構成例を示すブロック図である。図7には、アクセラレータ24の一例としてFPGAの構成が示されている。また、図7に示したDDRメモリ420は、図1に示したアクセラレータ外付けメモリ25の具体例である。
図7に示したように、アクセラレータ24は、PCIeコア401、組込CPU402、DDRコントローラ403、カラムデータデコーダ回路404、メタデータ用SRAM(Static RAM)405、フィルタ回路406、演算レジスタ408を有する集約回路407、及び出力回路409が、内部バス410によって接続されて構成される。
PCIeコア401は、アクセラレータ24の内部と外部との間を接続する。組込CPU402では、ファームウェア(FW)が動作してコマンド処理の全体制御を行う。カラムデータデコーダ回路404は、メタデータ用SRAM405に格納された辞書データを利用して、カラムデータのデコード処理(辞書伸長処理等)を実施する。辞書データ等のメタデータは、デコード処理の高速化のために、アクセラレータ24外部のDDRメモリ420ではなく、内部のメタデータ用SRAM405に格納される。フィルタ回路406は、コマンドに含まれるフィルタ条件に従って、カラムデータのヒット判定を行う。集約回路407は、グルーピングやカラムの合計値(SUM値)の計算等を実施する。計算されたSUM値は、集約回路407に設けられた演算レジスタ408に格納される。出力回路409は、各回路による処理を経て得られる結果データをアクセラレータ24の外部に出力する。
ここで、図7に示したアクセラレータ24は、各回路のリソース量に上限があり、記録装置(メタデータ用SRAM405や演算レジスタ408)のメモリサイズにも上限がある。したがって、アクセラレーション処理を行う際に、上記の上限を超えるデータとコマンドの組み合わせがアクセラレータ24に入力された場合には、オーバーフローエラーとなってしまう。一方、ソフトモデル処理で用いられるCPU21やメモリ22で利用可能なリソース量やメモリサイズは、アクセラレータ24に比べて格段に余裕があり、実際上はほぼ制限がないに等しいため、オーバーフローエラーは殆ど発生しない。
図8は、カラムストア形式のデータベースファイルの構成例を示す図である。図8に例示したデータベースファイル320は、メタデータ3210とカラムデータ3220とから構成される。
メタデータ3210には、辞書データ3211や、カラムデータ3220において各カラムの値がNULLであるか否かを示すNULLフラグ情報3212、カラムの型情報3213、及び統計情報3214等から構成される。また、カラムデータ3220は、各カラムのデータがまとまった形で格納されている。具体的には図8の場合、カラムAデータ3221が連続で格納され、続いてカラムBデータ3222が連続で格納され、といったように、それぞれが連続する複数のカラムデータが格納されている。
分散データベースシステムでは、図8のように構成されたデータベースファイル320が、ある一定のデータサイズに分割されて複数存在し、分散ファイルシステムによって各ノードに分散配置されている。そして各ノードにおけるミドルウェアは、コマンドとデータベースファイルとを1対1に対応付けて処理を行う。
以上のことから、本実施の形態に係るノード(例えばワーカノード200)においては、ミドル216は、コマンドとそれに対応するデータベースファイル単位の小粒度で、言い換えれば、1コマンドごとの処理単位を1データベースファイルとする小粒度で、アクセラレータ処理とソフトモデル処理とを切り替えながら、コマンド処理を実行させることができる。
図9は、アクセラレータオーバーフローの発生条件の具体例を示す図である。図9には、ミドル216によってアクセラレータ処理によるコマンド処理が指示された場合(図5のステップS103のようにコマンド投入された場合)に、アクセラレータ24でオーバーフローエラーが発生する具体的な条件が「#1」〜「#3」に例示されている。
「#1」の条件は、読み込んだデータベースファイル320の辞書データ3211のデータサイズがメタデータ用SRAM405に設定された辞書用のメモリサイズの上限を超えた場合を表している。「#2」の条件は、読み込んだデータベースファイル320のNULLフラグ情報3212のデータサイズがメタデータ用SRAM405に設定されたNULLフラグ用のメモリサイズの上限を超えた場合を表している。「#3」の条件は、集約処理中に集約結果が演算レジスタ408のメモリサイズを超えた場合を表している。これら「#1」〜「#3」の何れかに一致する状況が発生した場合、アクセラレータ処理はオーバーフローエラーとなり、アクセラレータ24は投入された当該コマンドを処理することができなくなる。
しかし、図3に示したように、本実施の形態では、アクセラレータオーバーフローの発生は、切替制御テーブルにソフトモデル切替条件3113として登録されている。したがって、アクセラレータオーバーフローの発生時には、ミドル216がソフトモデル処理に切り替えて当該コマンドの再実行を制御することができる。そしてソフトモデル処理ではオーバーフローエラーはほぼ発生しない。この結果、アクセラレータ処理によってコマンド実行ができなくなった場合でも、ソフトモデル処理を利用してコマンド処理を継続することができる。
(5)本実施の形態の従来技術との比較
図10は、本実施の形態においてアクセラレータオーバーフローエラーが発生した場合のSQLクエリ処理の進捗度合いを従来のアクセラレータ処理と比較するための図である。
図10は、本実施の形態においてアクセラレータオーバーフローエラーが発生した場合のSQLクエリ処理の進捗度合いを従来のアクセラレータ処理と比較するための図である。
図10(A)には、従来のデータベースシステムにおいてアクセラレータ処理中にオーバーフローエラーが発生した場合のSQLクエリ処理の進捗状況の一例が示されている。詳しく見ると、時間t0からアクセラレータ処理が開始され、順調に処理済みコマンド数が増えているが、時間t1においてオーバーフローエラーが発生している。この場合、オーバーフローエラーが発生した時点でSQLクエリ処理はエラー判定となり、最終的にアプリケーションサーバにクエリエラーの応答が返ることになり、以後、コマンド処理は停止してしまう。
一方、図10(B)には、本実施の形態においてアクセラレータ処理中にオーバーフローエラーが発生した場合のSQLクエリ処理の進捗状況の一例が示されている。詳しく見ると、時間t0からアクセラレータ処理が開始され、時間t1にオーバーフローエラーが発生するまでは図10(A)と同様である。ここで、アクセラレータオーバーフローエラーの発生は、図3に示した切替制御テーブルにおける「#8」のソフトモデル切替条件3113に一致することから、時間t1においてミドル216がソフトモデル処理への切替を行う。その結果、時間t1から時間t2にかけて、上記エラーが発生したときのコマンドをソフトモデル処理によって再処理することができるため、SQLクエリエラーを回避して処理を継続することができる。そして時間t2で当該コマンドの処理が完了すると、切替制御テーブルの「#8」のアクセラレータ復帰条件3114に一致することから、ミドル216はアクセラレータ処理への復帰を行う。したがって、時間t2以降は、再びアクセラレータ処理によるSQLクエリ処理を続けることができる。
図10(A)と図10(B)を比較すると、従来のデータベースシステムでは、エラーや障害等によってアクセラレータ処理が継続できない場合にはクエリエラーとなってSQLクエリ処理が停止してしまうのに対し、本実施の形態によれば、ソフトモデル処理に切替可能なことにより、クエリエラーを回避してシステムの可用性を高めることができる。また、図10(B)に示された進捗度合いの傾きからも分かるように、ソフトモデル処理の処理速度はアクセラレータ処理よりも遅いが、本実施の形態ではアクセラレータコマンド単位でソフトモデル処理への切替が可能なため、処理速度が低下するソフトモデル処理への切替期間を可及的に抑制することができる。
すなわち、本実施の形態によれば、分散データベースシステムのノードにおいて、アクセラレータを導入することによって処理性能の向上を図る一方で、アクセラレータコマンド単位でアクセラレータ処理とソフトモデル処理との切替・復帰を可能とすることによって、アクセラレータ導入時の柔軟性向上及び障害対応を実現することができ、システムの可用性を高めることができる。
なお、本発明は上記した実施の形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。例えば本発明は、クライアントから指示された処理を分散データベースシステムから取得した情報に基づいて実行する、種々の構成の情報処理装置や情報処理システムに広く適用することができる。
また、図面において制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実施には殆ど全ての構成が相互に接続されていると考えてもよい。
1 分散データベースシステム
10 アプリケーションサーバ
20 ワーカノード
21 CPU
22 メモリ
23 NIC
24 アクセラレータ
25 アクセラレータ外付けメモリ
26 ドライブ
30 クラスタ
40 ネットワーク
100,200 ワーカノード
110,210 ソフトウェア機能ブロック
111,211 クエリパーサ
112,212 クエリプランナ
113,213 クエリ実行エンジン
114,214 分散ファイルシステム
115,215 アクセラレータストレージプラグイン(プラグイン)
116,216 アクセラレータミドルウェア(ミドル)
117,217 アクセラレータドライバ
118,218 アクセラレータソフトウェアモデル(ソフトモデル)
120,220 アクセラレータ
401 PCIeコア
402 組込CPU
403 DDRコントローラ
404 カラムデータデコーダ回路
405 メタデータ用SRAM
406 フィルタ回路
407 集約回路
408 演算レジスタ
409 出力回路
410 内部バス
420 DDRメモリ
10 アプリケーションサーバ
20 ワーカノード
21 CPU
22 メモリ
23 NIC
24 アクセラレータ
25 アクセラレータ外付けメモリ
26 ドライブ
30 クラスタ
40 ネットワーク
100,200 ワーカノード
110,210 ソフトウェア機能ブロック
111,211 クエリパーサ
112,212 クエリプランナ
113,213 クエリ実行エンジン
114,214 分散ファイルシステム
115,215 アクセラレータストレージプラグイン(プラグイン)
116,216 アクセラレータミドルウェア(ミドル)
117,217 アクセラレータドライバ
118,218 アクセラレータソフトウェアモデル(ソフトモデル)
120,220 アクセラレータ
401 PCIeコア
402 組込CPU
403 DDRコントローラ
404 カラムデータデコーダ回路
405 メタデータ用SRAM
406 フィルタ回路
407 集約回路
408 演算レジスタ
409 出力回路
410 内部バス
420 DDRメモリ
Claims (15)
- 配布されたクエリプランに従ってクエリ処理を実行する情報処理装置であって、
プロセッサと、
専用回路を用いてコマンドを処理するアクセラレータ処理を実行可能なアクセラレータと、
前記プロセッサ上で稼働し、ソフトウェアを用いてコマンドを処理するソフトモデル処理を実行可能なソフトモデルと、
を備え、
前記プロセッサは、前記クエリプランに含まれるアクセラレータオペレータを複数のアクセラレータコマンドに分解し、分解した前記アクセラレータコマンドを前記アクセラレータまたは前記ソフトモデルに投入し、
前記アクセラレータコマンドの処理主体を変更する切替条件に該当する場合に、前記アクセラレータコマンドの投入先を前記アクセラレータから前記ソフトモデルに切り替える
ことを特徴とする情報処理装置。 - 前記切替条件には、切り替えられた前記アクセラレータコマンドの投入先を復帰させる復帰条件が含まれ、
前記復帰条件に該当する場合に、前記アクセラレータコマンドの投入先を前記ソフトモデルから前記アクセラレータに切り替える
ことを特徴とする請求項1に記載の情報処理装置。 - 前記プロセッサは、1の前記アクセラレータコマンドの処理を単位として、前記アクセラレータコマンドの投入先を切替可能である
ことを特徴とする請求項1に記載の情報処理装置。 - 前記プロセッサ及び前記アクセラレータは、使用可能なメモリが定められており、
前記切替条件には、前記アクセラレータにおけるオーバーフローエラーの発生が含まれる
ことを特徴とする請求項2に記載の情報処理装置。 - 前記アクセラレータにおけるオーバーフローエラーの発生を前記切替条件とするとき、
当該オーバーフローエラーの連続発生回数が第1の閾値に達していない場合は、前記切替条件に基づいて前記投入先が切り替えられた後の前記ソフトモデルにおいて1の前記アクセラレータコマンドの処理が完了したことを前記復帰条件とし、
当該オーバーフローエラーの連続発生回数が前記第1の閾値に達した場合は、前記切替条件に基づいて前記投入先が切り替えられた後の前記ソフトモデルにおいて前記アクセラレータオペレータの処理が完了したことを前記復帰条件とする
ことを特徴とする請求項4に記載の情報処理装置。 - 前記切替条件には、前記アクセラレータにおけるコレクタブルソフトエラーの発生が含まれる
ことを特徴とする請求項2に記載の情報処理装置。 - 前記アクセラレータにおけるコレクタブルソフトエラーの発生を前記切替条件とするとき、
当該コレクタブルソフトエラーの通算発生回数が第2の閾値に達していない場合は、前記切替条件に基づいて前記投入先を前記ソフトモデルに切り替えた後、当該コレクタブルソフトエラーが解消したことを前記復帰条件とし、
当該コレクタブルソフトエラーの連続発生回数が前記第2の閾値に達した場合は、前記切替条件に基づいて前記投入先を前記ソフトモデルに切り替えた後、前記アクセラレータへの復帰を許可しない
ことを特徴とする請求項6に記載の情報処理装置。 - 前記ソフトモデルは、前記ソフトモデル処理で前記アクセラレータオペレータを処理する際、クエリ文で参照されるデータファイルのうちフィルタ条件に利用するカラムデータのみに対してメモリフォーマット変換を実施し、当該メモリフォーマット変換が実施された前記カラムデータに対して前記フィルタ条件を用いたフィルタ判定を実施し、当該フィルタ条件にヒットした前記カラムデータのみを集約する
ことを特徴とする請求項1に記載の情報処理装置。 - 前記アクセラレータはFPGA(Field Programmable Gate Array)である
ことを特徴とする請求項1に記載の情報処理装置。 - 複数のワーカノードを結合したクラスタでクエリを処理する情報処理システムであって、
前記クラスタ内の第1のワーカノードに前記クエリを送信するアプリケーションサーバと、
前記アプリケーションサーバから前記クエリを受信し、当該クエリに基づいて生成したクエリプランを前記クラスタ内の第2のワーカノードに配布する前記第1のワーカノードと、
前記第1のワーカノードから配布された前記クエリプランに従ってクエリ処理を実行する前記第2のワーカノードと、
を備え、
前記第2のワーカノードは、
プロセッサと、
専用回路を用いてコマンドを処理するアクセラレータ処理を実行可能なアクセラレータと、
前記プロセッサ上で稼働し、ソフトウェアを用いてコマンドを処理するソフトモデル処理を実行可能なソフトモデルと、
を有し、
前記プロセッサは、前記クエリプランに含まれるアクセラレータオペレータを複数のアクセラレータコマンドに分解し、分解した前記アクセラレータコマンドを前記アクセラレータまたは前記ソフトモデルに投入し、
前記アクセラレータコマンドの処理主体を変更する切替条件に該当する場合に、前記アクセラレータコマンドの投入先を前記アクセラレータから前記ソフトモデルに切り替える
ことを特徴とする情報処理システム。 - 前記切替条件には、切り替えられた前記アクセラレータコマンドの投入先を復帰させる復帰条件が含まれ、
前記復帰条件に該当する場合に、前記アクセラレータコマンドの投入先を前記ソフトモデルから前記アクセラレータに切り替える
ことを特徴とする請求項10に記載の情報処理システム。 - 配布されたクエリプランに従ってクエリ処理を実行する情報処理装置による情報処理方法であって、
前記情報処理装置が、
プロセッサと、
専用回路を用いてコマンドを処理するアクセラレータ処理を実行可能なアクセラレータと、
前記プロセッサ上で稼働し、ソフトウェアを用いてコマンドを処理するソフトモデル処理を実行可能なソフトモデルと、
を有し、
前記プロセッサが、前記クエリプランに含まれるアクセラレータオペレータを複数のアクセラレータコマンドに分解し、分解した前記アクセラレータコマンドを前記アクセラレータまたは前記ソフトモデルに投入し、
前記アクセラレータコマンドの処理主体を変更する切替条件に該当する場合に、前記アクセラレータコマンドの投入先を前記アクセラレータから前記ソフトモデルに切り替える
ことを特徴とする情報処理方法。 - 前記切替条件には、切り替えられた前記アクセラレータコマンドの投入先を復帰させる復帰条件が含まれ、
前記復帰条件に該当する場合に、前記アクセラレータコマンドの投入先を前記ソフトモデルから前記アクセラレータに切り替える
ことを特徴とする請求項12に記載の情報処理方法。 - 前記プロセッサが、1の前記アクセラレータコマンドの処理を単位として、前記アクセラレータコマンドの投入先を切替可能である
ことを特徴とする請求項12に記載の情報処理方法。 - 前記ソフトモデルは、前記ソフトモデル処理で前記アクセラレータオペレータを処理する際、クエリ文で参照されるデータファイルのうちフィルタ条件に利用するカラムデータのみに対してメモリフォーマット変換を実施し、当該メモリフォーマット変換が実施された前記カラムデータに対して前記フィルタ条件を用いたフィルタ判定を実施し、当該フィルタ条件にヒットした前記カラムデータのみを集約する
ことを特徴とする請求項12に記載の情報処理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019041066A JP2020144631A (ja) | 2019-03-06 | 2019-03-06 | 情報処理装置、情報処理システム及び情報処理方法 |
US16/552,146 US20200285520A1 (en) | 2019-03-06 | 2019-08-27 | Information processor, information processing system, and method of processing information |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019041066A JP2020144631A (ja) | 2019-03-06 | 2019-03-06 | 情報処理装置、情報処理システム及び情報処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020144631A true JP2020144631A (ja) | 2020-09-10 |
Family
ID=72336366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019041066A Pending JP2020144631A (ja) | 2019-03-06 | 2019-03-06 | 情報処理装置、情報処理システム及び情報処理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20200285520A1 (ja) |
JP (1) | JP2020144631A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11385693B2 (en) * | 2020-07-02 | 2022-07-12 | Apple Inc. | Dynamic granular memory power gating for hardware accelerators |
US20220043697A1 (en) * | 2020-08-06 | 2022-02-10 | Dell Products L.P. | Systems and methods for enabling internal accelerator subsystem for data analytics via management controller telemetry data |
-
2019
- 2019-03-06 JP JP2019041066A patent/JP2020144631A/ja active Pending
- 2019-08-27 US US16/552,146 patent/US20200285520A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20200285520A1 (en) | 2020-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111031096B (zh) | 一种基于拟态防御的分布式存储***构建方法 | |
US9294338B2 (en) | Management computer and method for root cause analysis | |
JP6325001B2 (ja) | 階層データ構造のノードにおいて再帰的イベントリスナを用いる方法およびシステム | |
US20140237297A1 (en) | Method and system for supporting event root cause analysis | |
US11221935B2 (en) | Information processing system, information processing system management method, and program thereof | |
US11514295B2 (en) | Continuous learning techniques with machine learning systems to adapt to new input data sets | |
CN111209084B (zh) | 一种faas分布式计算方法和装置 | |
CN110109898B (zh) | 基于fpga片内bram的哈希连接加速方法及*** | |
WO2017143957A1 (zh) | 一种数据重分布的方法及装置 | |
US20190317872A1 (en) | Database cluster architecture based on dual port solid state disk | |
JP2020144631A (ja) | 情報処理装置、情報処理システム及び情報処理方法 | |
US20090037512A1 (en) | Multi-nodal compression techniques for an in-memory database | |
US20190310922A1 (en) | Multi-replica data restoration method and apparatus | |
CN110737924B (zh) | 一种数据保护的方法和设备 | |
US20220012233A1 (en) | Creation of a Blockchain with Blocks Comprising an Adjustable Number of Transaction Blocks and Multiple Intermediate Blocks | |
CN108170507B (zh) | 虚拟应用管理方法/***、计算机可读存储介质及服务端 | |
CN111327685A (zh) | 分布式存储***数据处理方法、装置及设备和存储介质 | |
US20150120640A1 (en) | Hierarchical probability model generation system, hierarchical probability model generation method, and program | |
US20210397599A1 (en) | Techniques for generating a consistent view of an eventually consistent database | |
JP2015045905A (ja) | 情報処理システム、情報処理システムの障害処理方法 | |
WO2022262525A1 (zh) | 一种故障处理方法、装置、设备及*** | |
CN115509769A (zh) | 一种私有云中Kafka部署方法、装置及电子设备 | |
CN115499294A (zh) | 一种分布式存储环境网络亚健康检测及故障自动处理方法 | |
CN107710165B (zh) | 用于存储节点同步业务请求的方法和装置 | |
US10698796B2 (en) | Non-transitory computer-readable medium, information processing apparatus, debugging system and debugging method |