以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
〔1〕第1実施形態
〔1-1〕低レイテンシSSDについて
まず、低レイテンシSSDについて説明する。図1は、SSDへのアクセス処理における処理時間内訳の一例を示す図である。図1において、横軸はアクセス処理のレイテンシ(μs)を示す。
図1に例示するように、SATA SSD及びNVMe SSDのアクセス処理時間の内訳に着目する。SATA SSDでは、「System Software」と「Driver」とを加算して得られるOS処理時間(ソフトウェア処理時間)は、「SSD Internal」と「Nonvolatile Memory」とを加算して得られるSSD側のデバイス処理時間の約1/7である。また、NVMe SSDでは、OS処理時間は、デバイス処理時間の約1/18である。
このように、NANDフラッシュSSDでは、SSDへのアクセス時におけるOS処理時間は、アクセス処理時間全体に占める割合が小さく、アクセスの高速化のために、OS処理及びI/O時間は重視されず、デバイス処理時間の短縮が検討されることが多い。
これに対し、低レイテンシSSDは、NANDフラッシュSSDよりも大幅にアクセス処理時間が短縮され、アクセス処理の処理時間全体でみた場合、レイテンシは、SATA SSDの約1/15、NVMe NAND SSDの約1/9、程度となる。特に、図1に例示するように、低レイテンシSSDでは、デバイス処理における「Nonvolatile Memory」の処理時間が短縮される。このように、低レイテンシSSDは、SATA SSDやNVMe NAND SSDよりもレイテンシの低いSSDである。
これにより、低レイテンシSSDでは、OS処理時間が、デバイス処理時間と同程度の処理時間(消費時間)となり、OS処理のオーバヘッドが顕著化することになる。すなわち、低レイテンシSSDでは、NANDフラッシュSSDでは重要視されることが少なかったOS処理が、アクセス処理の処理時間に占める割合が大きくなり(1/15~1/7程度から半分程度)、SSDへのアクセス性能に与える影響が増大する。
ところで、OS処理のオーバヘッドを削減する手法として、Linux(登録商標)のNVMeドライバに実装されているポーリング(Polling)が知られている。図2は、IRQ(Interrupt Request;割り込み要求)及びポーリングによるOS処理時間の内訳を示す図である。図2において、横軸は処理時間を示す。図2において、「syscall」(システムコール)は、OSからのカーネルの呼び出し処理を示し、「BIO stack」は、I/Oコマンドをドライバに引き渡すためのソフトウェア処理を示す。なお、BIOはBlock IOの略称である。
ポーリングI/Oでは、デバイスに対するI/O要求を発行したCPUコアが、I/Oアクセスの完了を監視する。図2の例では、CPUは、下段において、ポーリング処理である「Are you done ?」の期間に、デバイスに対するI/Oアクセスである「Command execution」の完了を監視する。
これにより、図2の上段に示す割り込みI/Oのように、I/O待ち中にOSが「Sleep」(スリープ)し、I/O完了後の割り込みによってスリープから復帰する割り込みI/Oと比べて、「CS」及び「ISR」の処理を排除できる。
なお、CS(Context Switch)は、プロセス間でCPUを共用するための機能であり、CPUの状態を保存及び/又は復元の処理を含んでよい。ISR(Interrupt Service Routine)は、IRQによって起動されるOSやデバイスドライバのコールバックルーチンである。ISRは、割り込みハンドラ(Interrupt Handler)と称されてもよい。
ポーリングI/Oによれば、図2の上段に示すようなCPU使用率の低い「Sleep」の期間が無いため、I/O待ち中でも監視によってCPU使用率が高くなるものの、CS及びISR処理の排除により、下段に示す「Gain」期間のOS処理時間短縮が見込める。
ここで、図3の上段に示すように、コンピュータシステムは、低レイテンシSSDをストレージデバイスとして搭載し、CPUがI/O集中(I/O-intensive)アプリケーション(以下、「I/O集中アプリ」と表記する場合がある)を実行する場合を想定する。
I/O集中アプリは、SSDへの高頻度なI/O、例えば同期I/Oのアクセスを行なうアプリケーションであり、アプリケーション自体の処理時間は短いが、OS及びデバイスにおけるI/O処理に負荷のかかるアプリケーションである。I/O集中アプリの実行によるアクセス性能は、SSDのアクセスレイテンシ及びスループットに左右される。
I/O集中アプリが実行される場合のCPUコアの処理には、図3の下段に例示するように、「App」、「OS」、及び「I/O wait」が含まれる。「App」は、I/O集中アプリの処理時間であり、「OS」は、OS処理の処理時間である。「I/O wait」は、I/Oアクセスの完了待ち時間であり、デバイス(低レイテンシSSD)におけるデバイス処理の処理時間に対応する。以下、「I/O wait」の期間を「デバイスレイテンシ」と表記し、「I/O wait」の期間及びその前後に実行される「OS」の期間を「アクセスレイテンシ」と表記する。
図3に例示するコンピュータシステムでは、CPUに対する供給電圧と動作周波数とをソフトウェアにより制御可能である。
CPUの動作周波数とSSDへのアクセスレイテンシとの間には、以下のような相関がある。図4は、CPUの動作周波数の低下による低レイテンシSSDへのアクセスレイテンシの変化の一例を示す図である。
図4の上段に例示するグラフは、CPU周波数(MHz)(横軸)と、平均のアクセスレイテンシ(μs)(縦軸)との関係を示す。なお、「w/o polling」のグラフは、OS処理において図2の上段に示すIRQが実行される場合を示し、「w/ polling」のグラフは、OS処理において図2の下段に示すポーリングI/Oが実行される場合を示す。また、図4の下段に例示する図は、CPUの動作周波数が高い場合のアクセスレイテンシの内訳と、CPUの動作周波数が低い場合のアクセスレイテンシの内訳と、を示す。
上述のように、SSDへのアクセス処理のうちのOS処理は、CPUにより実行される。また、CPUの処理速度は、動作周波数に依存する。このため、図4の上段及び下段に例示するように、CPU動作周波数は、動作周波数が低いほどアクセス処理、例えばOS処理の処理時間が長期化し、SSDアクセスレイテンシに影響を与える。従って、アクセスレイテンシを短縮するためには、動作周波数を高く設定することが効果的である。
例えば、Linux(登録商標)では、intel_pstateドライバにより、OSがCPUの動作周波数を制御することができる。intel_pstateドライバでは、以下の2種類のポリシが利用可能である。
・「performance」:CPUコアに負荷がかかると動作周波数を最大に設定する。
・「powersave」:CPUコアの使用率に応じて動作周波数を設定する。
図5は、SSDへのアクセス時の動作周波数の制御例を示す図である。図5に例示するように、NVMe NAND SSD、低レイテンシSSD(ポーリング無)、低レイテンシSSD(ポーリング有)の順に、コア使用率(%)(図5(a)参照)及びコア周波数(GHz)(図5(b)参照)がともに高くなる。
例えば、図5(a)に示すように、低レイテンシSSD(ポーリング有)の場合、CPU使用率は100%に近くなる。また、図5(b)に示すように、低レイテンシSSDでは、ポーリングの有無によらず、「performance」及び「powersave」の両ポリシが動作周波数を最大化しており、アクセスレイテンシが最小化される。
なお、図5(a)に示す「%busy」は、CPUコアがビジー状態であることを示す。また、「%c1」、「%c3」、「%c6」は、CPUコアがスリープ状態であることを示し、“%c”に続く数字が大きいほどより深い(より消費電力の低い)スリープであることを示す。
図6は、SSDアクセス時のCPU電力及びレイテンシの一例を示す図である。図6(a)に示すように、動作ポリシ別のCPU電力(消費電力)は、動作周波数を最低レベルにする「min_freq」、上述した「powersave」、「performance」の順に、高くなる。特に、「performance」は、CPUコアが最大周波数で稼働するため、消費電力は最大となる。また、I/O待ち中においてもCPU電力が消費されることになる。
図6(b)に示すように、動作ポリシ別のレイテンシは、「performance」、「powersave」、「min_freq」の順に、大きくなる(処理時間が増大する)。このように、動作ポリシを切り替えることで、CPUコアの動作周波数が低下し、CPU電力を削減することが可能となるが、これにより、OS処理時間が増大することになる。
なお、理想的なCPU電力の削減手法としては、図7に例示するように、低レイテンシSSDへのアクセス処理のうちのI/O待ち中(換言すればデバイス処理中)の期間に限定して、CPUコアの動作周波数を低下させる手法が挙げられる。この手法によれば、OS処理を含むソフトウェア処理の実行時には、CPUコアの動作周波数を最大化することができるため、アクセスレイテンシを最小化することが可能となる。
しかしながら、現存のCPUにおいて、動作周波数の変更にかかる時間は、数十μsであり、低レイテンシSSDのように、デバイス処理時間の短いストレージに対するI/O待ち中(例えば、10μs未満)に限定して動作周波数を変更することは困難である。
そこで、第1実施形態においては、CPUにより実行されるアプリケーションの性能低下を抑制しつつ、低レイテンシSSDへのアクセス時におけるCPUの消費電力を削減する手法について説明する。
〔1-2〕第1実施形態の構成例
次に、第1実施形態に係るコンピュータ1の構成例について説明する。
〔1-2-1〕ハードウェア構成例
図8は、第1実施形態に係るコンピュータ1のハードウェア構成例を示すブロック図である。なお、後述する第2実施形態に係るコンピュータ1A(図16参照)についても、図8と同様のハードウェア構成をそなえてよい。コンピュータ1は、ハードウェア構成として、例示的に、プロセッサ1a、メモリ1b、記憶部1c、IF部1d、I/O部1e、及び、読取部1fをそなえてよい。
プロセッサ1aは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ1aは、コンピュータ1内の各ブロックとバス1iで相互に通信可能に接続されてよい。なお、プロセッサ1aは、複数のプロセッサを含むマルチプロセッサであってもよいし、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
プロセッサ1aとしては、例えば、CPU、MPU、GPU、APU、DSP、ASIC、FPGA等の集積回路(IC;Integrated Circuit)が挙げられる。MPUはMicro Processing Unitの略称である。GPUはGraphics Processing Unitの略称であり、APUはAccelerated Processing Unitの略称である。DSPはDigital Signal Processorの略称であり、ASICはApplication Specific ICの略称であり、FPGAはField-Programmable Gate Arrayの略称である。
メモリ1bは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。メモリ1bとしては、例えばDRAM(Dynamic Random Access Memory)等の揮発性メモリが挙げられる。
記憶部1cは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。記憶部1cとしては、例えばSSD等の半導体ドライブ装置、HDD(Hard Disk Drive)等の磁気ディスク装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、SCM(Storage Class Memory)、ROM(Read Only Memory)等が挙げられる。
なお、第1実施形態に係る記憶部1cには、少なくとも、低レイテンシSSDが含まれてよい。また、記憶部1cには、低レイテンシSSDに加えて、他のSSDやHDD等の記憶装置が含まれてもよい。
また、記憶部1cは、コンピュータ1の各種機能の全部若しくは一部を実現するプログラム1gを格納してよい。例えば、コンピュータ1のプロセッサ1aは、記憶部1cに格納されたプログラム1g(情報処理プログラム)をメモリ1bに展開して実行することにより、図9に示す後述する処理部2としての機能を実現できる。処理部2の機能は、後述する、OS21、I/O集中アプリ22、及び、制御部23の機能を含んでよい。
IF部1dは、図示しないネットワークとの間の接続及び通信の制御等を行なう通信IFの一例である。例えば、IF部1dは、LAN(Local Area Network)、或いは、光通信(例えばFC(Fibre Channel;ファイバチャネル))等に準拠したアダプタを含んでよい。例えば、プログラム1gは、当該通信IFを介して、ネットワークからコンピュータ1にダウンロードされ、記憶部1cに格納されてもよい。
I/O部1eは、マウス、キーボード、又は操作ボタン等の入力部、並びに、タッチパネルディスプレイ、LCD(Liquid Crystal Display)等のモニタ、プロジェクタ、又はプリンタ等の出力部、の一方又は双方を含んでよい。
読取部1fは、記録媒体1hに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部1fは、記録媒体1hを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部1fとしては、例えば、USB(Universal Serial Bus)等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体1hにはプログラム1gが格納されてもよく、読取部1fが記録媒体1hからプログラム1gを読み出して記憶部1cに格納してもよい。
記録媒体1hとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク、HVD(Holographic Versatile Disc)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等が挙げられる。なお、CDとしては、例示的に、CD-ROM、CD-R、CD-RW等が挙げられる。また、DVDとしては、例示的に、DVD-ROM、DVD-RAM、DVD-R、DVD-RW、DVD+R、DVD+RW等が挙げられる。
上述したコンピュータ1のハードウェア構成は例示である。従って、コンピュータ1内でのハードウェアの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。
〔1-2-2〕機能構成例
図9は、第1実施形態に係るコンピュータ1の機能構成例を示すブロック図である。コンピュータ1は、情報処理装置の一例である。コンピュータ1としては、例えば、PC(Personal Computer)、タブレット、スマートホン、サーバ、メインフレーム等の種々の処理装置が挙げられる。図9に示すように、コンピュータ1は、例示的に、処理部2、メモリ部3、及び、低レイテンシストレージ4をそなえてよい。
メモリ部3は、コンピュータ1の制御に用いられる種々の情報を記憶する保持部の一例である。メモリ部3は、例示的に、制御情報31及びI/Oキュー32を格納してよい。
制御情報31は、後述する制御部23の制御に用いられる情報である。なお、制御情報31は、例えば、受信したパラメータや、OS21の処理に用いられるパラメータを含んでよい。
I/Oキュー32は、OS21及びI/O集中アプリ22が低レイテンシストレージ4に対して発行するアクセス要求を格納するキューの一例である。I/Oキュー32は、例えば、低レイテンシストレージ4に対するI/Oアクセス用のコマンドやデータを一時的に格納するバッファとして、デバイスドライバ211により利用される記憶領域である。
メモリ部3は、1以上の記憶部によって実現されてよく、複数の記憶部によってRAID(Redundant Arrays of Inexpensive Disks)等のディスクアレイが構成されてもよい。メモリ部3は、図8に示すメモリ1b及び記憶部1cの少なくとも一方の記憶領域により実現されてよい。第1実施形態においては、メモリ部3は、DRAM等のメモリ1bの記憶領域により実現されるものとする。
低レイテンシストレージ4は、ストレージ又はデバイス(記憶デバイス)の一例である。低レイテンシストレージ4には、種々のデータが記憶されてよく、一例として、後述するOS21やI/O集中アプリ22等のシステムデータや、ドキュメントやマルチメディア等のユーザデータ等が記憶されてよい。
低レイテンシストレージ4としては、例えば、3D XPoint(登録商標)技術を採用したIntel Optane SSD(登録商標)等の低レイテンシSSDが挙げられる。低レイテンシストレージ4は、アクセスレイテンシ、換言すればデバイス処理の処理時間(遅延時間)或いは応答時間、が小さく、例えば数μs~20μs程度、一例として10μs或いはそれ以下のレイテンシである。低レイテンシストレージ4は、図8に示す記憶部1cの一例である。なお、コンピュータ1には、低レイテンシストレージ4の他に、記憶部1cの一例としての記憶装置が搭載又は接続されてもよい。
処理部2は、図8に例示するコンピュータ1のプロセッサ1aが、メモリ1bに展開したプログラム1gを実行することによりに実現される機能である。処理部2は、例示的に、OS(オペレーティングシステム)21、I/O集中アプリケーション22、及び、制御部23をそなえてよい。
OS21は、コンピュータ1の管理及び制御を行なう基本ソフトウェアの一例であり、種々のアプリケーションに対して、コンピュータ1のハードウェア資源及び/又はソフトウェア資源を利用可能とするソフトウェアである。
OS21は、例示的に、デバイスドライバ211をそなえてよい。デバイスドライバ211は、コンピュータ1のハードウェア資源をOS21により制御可能とするためのソフトウェアである。デバイスドライバ211には、低レイテンシストレージ4をOS21によって制御可能とするための低レイテンシストレージ4用のデバイスドライバが含まれてよい。
I/O集中アプリ22は、OS21の制御の下で動作するアプリケーションソフトウェアの一例であり、低レイテンシストレージ4への高頻度なI/O、例えば同期I/Oのアクセスを行なってよい。同期I/O等の高頻度なI/Oは、I/O集中アプリ22自体の処理時間は短いが、OS21及び低レイテンシストレージ4におけるI/O処理に負荷がかかるアクセスである。
以上のように、OS21及びI/O集中アプリ22は、低レイテンシストレージ4に対するアクセスを行なうアクセス部の一例である。
制御部23は、プロセッサ1aの制御を通じて、アクセス処理性能やプロセッサ1aの消費電力等を制御してよい。制御部23は、例示的に、算出部231及び周波数制御部232をそなえてよい。算出部231及び周波数制御部232の詳細は後述する。
〔1-3〕制御部の説明
次に、第1実施形態に係る制御部23について説明する。
上述のように、現存のCPUにおいては、動作周波数の変更に数十μs等の時間がかかる。そこで、制御部23は、プロセッサ1aの動作周波数を変更可能な一定時間ごとに、周波数制御を行なう。一定時間とは、動作周波数の変更にかかる時間である数十μs以上の時間であり、例示的に、数百μs~数百ms程度の範囲の時間であってよい。
なお、周波数制御は、プロセッサ1aのコア単位で行なわれてよい。以下、プロセッサ1aの動作周波数の制御とは、プロセッサ1aのコア単位でコアの動作周波数を制御することを意味するものとする。
制御部23は、周波数制御において、アプリケーション、例えばI/O集中アプリ22の性能に影響が出ない場合に制限して、プロセッサ1aの動作周波数を低下させてよい。すなわち、プロセッサ1aの動作周波数が低下すると、OS21の処理時間が増大するが、制御部23は、プロセッサ1aの動作周波数の低下が性能に影響しない以下の(a)及び(b)の一方又は双方の場合に制限して、動作周波数の低下制御を行なってよい。
(a)低レイテンシストレージ4自体が性能のボトルネックとなっている場合。
(b)プロセッサ1aで実行されるOS処理の時間が性能に影響しない場合。
制御部23は、低レイテンシストレージ4の使用状態に応じて、動作周波数を動的に制御してよい。
図10は、デバイスの使用状態と性能ボトルネックとの関係の一例を示す図である。
例えば、処理部2から送信されたアクセス要求、例えばI/Oリクエストに応じて、低レイテンシストレージ4がデバイス処理を実行している場合、低レイテンシストレージ4は稼働状態であるといえる。また、図10に示すように、低レイテンシストレージ4によるデバイス処理の実行待ちのI/OリクエストがI/Oキュー32に溜まっている場合、低レイテンシストレージ4がアクセス性能のボトルネックとなり、上記(a)の条件を満たすことになる。
また、この場合、OS処理は、I/Oキュー32に蓄積されたI/Oリクエストの完了待ちを、図2に例示するIRQ又はポーリングにより行なう。従って、I/Oリクエストに対するデバイス処理が完了するまでは、処理部2で実行されるOS処理の時間が性能に影響せず、上記(b)の条件を満たすことになる。
例えば、制御部23は、低レイテンシストレージ4自体が性能のボトルネックになっていることを検出した場合、プロセッサ1aの動作周波数を低下制御することで、プロセッサ1aの消費電力を削減してよい。
一方、低レイテンシストレージ4がデバイス処理を実行していない場合、低レイテンシストレージ4はI/Oリクエストに対する処理について非稼働状態であるといえる。図10に示すように、I/Oキュー32が空の場合、低レイテンシストレージ4では処理待ちが発生しているため、処理部2(例えばプロセッサ1a)がアクセス性能のボトルネックとなる。
例えば、制御部23は、プロセッサ1aが性能のボトルネックとなっている場合、動作周波数を増加制御し、アプリケーション(例えばI/O集中アプリ22)の性能を増加させてよい。一例として、制御部23は、プロセッサ1aが性能のボトルネックとなっている場合、動作周波数を最大に設定し、アプリケーションの性能を最大化させてよい。
ここで、低レイテンシストレージ4の使用状態の非限定的な一例としては、低レイテンシストレージ4のデバイス使用率が挙げられる。デバイス使用率は、例示的に、単位時間当たりのデバイス稼働時間の割合(%)の算出結果に相当する。
例えば、制御部23の算出部231は、単位時間に対するI/Oリクエストの滞留時間の割合を、デバイス使用率として算出してよい。
滞留時間は、制御情報31の一例であり、デバイスドライバ211のI/Oキュー32に少なくとも1つのI/Oリクエストが滞留している時間を示す情報である。滞留時間は、例えば、OS21がLinux(登録商標)である場合、“/sys/block/<dev>/stat”のファイルにOS21によって記録された「io_ticks」のパラメータにより表される。
算出部231は、例えば、所定のタイミングで、上記ファイルから「io_ticks」を読み出し、「io_ticks」の計測開始時刻から現在時刻までの差分を算出し、算出した差分に対する「io_ticks」の割合をデバイス使用率として算出してよい。
このように、算出部231は、所定のタイミングで、低レイテンシストレージ4の使用状態を監視する監視部の一例である。
周波数制御部232は、算出部231が算出したデバイス使用率が、所定の閾値(例えば100%等)を下回るか否かを判定することで、性能ボトルネックの要因となるコンポーネントを検出してよい。そして、周波数制御部232は、検出したコンポーネントに応じて、上述のように、プロセッサ1aの動作周波数を低下制御又は増加制御してよい。
図11は、リクエストサイズとデバイス使用率及びスループットとの関係の一例を示す図である。なお、図11に示す動作ポリシの「min_freq」は、周波数制御部232による制御によって、動作周波数を低下制御した場合に相当する。
図11に示すように、動作周波数を「min_freq」に低下させる制御によってデバイス使用率が所定の閾値を下回った場合(図11(a)の「8KB」参照)、スループットの低下が発生する(図11(b)の「8KB」参照)。なお、以下の説明では、便宜上、所定の閾値が100%であるものとする。
一方、動作周波数を「min_freq」に低下させる制御によってデバイス使用率が低下しない場合(図11(a)の「64KB」参照)、スループットは低下しない(図11(b)の「64KB」参照)。
このように、リクエストサイズが大きいほど、低レイテンシストレージ4によるデバイス処理の処理時間が長くなるため、I/Oキュー32におけるI/Oリクエストの滞留時間も長くなる。従って、動作周波数の低下制御によりOS処理の処理時間が増大する場合であっても、リクエストサイズが大きいほど、デバイス処理の実行待ちによりデバイス使用率が低下する可能性が低減する。
図12は、動作周波数とデバイス使用率との関係の一例を示す図である。なお、図12では、プロセッサ1aが「コア0」及び「コア1」をそなえる場合を想定する。図12の上段に、リクエストサイズが8KBの場合(図11参照)のように、動作周波数低下によりデバイス使用率が100%を下回る場合における、コア0及びコア1の処理例を示す。また、図12の下段に、リクエストサイズが64KBの場合(図11参照)のように、動作周波数低下によりデバイス使用率が低下しない場合における、コア0及びコア1の処理例を示す。
図12の上段に示すように、コア0及びコア1の双方の動作周波数の低下によりデバイス使用率が100%を下回る場合、動作周波数の低下によるOS処理時間の増加によって、コア0及びコア1の双方のアクセス時間が増加する。なお、このような状況は、上述した(b)、又は、(a)及び(b)、の条件を満たさない場合に相当する。
一方、図12の下段に示すように、コア0及びコア1の双方の動作周波数の低下によりデバイス使用率が低下しない場合、動作周波数の低下によりOS処理時間が増加しても、コア0及びコア1の双方のアクセス時間は増加しない。なお、このような状況は、上述した(a)及び(b)の条件を満たす場合に相当する。
図12の下段の例では、コア0及びコア1の双方において、動作周波数の低下前に、デバイス処理の完了待ちの時間である「In queue」がOS処理に含まれている。一方、動作周波数の低下後は、OS処理時間において、「OS」及び「App」の処理時間が増大して「In queue」の時間・リソースを消費することにより、OS処理時間の増加を抑制した状態で、コア0及びコア1における消費電力の削減を実現している。
例えば、図12の下段の「Low freq.」(動作周波数低下後)において、コア0若しくはコア1の「I/O wait」が時間的に連続しており、コア0及びコア1間で「I/O wait」が途切れずに実行されている。これにより、図12に示す時間帯においては、動作周波数の低下後でも、低レイテンシストレージ4が動作し続けるため、デバイス使用率=100%が実現される。
以上のように、周波数制御部232は、算出部231による監視結果に応じて、OS21及びI/Oキュー32の処理を実行するプロセッサ1aの動作周波数を変化させる制御を行なう制御部の一例である。
上述のように、CPU等のプロセッサの動作ポリシ(「performance」、「powersave」、「min_freq」等)は、図5及び図6等に示すように、プロセッサの負荷等の使用状態に応じて、プロセッサの動作周波数を制御する。すなわち、プロセッサの動作周波数は、制御対象であるプロセッサの使用状態に応じて制御されることが一般的である。
これに対し、第1実施形態では、制御対象であるプロセッサ1aの使用状態ではなく、低レイテンシストレージ4の使用状態に着目することで、例えば、動作周波数の低下制御により増加するOS処理時間が性能に影響するか否かを予測することができる。換言すれば、動作周波数を低下制御した場合に、プロセッサ1aが性能ボトルネックとなるか否か(低レイテンシストレージ4が性能ボトルネックとなり続けるか否か)を予測することができる。なお、このような「予測」をプロセッサ1aの使用状態に基づき実現することは困難である。
このように、第1実施形態に係る制御部23は、低レイテンシストレージ4の使用状態を監視し、使用状態に応じて(一例として、上記(a)及び(b)の一方又は双方の条件を満たす場合に)、プロセッサ1aの動作周波数を低下制御する。これにより、図11及び図12等を参照して説明したように、コンピュータ1における低レイテンシストレージ4へのアクセス性能の向上と、低レイテンシストレージ4へのアクセスにおけるプロセッサ1aの消費電力の削減と、を両立させることができる。
また、第1実施形態に係る制御部23は、低レイテンシストレージ4の使用状態に応じて(一例として、上記(a)及び(b)の一方又は双方の条件を満たさない場合)、プロセッサ1aの動作周波数を増加制御する。これにより、OS処理時間を短縮させることができ、低レイテンシストレージ4へのアクセス性能を向上できる。
なお、デバイスの使用状態、例えばデバイス使用率は、I/Oキュー32におけるI/Oリクエストの格納時間に代えて、他の情報に基づき取得されてもよい。例えば、デバイス使用率は、I/Oキュー32におけるキューの待機数、一定時間における低レイテンシストレージ4のビジー率、低レイテンシストレージ4からのビジー応答の有無、等の情報に基づいて算出又は導出されてもよい。
例えば、周波数制御部232は、I/Oキュー32におけるキューの待機数が所定の閾値を超えるか否か、ビジー率が所定の閾値以上か否か、或いは所定期間内にビジー応答が有ったか否か、等を判定してよい。なお、周波数制御部232は、キューの待機数が所定の閾値を超える場合、ビジー率が所定の閾値以上である場合、或いは所定期間内にビジー応答が有った場合に、低レイテンシストレージ4の使用率が閾値を超えた(性能ボトルネックである)と判定してよい。
なお、デバイス使用率がキューの待機数に基づいて算出又は導出される場合について、以下の処理が実施されてもよい。
図12の上段の説明において、動作周波数低下によりデバイス使用率が100%を下回る場合の例として、リクエストサイズが8KBの場合(図11参照)を例に挙げたが、これに限定されるものではない。例えば、リクエストサイズが8KBのように小さい場合であっても、I/Oキュー32におけるキューの待機数が多く、「In queue」がOS処理に含まれる場合には、図12の下段に示すように、動作周波数低下によりデバイス使用率が低下しない場合がある。
このため、周波数制御部232は、キューの待機数の所定の閾値を、リクエストサイズに応じて(例えば、リクエストサイズと所定の閾値とを乗じた値が一定のサイズとなるように)、設定してもよい。一定のサイズとは、例えば、動作周波数が低下してもデバイス使用率が低下しないサイズである。
また、デバイス使用率が低レイテンシストレージ4のビジー率に基づいて算出又は導出される場合について、以下の処理が実施されてもよい。
例えば、低レイテンシストレージ4のビジー率は、低レイテンシストレージ4のバンド幅に基づき算出されてもよい。バンド幅は、低レイテンシストレージ4におけるデータの転送速度(例えば書込スループット)を示す情報である。上述した図11の説明と同様に、低レイテンシストレージ4のバンド幅は、リクエストサイズが大きいほど、低レイテンシストレージ4によるデバイス処理の処理時間が長くなるため、増加する(一定値を超えたときに飽和する)。従って、動作周波数の低下制御によりOS処理の処理時間が増大する場合であっても、リクエストサイズが大きいほど、デバイス処理の実行待ちによりデバイス使用率が低下する可能性が低減する。
図13は、平均リクエストサイズと書込スループットとの関係の一例を示す図である。図13では、プロセッサ1aの動作周波数が「1.2GHz」である場合のグラフと、「3.6GHz」(一例として最大値)である場合のグラフとを示している。図13(a)に示すように、「リクエストサイズが小さい」と表記した時間区間においては、図13(b)の対応する時間区間においてバンド幅が飽和しない。
一方、図13(a)に示すように、「リクエストサイズが大きい」と表記した時間区間においては、図13(b)の対応する時間区間においてバンド幅が飽和している。なお、図13の例では、書込スループットとして示すバンド幅は、1800(MB/s)程度で飽和するものとする。
図13(b)に示すように、低レイテンシストレージ4のバンド幅が飽和する程度にリクエストサイズが大きい場合、プロセッサ1aの動作周波数が「3.6GHz」から「1.2GHz」に低下しても、バンド幅が飽和し続ける。この場合、動作周波数の低下制御によりOS処理の処理時間が増大する場合であっても、デバイス処理の実行待ちによりデバイス使用率が低下する可能性が低減する。すなわち、上記(a)及び(b)の一方又は双方の条件を満たす場合に相当する。
以上のことから、周波数制御部232は、例えば、ビジー率として、最大値(飽和値)に対するバンド幅の割合を算出し、割合が所定の閾値(非限定的な一例として、100%)以上の場合、動作周波数の低下制御を行なってよい。一方、割合が所定の閾値未満の場合は、動作周波数の増加制御を行なってよい。なお、周波数制御部232は、ビジー率と所定の閾値との比較に代えて、例えば、バンド幅と転送速度の閾値と、の比較を行なってもよい。
〔1-4〕第1実施形態に係るコンピュータの動作例
次に、図14及び図15を参照して、上述の如く構成された第1実施形態に係るコンピュータ1の動作例を説明する。
なお、第1実施形態において、コンピュータ1の処理部2には、入力パラメータとして、「interval」及び「dec_thr」が入力されてよい。「interval」は、動作周波数制御を行なう時間間隔である一定時間を定義するパラメータである。「dec_thr」は、動作周波数の低下を許容するデバイス使用率の所定の閾値を定義するパラメータである。
「interval」及び「dec_thr」は、例えば、図示しない管理端末等のコンピュータから、ネットワークを介して送信されてよく、処理部2は、受信したパラメータを制御情報31としてメモリ部3に格納してよい。
以下、前提として、OS21及び低レイテンシストレージ4が、I/O集中アプリ22からの要求に従いアクセス処理を行なうものとする(図15の(i-1)及び(i-2)参照)。
図14に例示するように、コンピュータ1の処理部2における制御部23は、メモリ部3の制御情報31から待機時間を定義するパラメータである「interval」を抽出し、抽出した「interval」に従い、一定時間待機する(ステップS1)。
一定時間の経過後、制御部23の算出部231は、デバイス使用率を計測する(ステップS2;図15の(ii)参照)。例えば、算出部231は、I/Oキュー32に関するパラメータである「io_ticks」を制御情報31から抽出し、抽出した「io_ticks」に基づき、デバイスドライバ211によるデバイス使用率を算出してよい。なお、「io_ticks」は、OS21のシステムデータとして、ストレージの一例としての低レイテンシストレージ4に格納されてもよく、この場合、算出部231は、デバイスドライバ211を介して低レイテンシストレージ4から「io_ticks」を抽出してもよい。
次いで、周波数制御部232は、メモリ部3の制御情報31から所定の閾値を定義するパラメータである「dec_thr」を抽出し、デバイス使用率が、抽出した「dec_thr」未満か否かを判定する(ステップS3)。
デバイス使用率が「dec_thr」未満ではない(「dec_thr」以上である)と判定した場合(ステップS3でNo)、周波数制御部232は、プロセッサ1aの動作周波数を1段階低下するように制御し(ステップS4)、動作周波数制御の1サイクルが終了する。
一方、デバイス使用率が「dec_thr」未満であると判定した場合(ステップS3でYes)、周波数制御部232は、プロセッサ1aの動作周波数を増加、例えば最大値に設定し(ステップS5)、動作周波数制御の1サイクルが終了する。
このように、周波数制御部232は、ステップS3の判定結果に応じて、ステップS4及びS5においてプロセッサ1aの動作周波数制御を行なう(図15の(iii)参照)。
なお、ステップS4又はS5の終了後、処理がステップS1に移行してもよい。また、プロセッサ1aがマルチコアプロセッサである場合は、図14に示す処理がコアごとに実行されてよい。
〔2〕第2実施形態
次に、第2実施形態について説明する。
第1実施形態においては、制御部23は、所定の(例えば指定された)インターバルごとに、プロセッサ1aの動作周波数を制御するものとして説明した。しかし、低レイテンシストレージ4が稼働し続ける間は、動作周波数の制御を実施しなくてよい場合がある。
そこで、第2実施形態では、低レイテンシストレージ4の稼働状態の予測結果に応じて、インターバルの期間(時間)を所定のインターバルよりも長くなるように設定する手法について説明する。
また、第1実施形態においては、制御部23は、各時点の低レイテンシストレージ4のデバイス使用率に基づき、動作周波数を段階的に低下させる制御を行なうものとして説明した。このような動作周波数の段階的な制御により、デバイス使用率が低下した際の性能低下を抑制することができる。
第2実施形態では、低レイテンシストレージ4の稼働状態の予測結果(例えば稼動し続ける時間)に応じて、動作周波数を段階的ではなく即座に最小化する手法について説明する。
〔2-1〕第2実施形態の構成例
図16は、第2実施形態に係るコンピュータ1Aの機能構成例を示すブロック図である。なお、以下で言及しない限り、コンピュータ1Aの機能構成及びハードウェア構成は、第1実施形態に係るコンピュータ1の機能構成及びハードウェア構成と同様であってよい。
第2実施形態に係るコンピュータ1Aは、図16に例示するように、処理部2A、メモリ部3、及び、低レイテンシストレージ4をそなえてよい。
処理部2Aは、コンピュータ1Aのプロセッサ(プロセッサ1a;図8参照)が、メモリ1bに展開したプログラム1gを実行することによりに実現される機能である。処理部2Aは、第1実施形態に係る処理部2に対して、制御部23を制御部23Aに置き換えた構成と捉えることができる。
第2実施形態に係る処理部2Aは、図16に例示するように、OS21、I/O集中アプリ22、及び、制御部23Aをそなえてよい。
制御部23Aは、プロセッサ1aの制御を通じて、アクセス処理性能やプロセッサ1aの消費電力等を制御してよい。制御部23Aは、例示的に、算出部231、周波数制御部232A、及び、稼働時間予測部233をそなえてよい。
算出部231は、第1実施形態と同様に、所定のタイミングで、低レイテンシストレージ4の使用状態を監視する監視部の一例である。
稼働時間予測部233は、低レイテンシストレージ4の各時点からの稼働時間(デバイス稼働時間)を予測し、予測した稼働時間を動作周波数の制御機構である周波数制御部232Aに出力する。これにより、適切なインターバルの設定と、即座の動作周波数の最小化と、を実現できる。稼働時間(デバイス稼働時間)は、低レイテンシストレージ4によるアクセスの処理時間の一例である。
なお、各時点とは、制御部23Aによる制御を行なうタイミングであり、第1実施形態では、一定時間(待機時間、インターバル)ごとに到来する、所定のタイミングに相当する。第2実施形態においては、所定のタイミングは、周波数制御部232Aにより、算出部231による監視結果、及び、稼働時間予測部233が予測した稼働時間に基づき、可変に制御されてよい。例えば、所定のタイミングは、周波数制御部232Aによる制御の実行タイミングに所定時間を加算したタイミングを含んでよく、所定時間が周波数制御部232Aによって変更されてよい。
稼働時間予測部233は、予測モデルに基づき、デバイス稼働時間を予測してよい。図17は、デバイス稼働時間の予測モデルの一例を示す図である。
ここで、低レイテンシストレージ4がI/Oリクエストを処理する時間は、I/Oリクエストの要求データサイズに比例する。また、現時点からのデバイス稼働時間は、I/Oキュー32に格納された全リクエストの処理時間の総和となる。
従って、デバイス稼働時間Tは、I/Oキュー32におけるアクセス要求の格納状態に基づき、図17及び下記(1)式に示す予測モデルにより表すことができる。
上記(1)式において、「N」は、I/Oキュー32に格納されたI/Oリクエストの総数を示し、「request_size_i」は、各I/Oリクエストの要求データサイズを示す。稼働時間予測部233は、N及びrequest_size_iを、それぞれ、OS21等により記録されたパラメータ等に基づき取得してよい。
また、上記(1)式において、「α」は、低レイテンシストレージ4によるアクセスに対するI/O性能等の処理性能に応じた係数を示す。当該係数は、例えば、要求データサイズ(4KB、8KB、・・・等)ごとに決定されてよい。なお、係数は、予め計測等により算出されてよい。
図17では、I/Oキュー32に「request_size_1」、「request_size_2」、「request_size_3」の3つのI/Oリクエストが格納されている(N=3)。この場合、デバイス稼働時間Tは、「request_size_1」、「request_size_2」、「request_size_3」の各々に、要求データサイズに応じた係数αを乗じた値の総和となる。
このように、稼働時間予測部233は、低レイテンシストレージ4によるアクセスの処理時間を予測する予測部の一例である。予測部の一例としての稼働時間予測部233は、I/Oキュー32におけるアクセス要求の格納状態に基づき、処理時間を予測する。
なお、稼働時間予測部233は、後述する周波数制御部232Aにより、算出部231による監視結果に基づき、低レイテンシストレージ4の使用率が所定の閾値以上であると判定された場合に、起動、すなわち、デバイス稼働時間の予測処理を行なってよい。
周波数制御部232Aは、第1実施形態の周波数制御部232と同様に、算出部231による監視結果に応じて、OS21及びI/Oキュー32の処理を実行するプロセッサ1aの動作周波数を変化させる制御を行なう制御部の一例である。また、第2実施形態に係る周波数制御部232Aは、算出部231による監視結果に応じて、制御部23Aによる制御を行なうタイミングを定義する待機時間(所定時間)を既定値から変化させる。
例えば、周波数制御部232Aは、算出部231による監視結果に基づき、低レイテンシストレージ4の使用率が所定の閾値以上であると判定した場合に、待機時間に、稼働時間予測部233が予測したデバイス稼働時間を設定してよい。
一例として、デバイス稼働時間が待機時間の既定値よりも大きい場合、待機時間には、既定値よりも大きいデバイス稼働時間が設定される。すなわち、インターバルが長く設定される。なお、既定値とは、第1実施形態におけるパラメータである「interval」に相当する。
これにより、低レイテンシストレージ4が稼働し続けると推定される期間に、動作周波数の制御が行なわれることを抑制でき、第1実施形態と比較して、当該制御によるオーバヘッドを削減することができる。また、第1実施形態と比較して、プロセッサ1aの消費電力の削減を図ることができる。
一方、デバイス稼働時間が待機時間の既定値以下の場合、待機時間には、既定値以下であるデバイス稼働時間が設定される。すなわち、インターバルが短く設定される。
これにより、低レイテンシストレージ4の稼動が停滞する(I/Oキュー32が空になる)と推定される場合、既定値の経過を待たずに速やかに、プロセッサ1aの動作周波数の制御(例えば最大値に引き上げる制御)を行なうことができる。従って、第1実施形態と比較して、コンピュータ1Aにおける低レイテンシストレージ4へのアクセス性能を向上させることができる。
また、周波数制御部232Aは、監視結果に基づき、低レイテンシストレージ4の使用率が所定の閾値以上であると判定した場合であって、稼働時間が既定値よりも大きいと判定した場合に、動作周波数を所定値にまで低下させる制御を行なってよい。例えば、周波数制御部232Aは、この場合、プロセッサ1aの動作周波数を最小化(最低値に設定)してよい。
これにより、周波数制御部232Aは、低レイテンシストレージ4が既定値よりも長い時間に亘って稼動し続けると判定したタイミングで、プロセッサ1aの動作周波数を段階的ではなく即座に最小化することができる。すなわち、数サイクルに亘る1段階ごとの低下制御によって動作周波数を最小値に設定するのではなく、1サイクルでの低下制御によって動作周波数を最小値に設定することができる。従って、第1実施形態と比較して、プロセッサ1aの消費電力の削減を図ることができる。
さらに、周波数制御部232Aは、監視結果に基づき、低レイテンシストレージ4の使用率が所定の閾値未満であると判定した場合に、プロセッサ1aの動作周波数を増加させる制御を行なうとともに、待機時間に既定値を設定(待機時間をリセット)してよい。
これにより、制御部23Aは、デバイス使用率の低下後、再びデバイス使用率が所定の閾値以上になるまでは、第1実施形態と同様の制御を行なうことができる。
〔2-2〕第2実施形態に係るコンピュータの動作例
次に、図18及び図19を参照して、上述の如く構成された第2実施形態に係るコンピュータ1Aの動作例を説明する。
なお、第2実施形態において、コンピュータ1Aの処理部2Aには、入力パラメータとして、第1実施形態と同様に「interval」及び「dec_thr」が入力されてよい。
以下、前提として、OS21及び低レイテンシストレージ4が、I/O集中アプリ22からの要求に従いアクセス処理を行なうものとする(図19の(i-1)及び(i-2)参照)。
図18に例示するように、コンピュータ1Aの処理部2Aにおける制御部23Aは、メモリ部3の制御情報31から待機時間の既定値を定義するパラメータである「interval」を抽出する。そして、制御部23Aは、抽出した「interval」に従い、待機時間「wait_time」の間待機する(ステップS11)。
「wait_time」の経過後、制御部23Aの算出部231は、第1実施形態と同様に、デバイス使用率を計測する(ステップS2;図19の(ii)参照)。
次いで、周波数制御部232Aは、メモリ部3の制御情報31から所定の閾値を定義するパラメータである「dec_thr」を抽出し、デバイス使用率が、抽出した「dec_thr」未満か否かを判定する(ステップS3)。
デバイス使用率が「dec_thr」未満ではない(「dec_thr」以上である)と判定した場合(ステップS3でNo)、稼働時間予測部233は、デバイス稼働時間Tを予測する(ステップS12)。
例えば、稼働時間予測部233は、「N」及び「request_size_i」を、それぞれ、OS21等により記録されたパラメータ等に基づき取得し、図17及び上記(1)式に示す予測モデルを用いて、デバイス稼働時間Tを予測してよい。
そして、稼働時間予測部233は、予測したデバイス稼働時間Tを周波数制御部232Aに送信(通知)する(図19の(iii)参照)。
周波数制御部232Aは、稼働時間予測部233から受信したデバイス稼働時間Tと、「interval」とを比較し、デバイス稼働時間Tが「interval」よりも大きいか否かを判定する(ステップS13)。
デバイス稼働時間Tが「interval」よりも大きいと判定した場合(ステップS13でYes)、周波数制御部232Aは、プロセッサ1aの動作周波数を所定値にまで低下、例えば最小値に設定し(ステップS14)、処理がステップS15に移行する。
一方、デバイス稼働時間Tが「interval」以下であると判定した場合(ステップS13でNo)、周波数制御部232Aは、プロセッサ1aの動作周波数を1段階低下するように制御し(ステップS4)、処理がステップS15に移行する。
ステップS15では、周波数制御部232Aは、待機時間「wait_time」に対して、デバイス稼働時間Tを設定し、動作周波数制御の1サイクルが終了する。
一方、ステップS3において、デバイス使用率が「dec_thr」未満であると判定した場合(ステップS3でYes)、周波数制御部232Aは、プロセッサ1aの動作周波数を増加、例えば最大値に設定する(ステップS5)。
そして、周波数制御部232Aは、待機時間「wait_time」に対して、既定値である「interval」を設定し(ステップS16)、動作周波数制御の1サイクルが終了する。
このように、周波数制御部232Aは、ステップS3及びS13の判定結果に応じて、ステップS4、S5、及びS14においてプロセッサ1aの動作周波数制御を行なう(図19の(iv)参照)。
なお、ステップS15又はS16の終了後、処理がステップS11に移行してもよい。また、プロセッサ1aがマルチコアプロセッサである場合は、図18に示す処理がコアごとに実行されてよい。
以上のように、第2実施形態によれば、第1実施形態と同様の効果を奏することができる。また、第2実施形態によれば、I/O集中アプリ22の振る舞いにより低レイテンシストレージ4へのアクセス傾向にばらつきが生じ、デバイス稼働時間がタイミングによって異なる場合であっても、制御部23Aの制御間隔を柔軟に変更することができる。
〔3〕その他
上述した第1実施形態及び第2実施形態に係る技術は、以下のように変形、変更して実施することができる。
例えば、図9に示す制御部23において、算出部231及び周波数制御部232の機能は、任意の組み合わせで併合してもよく、それぞれ分割してもよい。また、図16に示す制御部23Aにおいて、算出部231、周波数制御部232A、及び稼働時間予測部233の機能は、任意の組み合わせで併合してもよく、それぞれ分割してもよい。
〔4〕付記
以上の第1実施形態及び第2実施形態に関し、さらに以下の付記を開示する。
(付記1)
ストレージに対するアクセスを行なうアクセス部と、
所定のタイミングで、前記ストレージの使用状態を監視する監視部と、
前記監視部による監視結果に応じて、前記アクセス部の処理を実行するプロセッサの動作周波数を変化させる制御を行なう制御部と、をそなえる
情報処理装置。
(付記2)
前記ストレージの使用状態は、前記ストレージの使用率であり、
前記制御部は、前記監視結果に基づき、前記ストレージの使用率が所定の閾値以上であると判定した場合に、前記プロセッサの動作周波数を低下させる制御を行なう、
付記1に記載の情報処理装置。
(付記3)
前記制御部は、前記監視結果に基づき、前記ストレージの使用率が前記所定の閾値未満であると判定した場合に、前記プロセッサの動作周波数を増加させる制御を行なう、
付記2に記載の情報処理装置。
(付記4)
前記アクセス部が前記ストレージに対して発行するアクセス要求を格納するキューをそなえ、
前記監視部は、前記キューにおける前記アクセス要求の格納状態に基づき、前記ストレージの使用状態を監視する、
付記1~3のいずれか1項に記載の情報処理装置。
(付記5)
前記監視部は、前記ストレージのビジー率に基づき、前記ストレージの使用状態を監視する、
付記1~3のいずれか1項に記載の情報処理装置。
(付記6)
前記監視部は、前記ストレージから送信されるビジー応答の有無に基づき、前記ストレージの使用状態を監視する、
付記1~3のいずれか1項に記載の情報処理装置。
(付記7)
前記所定のタイミングは、前記制御部による制御の実行タイミングに所定時間を加算したタイミングを含み、
前記制御部は、前記監視部による監視結果に応じて、前記所定時間を既定値から変化させる、
付記1~6のいずれか1項に記載の情報処理装置。
(付記8)
前記ストレージによる前記アクセスの処理時間を予測する予測部をそなえ、
前記ストレージの使用状態は、前記ストレージの使用率であり、
前記制御部は、前記監視結果に基づき、前記ストレージの使用率が所定の閾値以上であると判定した場合に、前記所定時間に前記処理時間を設定する、
付記7に記載の情報処理装置。
(付記9)
前記制御部は、前記監視結果に基づき、前記ストレージの使用率が所定の閾値以上であると判定した場合であって、前記処理時間が前記既定値よりも大きいと判定した場合に、前記プロセッサの動作周波数を所定値にまで低下させる制御を行なう、
付記8に記載の情報処理装置。
(付記10)
前記制御部は、前記監視結果に基づき、前記ストレージの使用率が前記所定の閾値未満であると判定した場合に、前記プロセッサの動作周波数を増加させる制御を行なうとともに、前記所定時間に前記既定値を設定する、
付記8又は付記9に記載の情報処理装置。
(付記11)
前記アクセス部が前記ストレージに対して発行するアクセス要求を格納するキューをそなえ、
前記予測部は、前記キューに格納されたアクセス要求の総数と、前記キューに格納されたアクセス要求の各々の要求データサイズと、に基づき、前記処理時間を予測する、
付記8~10のいずれか1項に記載の情報処理装置。
(付記12)
ストレージに対するアクセスを行ない、
所定のタイミングで、前記ストレージの使用状態を監視し、
前記監視による監視結果に応じて、前記アクセスの処理を実行するプロセッサの動作周波数を変化させる制御を行なう、
処理をコンピュータに実行させる、情報処理プログラム。
(付記13)
前記ストレージの使用状態は、前記ストレージの使用率であり、
前記制御は、前記監視結果に基づき、前記ストレージの使用率が所定の閾値以上であると判定した場合に、前記プロセッサの動作周波数を低下させる制御を行なう、
付記12に記載の情報処理プログラム。
(付記14)
前記制御は、前記監視結果に基づき、前記ストレージの使用率が前記所定の閾値未満であると判定した場合に、前記プロセッサの動作周波数を増加させる制御を行なう、
付記13に記載の情報処理プログラム。
(付記15)
前記監視は、前記アクセスにより前記ストレージに対して発行されるアクセス要求を格納するキューにおける前記アクセス要求の格納状態に基づき、前記ストレージの使用状態を監視する、
付記12~14のいずれか1項に記載の情報処理プログラム。
(付記16)
前記監視は、前記ストレージのビジー率に基づき、前記ストレージの使用状態を監視する、
付記12~14のいずれか1項に記載の情報処理プログラム。
(付記17)
前記監視は、前記ストレージから送信されるビジー応答の有無に基づき、前記ストレージの使用状態を監視する、
付記12~14のいずれか1項に記載の情報処理プログラム。
(付記18)
前記所定のタイミングは、前記制御の実行タイミングに所定時間を加算したタイミングを含み、
前記制御は、前記監視結果に応じて、前記所定時間を既定値から変化させる、
付記12~17のいずれか1項に記載の情報処理プログラム。
(付記19)
情報処理装置のプロセッサが、
ストレージに対するアクセスを行ない、
所定のタイミングで、前記ストレージの使用状態を監視し、
前記監視による監視結果に応じて、前記アクセスの処理を実行する前記プロセッサの動作周波数を変化させる制御を行なう、
情報処理方法。
(付記20)
前記ストレージの使用状態は、前記ストレージの使用率であり、
前記制御は、前記監視結果に基づき、前記ストレージの使用率が所定の閾値以上であると判定した場合に、前記プロセッサの動作周波数を低下させる制御を行なう、
付記19に記載の情報処理方法。