(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024154303
(43)【公開日】2024-10-30
(54)【発明の名称】API実行制御システム、API実行制御方法及びAPI実行制御プログラム
(51)【国際特許分類】
G06F 9/48 20060101AFI20241023BHJP
【FI】
G06F9/48 300B
【審査請求】有
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023068071
(22)【出願日】2023-04-18
(71)【出願人】
【識別番号】524132520
【氏名又は名称】日立ヴァンタラ株式会社
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜弁理士法人
(72)【発明者】
【氏名】野村 和正
(57)【要約】
【課題】
ユーザ操作を基準としたQoSを制御するAPI実行制御システムを提供する。
【解決手段】
ユーザから連続する複数のAPI実行要求を受け付けるAPI受付部と、受付けた連続する複数のAPI実行要求パターンを検出し、検出した連続する複数のAPI実行要求パターンをAPI群管理テーブルへ登録するテーブル更新部と、API受付部が受付けたAPI実行要求がAPI群管理テーブルに登録されているパターンと一致するかどうかを判定するAPI実行予測部と、API実行予測部が受付けたAPI実行要求がAPI群管理テーブルに登録されているパターンと一致すると判定したとき、次に実行要求を受け付けるAPIの実行優先度を上げるAPI実行制御部を備えるAPI実行制御システム。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ユーザから連続する複数のAPI実行要求を受け付けるAPI受付部と、
受付けた連続する複数のAPI実行要求パターンを検出し、検出した連続する複数のAPI実行要求パターンをAPI群管理テーブルへ登録するテーブル更新部と、
API受付部が受付けたAPI実行要求がAPI群管理テーブルに登録されているパターンと一致するかどうかを判定するAPI実行予測部と、
API実行予測部が受付けたAPI実行要求がAPI群管理テーブルに登録されているパターンと一致すると判定したとき、次に実行要求を受け付けるAPIの実行優先度を上げるAPI実行制御部
を備えるAPI実行制御システム。
【請求項2】
ユーザとユーザの優先順位を対応付けて登録するQoS管理テーブルを備え、
API実行制御部はQoS管理テーブルを参照し、API実行要求元のユーザの優先順位に基づいて、実行要求を受付けたAPIの実行優先度を上げる優先度向上方法を変更する請求項1に記載のAPI実行制御システム。
【請求項3】
前記優先度向上方法は実行優先度を上げるAPI実行のための処理装置を確保する請求項2に記載のAPI実行制御システム。
【請求項4】
更にAPIの実行順序を登録するキューを備え、
前記優先度向上方法は実行優先度を上げるAPIのキュー内における実行順序を早める請求項2に記載のAPI実行制御システム。
【請求項5】
テーブル更新部はユーザから定期的に実行要求を受け付けるAPIのパターンを検出し、検出したAPIのパターンをAPI群管理テーブルへ登録し、
API実行制御部はAPI群管理テーブルへ登録された定期的に実行要求を受け付けるAPIの次回実行予定時刻の予め定められた時刻に、当該APIのユーザに対応付けられた優先度に基づく優先度向上方法を実行する請求項2に記載のAPI実行制御システム。
【請求項6】
テーブル更新部はAPI群管理テーブルに登録されているパターンのうち予め定められた時間内に実行されていないパターンを削除する請求項2に記載のAPI実行制御システム。
【請求項7】
API群管理テーブルは登録されているパターン毎に最終実行日時を示す情報を備え、テーブル更新部はAPI群管理テーブルに登録されているパターンが実行されたとき、実行されたパターンに対応する最終実行日時を更新する請求項2に記載のAPI実行制御システム。
【請求項8】
API受付部がユーザから連続する複数のAPI実行要求を受け付け、
テーブル更新部が受付けた連続する複数のAPI実行要求パターンを検出し、検出した連続する複数のAPI実行要求パターンをAPI群管理テーブルへ登録し、
API実行予測部がAPI受付部が受付けたAPI実行要求がAPI群管理テーブルに登録されているパターンと一致するかどうかを判定し、
API実行制御部がAPI実行予測部が受付けたAPI実行要求がAPI群管理テーブルに登録されているパターンと一致すると判定したとき、次に実行要求を受け付けるAPIの実行優先度を上げるAPI実行制御方法。
【請求項9】
ユーザとユーザの優先順位を対応付けて登録するQoS管理テーブルを備え、
API実行制御部がQoS管理テーブルを参照し、API実行要求元のユーザの優先順位に基づいて、実行要求を受付けたAPIの実行優先度を上げる優先度向上方法を変更する請求項8に記載のAPI実行制御方法。
【請求項10】
コンピューターにユーザから連続する複数のAPI実行要求を受け付ける手順と、
受付けた連続する複数のAPI実行要求パターンを検出し、検出した連続する複数のAPI実行要求パターンをAPI群管理テーブルへ登録する手順と、
API受付部が受付けたAPI実行要求がAPI群管理テーブルに登録されているパターンと一致するかどうかを判定する手順と、
API実行予測部が受付けたAPI実行要求がAPI群管理テーブルに登録されているパターンと一致すると判定したとき、次に実行要求を受け付けるAPIの実行優先度を上げる手順を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、API実行制御システム、API実行制御方法及びAPI実行制御プログラムに関する。
【背景技術】
【0002】
昨今、マルチテナンシ化が進んでおり、ユーザからのストレージAPI実行頻度は以前よりも高頻度になってきている。また、ストレージリソースに限りがあることから同時実行可能なAPI数も限られている。その中で重要度の高いAPIを優先処理したいというニーズも強まってきている。さらに、エンドユーザからのストレージ操作をクラウドシステムなどが仲介することで、ある1つのエンドユーザ操作に対して、クラウドシステムがストレージへ数十以上のストレージAPI(ストレージAPI群)を発行することも増えてきており、ストレージAPIの実行頻度はさらに多くなってきている。
【0003】
例えば特許文献1にはAPIリクエストの要求者または/および要求元システムを判別して当該APIリクエストを認証するAPIメッセージ受付部と、各APIリクエストの要求者または/および要求元システムを示す固有の識別子と優先度との組合せを保持する要求元別優先度登録テーブルと、このAPIリクエストの要求者または/および要求元システムに基づき、前記要求元別優先度登録テーブルを参照してAPIリクエストの優先度を判定する優先度判定部と、判定した優先度に応じてAPIリクエストを優先的に処理するか否かを決定する制御対象決定部とを備えるシステムが開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
エンドユーザ操作と、実行されるストレージAPI数は1対多の関係にある。個々のストレージAPIに対して、優先度に応じてキューイングする方法が従来技術としてあるが、エンドユーザ操作の延長で実行される複数のストレージAPI群を纏めて管理し、QoS制御する方法は検討されていない。つまり、個々のストレージAPIを基準としたQoS制御は存在するが、エンドユーザ操作を基準としたQoSを提供できるようなシステムは検討されていない。
【課題を解決するための手段】
【0006】
本発明の課題はユーザから連続する複数のAPI実行要求を受け付けるAPI受付部と、受付けた連続する複数のAPI実行要求パターンを検出し、検出した連続する複数のAPI実行要求パターンをAPI群管理テーブルへ登録するテーブル更新部と、API受付部が受付けたAPI実行要求がAPI群管理テーブルに登録されているパターンと一致するかどうかを判定するAPI実行予測部と、API実行予測部が受付けたAPI実行要求がAPI群管理テーブルに登録されているパターンと一致すると判定したとき、次に実行要求を受け付けるAPIの実行優先度を上げるAPI実行制御部を備えるAPI実行制御システムにより達成される。
【発明の効果】
【0007】
本発明によれば、API実行システムのQOSを制御することができる。上記した以外の課題、構成及び効果は以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0008】
【
図1】本発明の実施例におけるシステム概要を説明する図
【
図2】本発明の実施例におけるストレージ装置のブロック図の例
【
図3】本発明の実施例におけるQoS管理テーブルの例
【
図4】本発明の実施例におけるAPI群管理テーブルの例
【
図5】本発明の実施例におけるAPI群操作間隔管理テーブルの例
【
図6】本発明の実施例におけるAPIキャッシュテーブルの例
【
図7】本発明の実施例におけるAPI群管理テーブル更新処理のフローチャートの例
【
図8】本発明の実施例におけるAPI群管理テーブルからのAPI群削除処理のフローチャートの例
【
図9】本発明の実施例におけるAPI群操作間隔管理テーブル更新処理のフローチャートの例
【
図10】本発明の実施例におけるAPI実行予測処理のフローチャートの例
【
図11】本発明の実施例におけるリソース割当処理のフローチャートの例
【
図12】本発明の実施例におけるキュー制御処理を説明する図
【
図13】本発明の実施例における実行APIキュー処理のフローチャートの例
【
図14】本発明の実施例における定期的なリクエストに対するリソース割当処理のフローチャートの例
【発明を実施するための形態】
【0009】
以下、本発明の実施例を、図面を用いて説明する。なお、実施例を説明するための各図において、同一の構成要素にはなるべく同一の名称、符号を付して、その繰り返しの説明を省略する。
【0010】
本発明は後述する実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例および同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。
【0011】
また、実指例で説明する処理部は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することによりソフトウェアで実現してもよい。
【0012】
実施例で説明するテーブル、領域等はデータベース(DB)であっても良く主記憶メモリに記憶されたデータであっても良い。
【実施例0013】
図1は本発明の実施例におけるシステム概要を説明する図である。ユーザ4からクラウドシステム1やストレージ管理ソフト2へコマンドが入力される。クラウドシステム1には複数のホスト6が設けられている。クラウドシステム1やストレージ管理ソフト2へ入力されたコマンドは複数のAPI(APplication Interface)に変換されてストレージ装置3へネットワーク5経由で送信される。APIはストレージ装置を操作するコマンドやプログラムの様な働きをするものである。
【0014】
ストレージ装置にはAPI処理制御装置7と記憶部8が含まれており、API処理制御装置7はCPU(Central Processing Unit)9、メモリ11、外部記憶装置10、入出力部12等を備える計算機で構成される。記憶部8は複数の記憶装置14で構成されAPI処理制御装置7と接続され、API処理制御装置7からAPIを受け取ってユーザ4の指示した処理が実行される。
【0015】
図2は
図1でハードウェア構成を説明したAPI処理制御装置7のソフトウェアモジュールと外部記憶装置10に格納されてソフトウェアモジュールからアクセスされる各種テーブルを説明する。
【0016】
API処理制御装置7にはクラウドシステム1やストレージ管理ソフトからAPIを受け付けるAPI受付部21とAPI受付部21が受付けたAPIの実行を制御するAPI実行制御部22が含まれる。
【0017】
API受付部21にはAPIを発行した発行元であるユーザの情報を取得するユーザ情報取得部24とAPIの情報自体を取得するAPI情報取得部25を備える。
【0018】
API実行制御部22には各種テーブルを更新するテーブル更新部30、APIの実行を予測するAPI実行予測部31、APIを実行するためのCPU等のリソースを割り当てるリソース割当制御部32、ストレージの情報を取得するストレージ情報取得部33、APIの処理を記憶部8へ要求するAPI処理要求部34を備える。
【0019】
API処理要求部34には実行中のAPI群を格納するAPIキャッシュ35と実行するAPIの待ち行列を核のする実行APIキュー36を備える。
【0020】
さらに、外部記憶装置10にはQoS管理テーブル26、API群管理テーブル27、API実行ログ29、API群操作間隔管理テーブル28が格納される。
【0021】
図3は本発明の実施例におけるQoS管理テーブルの例である。APIを実行するエンドユーザ41、QoSの優先順位を示すQoSタイプ42、QoSタイプごとの優先内容を示すQoS内容43を対応付けて記憶する。
【0022】
この例ではエンドユーザ41はA、B、Cの3種類のユーザ4とストレージ管理ソフト、クラウドシステムのシステムエンドユーザが定義されている。QoSタイプ42はGold、Silver、Bronzeの3段階のユーザ優先順位とSpecialのシステム優先順位がある。優先順位はBronze、Silver、Gold、Specialの順に高くなる。
【0023】
QoS内容はQoSタイプBronzeは最も優先順位が低いため優先順位の制御は行わないことを示す。QoSタイプSilverでは優先的にリクエストを処理するために実行APIキュー36の中における実行順序を早めるよう制御する。QoSタイプGoldではさらにAPIの実行優先度を上げるため、実行APIキュー36の制御だけでなくAPI実行に必要なリソースの確保も行う。QoSタイプSpecialは最も優先順位が高いため即実行が可能なように実行APIキュー36の制御とリソースの確保を行う。
【0024】
ユーザのQoSタイプSilver,Goldでどの程度の実行APIキュー36の制御、リソースの確保を行うかは適用するシステム依存である。したがって実行APIキュー36の制御においてどの程度API実行順序を早めるか、リソース確保で確保するCPUの種類、確保する時間等が変わってくる。
【0025】
また、優先順位を下げるQoSタイプを用意し、ストレージシステムの負荷が下がったときに実行されるようにしても良い。
図4は本発明の実施例におけるAPI群管理テーブルの例である。実行されるAPI群45、API群の実行ユーザであるAPI実行ユーザ46、エンドユーザ47、最終実行日時48を対応付けて格納している。
【0026】
1行目のGET/ldevs、POST/ldevsは新たにボリュームを作成するAPI群であり、クラウドシステム、ストレージ管理ソフトの両方から実行されている。エンドユーザもA、B、Cの3名から実行された記録があり、最終実行日時は2023/2/13 8:00:00である。
【0027】
同様に2行目はサーバとボリュームに接続するマッピング処理、3行目はスナップショットを取得するバックアップ処理、4行目はパフォーマンス情報、構成情報を取得する処理である。エンドユーザは人ではなく、スクリプトやツールの場合もある。
図5は本発明の実施例におけるAPI群操作間隔管理テーブルの例である。
図4のAPI群管理テーブルに実行間隔54と次回実行予測時刻である次回実行時間55の情報が追加されている。
図6は本発明の実施例におけるAPIキャッシュテーブルの例である。このテーブルには実行中のAPI群と最近実行されたAPI群の情報を格納するテーブルである。例えば過去1秒以内に実行されたAPI群の情報であり、処理が完了したAPI群の情報も含まれる。
図7は本発明の実施例におけるAPI群管理テーブル更新処理のフローチャートの例である。API受付部21でAPI実行のリクエストを受け付ける(S71)。次にユーザ情報取得部24が受付けたリクエストのAPI実行ユーザ46、エンドユーザ47等のユーザ情報を取得しAPI群管理テーブル27に格納する(S72)。一定時間以内に同一ユーザからのAPI実行リクエストがあれば(S73)API群の実行要求である可能性があるため、APIキャッシュ35へ当該APIを登録する(S74)。
【0028】
一定時間内に同じユーザからのリクエストが無ければ、つまり当該ユーザからのAPI群実行リクエストが終了したと判断したときはAPI群管理テーブル27に当該ユーザから要求のあったAPI群が登録されているかどうかを判定する(S75)。
【0029】
当該ユーザから実行リクエストのあったAPI群がAPI群管理テーブル27に登録されていたときは、API群管理テーブル27の最終実行日時48を更新する(S76)。
【0030】
当該ユーザから実行リクエストのあったAPI群がAPI群管理テーブル27に登録されていなかったときは、新たに実行リクエストのあったAPI群をAPI群管理テーブル27へ追加する(S77)。
【0031】
図8は本発明の実施例におけるAPI群管理テーブルからのAPI群削除処理のフローチャートの例である。API群管理テーブルに登録されている各API群の最終実行日時48を参照する(S81)。
【0032】
最終実行日時48から一定期間実行されていなければ(S82)、当該API群をAPI群管理テーブルから削除する(S83)。実行されていれば当該API群を保持する。
【0033】
この処理はストレージシステムの用途に依存するが1か月に1度程度API群削除処理を行えば、API群管理テーブルが肥大しストレージシステムの処理性能を下げることを回避できる。
【0034】
図9は本発明の実施例におけるAPI群操作間隔管理テーブル更新処理のフローチャートの例である。API実行ログ情報を取得し(S91)、各ユーザが実行したAPI群ごとに周期性がないか判定する(S92)。周期性があると判定されたとき(S93)API群操作間隔管理テーブル28に当該API群を実行間隔54、次回実行時間55とともに登録する。また、既にAPI群操作間隔管理テーブルに登録されているAPI群であったときは、登録されている実行間隔54に変化がないかを確認し、変化している場合は実行間隔54、次回実行時間55を更新する。周期性が無いと判定されたときは登録しない。
【0035】
API群操作間隔管理テーブル更新処理はストレージシステムの用途に依存するが1か月に1度程度行えば、最新のストレージ運用方法に即したAPI実行が可能となる。
【0036】
図10は本発明の実施例におけるAPI実行予測処理のフローチャートの例である。API受付部21がAPIの実行リクエストを受付け(S101)、ユーザ情報を取得し(S102)、APIキャッシュ35へ追加する(S103)。
【0037】
API実行予測部31はAPI群管理テーブルを参照し、現在実行中のAPI群が登録されているか判定する(S104)。この判定ではAPI群に含まれるAPIの並びが完全に一致するかどうかを判定する。現在実行中のAPI群が登録されていると判定されたとき登録されているAPI群は後続のAPIを持つか判定する(S105)。後続のAPIを持つ場合、登録されている次のAPIが実行されると予測する(S106)。
【0038】
S104でAPI群が登録されていないと判断されたとき、複数の登録されているAPI群候補があり後続のAPIがあるかどうかを判定する(S107)。複数の登録されているAPI群候補があり後続のAPIがある場合は登録されている次のAPIが実行されると予測する(S106)。
【0039】
図11は本発明の実施例におけるリソース割当処理のフローチャートの例である。API実行予測処理にて、次のAPIが実行されると予測されたAPI群か判定する(S111)。次のAPIが実行されることが無ければ処理を終了する。
【0040】
S111で次のAPIが実行されるAPI群に複数の可能性がある場合はユーザが同一ユーザかどうかを判定する(S112)。同一ユーザでなければ処理を終了する。同一ユーザの場合はAPI群を実行しているユーザのQoS情報を取得し(S113)、ストレージ情報取得部からMPU(Micro Processor Unit)の稼働情報を取得する(S114)。
【0041】
当該API群の処理が完了するまで、ユーザのQoSタイプに基づくQoSレベルを設定し、MPUを確保する。ただし、当該API群よりもQoSレベルが高いAPI群が発行された場合、確保したプロセッサを奪われる可能性はある。MPUだけでなくメモリやボリュームについても確保しても良い。
【0042】
そして、当該API群の処理が完了したときに、確保したMPU等のリソースを開放する。
【0043】
図12は本発明の実施例におけるキュー制御処理を説明する図である。ストレージ装置3のAPI処理要求部34には実行APIキュー36を備える。実行APIキューに実行リクエストを受付けたAPIが登録される。この例ではB-2、C-2というAPIが登録されており実行APIキュー36に登録されていたAPIのB-1とC-1が各々MPU2とMPU3で実行されている。MPU1はQoSタイプがGoldであるユーザAのAPIを実行するために確保されている。
【0044】
この状態でエンドユーザAからのAPIであるA-2の実行リクエストを受付けた場合A-2は実行APIキューの先頭へ登録される。そしてGold用に確保されているMPU1ですぐさま実行される。
【0045】
このような制御を行うことにより優先度の高いAPIを実行することが可能となる。ただしGoldのエンドユーザAからのAPIの実行リクエストを複数同じ時間帯に受付けた場合はエンドユーザごとに確保可能なMPUは1つであるため、新規に受付けた別のリクエストに確保しておいたMPUが割り当てられる可能性がある。
【0046】
図13は本発明の実施例における実行APIキュー処理のフローチャートの例である。API受付部21がAPIの実行リクエストを受付け(S131)、ユーザ情報を取得し(S132)、API群としてAPI群管理テーブル27に登録されている次のAPIの実行リクエストか判定する(S133)。登録されている次のAPIの実行リクエストでない場合は実行APIキュー36の末尾にAPIを登録する(S135)。
【0047】
登録されている次のAPI(YES)の場合は当該ユーザのQoSタイプよりも優先度の高いAPIがキューに登録されていないか判定する(S134)。
【0048】
優先度の高いAPIがキューに登録されていない(YES)場合は、実行APIキュー36の最も最初にAPIが実行される先頭に登録する。優先度の高いAPIが実行APIキュー36に登録されている(NO)場合は、実行APIキュー36の該当APIより優先度の高い処理の次にAPIを登録する。
【0049】
図14は本発明の実施例における定期的なリクエストに対するリソース割当処理のフローチャートの例である。API群操作間隔管理テーブルに次回実行時刻が近いAPI群があるか判定する(S141)。近いかどうかの判定はストレージシステムの運用に依存するが通常は1秒から数秒の時間を設定する。
【0050】
次回実行時刻が近いAPI群があったとき、当該API群の実行が完了するまで、QoSタイプに応じてMPU123を当該API群実行用に確保する(S142)。当該API群の実行が完了したとき、確保したMPU123を解放する(S143)。
【0051】
この例ではMPUを例に説明したが、メモリ、ディスクボリュームの確保も必要に応じて制御する。
1 クラウドシステム、2 ストレージ管理ソフト、3 ストレージ装置、4 ユーザ、6 ホスト、7 API処理制御装置、8 記憶部、9 CPU、10 外部記憶装置、11 メモリ、12 入出力部、14 記憶装置、21 API受付部、22 API実行制御部、24 ユーザ情報取得部、25 API情報取得部、26 QoS管理テーブル、27 API群管理テーブル、28 API群操作間隔管理テーブル、29API実行ログ、30 テーブル更新部、31 API実行予測部、32 リソース割当制御部、33 ストレージ情報取得部、34 API処理要求部、35 APIキャッシュ、36 実行APIキュー、123 MPU