JP2019082819A - アクセラレータ部の利用に対する課金を支援するシステム及び方法 - Google Patents
アクセラレータ部の利用に対する課金を支援するシステム及び方法 Download PDFInfo
- Publication number
- JP2019082819A JP2019082819A JP2017209359A JP2017209359A JP2019082819A JP 2019082819 A JP2019082819 A JP 2019082819A JP 2017209359 A JP2017209359 A JP 2017209359A JP 2017209359 A JP2017209359 A JP 2017209359A JP 2019082819 A JP2019082819 A JP 2019082819A
- Authority
- JP
- Japan
- Prior art keywords
- unit
- command
- commands
- accelerator
- acceleration rate
- 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
- 238000000034 method Methods 0.000 title claims description 53
- 230000001133 acceleration Effects 0.000 claims abstract description 55
- 230000004044 response Effects 0.000 claims abstract description 27
- 230000008569 process Effects 0.000 claims description 51
- 238000004590 computer program Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 34
- 230000015654 memory Effects 0.000 description 20
- 230000010354 integration Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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/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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- 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
- G06F9/5044—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 considering hardware capabilities
-
- 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
- G06F9/505—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 considering the load
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5041—Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
- H04L41/5054—Automatic deployment of services triggered by the service manager, e.g. service implementation by automatic configuration of network components
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/78—Architectures of resource allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】アクセラレータ部による高速化の度合に応じた利用料を決定する。【解決手段】1以上のアクセラレータであるアクセラレータ部の利用に対する課金を支援する課金支援システムが、稼働量取得部、加速率推定部及び利用料決定部を有する。稼働量取得部は、アクセラレータ部に入力された1以上のコマンドの各々について、当該コマンドに対してアクセラレータ部から出力された応答から、当該コマンドの実行に関する稼働量を取得する。加速率推定部は、アクセラレータ部に入力された1以上のコマンドについて、当該1以上のコマンドの処理に要した時間であるコマンド実行時間と、当該1以上のコマンドについてそれぞれ取得された1以上の稼働量とを基に加速率を推定する。利用料決定部は、当該推定された加速率に基づきアクセラレータ部の利用料を決定する。【選択図】図2
Description
本発明は、概して、1以上のアクセラレータであるアクセラレータ部の利用に対する課金の支援に関する。
一般に、クラウドサービスでは、ユーザに割り当てられたCPUやメモリなどのリソースの量と当該リソースの稼働時間とに基づいて、当該ユーザに課金がされる。
特許文献1に開示の課金システムは、仮想マシンにより使用されるリソースの使用率が基準値よりも低い場合、リソースの稼働率に応じて決定された課金金額を減額する。
ところで、近年、特定の処理を高速に行うハードウェア(アクセラレータ)を有する計算機システムが注目されている。この場合、通常のCPUやメモリの利用料以外に、アクセラレータの利用料が課金される。CPUやメモリはOS(オペレーティングシステム)により稼働率が測定される。しかし、アクセラレータは、1コンポーネントとして、割り当て時間と稼働時間のみ測定可能である。
そこで、アクセラレータの利用料を、当該アクセラレータの割り当て時間と稼働時間から決定することが考えられる。
しかし、その決定が、妥当であるとは限らない。その理由は、次の通りである。
すなわち、アクセラレータに対してユーザが期待することは、ソフトウェアによる処理よりも高速な処理であり、故に、アクセラレータの利用料は、その高速化に対しての対価であることが望ましい。しかし、アクセラレータによる高速化は一定ではない。例えば、処理対象のコマンドやデータにより、アクセラレータの処理速度が低下することもある。この場合、アクセラレータの割り当て時間又は稼働時間は長くなり得る。そのため、アクセラレータによってあまり高速に処理ができなくてもアクセラレータの利用料が高額になってしまうことが考えられる。
1以上のアクセラレータであるアクセラレータ部の利用に対する課金を支援する課金支援システムが、稼働量取得部、加速率推定部及び利用料決定部を有する。稼働量取得部は、アクセラレータ部に入力された1以上のコマンドの各々について、当該コマンドに対してアクセラレータ部から出力された応答から、当該コマンドの実行に関する稼働量を取得する。加速率推定部は、アクセラレータ部に入力された1以上のコマンドについて、当該1以上のコマンドの処理に要した時間であるコマンド実行時間と、当該1以上のコマンドについてそれぞれ取得された1以上の稼働量とを基に加速率を推定する。利用料決定部は、当該推定された加速率に基づきアクセラレータ部の利用料を決定する。
本発明によれば、アクセラレータ部による高速化の度合に応じた利用料を決定することができる。
以下の説明では、「インターフェース部」は、1以上の通信インターフェースデバイスでよい。1以上の通信インターフェースデバイスは、1以上の同種の通信インターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「メモリ部」は、1以上のメモリでよい。少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。メモリ部は、主に、プロセッサ部による処理の際に使用される。
また、以下の説明では、「PDEV部」は、1以上のPDEVでよい。「PDEV」は、物理的な記憶デバイスを意味し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)、例えばHDD(Hard Disk Drive)又はSSD(Solid State Drive)である。PDEV部は、RAIDグループであってもよい。「RAID」は、Redundant Array of Independent (or Inexpensive) Disksの略である。
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサでよい。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。1以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。一部のプロセッサは、処理の一部または全部を行うハードウェア回でもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜にメモリ部及び/又はインターフェース部等を用いながら行うため、処理の主語が、プロセッサ部(或いは、そのプロセッサ部を有する装置又はシステム)とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な(例えば非一時的な)記録媒体であってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明では、同種の要素を区別して説明する場合は、その要素の参照符号を使用し(例えば、演算器421A、演算器421B1、演算器421B2)、同種の要素を区別しないで説明する場合は、その要素の参照符号のうちの共通符号のみ使用する(例えば、演算器421)ことがある。
以下、図面を参照しながら、幾つかの実施例を説明する。なお、以下の説明により本発明が限定されるものではない。
図1は、本発明の実施例1に係るシステム全体のハードウェア構成図である。
インターネットのような通信ネットワーク105に、1以上のユーザ端末103及びクラウド基盤100が接続されている。
1以上のユーザ端末103の各々は、ユーザ(典型的にはいわゆるエンドユーザ)の計算機、例えば、パーソナルコンピュータ、スマートフォンである。
クラウド基盤100は、計算機システムの一例であり、クラウドサービスを提供するシステムである。「計算機システム」は、1以上の計算機、例えば、サーバシステムとストレージシステムのうちの少なくとも1つでよい。「サーバシステム」は、1以上の物理的なサーバ(例えばサーバのクラスタ)であってもよいし、少なくとも1つの仮想的なサーバ(例えばVM(Virtual Machine))を含んでもよい。また、「ストレージシステム」は、1以上の物理的なストレージ装置であってもよいし、少なくとも1つの仮想的なストレージ装置(例えばSDS(Software Defined Storage))を含んでもよい。
クラウド基盤100は、複数(又は1)のノード(計算機)101を有する。本実施例では、複数のノード101は、ユーザ端末103からの要求に応じた処理を実行するノード101Nと、ユーザを管理するノード101Uとを含む。しかし、そのような区別はなくてもよい。
各ノード101が、I/F部(インターフェース部)111、PDEV部112、FPGA(Field-Programmable Gate Array)部113、メモリ部114、及び、それらに接続されたプロセッサ部115を有する。一部のノード101(例えばノード101U)にはFPGA部113はなくてもよい。FPGA部113は、アクセラレータ部の一例であり、1以上のFPGAである。FPGAは、PLD(Programmable Logic Device)の一例であり、アクセラレータの一例である。つまり、本実施例では、アクセラレータがFPGAで実現されている。
図2は、実施例1に係るシステム全体の機能ブロック図である。
FPGA40は、FPGA部113に相当する。すなわち、本実施例では、FPGA部113は、1つのFPGA40である。図中のFPGA40内のブロックは、ハードウェア機能ブロックである。図中のアプリケーション(アプリケーションプログラム)20、OS(オペレーティングシステム)30、加速率推定プロセス502及び利用料決定プロセス503は、プロセッサ部115上で動作するプログラムである。OS30上では、FPGA40のドライバ31が実行される。ドライバ31も、プロセッサ部115上で動作するプログラムである。また、ドライバ31におけるサブミッションプロセス311、コンプリーションプロセス312及び積算プロセス501も、プログラムでよい。ユーザ端末103内のユーザプログラム13は、ユーザ端末103内のプロセッサ部(図示せず)で実行されるプログラムである。ノード101U内の課金システム60は、ノード101Uのプロセッサ部115で実行されるプログラムである。
本実施例において、ユーザプログラム13から処理要求をアプリケーション20が受信した場合、アプリケーション20が、当該要求の処理を行う。アプリケーション20は、当該処理の一部処理を、FPGA40にオフロードするために、当該一部処理のコマンドを発行することができる。本実施例では、FPGA40の利用料金に注目しているため、FPGA40以外の要素(例えば、プロセッサ部115、メモリ部114及びアプリケーション20)の使用料金については言及していない。
FPGA40(図中のハードウェア機能ブロック(回路))は、初期のFPGAにIP(Intellectual Property)コア82がロードされることで構築される。IPコア82(例えばコンフィグレーションファイル)は、例えばドライバ31により、図中のハードウェア機能ブロック(回路)を構築するために初期のFPGAにロードされる。FPGA40における回路は、専用のLSI(Large Scale Integration)(例えば、ASIC(Application Specific Integrated Circuit)))や、汎用のLSIを組み合わせて構成してもよい。
FPGA40(構築された回路)は、入力回路401と、演算器群402と、カウンタ群403と、出力回路404とを含む。
入力回路401は、ドライバ31から出力された(サブミッションプロセス311により出力された)コマンドを入力する。
演算器群402は、1以上の演算器421である。高速に処理をするために、演算器群402の構成は、パイプライン構成や並列構成であ。図2の例によれば、演算器群402は、カスケード接続された複数種類の演算器421A〜421Eを含む。「演算器の種類」は、演算種類(例えば、算術演算、比較演算)、演算能力(例えば規模)及び演算負荷のうちの少なくとも1つに依存してよい。演算器群402は、1つの第1種の演算器421A、並列になった3つの第2種の演算器421B1〜421B3、1つの第3種の演算器421C、並列になった2つの第4種の演算器421D1及び421D2、及び、1つの第5種の演算器421Eを有する。このように、全体では、第1種の演算器421Aから第5種の演算器421Eまで5段階のパイプラインが構成される。演算器群402の構成として他の構成が採用されてよい。例えば、各コマンドについて、演算器群402における全ての演算器421が稼働することに代えて、コマンドによっては、一部の演算器421が稼働しないでもよい。演算器群402(図示の例では演算器421E)から、コマンドの処理結果が出力される。
演算器421の稼働量を計測するために、カウンタ群403が設けられる。すなわち、演算器の種類毎に、稼働量をカウントするカウンタ431が設けられる。図2の例によれば、5つの演算器種類にそれぞれ対応した5つのカウンタ431A〜431Eが設けられる。コマンドの種類やデータの内容によって演算器421の稼働量が変わり得る。また、本実施例では、演算器421の種類によって、カウント値の重み係数(重み)が異なる。言い換えれば、演算器421の種類が同じであれば、カウント値の重み係数は同じである。このため、本実施例では、演算器421の種類毎に、カウンタ431が設けられる。カウント値の重み係数と演算器421との関係に応じて、カウンタ431が設けられてよい。カウンタ431のカウント値は、当該カウンタ431に対応する演算器421が有効な演算をした際のクロック数でよい。カウンタ群403における各カウンタ431のカウント値は、カウンタ群403から出力される。
出力回路404は、コマンド毎に、当該コマンドについて演算器群402から出力された処理結果と、当該コマンドについてカウンタ群403から出力されたカウント値(1以上のカウント値)とを取得し、処理結果とカウント値とを関連付けた応答を出力する。応答はドライバ31に出力される。
このようなFPGA40とドライバ31間では、図3を参照して後述するように、メモリ部114に設けられたキュー391及び392を介したやり取りが行われる。
メモリ部114は、重みテーブル520及び単価テーブル530を格納する。
重みテーブル520は、カウンタ431(カウント値)と重み係数との関係を示す。具体的には、重みテーブル520は、図4に示すように、カウンタ431毎に、カウンタID41と重み係数42といった情報を格納する。カウンタID41は、カウンタ431のIDを示す。重み係数42は、重み係数として代入される値を示す。本実施例では、上述したように、カウンタ431は、演算器の種類毎に存在する。このため、重みテーブル520は、演算器の種類に応じたカウント値の重み係数を示す。なお、各重み係数は、あらかじめ実験等によって決められた値でよい。
単価テーブル530は、推定加速率と単価の関係を示す。具体的には、単価テーブル530は、図5に示すように、推定加速率rの範囲毎に、加速率範囲51と、単価52といった情報を格納する。加速率範囲51は、推定加速率rの範囲(上限及び下限のうちの少なくとも1つ)を示す。単価52は、単価(単位時間当たりの利用料)として代入される値を示す。
以下、本実施例で行われる処理の流れを、主に図2を参照して説明する(適宜に、図3〜図5を参照する)。
アプリケーション20がユーザプログラム13からの処理要求を受けると(矢印350)、要求内容に従ってAPP20は処理をする。その際に、アプリケーション20が、FPGA40での処理が適当と判断した処理は、OS30の一部であるドライバ31(FPGA40のドライバ31)を通して、FPGA40に処理を依頼する(矢印351)。当該処理依頼には、例えば、FPGA40を利用するユーザ(アカウント)のIDが指定されている。このため、後述の積算プロセス501は、ユーザ(アカウント)毎に、カウント値の積算を行う。以下の説明において、処理要求を発行したユーザプログラム13のユーザを、「対象ユーザ」と言う。
ドライバ31は、アプリケーション20から処理依頼を受け取ると、サブミッションプロセス311が、FPGA40にコマンドを投入する(矢印352)。具体的には、例えば、サブミッションプロセス311は、図3に示すように、メモリ部114におけるコマンドキュー391にコマンドを格納し(矢印352A)、当該コマンドの格納を入力回路401に通知し(矢印352B)、通知を受けた入力回路401が、当該コマンドをコマンドキュー391から取得する(矢印352C)。当該コマンドでは、例えば、当該コマンドに対する応答の格納先記憶領域(メモリ部114における領域)のアドレスが指定されており、応答が、その指定されたアドレスが示す記憶領域に格納されることになる。
FPGA40の入力回路401は、コマンドを取得した場合、カウンタ431A〜431Eをリセットする(矢印353)。その後、入力回路401は、当該コマンドを演算器群402(演算器421A)に投入し(矢印354)、演算器421A〜421Eが、当該コマンドの実行のために稼働する。カウンタ431A〜431Eが、演算器421A〜421Eの稼働をカウントする(矢印355A〜355E(図3の矢印355))。例えば、カウンタ431Aは、演算器421Aの稼働をカウントする(矢印355A)。カウンタ431Bは、演算器421B1〜421B3の稼働をカウントする(矢印355B)。カウンタ431Bのカウント値は、演算器421B1〜421B3の稼働の合計となる。
当該コマンドの実行が終わると、演算器群402(演算器421E)が、当該コマンドの処理結果を出力回路404に出力する(矢印356)。当該実行結果を受けた出力回路404が、各カウンタ431からカウント値を取得する(矢印357)。出力回路404は、処理結果と各カウンタ431のカウント値とを含んだ応答を、ドライバ31に返す(矢印358)。具体的には、例えば、出力回路404は、図3に示すように、処理(実行)されたコマンドで指定されているアドレスを入力回路401から受け(矢印358A)、当該アドレスが示す領域(メモリ部114における応答キュー392の領域)に当該応答を格納し(矢印358B)、応答の格納をドライバ31に通知し(矢印358C)、ドライバ31のコンプリーションプロセス312は、処理されたコマンドで指定されたアドレスが示す領域(メモリ部114における応答キュー392の領域)から応答を取得する(矢印358D)。
ドライバ31のコンプリーションプロセス312は、取得した応答中の処理結果をアプリケーション20に返す(矢印359)。アプリケーション20は、当該処理結果に基づく応答をユーザプログラム13に返す(矢印360)。
また、コンプリーションプロセス312は、各カウンタ431のカウント値を積算プロセス501に渡す(矢印361)。
積算プロセス501は、対象ユーザ(アカウント)について、各カウンタ431の暫定的な積算値(カウント値の積算値)を管理している。積算プロセス501は、カウンタ431毎に、暫定的な積算値に、今回取得されたカウント値を積算する。
積算プロセス501(稼働量取得部の一例)は、課金のタイミングごとに、加速率推定プロセス502に、各カウンタ431の積算値(カウント値の積算値)を送る(矢印362)。課金のタイミングとは、コマンドごと(応答を取得するごと)であってもよいし、所定時間ごと(例えば毎時間、毎日、又は、毎月)であってもよい。課金のタイミングは、FPGA部113の利用契約等に基づく任意のタイミングでよい。
加速率推定プロセス502(加速率推定部の一例)は、各カウンタ431の積算値を基に、加速率を推定し、推定した加速率を利用料決定プロセス503へ通知する(矢印363)。具体的には、加速率推定プロセス502は、重みテーブル520を参照し、数1に示すように、カウンタ431A〜431Eの積算値を1次結合し、コマンド実行時間で割ることで、平均の加速率を推定する。FPGA40ではパイプライン構成や並列構成により、プロセッサ部115上で逐次処理されるソフトウェアよりも、単位時間当たりの稼働(演算回数)が多くなる。そのため、稼働(演算回数)をカウントし、コマンド実行時間で割ることで、平均の加速率を推定することができる。
なお、tは、コマンド実行時間である。この「コマンド実行時間」は、具体的には、前回の課金のタイミングから今回の課金のタイミングまでに対象ユーザについて処理されたコマンドの実行時間の累積値である。コマンド後の実行時間は、OS30のタイマ(図示せず)により計測されてもよいし(例えばコマンド発行から応答取得までの時間)、FPGA40のタイマ(図示せず)により計測されてもよい(例えばコマンド取得から応答出力までの時間)。
ciは、積算値(カウント値の積算値)である。wiは、重み係数である。加速率推定プロセス502は、重みテーブル520(図4)を参照し、カウンタ431毎の重み係数wiを取得する。
rは、推定加速率である。
そして、利用料決定プロセス503(利用料決定部の一例)は、推定加速率rを基に、FPGA40の利用料を決定し、決定した利用料を課金システム60に通知する(矢印364)。
求められた利用料(決定された利用料)は、上述したように、課金システム60に送らる。課金システム60は、通知された利用料(又は当該利用料に対して何らかの金額を足した又は減じた金額)をユーザに対して課金する。
以上、本実施例によれば、入力されたコマンドの処理のための稼働量を計測する回路を構築するためのIPコア82が初期のFPGAにロードされることで、当該回路を有するFPGA40が構築される。すなわち、FPGA40のコマンドの処理のための稼働量を計測する技術的手段が構築される。FPGA40中の当該回路が、FPGA40に入力されたコマンドの処理の稼働量を計測し当該稼働量の計測値であるカウント値が関連付けられた応答を出力する。加速率推定プロセス502が、当該カウント値の積算値を基に、FPGA40の加速率(つまり高速化の度合)を推定し、利用料決定プロセス503が、推定加速率rを基に利用料を決定する。このように、FPGA40の高速化の度合を推定することが技術的手段により実現され、これにより、FPGA40の利用料として、FPGA40の高速化の度合に応じた料金を算出することができる。結果として、ユーザにとって、費用対効果の維持が期待できる。例えば、高速化の度合が相対的に高い場合には高い利用料とし、高速化の度合が相対的に低い場合には(例えばあまり高速化できなかった場合には)低い利用料を提供することができる。
なお、ジョブ(上述の例では、ユーザプログラム13からの処理要求に従う処理)を二重に実行すること(プロセッサ部115だけとプロセッサ部115とFPGA40との併用との両方が実行すること)で、FPGA40を利用することの高速化の度合(プロセッサ部115だけの実行に比しての高速化の度合)を算出することはできる。しかし、ジョブの二重実行は、少なくとも本願環境(実際のサービス運用中)では望ましいとは言えない。
また、開発環境等での実験結果を基に、FPGA40に入力されるコマンドやデータ等の属性から、高速化の度合を推定することが考えられる。しかし、そのためには、入力されるコマンドやデータの解析が必要となり、高負荷化が懸念される。また、常に実験結果通りの結果が得られるとは限らない。
そのため、本実施例のように、入力されたコマンドの処理のための稼働量を計測する回路(技術的手段)をFPGAに構築し、課金のタイミングまでの稼働量に基づく加速率に応じた利用料を決定することは、有用である。
また、本実施例では、重みテーブル520(図4)において、演算負荷が相対的に低い(例えば、演算が相対的に簡単である)演算器種類に対応したカウンタの重み係数は、演算負荷が相対的に高い(例えば、演算が相対的に複雑である)演算器種類に対応したカウンタの重み係数より低くてよい。なぜなら、演算負荷が相対的に低い演算を高速に実行することは、演算負荷が相対的に高い演算を高速に実行することよりも、ユーザにとって価値は低く、故に、相対的に低額な利用料が算出されることが望ましいと考えられるからである。
また、本実施例では、単価テーブル530(図5)において、相対的に低い加速率範囲51に対応する単価52(例えばk1)は、相対的に高い加速率範囲51に対応する単価52(例えばk2)よりも低くてよい。なぜなら、単位時間当たりの高速化の度合が相対的に低く、結果として、コマンド実行時間が相対的に長くなってしまう可能性があるためである。
また、本実施例では、稼働量の一例として、演算器421の稼働量が採用されているが、少なくとも演算器421の稼働量が採用されることが効果的であると考えられる。なぜなら、FPGA40の高速化の度合は、プロセッサ部115との比較であるからである。なお、演算器421の稼働量に加えて、FPGA40における図示しないメモリの消費記憶容量が採用されてもよい。
本発明の実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
図6は、本発明の実施例2に係るFPGAの一部を示す。
実施例2に係るFPGA40´は、カウンタ群403からの複数のカウント値の一次結合計算を行う一次結合回路6011を有する。一次結合回路6011の計算は、数1の中のシグマ計算の部分をハードウェア化したものである。出力回路404は、一次結合結果を関連付けた応答を出力する。これにより、積算プロセス501及び加速率推定プロセス502の処理が軽くなる。また、FPGA40´の出力回路404がドライバ31のコンプリーションプロセス312へ通知するデータの量が減り、性能の向上が期待できる。
なお、本実施例では、ドライバ31の積算プロセス501は、一次結合後の単一の値の積算処理となる。加速率推定プロセス502は、一次結合値の積算値を実行時間で割り、加速率を推定する。
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
例えば、説明を簡単にするために、FPGA部113は1つのFPGA40であるが、FPGA部113は、複数のFPGA40であってもよい。同一ノード101内のFPGA40間で連携があってもよいし、2以上のノード101における2以上のFPGA40間で連携があってもよい。
また、例えば、積算プロセス501は、ドライバ31の外にあってもよい。また、加速率推定プロセス502、利用料決定プロセス503及び課金システム60の少なくとも1つが、ドライバ31内にあってもよい。
また、例えば、重みテーブル520と単価テーブル530とIPコア82とのパッケージがノード101にインストールされ、テーブル520及び530がメモリ部114に格納され、IPコア82が例えばドライバ31によりFPGAにロードされてよい。
また、例えば、コマンド毎に、カウント値に基づき加速率を推定することと、推定された加速率を基に利用料を決定することと、当該利用料をこれまでの利用料積算値に積算さすることとが行われ、課金のタイミングで、利用料の積算値が課金システム60に送られてもよい。
また、例えば、コマンド毎に、カウント値に基づき加速率を推定することと、当該加速率を基にこれまでの推定加速率(例えば平均値)を更新することとが行われてよい。課金のタイミングで、推定加速率を基に利用料を決定することと、決定された利用料が課金システム60に送られることとが行われてもよい。
31…ドライバ、40…FPGA、402…演算器群、403…カウンタ群、501…積算プロセス、502…加速率推定プロセス、503…利用料決定プロセス
Claims (8)
- 1以上のアクセラレータであり入力されたコマンドについて稼働量を計測し当該稼働量を関連付けた応答を出力する回路を有するアクセラレータ部に入力された1以上のコマンドの各々について、当該コマンドに対して前記アクセラレータ部から出力された応答から、当該コマンドの実行に関する稼働量を取得する稼働量取得部と、
前記アクセラレータ部に入力された前記1以上のコマンドについて、当該1以上のコマンドの処理に要した時間であるコマンド実行時間と、当該1以上のコマンドについてそれぞれ取得された1以上の稼働量とを基に加速率を推定する加速率推定部と、
前記推定された加速率に基づき前記アクセラレータ部の利用料を決定する利用料決定部と
を有する課金支援システム。 - 前記アクセラレータ部の前記回路は、入力回路、演算器群、カウンタ群及び出力回路を含み、
前記1以上のコマンドの各々について、
前記入力回路が、当該コマンドを入力し、
前記演算器群が、1以上の演算器であり、前記1以上の演算器のうちの少なくとも1つの演算器が、当該入力されたコマンドを実行し、
前記カウンタ群が、1以上のカウンタであり、前記1以上のカウンタのうち、当該入力されたコマンドを実行する前記少なくとも1つの演算器に対応したカウンタが、当該入力されたコマンドを実行するための前記少なくとも1つの演算器の稼働をカウントし、
前記出力回路が、当該入力されたコマンドについて前記カウンタ群におけるカウント値が関連付けられた応答を出力し、
前記1以上のコマンドの各々について、前記稼働量は、当該コマンドに対応した応答に関連付けられているカウント値である、
請求項1に記載の課金支援システム。 - 前記1以上の演算器は、複数種類の演算器を含む複数の演算器であり、
前記加速率推定部は、前記1以上のコマンドについて、演算器の種類毎の重み係数と、演算器の種類毎のカウント値とに基づいて、前記加速率を推定する、
請求項2に記載の課金支援システム。 - 前記回路は、更に、前記1以上のコマンドの各々について、当該コマンドについての1以上のカウンタにそれぞれ対応した1以上のカウント値の一次結合値を算出する一次結合回路を含み、
前記1以上のコマンドの各々について、当該コマンドに対応した応答に関連付けられているカウント値は、当該コマンドについて算出された一次結合値である、
請求項2又は3に記載の課金支援システム。 - 前記利用料決定部は、
前記推定された加速率に応じて単位時間当たりの利用料である単価を決定し、
前記決定した単価と、前記1以上のコマンドの前記コマンド実行時間とを基に、前記利用料を決定する、
請求項1乃至4のうちのいずれか1項に記載の課金支援システム。 - 前記回路を構成するためのIP(Intellectual Property)コア、
を更に有し、
前記アクセラレータは、前記IPコアがロードすることにより前記回路が構築されたPLD(Programmable Logic Device)を含む、
請求項1乃至5のうちのいずれか1項に記載の課金支援システム。 - 1以上のアクセラレータであり入力されたコマンドについて稼働量を計測し当該稼働量を関連付けた応答を出力する回路を有するアクセラレータ部に入力された1以上のコマンドの各々について、当該コマンドに対して前記アクセラレータ部から出力された応答から、当該コマンドの実行に関する稼働量を取得し、
前記アクセラレータ部に入力された前記1以上のコマンドについて、当該1以上のコマンドの処理に要した時間であるコマンド実行時間と、当該1以上のコマンドについてそれぞれ取得された1以上の稼働量とを基に加速率を推定し、
前記推定された加速率に基づき前記アクセラレータ部の利用料を決定する、
を有する課金支援方法。 - 1以上のアクセラレータであり入力されたコマンドについて稼働量を計測し当該稼働量を関連付けた応答を出力する回路を有するアクセラレータ部に入力された1以上のコマンドについて、当該1以上のコマンドの処理に要した時間であるコマンド実行時間と、当該1以上のコマンドについてそれぞれ取得された1以上の稼働量とを基に加速率を推定し、
前記推定された加速率に基づき前記アクセラレータ部の利用料を決定する、
ことを計算機に実行させるコンピュータプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017209359A JP2019082819A (ja) | 2017-10-30 | 2017-10-30 | アクセラレータ部の利用に対する課金を支援するシステム及び方法 |
US16/125,145 US11366695B2 (en) | 2017-10-30 | 2018-09-07 | System and method for assisting charging to use of accelerator unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017209359A JP2019082819A (ja) | 2017-10-30 | 2017-10-30 | アクセラレータ部の利用に対する課金を支援するシステム及び方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019082819A true JP2019082819A (ja) | 2019-05-30 |
Family
ID=66243871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017209359A Pending JP2019082819A (ja) | 2017-10-30 | 2017-10-30 | アクセラレータ部の利用に対する課金を支援するシステム及び方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11366695B2 (ja) |
JP (1) | JP2019082819A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220086449A (ko) * | 2020-12-16 | 2022-06-23 | 한국과학기술원 | 스케줄링 방법 및 장치 |
WO2022172365A1 (ja) * | 2021-02-10 | 2022-08-18 | 日本電信電話株式会社 | リソース制御装置、リソース制御システム、および、リソース制御方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7984412B1 (en) * | 2008-03-03 | 2011-07-19 | Xilinx, Inc. | IC design estimation using mid-level elements of IP cores |
US8910153B2 (en) * | 2009-07-13 | 2014-12-09 | Hewlett-Packard Development Company, L. P. | Managing virtualized accelerators using admission control, load balancing and scheduling |
US9037448B2 (en) * | 2009-08-07 | 2015-05-19 | Hitachi, Ltd. | Computer system, program, and method for assigning computational resource to be used in simulation |
US8982136B2 (en) * | 2011-05-16 | 2015-03-17 | Qualcomm Incorporated | Rendering mode selection in graphics processing units |
US9715413B2 (en) * | 2012-01-18 | 2017-07-25 | Nvidia Corporation | Execution state analysis for assigning tasks to streaming multiprocessors |
US10002021B2 (en) * | 2012-07-20 | 2018-06-19 | Qualcomm Incorporated | Deferred preemption techniques for scheduling graphics processing unit command streams |
EP2880622B1 (en) * | 2012-07-31 | 2020-11-04 | Intel Corporation | Hybrid rendering systems and methods |
US9153230B2 (en) * | 2012-10-23 | 2015-10-06 | Google Inc. | Mobile speech recognition hardware accelerator |
JP2015014868A (ja) | 2013-07-04 | 2015-01-22 | 株式会社日立システムズ | 非稼働リソースに対する減額課金システム及び減額課金方法 |
KR20150084098A (ko) * | 2014-01-13 | 2015-07-22 | 한국전자통신연구원 | 스트림 데이터 분산 처리 시스템 및 그 방법 |
KR101619875B1 (ko) * | 2015-02-27 | 2016-05-12 | 허윤주 | 범용 그래픽 프로세싱 유닛을 이용한 3 차원 캐릭터 렌더링 시스템 및 그의 처리 방법 |
US10360602B2 (en) * | 2015-10-15 | 2019-07-23 | International Business Machines Corporation | Metering accelerator usage in a computing system |
US10580108B2 (en) * | 2015-12-22 | 2020-03-03 | Intel Corporation | Method and apparatus for best effort quality of service (QoS) scheduling in a graphics processing architecture |
US10552161B2 (en) * | 2017-06-21 | 2020-02-04 | International Business Machines Corporation | Cluster graphical processing unit (GPU) resource sharing efficiency by directed acyclic graph (DAG) generation |
-
2017
- 2017-10-30 JP JP2017209359A patent/JP2019082819A/ja active Pending
-
2018
- 2018-09-07 US US16/125,145 patent/US11366695B2/en active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220086449A (ko) * | 2020-12-16 | 2022-06-23 | 한국과학기술원 | 스케줄링 방법 및 장치 |
KR102559658B1 (ko) | 2020-12-16 | 2023-07-26 | 한국과학기술원 | 스케줄링 방법 및 장치 |
WO2022172365A1 (ja) * | 2021-02-10 | 2022-08-18 | 日本電信電話株式会社 | リソース制御装置、リソース制御システム、および、リソース制御方法 |
Also Published As
Publication number | Publication date |
---|---|
US20190129755A1 (en) | 2019-05-02 |
US11366695B2 (en) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200218569A1 (en) | Resource management for batch jobs | |
EP3401787B1 (en) | Analyzing resource utilization of a cloud computing resource in a cloud computing environment | |
US9514037B1 (en) | Test program scheduling based on analysis of test data sets | |
US8601483B2 (en) | Forecasting based service for virtual machine reassignment in computing environment | |
WO2019217573A1 (en) | Task assignment in virtual gpu enabled systems | |
US11748230B2 (en) | Exponential decay real-time capacity planning | |
US10353745B1 (en) | Assessing performance of disparate computing environments | |
CN108205469B (zh) | 一种基于MapReduce的资源分配方法及服务器 | |
US10601690B2 (en) | Assessing performance of networked computing environments | |
JP2013164820A (ja) | 評価支援方法、評価支援プログラムおよび評価支援装置 | |
US9720824B2 (en) | Garbage collection handler to update object pointers | |
US10185585B2 (en) | Calculating a performance metric of a cluster in a virtualization infrastructure | |
US10884778B1 (en) | Adjusting dynamically scalable instance hosting based on compute resource usage | |
US9361159B2 (en) | Runtime chargeback in a simultaneous multithreading (SMT) environment | |
US11915054B2 (en) | Scheduling jobs on interruptible cloud computing instances | |
US20160306665A1 (en) | Managing resources based on an application's historic information | |
US20210397476A1 (en) | Power-performance based system management | |
KR101770191B1 (ko) | 자원 할당 방법 및 그 장치 | |
CN113544647A (zh) | 云计算***中使用虚拟机系列建模的容量管理 | |
US20140244846A1 (en) | Information processing apparatus, resource control method, and program | |
CN112181664A (zh) | 负载均衡方法及装置、计算机可读存储介质及电子设备 | |
JP2019082819A (ja) | アクセラレータ部の利用に対する課金を支援するシステム及び方法 | |
US20110191094A1 (en) | System and method to evaluate and size relative system performance | |
JP6627475B2 (ja) | 処理リソース制御プログラム、処理リソース制御装置、および処理リソース制御方法 | |
JP6287226B2 (ja) | 見積もり装置、見積もりシステム、見積もり方法、及び、プログラム |