(57)【要約】      （修正有）【課題】情報処理装置におけるストレージへのアクセス性能の向上と、ストレージへのアクセスにおけるプロセッサの消費電力の削減と、を両立させる。【解決手段】ストレージ４に対するアクセスを行なうアクセス部２１、２２と、所定のタイミングで、ストレージの使用状態を監視する監視部としての算出部２３１と、監視部による監視結果に応じて、アクセス部２１、２２の処理を実行するプロセッサの動作周波数を変化させる制御を行なう周波数制御部２３２と、をそなえる。【選択図】図９
2019212274.tif 000002
【特許請求の範囲】
【請求項１】
ストレージに対するアクセスを行なうアクセス部と、
所定のタイミングで、前記ストレージの使用状態を監視する監視部と、
前記監視部による監視結果に応じて、前記アクセス部の処理を実行するプロセッサの動作周波数を変化させる制御を行なう制御部と、をそなえる
情報処理装置。
【請求項２】
前記ストレージの使用状態は、前記ストレージの使用率であり、
前記制御部は、前記監視結果に基づき、前記ストレージの使用率が所定の閾値以上であると判定した場合に、前記プロセッサの動作周波数を低下させる制御を行なう、
請求項１に記載の情報処理装置。
【請求項３】
前記制御部は、前記監視結果に基づき、前記ストレージの使用率が前記所定の閾値未満であると判定した場合に、前記プロセッサの動作周波数を増加させる制御を行なう、
請求項２に記載の情報処理装置。
【請求項４】
前記アクセス部が前記ストレージに対して発行するアクセス要求を格納するキューをそなえ、
前記監視部は、前記キューにおける前記アクセス要求の格納状態に基づき、前記ストレージの使用状態を監視する、
請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記監視部は、前記ストレージのビジー率に基づき、前記ストレージの使用状態を監視する、
請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項６】
前記監視部は、前記ストレージから送信されるビジー応答の有無に基づき、前記ストレージの使用状態を監視する、
請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項７】
前記所定のタイミングは、前記制御部による制御の実行タイミングに所定時間を加算したタイミングを含み、
前記制御部は、前記監視部による監視結果に応じて、前記所定時間を既定値から変化させる、
請求項１〜６のいずれか１項に記載の情報処理装置。
【請求項８】
前記ストレージによる前記アクセスの処理時間を予測する予測部をそなえ、
前記ストレージの使用状態は、前記ストレージの使用率であり、
前記制御部は、前記監視結果に基づき、前記ストレージの使用率が所定の閾値以上であると判定した場合に、前記所定時間に前記処理時間を設定する、
請求項７に記載の情報処理装置。
【請求項９】
前記制御部は、前記監視結果に基づき、前記ストレージの使用率が所定の閾値以上であると判定した場合であって、前記処理時間が前記既定値よりも大きいと判定した場合に、前記プロセッサの動作周波数を所定値にまで低下させる制御を行なう、
請求項８に記載の情報処理装置。
【請求項１０】
ストレージに対するアクセスを行ない、
所定のタイミングで、前記ストレージの使用状態を監視し、
前記監視による監視結果に応じて、前記アクセスの処理を実行するプロセッサの動作周波数を変化させる制御を行なう、
処理をコンピュータに実行させる、情報処理プログラム。
【請求項１１】
情報処理装置のプロセッサが、
ストレージに対するアクセスを行ない、
所定のタイミングで、前記ストレージの使用状態を監視し、
前記監視による監視結果に応じて、前記アクセスの処理を実行する前記プロセッサの動作周波数を変化させる制御を行なう、
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理プログラム、及び情報処理方法に関する。
【背景技術】
【０００２】
情報処理装置、例えばサーバ等のコンピュータシステムにおいては、ＣＰＵ（Central Processing Unit）等のプロセッサから、ストレージ、例えばＳＳＤ（Solid State Drive）等の記憶装置に対するＩ／Ｏ（Input / Output）アクセスが行なわれる。
【０００３】
ＳＳＤとしては、例えば、ＮＡＮＤ型フラッシュメモリを採用するＳＳＤ（以下、「ＮＡＮＤフラッシュＳＳＤ」と表記する）が挙げられる。ＮＡＮＤフラッシュＳＳＤとしては、例えば、ＮＶＭｅ  ＳＳＤ（以下、「ＮＶＭｅ  ＮＡＮＤ  ＳＳＤ」と表記する場合もある）や、ＳＡＴＡ  ＳＳＤ等が挙げられる。
【０００４】
ＮＶＭｅ  ＳＳＤは、ＰＣＩｅ（Peripheral Component Interconnect Express）  ＩＦ（Interface；インタフェース）を利用するＮＶＭｅ（Non-Volatile Memory Express）に対応（準拠）するＳＳＤである。ＳＡＴＡ  ＳＳＤは、ＳＡＴＡ（Serial Attached SCSI（Small Computer System Interface））等のＩＦに対応（準拠）するＳＳＤである。
【０００５】
プロセッサからストレージに対するアクセスにおいては、プロセッサがソフトウェアにより実行するソフトウェア処理と、ストレージ（デバイス）が実行するデバイス処理と、を含むアクセス処理が発生する。なお、ソフトウェア処理には、プロセッサがＯＳ（Operating System）により実行するＯＳ処理が含まれる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−４８７３１号公報
【特許文献２】特開平８−７７６９１号公報
【特許文献３】特開２００６−７２４５４号公報
【特許文献４】特開昭６３−２７８１６６号公報
【特許文献５】特開２０１２−１９４９１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述のように、ストレージへのアクセス処理には、ＣＰＵによるソフトウェア処理と、ストレージによるデバイス処理と、が含まれる。ストレージのアクセス性能の向上に伴い、デバイス処理が高速化される（処理時間が短縮される）と、アクセス性能に対してソフトウェア処理のオーバヘッドが顕著になり得る。
【０００８】
近年、次世代メモリ技術を採用した低レイテンシＳＳＤが登場している。このような低レイテンシＳＳＤとしては、例えば、3D XPoint（登録商標）技術を採用したIntel Optane SSD（登録商標）が知られている。
【０００９】
低レイテンシＳＳＤは、アクセスレイテンシ、換言すればデバイス処理の処理時間（遅延時間）或いは応答時間、が小さく、例えば１μｓ〜２０μｓ程度、一例として１０μｓ或いはそれ以下のレイテンシである。このように、低レイテンシＳＳＤは、ＮＡＮＤフラッシュＳＳＤに比べて１／１０程度のレイテンシを有する。
【００１０】
このため、デバイス性能が良くデバイス処理が高速な低レイテンシＳＳＤが搭載される情報処理装置においては、ソフトウェア処理によるアクセス性能のオーバヘッドがより顕著になる可能性がある。
【００１１】
一方で、ソフトウェア処理を高速化する（処理時間を短縮する）ために、例えば、ＣＰＵの動作周波数（クロック）を高めて、ＣＰＵの処理性能を向上させることも考えられる。しかし、ＣＰＵの動作周波数を高めると、ＣＰＵの消費電力が増加することになる。
【００１２】
１つの側面では、本発明は、情報処理装置におけるストレージへのアクセス性能の向上と、ストレージへのアクセスにおけるプロセッサの消費電力の削減と、を両立させることを目的の１つとする。
【課題を解決するための手段】
【００１３】
１つの側面では、情報処理装置は、アクセス部と、監視部と、制御部と、をそなえてよい。前記アクセス部は、ストレージに対するアクセスを行なってよい。前記監視部は、所定のタイミングで、前記ストレージの使用状態を監視してよい。前記制御部は、前記監視部による監視結果に応じて、前記アクセス部の処理を実行するプロセッサの動作周波数を変化させる制御を行なってよい。
【発明の効果】
【００１４】
１つの側面では、情報処理装置におけるストレージへのアクセス性能の向上と、ストレージへのアクセスにおけるプロセッサの消費電力の削減と、を両立させることができる。
【図面の簡単な説明】
【００１５】
【図１】ＳＳＤへのアクセス処理における処理時間内訳の一例を示す図である。
【図２】ＩＲＱ（Interrupt Request）及びポーリングによるＯＳの処理例を示す図である。
【図３】Ｉ／Ｏ集中アプリケーション実行時のＣＰＵコアの処理例を示す図である。
【図４】ＣＰＵの動作周波数の低下による低レイテンシＳＳＤへのアクセスレイテンシの変化の一例を示す図である。
【図５】ＳＳＤへのアクセス時の動作周波数の制御例を示す図である。
【図６】ＳＳＤアクセス時のＣＰＵ電力及びレイテンシの一例を示す図である。
【図７】理想的なＣＰＵ電力削減手法の一例を示す図である。
【図８】第１実施形態に係るコンピュータのハードウェア構成例を示すブロック図である。
【図９】第１実施形態に係るコンピュータの機能構成例を示すブロック図である。
【図１０】デバイスの使用状態と性能ボトルネックとの関係の一例を示す図である。
【図１１】リクエストサイズとデバイス使用率及びスループットとの関係の一例を示す図である。
【図１２】動作周波数とデバイス使用率との関係の一例を示す図である。
【図１３】平均リクエストサイズと書込スループットとの関係の一例を示す図である。
【図１４】第１実施形態に係るコンピュータの動作例を示すフローチャートである。
【図１５】第１実施形態に係るコンピュータの動作例を示すブロック図である。
【図１６】第２実施形態に係るコンピュータの機能構成例を示すブロック図である。
【図１７】デバイス稼働時間予測モデルの一例を示す図である。
【図１８】第２実施形態に係るコンピュータの動作例を示すフローチャートである。
【図１９】第２実施形態に係るコンピュータの動作例を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【００１７】
〔１〕第１実施形態
〔１−１〕低レイテンシＳＳＤについて
まず、低レイテンシＳＳＤについて説明する。図１は、ＳＳＤへのアクセス処理における処理時間内訳の一例を示す図である。図１において、横軸はアクセス処理のレイテンシ（μｓ）を示す。
【００１８】
図１に例示するように、ＳＡＴＡ  ＳＳＤ及びＮＶＭｅ  ＳＳＤのアクセス処理時間の内訳に着目する。ＳＡＴＡ  ＳＳＤでは、「System Software」と「Driver」とを加算して得られるＯＳ処理時間（ソフトウェア処理時間）は、「SSD Internal」と「Nonvolatile Memory」とを加算して得られるＳＳＤ側のデバイス処理時間の約１／７である。また、ＮＶＭｅ  ＳＳＤでは、ＯＳ処理時間は、デバイス処理時間の約１／１８である。
【００１９】
このように、ＮＡＮＤフラッシュＳＳＤでは、ＳＳＤへのアクセス時におけるＯＳ処理時間は、アクセス処理時間全体に占める割合が小さく、アクセスの高速化のために、ＯＳ処理及びＩ／Ｏ時間は重視されず、デバイス処理時間の短縮が検討されることが多い。
【００２０】
これに対し、低レイテンシＳＳＤは、ＮＡＮＤフラッシュＳＳＤよりも大幅にアクセス処理時間が短縮され、アクセス処理の処理時間全体でみた場合、レイテンシは、ＳＡＴＡ  ＳＳＤの約１／１５、ＮＶＭｅ  ＮＡＮＤ  ＳＳＤの約１／９、程度となる。特に、図１に例示するように、低レイテンシＳＳＤでは、デバイス処理における「Nonvolatile Memory」の処理時間が短縮される。このように、低レイテンシＳＳＤは、ＳＡＴＡ  ＳＳＤやＮＶＭｅ  ＮＡＮＤ  ＳＳＤよりもレイテンシの低いＳＳＤである。
【００２１】
これにより、低レイテンシＳＳＤでは、ＯＳ処理時間が、デバイス処理時間と同程度の処理時間（消費時間）となり、ＯＳ処理のオーバヘッドが顕著化することになる。すなわち、低レイテンシＳＳＤでは、ＮＡＮＤフラッシュＳＳＤでは重要視されることが少なかったＯＳ処理が、アクセス処理の処理時間に占める割合が大きくなり（１／１５〜１／７程度から半分程度）、ＳＳＤへのアクセス性能に与える影響が増大する。
【００２２】
ところで、ＯＳ処理のオーバヘッドを削減する手法として、Ｌｉｎｕｘ（登録商標）のＮＶＭｅドライバに実装されているポーリング（Polling）が知られている。図２は、ＩＲＱ（Interrupt Request；割り込み要求）及びポーリングによるＯＳ処理時間の内訳を示す図である。図２において、横軸は処理時間を示す。図２において、「syscall」（システムコール）は、ＯＳからのカーネルの呼び出し処理を示し、「BIO stack」は、Ｉ／Ｏコマンドをドライバに引き渡すためのソフトウェア処理を示す。なお、ＢＩＯはBlock IOの略称である。
【００２３】
ポーリングＩ／Ｏでは、デバイスに対するＩ／Ｏ要求を発行したＣＰＵコアが、Ｉ／Ｏアクセスの完了を監視する。図２の例では、ＣＰＵは、下段において、ポーリング処理である「Are you done ?」の期間に、デバイスに対するＩ／Ｏアクセスである「Command execution」の完了を監視する。
【００２４】
これにより、図２の上段に示す割り込みＩ／Ｏのように、Ｉ／Ｏ待ち中にＯＳが「Sleep」（スリープ）し、Ｉ／Ｏ完了後の割り込みによってスリープから復帰する割り込みＩ／Ｏと比べて、「CS」及び「ISR」の処理を排除できる。
【００２５】
なお、ＣＳ（Context Switch）は、プロセス間でＣＰＵを共用するための機能であり、ＣＰＵの状態を保存及び／又は復元の処理を含んでよい。ＩＳＲ（Interrupt Service Routine）は、ＩＲＱによって起動されるＯＳやデバイスドライバのコールバックルーチンである。ＩＳＲは、割り込みハンドラ（Interrupt Handler）と称されてもよい。
【００２６】
ポーリングＩ／Ｏによれば、図２の上段に示すようなＣＰＵ使用率の低い「Sleep」の期間が無いため、Ｉ／Ｏ待ち中でも監視によってＣＰＵ使用率が高くなるものの、ＣＳ及びＩＳＲ処理の排除により、下段に示す「Gain」期間のＯＳ処理時間短縮が見込める。
【００２７】
ここで、図３の上段に示すように、コンピュータシステムは、低レイテンシＳＳＤをストレージデバイスとして搭載し、ＣＰＵがＩ／Ｏ集中（I/O-intensive）アプリケーション（以下、「Ｉ／Ｏ集中アプリ」と表記する場合がある）を実行する場合を想定する。
【００２８】
Ｉ／Ｏ集中アプリは、ＳＳＤへの高頻度なＩ／Ｏ、例えば同期Ｉ／Ｏのアクセスを行なうアプリケーションであり、アプリケーション自体の処理時間は短いが、ＯＳ及びデバイスにおけるＩ／Ｏ処理に負荷のかかるアプリケーションである。Ｉ／Ｏ集中アプリの実行によるアクセス性能は、ＳＳＤのアクセスレイテンシ及びスループットに左右される。
【００２９】
Ｉ／Ｏ集中アプリが実行される場合のＣＰＵコアの処理には、図３の下段に例示するように、「App」、「OS」、及び「I/O wait」が含まれる。「App」は、Ｉ／Ｏ集中アプリの処理時間であり、「OS」は、ＯＳ処理の処理時間である。「I/O wait」は、Ｉ／Ｏアクセスの完了待ち時間であり、デバイス（低レイテンシＳＳＤ）におけるデバイス処理の処理時間に対応する。以下、「I/O wait」の期間を「デバイスレイテンシ」と表記し、「I/O wait」の期間及びその前後に実行される「OS」の期間を「アクセスレイテンシ」と表記する。
【００３０】
図３に例示するコンピュータシステムでは、ＣＰＵに対する供給電圧と動作周波数とをソフトウェアにより制御可能である。
【００３１】
ＣＰＵの動作周波数とＳＳＤへのアクセスレイテンシとの間には、以下のような相関がある。図４は、ＣＰＵの動作周波数の低下による低レイテンシＳＳＤへのアクセスレイテンシの変化の一例を示す図である。
【００３２】
図４の上段に例示するグラフは、ＣＰＵ周波数（ＭＨｚ）（横軸）と、平均のアクセスレイテンシ（μｓ）（縦軸）との関係を示す。なお、「w/o polling」のグラフは、ＯＳ処理において図２の上段に示すＩＲＱが実行される場合を示し、「w/ polling」のグラフは、ＯＳ処理において図２の下段に示すポーリングＩ／Ｏが実行される場合を示す。また、図４の下段に例示する図は、ＣＰＵの動作周波数が高い場合のアクセスレイテンシの内訳と、ＣＰＵの動作周波数が低い場合のアクセスレイテンシの内訳と、を示す。
【００３３】
上述のように、ＳＳＤへのアクセス処理のうちのＯＳ処理は、ＣＰＵにより実行される。また、ＣＰＵの処理速度は、動作周波数に依存する。このため、図４の上段及び下段に例示するように、ＣＰＵ動作周波数は、動作周波数が低いほどアクセス処理、例えばＯＳ処理の処理時間が長期化し、ＳＳＤアクセスレイテンシに影響を与える。従って、アクセスレイテンシを短縮するためには、動作周波数を高く設定することが効果的である。
【００３４】
例えば、Ｌｉｎｕｘ（登録商標）では、intel_pstateドライバにより、ＯＳがＣＰＵの動作周波数を制御することができる。intel_pstateドライバでは、以下の２種類のポリシが利用可能である。
【００３５】
・「performance」：ＣＰＵコアに負荷がかかると動作周波数を最大に設定する。
・「powersave」：ＣＰＵコアの使用率に応じて動作周波数を設定する。
【００３６】
図５は、ＳＳＤへのアクセス時の動作周波数の制御例を示す図である。図５に例示するように、ＮＶＭｅ  ＮＡＮＤ  ＳＳＤ、低レイテンシＳＳＤ（ポーリング無）、低レイテンシＳＳＤ（ポーリング有）の順に、コア使用率（％）（図５（ａ）参照）及びコア周波数（ＧＨｚ）（図５（ｂ）参照）がともに高くなる。
【００３７】
例えば、図５（ａ）に示すように、低レイテンシＳＳＤ（ポーリング有）の場合、ＣＰＵ使用率は１００％に近くなる。また、図５（ｂ）に示すように、低レイテンシＳＳＤでは、ポーリングの有無によらず、「performance」及び「powersave」の両ポリシが動作周波数を最大化しており、アクセスレイテンシが最小化される。
【００３８】
なお、図５（ａ）に示す「％busy」は、ＣＰＵコアがビジー状態であることを示す。また、「％c1」、「％c3」、「％c6」は、ＣＰＵコアがスリープ状態であることを示し、“%c”に続く数字が大きいほどより深い（より消費電力の低い）スリープであることを示す。
【００３９】
図６は、ＳＳＤアクセス時のＣＰＵ電力及びレイテンシの一例を示す図である。図６（ａ）に示すように、動作ポリシ別のＣＰＵ電力（消費電力）は、動作周波数を最低レベルにする「min_freq」、上述した「powersave」、「performance」の順に、高くなる。特に、「performance」は、ＣＰＵコアが最大周波数で稼働するため、消費電力は最大となる。また、Ｉ／Ｏ待ち中においてもＣＰＵ電力が消費されることになる。
【００４０】
図６（ｂ）に示すように、動作ポリシ別のレイテンシは、「performance」、「powersave」、「min_freq」の順に、大きくなる（処理時間が増大する）。このように、動作ポリシを切り替えることで、ＣＰＵコアの動作周波数が低下し、ＣＰＵ電力を削減することが可能となるが、これにより、ＯＳ処理時間が増大することになる。
【００４１】
なお、理想的なＣＰＵ電力の削減手法としては、図７に例示するように、低レイテンシＳＳＤへのアクセス処理のうちのＩ／Ｏ待ち中（換言すればデバイス処理中）の期間に限定して、ＣＰＵコアの動作周波数を低下させる手法が挙げられる。この手法によれば、ＯＳ処理を含むソフトウェア処理の実行時には、ＣＰＵコアの動作周波数を最大化することができるため、アクセスレイテンシを最小化することが可能となる。
【００４２】
しかしながら、現存のＣＰＵにおいて、動作周波数の変更にかかる時間は、数十μｓであり、低レイテンシＳＳＤのように、デバイス処理時間の短いストレージに対するＩ／Ｏ待ち中（例えば、１０μｓ未満）に限定して動作周波数を変更することは困難である。
【００４３】
そこで、第１実施形態においては、ＣＰＵにより実行されるアプリケーションの性能低下を抑制しつつ、低レイテンシＳＳＤへのアクセス時におけるＣＰＵの消費電力を削減する手法について説明する。
【００４４】
〔１−２〕第１実施形態の構成例
次に、第１実施形態に係るコンピュータ１の構成例について説明する。
【００４５】
〔１−２−１〕ハードウェア構成例
図８は、第１実施形態に係るコンピュータ１のハードウェア構成例を示すブロック図である。なお、後述する第２実施形態に係るコンピュータ１Ａ（図１６参照）についても、図８と同様のハードウェア構成をそなえてよい。コンピュータ１は、ハードウェア構成として、例示的に、プロセッサ１ａ、メモリ１ｂ、記憶部１ｃ、ＩＦ部１ｄ、Ｉ／Ｏ部１ｅ、及び、読取部１ｆをそなえてよい。
【００４６】
プロセッサ１ａは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ１ａは、コンピュータ１内の各ブロックとバス１ｉで相互に通信可能に接続されてよい。なお、プロセッサ１ａは、複数のプロセッサを含むマルチプロセッサであってもよいし、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
【００４７】
プロセッサ１ａとしては、例えば、ＣＰＵ、ＭＰＵ、ＧＰＵ、ＡＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡ等の集積回路（ＩＣ；Integrated Circuit）が挙げられる。ＭＰＵはMicro Processing Unitの略称である。ＧＰＵはGraphics Processing Unitの略称であり、ＡＰＵはAccelerated Processing Unitの略称である。ＤＳＰはDigital Signal Processorの略称であり、ＡＳＩＣはApplication Specific ICの略称であり、ＦＰＧＡはField-Programmable Gate Arrayの略称である。
【００４８】
メモリ１ｂは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。メモリ１ｂとしては、例えばＤＲＡＭ（Dynamic Random Access Memory）等の揮発性メモリが挙げられる。
【００４９】
記憶部１ｃは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。記憶部１ｃとしては、例えばＳＳＤ等の半導体ドライブ装置、ＨＤＤ（Hard Disk Drive）等の磁気ディスク装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、ＳＣＭ（Storage Class Memory）、ＲＯＭ（Read Only Memory）等が挙げられる。
【００５０】
なお、第１実施形態に係る記憶部１ｃには、少なくとも、低レイテンシＳＳＤが含まれてよい。また、記憶部１ｃには、低レイテンシＳＳＤに加えて、他のＳＳＤやＨＤＤ等の記憶装置が含まれてもよい。
【００５１】
また、記憶部１ｃは、コンピュータ１の各種機能の全部若しくは一部を実現するプログラム１ｇを格納してよい。例えば、コンピュータ１のプロセッサ１ａは、記憶部１ｃに格納されたプログラム１ｇ（情報処理プログラム）をメモリ１ｂに展開して実行することにより、図９に示す後述する処理部２としての機能を実現できる。処理部２の機能は、後述する、ＯＳ２１、Ｉ／Ｏ集中アプリ２２、及び、制御部２３の機能を含んでよい。
【００５２】
ＩＦ部１ｄは、図示しないネットワークとの間の接続及び通信の制御等を行なう通信ＩＦの一例である。例えば、ＩＦ部１ｄは、ＬＡＮ（Local Area Network）、或いは、光通信（例えばＦＣ（Fibre Channel；ファイバチャネル））等に準拠したアダプタを含んでよい。例えば、プログラム１ｇは、当該通信ＩＦを介して、ネットワークからコンピュータ１にダウンロードされ、記憶部１ｃに格納されてもよい。
【００５３】
Ｉ／Ｏ部１ｅは、マウス、キーボード、又は操作ボタン等の入力部、並びに、タッチパネルディスプレイ、ＬＣＤ（Liquid Crystal Display）等のモニタ、プロジェクタ、又はプリンタ等の出力部、の一方又は双方を含んでよい。
【００５４】
読取部１ｆは、記録媒体１ｈに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部１ｆは、記録媒体１ｈを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部１ｆとしては、例えば、ＵＳＢ（Universal Serial Bus）等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、ＳＤカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体１ｈにはプログラム１ｇが格納されてもよく、読取部１ｆが記録媒体１ｈからプログラム１ｇを読み出して記憶部１ｃに格納してもよい。
【００５５】
記録媒体１ｈとしては、例示的に、磁気／光ディスクやフラッシュメモリ等の非一時的な記録媒体が挙げられる。磁気／光ディスクとしては、例示的に、フレキシブルディスク、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）、ブルーレイディスク、ＨＶＤ（Holographic Versatile Disc）等が挙げられる。フラッシュメモリとしては、例示的に、ＵＳＢメモリやＳＤカード等が挙げられる。なお、ＣＤとしては、例示的に、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ等が挙げられる。また、ＤＶＤとしては、例示的に、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ等が挙げられる。
【００５６】
上述したコンピュータ１のハードウェア構成は例示である。従って、コンピュータ１内でのハードウェアの増減（例えば任意のブロックの追加や削除）、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。
【００５７】
〔１−２−２〕機能構成例
図９は、第１実施形態に係るコンピュータ１の機能構成例を示すブロック図である。コンピュータ１は、情報処理装置の一例である。コンピュータ１としては、例えば、ＰＣ（Personal Computer）、タブレット、スマートホン、サーバ、メインフレーム等の種々の処理装置が挙げられる。図９に示すように、コンピュータ１は、例示的に、処理部２、メモリ部３、及び、低レイテンシストレージ４をそなえてよい。
【００５８】
メモリ部３は、コンピュータ１の制御に用いられる種々の情報を記憶する保持部の一例である。メモリ部３は、例示的に、制御情報３１及びＩ／Ｏキュー３２を格納してよい。
【００５９】
制御情報３１は、後述する制御部２３の制御に用いられる情報である。なお、制御情報３１は、例えば、受信したパラメータや、ＯＳ２１の処理に用いられるパラメータを含んでよい。
【００６０】
Ｉ／Ｏキュー３２は、ＯＳ２１及びＩ／Ｏ集中アプリ２２が低レイテンシストレージ４に対して発行するアクセス要求を格納するキューの一例である。Ｉ／Ｏキュー３２は、例えば、低レイテンシストレージ４に対するＩ／Ｏアクセス用のコマンドやデータを一時的に格納するバッファとして、デバイスドライバ２１１により利用される記憶領域である。
【００６１】
メモリ部３は、１以上の記憶部によって実現されてよく、複数の記憶部によってＲＡＩＤ（Redundant Arrays of Inexpensive Disks）等のディスクアレイが構成されてもよい。メモリ部３は、図８に示すメモリ１ｂ及び記憶部１ｃの少なくとも一方の記憶領域により実現されてよい。第１実施形態においては、メモリ部３は、ＤＲＡＭ等のメモリ１ｂの記憶領域により実現されるものとする。
【００６２】
低レイテンシストレージ４は、ストレージ又はデバイス（記憶デバイス）の一例である。低レイテンシストレージ４には、種々のデータが記憶されてよく、一例として、後述するＯＳ２１やＩ／Ｏ集中アプリ２２等のシステムデータや、ドキュメントやマルチメディア等のユーザデータ等が記憶されてよい。
【００６３】
低レイテンシストレージ４としては、例えば、3D XPoint（登録商標）技術を採用したIntel Optane SSD（登録商標）等の低レイテンシＳＳＤが挙げられる。低レイテンシストレージ４は、アクセスレイテンシ、換言すればデバイス処理の処理時間（遅延時間）或いは応答時間、が小さく、例えば数μｓ〜２０μｓ程度、一例として１０μｓ或いはそれ以下のレイテンシである。低レイテンシストレージ４は、図８に示す記憶部１ｃの一例である。なお、コンピュータ１には、低レイテンシストレージ４の他に、記憶部１ｃの一例としての記憶装置が搭載又は接続されてもよい。
【００６４】
処理部２は、図８に例示するコンピュータ１のプロセッサ１ａが、メモリ１ｂに展開したプログラム１ｇを実行することによりに実現される機能である。処理部２は、例示的に、ＯＳ（オペレーティングシステム）２１、Ｉ／Ｏ集中アプリケーション２２、及び、制御部２３をそなえてよい。
【００６５】
ＯＳ２１は、コンピュータ１の管理及び制御を行なう基本ソフトウェアの一例であり、種々のアプリケーションに対して、コンピュータ１のハードウェア資源及び／又はソフトウェア資源を利用可能とするソフトウェアである。
【００６６】
ＯＳ２１は、例示的に、デバイスドライバ２１１をそなえてよい。デバイスドライバ２１１は、コンピュータ１のハードウェア資源をＯＳ２１により制御可能とするためのソフトウェアである。デバイスドライバ２１１には、低レイテンシストレージ４をＯＳ２１によって制御可能とするための低レイテンシストレージ４用のデバイスドライバが含まれてよい。
【００６７】
Ｉ／Ｏ集中アプリ２２は、ＯＳ２１の制御の下で動作するアプリケーションソフトウェアの一例であり、低レイテンシストレージ４への高頻度なＩ／Ｏ、例えば同期Ｉ／Ｏのアクセスを行なってよい。同期Ｉ／Ｏ等の高頻度なＩ／Ｏは、Ｉ／Ｏ集中アプリ２２自体の処理時間は短いが、ＯＳ２１及び低レイテンシストレージ４におけるＩ／Ｏ処理に負荷がかかるアクセスである。
【００６８】
以上のように、ＯＳ２１及びＩ／Ｏ集中アプリ２２は、低レイテンシストレージ４に対するアクセスを行なうアクセス部の一例である。
【００６９】
制御部２３は、プロセッサ１ａの制御を通じて、アクセス処理性能やプロセッサ１ａの消費電力等を制御してよい。制御部２３は、例示的に、算出部２３１及び周波数制御部２３２をそなえてよい。算出部２３１及び周波数制御部２３２の詳細は後述する。
【００７０】
〔１−３〕制御部の説明
次に、第１実施形態に係る制御部２３について説明する。
【００７１】
上述のように、現存のＣＰＵにおいては、動作周波数の変更に数十μｓ等の時間がかかる。そこで、制御部２３は、プロセッサ１ａの動作周波数を変更可能な一定時間ごとに、周波数制御を行なう。一定時間とは、動作周波数の変更にかかる時間である数十μｓ以上の時間であり、例示的に、数百μｓ〜数百ｍｓ程度の範囲の時間であってよい。
【００７２】
なお、周波数制御は、プロセッサ１ａのコア単位で行なわれてよい。以下、プロセッサ１ａの動作周波数の制御とは、プロセッサ１ａのコア単位でコアの動作周波数を制御することを意味するものとする。
【００７３】
制御部２３は、周波数制御において、アプリケーション、例えばＩ／Ｏ集中アプリ２２の性能に影響が出ない場合に制限して、プロセッサ１ａの動作周波数を低下させてよい。すなわち、プロセッサ１ａの動作周波数が低下すると、ＯＳ２１の処理時間が増大するが、制御部２３は、プロセッサ１ａの動作周波数の低下が性能に影響しない以下の（ａ）及び（ｂ）の一方又は双方の場合に制限して、動作周波数の低下制御を行なってよい。
【００７４】
（ａ）低レイテンシストレージ４自体が性能のボトルネックとなっている場合。
【００７５】
（ｂ）プロセッサ１ａで実行されるＯＳ処理の時間が性能に影響しない場合。
【００７６】
制御部２３は、低レイテンシストレージ４の使用状態に応じて、動作周波数を動的に制御してよい。
【００７７】
図１０は、デバイスの使用状態と性能ボトルネックとの関係の一例を示す図である。
【００７８】
例えば、処理部２から送信されたアクセス要求、例えばＩ／Ｏリクエストに応じて、低レイテンシストレージ４がデバイス処理を実行している場合、低レイテンシストレージ４は稼働状態であるといえる。また、図１０に示すように、低レイテンシストレージ４によるデバイス処理の実行待ちのＩ／ＯリクエストがＩ／Ｏキュー３２に溜まっている場合、低レイテンシストレージ４がアクセス性能のボトルネックとなり、上記（ａ）の条件を満たすことになる。
【００７９】
また、この場合、ＯＳ処理は、Ｉ／Ｏキュー３２に蓄積されたＩ／Ｏリクエストの完了待ちを、図２に例示するＩＲＱ又はポーリングにより行なう。従って、Ｉ／Ｏリクエストに対するデバイス処理が完了するまでは、処理部２で実行されるＯＳ処理の時間が性能に影響せず、上記（ｂ）の条件を満たすことになる。
【００８０】
例えば、制御部２３は、低レイテンシストレージ４自体が性能のボトルネックになっていることを検出した場合、プロセッサ１ａの動作周波数を低下制御することで、プロセッサ１ａの消費電力を削減してよい。
【００８１】
一方、低レイテンシストレージ４がデバイス処理を実行していない場合、低レイテンシストレージ４はＩ／Ｏリクエストに対する処理について非稼働状態であるといえる。図１０に示すように、Ｉ／Ｏキュー３２が空の場合、低レイテンシストレージ４では処理待ちが発生しているため、処理部２（例えばプロセッサ１ａ）がアクセス性能のボトルネックとなる。
【００８２】
例えば、制御部２３は、プロセッサ１ａが性能のボトルネックとなっている場合、動作周波数を増加制御し、アプリケーション（例えばＩ／Ｏ集中アプリ２２）の性能を増加させてよい。一例として、制御部２３は、プロセッサ１ａが性能のボトルネックとなっている場合、動作周波数を最大に設定し、アプリケーションの性能を最大化させてよい。
【００８３】
ここで、低レイテンシストレージ４の使用状態の非限定的な一例としては、低レイテンシストレージ４のデバイス使用率が挙げられる。デバイス使用率は、例示的に、単位時間当たりのデバイス稼働時間の割合（％）の算出結果に相当する。
【００８４】
例えば、制御部２３の算出部２３１は、単位時間に対するＩ／Ｏリクエストの滞留時間の割合を、デバイス使用率として算出してよい。
【００８５】
滞留時間は、制御情報３１の一例であり、デバイスドライバ２１１のＩ／Ｏキュー３２に少なくとも１つのＩ／Ｏリクエストが滞留している時間を示す情報である。滞留時間は、例えば、ＯＳ２１がＬｉｎｕｘ（登録商標）である場合、“/sys/block/<dev>/stat”のファイルにＯＳ２１によって記録された「io_ticks」のパラメータにより表される。
【００８６】
算出部２３１は、例えば、所定のタイミングで、上記ファイルから「io_ticks」を読み出し、「io_ticks」の計測開始時刻から現在時刻までの差分を算出し、算出した差分に対する「io_ticks」の割合をデバイス使用率として算出してよい。
【００８７】
このように、算出部２３１は、所定のタイミングで、低レイテンシストレージ４の使用状態を監視する監視部の一例である。
【００８８】
周波数制御部２３２は、算出部２３１が算出したデバイス使用率が、所定の閾値（例えば１００％等）を下回るか否かを判定することで、性能ボトルネックの要因となるコンポーネントを検出してよい。そして、周波数制御部２３２は、検出したコンポーネントに応じて、上述のように、プロセッサ１ａの動作周波数を低下制御又は増加制御してよい。
【００８９】
図１１は、リクエストサイズとデバイス使用率及びスループットとの関係の一例を示す図である。なお、図１１に示す動作ポリシの「min_freq」は、周波数制御部２３２による制御によって、動作周波数を低下制御した場合に相当する。
【００９０】
図１１に示すように、動作周波数を「min_freq」に低下させる制御によってデバイス使用率が所定の閾値を下回った場合（図１１（ａ）の「８ＫＢ」参照）、スループットの低下が発生する（図１１（ｂ）の「８ＫＢ」参照）。なお、以下の説明では、便宜上、所定の閾値が１００％であるものとする。
【００９１】
一方、動作周波数を「min_freq」に低下させる制御によってデバイス使用率が低下しない場合（図１１（ａ）の「６４ＫＢ」参照）、スループットは低下しない（図１１（ｂ）の「６４ＫＢ」参照）。
【００９２】
このように、リクエストサイズが大きいほど、低レイテンシストレージ４によるデバイス処理の処理時間が長くなるため、Ｉ／Ｏキュー３２におけるＩ／Ｏリクエストの滞留時間も長くなる。従って、動作周波数の低下制御によりＯＳ処理の処理時間が増大する場合であっても、リクエストサイズが大きいほど、デバイス処理の実行待ちによりデバイス使用率が低下する可能性が低減する。
【００９３】
図１２は、動作周波数とデバイス使用率との関係の一例を示す図である。なお、図１２では、プロセッサ１ａが「コア０」及び「コア１」をそなえる場合を想定する。図１２の上段に、リクエストサイズが８ＫＢの場合（図１１参照）のように、動作周波数低下によりデバイス使用率が１００％を下回る場合における、コア０及びコア１の処理例を示す。また、図１２の下段に、リクエストサイズが６４ＫＢの場合（図１１参照）のように、動作周波数低下によりデバイス使用率が低下しない場合における、コア０及びコア１の処理例を示す。
【００９４】
図１２の上段に示すように、コア０及びコア１の双方の動作周波数の低下によりデバイス使用率が１００％を下回る場合、動作周波数の低下によるＯＳ処理時間の増加によって、コア０及びコア１の双方のアクセス時間が増加する。なお、このような状況は、上述した（ｂ）、又は、（ａ）及び（ｂ）、の条件を満たさない場合に相当する。
【００９５】
一方、図１２の下段に示すように、コア０及びコア１の双方の動作周波数の低下によりデバイス使用率が低下しない場合、動作周波数の低下によりＯＳ処理時間が増加しても、コア０及びコア１の双方のアクセス時間は増加しない。なお、このような状況は、上述した（ａ）及び（ｂ）の条件を満たす場合に相当する。
【００９６】
図１２の下段の例では、コア０及びコア１の双方において、動作周波数の低下前に、デバイス処理の完了待ちの時間である「In queue」がＯＳ処理に含まれている。一方、動作周波数の低下後は、ＯＳ処理時間において、「OS」及び「App」の処理時間が増大して「In queue」の時間・リソースを消費することにより、ＯＳ処理時間の増加を抑制した状態で、コア０及びコア１における消費電力の削減を実現している。
【００９７】
例えば、図１２の下段の「Low freq.」（動作周波数低下後）において、コア０若しくはコア１の「I/O wait」が時間的に連続しており、コア０及びコア１間で「I/O wait」が途切れずに実行されている。これにより、図１２に示す時間帯においては、動作周波数の低下後でも、低レイテンシストレージ４が動作し続けるため、デバイス使用率＝１００％が実現される。
【００９８】
以上のように、周波数制御部２３２は、算出部２３１による監視結果に応じて、ＯＳ２１及びＩ／Ｏキュー３２の処理を実行するプロセッサ１ａの動作周波数を変化させる制御を行なう制御部の一例である。
【００９９】
上述のように、ＣＰＵ等のプロセッサの動作ポリシ（「performance」、「powersave」、「min_freq」等）は、図５及び図６等に示すように、プロセッサの負荷等の使用状態に応じて、プロセッサの動作周波数を制御する。すなわち、プロセッサの動作周波数は、制御対象であるプロセッサの使用状態に応じて制御されることが一般的である。
【０１００】
これに対し、第１実施形態では、制御対象であるプロセッサ１ａの使用状態ではなく、低レイテンシストレージ４の使用状態に着目することで、例えば、動作周波数の低下制御により増加するＯＳ処理時間が性能に影響するか否かを予測することができる。換言すれば、動作周波数を低下制御した場合に、プロセッサ１ａが性能ボトルネックとなるか否か（低レイテンシストレージ４が性能ボトルネックとなり続けるか否か）を予測することができる。なお、このような「予測」をプロセッサ１ａの使用状態に基づき実現することは困難である。
【０１０１】
このように、第１実施形態に係る制御部２３は、低レイテンシストレージ４の使用状態を監視し、使用状態に応じて（一例として、上記（ａ）及び（ｂ）の一方又は双方の条件を満たす場合に）、プロセッサ１ａの動作周波数を低下制御する。これにより、図１１及び図１２等を参照して説明したように、コンピュータ１における低レイテンシストレージ４へのアクセス性能の向上と、低レイテンシストレージ４へのアクセスにおけるプロセッサ１ａの消費電力の削減と、を両立させることができる。
【０１０２】
また、第１実施形態に係る制御部２３は、低レイテンシストレージ４の使用状態に応じて（一例として、上記（ａ）及び（ｂ）の一方又は双方の条件を満たさない場合）、プロセッサ１ａの動作周波数を増加制御する。これにより、ＯＳ処理時間を短縮させることができ、低レイテンシストレージ４へのアクセス性能を向上できる。
【０１０３】
なお、デバイスの使用状態、例えばデバイス使用率は、Ｉ／Ｏキュー３２におけるＩ／Ｏリクエストの格納時間に代えて、他の情報に基づき取得されてもよい。例えば、デバイス使用率は、Ｉ／Ｏキュー３２におけるキューの待機数、一定時間における低レイテンシストレージ４のビジー率、低レイテンシストレージ４からのビジー応答の有無、等の情報に基づいて算出又は導出されてもよい。
【０１０４】
例えば、周波数制御部２３２は、Ｉ／Ｏキュー３２におけるキューの待機数が所定の閾値を超えるか否か、ビジー率が所定の閾値以上か否か、或いは所定期間内にビジー応答が有ったか否か、等を判定してよい。なお、周波数制御部２３２は、キューの待機数が所定の閾値を超える場合、ビジー率が所定の閾値以上である場合、或いは所定期間内にビジー応答が有った場合に、低レイテンシストレージ４の使用率が閾値を超えた（性能ボトルネックである）と判定してよい。
【０１０５】
なお、デバイス使用率がキューの待機数に基づいて算出又は導出される場合について、以下の処理が実施されてもよい。
【０１０６】
図１２の上段の説明において、動作周波数低下によりデバイス使用率が１００％を下回る場合の例として、リクエストサイズが８ＫＢの場合（図１１参照）を例に挙げたが、これに限定されるものではない。例えば、リクエストサイズが８ＫＢのように小さい場合であっても、Ｉ／Ｏキュー３２におけるキューの待機数が多く、「In queue」がＯＳ処理に含まれる場合には、図１２の下段に示すように、動作周波数低下によりデバイス使用率が低下しない場合がある。
【０１０７】
このため、周波数制御部２３２は、キューの待機数の所定の閾値を、リクエストサイズに応じて（例えば、リクエストサイズと所定の閾値とを乗じた値が一定のサイズとなるように）、設定してもよい。一定のサイズとは、例えば、動作周波数が低下してもデバイス使用率が低下しないサイズである。
【０１０８】
また、デバイス使用率が低レイテンシストレージ４のビジー率に基づいて算出又は導出される場合について、以下の処理が実施されてもよい。
【０１０９】
例えば、低レイテンシストレージ４のビジー率は、低レイテンシストレージ４のバンド幅に基づき算出されてもよい。バンド幅は、低レイテンシストレージ４におけるデータの転送速度（例えば書込スループット）を示す情報である。上述した図１１の説明と同様に、低レイテンシストレージ４のバンド幅は、リクエストサイズが大きいほど、低レイテンシストレージ４によるデバイス処理の処理時間が長くなるため、増加する（一定値を超えたときに飽和する）。従って、動作周波数の低下制御によりＯＳ処理の処理時間が増大する場合であっても、リクエストサイズが大きいほど、デバイス処理の実行待ちによりデバイス使用率が低下する可能性が低減する。
【０１１０】
図１３は、平均リクエストサイズと書込スループットとの関係の一例を示す図である。図１３では、プロセッサ１ａの動作周波数が「1.2GHz」である場合のグラフと、「3.6GHz」（一例として最大値）である場合のグラフとを示している。図１３（ａ）に示すように、「リクエストサイズが小さい」と表記した時間区間においては、図１３（ｂ）の対応する時間区間においてバンド幅が飽和しない。
【０１１１】
一方、図１３（ａ）に示すように、「リクエストサイズが大きい」と表記した時間区間においては、図１３（ｂ）の対応する時間区間においてバンド幅が飽和している。なお、図１３の例では、書込スループットとして示すバンド幅は、１８００（ＭＢ／ｓ）程度で飽和するものとする。
【０１１２】
図１３（ｂ）に示すように、低レイテンシストレージ４のバンド幅が飽和する程度にリクエストサイズが大きい場合、プロセッサ１ａの動作周波数が「3.6GHz」から「1.2GHz」に低下しても、バンド幅が飽和し続ける。この場合、動作周波数の低下制御によりＯＳ処理の処理時間が増大する場合であっても、デバイス処理の実行待ちによりデバイス使用率が低下する可能性が低減する。すなわち、上記（ａ）及び（ｂ）の一方又は双方の条件を満たす場合に相当する。
【０１１３】
以上のことから、周波数制御部２３２は、例えば、ビジー率として、最大値（飽和値）に対するバンド幅の割合を算出し、割合が所定の閾値（非限定的な一例として、１００％）以上の場合、動作周波数の低下制御を行なってよい。一方、割合が所定の閾値未満の場合は、動作周波数の増加制御を行なってよい。なお、周波数制御部２３２は、ビジー率と所定の閾値との比較に代えて、例えば、バンド幅と転送速度の閾値と、の比較を行なってもよい。
【０１１４】
〔１−４〕第１実施形態に係るコンピュータの動作例
次に、図１４及び図１５を参照して、上述の如く構成された第１実施形態に係るコンピュータ１の動作例を説明する。
【０１１５】
なお、第１実施形態において、コンピュータ１の処理部２には、入力パラメータとして、「interval」及び「dec_thr」が入力されてよい。「interval」は、動作周波数制御を行なう時間間隔である一定時間を定義するパラメータである。「dec_thr」は、動作周波数の低下を許容するデバイス使用率の所定の閾値を定義するパラメータである。
【０１１６】
「interval」及び「dec_thr」は、例えば、図示しない管理端末等のコンピュータから、ネットワークを介して送信されてよく、処理部２は、受信したパラメータを制御情報３１としてメモリ部３に格納してよい。
【０１１７】
以下、前提として、ＯＳ２１及び低レイテンシストレージ４が、Ｉ／Ｏ集中アプリ２２からの要求に従いアクセス処理を行なうものとする（図１５の（i-1）及び（i-2）参照）。
【０１１８】
図１４に例示するように、コンピュータ１の処理部２における制御部２３は、メモリ部３の制御情報３１から待機時間を定義するパラメータである「interval」を抽出し、抽出した「interval」に従い、一定時間待機する（ステップＳ１）。
【０１１９】
一定時間の経過後、制御部２３の算出部２３１は、デバイス使用率を計測する（ステップＳ２；図１５の（ii）参照）。例えば、算出部２３１は、Ｉ／Ｏキュー３２に関するパラメータである「io_ticks」を制御情報３１から抽出し、抽出した「io_ticks」に基づき、デバイスドライバ２１１によるデバイス使用率を算出してよい。なお、「io_ticks」は、ＯＳ２１のシステムデータとして、ストレージの一例としての低レイテンシストレージ４に格納されてもよく、この場合、算出部２３１は、デバイスドライバ２１１を介して低レイテンシストレージ４から「io_ticks」を抽出してもよい。
【０１２０】
次いで、周波数制御部２３２は、メモリ部３の制御情報３１から所定の閾値を定義するパラメータである「dec_thr」を抽出し、デバイス使用率が、抽出した「dec_thr」未満か否かを判定する（ステップＳ３）。
【０１２１】
デバイス使用率が「dec_thr」未満ではない（「dec_thr」以上である）と判定した場合（ステップＳ３でＮｏ）、周波数制御部２３２は、プロセッサ１ａの動作周波数を１段階低下するように制御し（ステップＳ４）、動作周波数制御の１サイクルが終了する。
【０１２２】
一方、デバイス使用率が「dec_thr」未満であると判定した場合（ステップＳ３でＹｅｓ）、周波数制御部２３２は、プロセッサ１ａの動作周波数を増加、例えば最大値に設定し（ステップＳ５）、動作周波数制御の１サイクルが終了する。
【０１２３】
このように、周波数制御部２３２は、ステップＳ３の判定結果に応じて、ステップＳ４及びＳ５においてプロセッサ１ａの動作周波数制御を行なう（図１５の（iii）参照）。
【０１２４】
なお、ステップＳ４又はＳ５の終了後、処理がステップＳ１に移行してもよい。また、プロセッサ１ａがマルチコアプロセッサである場合は、図１４に示す処理がコアごとに実行されてよい。
【０１２５】
〔２〕第２実施形態
次に、第２実施形態について説明する。
【０１２６】
第１実施形態においては、制御部２３は、所定の（例えば指定された）インターバルごとに、プロセッサ１ａの動作周波数を制御するものとして説明した。しかし、低レイテンシストレージ４が稼働し続ける間は、動作周波数の制御を実施しなくてよい場合がある。
【０１２７】
そこで、第２実施形態では、低レイテンシストレージ４の稼働状態の予測結果に応じて、インターバルの期間（時間）を所定のインターバルよりも長くなるように設定する手法について説明する。
【０１２８】
また、第１実施形態においては、制御部２３は、各時点の低レイテンシストレージ４のデバイス使用率に基づき、動作周波数を段階的に低下させる制御を行なうものとして説明した。このような動作周波数の段階的な制御により、デバイス使用率が低下した際の性能低下を抑制することができる。
【０１２９】
第２実施形態では、低レイテンシストレージ４の稼働状態の予測結果（例えば稼動し続ける時間）に応じて、動作周波数を段階的ではなく即座に最小化する手法について説明する。
【０１３０】
〔２−１〕第２実施形態の構成例
図１６は、第２実施形態に係るコンピュータ１Ａの機能構成例を示すブロック図である。なお、以下で言及しない限り、コンピュータ１Ａの機能構成及びハードウェア構成は、第１実施形態に係るコンピュータ１の機能構成及びハードウェア構成と同様であってよい。
【０１３１】
第２実施形態に係るコンピュータ１Ａは、図１６に例示するように、処理部２Ａ、メモリ部３、及び、低レイテンシストレージ４をそなえてよい。
【０１３２】
処理部２Ａは、コンピュータ１Ａのプロセッサ（プロセッサ１ａ；図８参照）が、メモリ１ｂに展開したプログラム１ｇを実行することによりに実現される機能である。処理部２Ａは、第１実施形態に係る処理部２に対して、制御部２３を制御部２３Ａに置き換えた構成と捉えることができる。
【０１３３】
第２実施形態に係る処理部２Ａは、図１６に例示するように、ＯＳ２１、Ｉ／Ｏ集中アプリ２２、及び、制御部２３Ａをそなえてよい。
【０１３４】
制御部２３Ａは、プロセッサ１ａの制御を通じて、アクセス処理性能やプロセッサ１ａの消費電力等を制御してよい。制御部２３Ａは、例示的に、算出部２３１、周波数制御部２３２Ａ、及び、稼働時間予測部２３３をそなえてよい。
【０１３５】
算出部２３１は、第１実施形態と同様に、所定のタイミングで、低レイテンシストレージ４の使用状態を監視する監視部の一例である。
【０１３６】
稼働時間予測部２３３は、低レイテンシストレージ４の各時点からの稼働時間（デバイス稼働時間）を予測し、予測した稼働時間を動作周波数の制御機構である周波数制御部２３２Ａに出力する。これにより、適切なインターバルの設定と、即座の動作周波数の最小化と、を実現できる。稼働時間（デバイス稼働時間）は、低レイテンシストレージ４によるアクセスの処理時間の一例である。
【０１３７】
なお、各時点とは、制御部２３Ａによる制御を行なうタイミングであり、第１実施形態では、一定時間（待機時間、インターバル）ごとに到来する、所定のタイミングに相当する。第２実施形態においては、所定のタイミングは、周波数制御部２３２Ａにより、算出部２３１による監視結果、及び、稼働時間予測部２３３が予測した稼働時間に基づき、可変に制御されてよい。例えば、所定のタイミングは、周波数制御部２３２Ａによる制御の実行タイミングに所定時間を加算したタイミングを含んでよく、所定時間が周波数制御部２３２Ａによって変更されてよい。
【０１３８】
稼働時間予測部２３３は、予測モデルに基づき、デバイス稼働時間を予測してよい。図１７は、デバイス稼働時間の予測モデルの一例を示す図である。
【０１３９】
ここで、低レイテンシストレージ４がＩ／Ｏリクエストを処理する時間は、Ｉ／Ｏリクエストの要求データサイズに比例する。また、現時点からのデバイス稼働時間は、Ｉ／Ｏキュー３２に格納された全リクエストの処理時間の総和となる。
【０１４０】
従って、デバイス稼働時間Ｔは、Ｉ／Ｏキュー３２におけるアクセス要求の格納状態に基づき、図１７及び下記（１）式に示す予測モデルにより表すことができる。
【０１４１】
【数１】
2019212274.tif 000003
【０１４２】
上記（１）式において、「Ｎ」は、Ｉ／Ｏキュー３２に格納されたＩ／Ｏリクエストの総数を示し、「request_size_i」は、各Ｉ／Ｏリクエストの要求データサイズを示す。稼働時間予測部２３３は、Ｎ及びrequest_size_iを、それぞれ、ＯＳ２１等により記録されたパラメータ等に基づき取得してよい。
【０１４３】
また、上記（１）式において、「α」は、低レイテンシストレージ４によるアクセスに対するＩ／Ｏ性能等の処理性能に応じた係数を示す。当該係数は、例えば、要求データサイズ（４ＫＢ、８ＫＢ、・・・等）ごとに決定されてよい。なお、係数は、予め計測等により算出されてよい。
【０１４４】
図１７では、Ｉ／Ｏキュー３２に「request_size_1」、「request_size_2」、「request_size_3」の３つのＩ／Ｏリクエストが格納されている（Ｎ＝３）。この場合、デバイス稼働時間Ｔは、「request_size_1」、「request_size_2」、「request_size_3」の各々に、要求データサイズに応じた係数αを乗じた値の総和となる。
【０１４５】
このように、稼働時間予測部２３３は、低レイテンシストレージ４によるアクセスの処理時間を予測する予測部の一例である。予測部の一例としての稼働時間予測部２３３は、Ｉ／Ｏキュー３２におけるアクセス要求の格納状態に基づき、処理時間を予測する。
【０１４６】
なお、稼働時間予測部２３３は、後述する周波数制御部２３２Ａにより、算出部２３１による監視結果に基づき、低レイテンシストレージ４の使用率が所定の閾値以上であると判定された場合に、起動、すなわち、デバイス稼働時間の予測処理を行なってよい。
【０１４７】
周波数制御部２３２Ａは、第１実施形態の周波数制御部２３２と同様に、算出部２３１による監視結果に応じて、ＯＳ２１及びＩ／Ｏキュー３２の処理を実行するプロセッサ１ａの動作周波数を変化させる制御を行なう制御部の一例である。また、第２実施形態に係る周波数制御部２３２Ａは、算出部２３１による監視結果に応じて、制御部２３Ａによる制御を行なうタイミングを定義する待機時間（所定時間）を既定値から変化させる。
【０１４８】
例えば、周波数制御部２３２Ａは、算出部２３１による監視結果に基づき、低レイテンシストレージ４の使用率が所定の閾値以上であると判定した場合に、待機時間に、稼働時間予測部２３３が予測したデバイス稼働時間を設定してよい。
【０１４９】
一例として、デバイス稼働時間が待機時間の既定値よりも大きい場合、待機時間には、既定値よりも大きいデバイス稼働時間が設定される。すなわち、インターバルが長く設定される。なお、既定値とは、第１実施形態におけるパラメータである「interval」に相当する。
【０１５０】
これにより、低レイテンシストレージ４が稼働し続けると推定される期間に、動作周波数の制御が行なわれることを抑制でき、第１実施形態と比較して、当該制御によるオーバヘッドを削減することができる。また、第１実施形態と比較して、プロセッサ１ａの消費電力の削減を図ることができる。
【０１５１】
一方、デバイス稼働時間が待機時間の既定値以下の場合、待機時間には、既定値以下であるデバイス稼働時間が設定される。すなわち、インターバルが短く設定される。
【０１５２】
これにより、低レイテンシストレージ４の稼動が停滞する（Ｉ／Ｏキュー３２が空になる）と推定される場合、既定値の経過を待たずに速やかに、プロセッサ１ａの動作周波数の制御（例えば最大値に引き上げる制御）を行なうことができる。従って、第１実施形態と比較して、コンピュータ１Ａにおける低レイテンシストレージ４へのアクセス性能を向上させることができる。
【０１５３】
また、周波数制御部２３２Ａは、監視結果に基づき、低レイテンシストレージ４の使用率が所定の閾値以上であると判定した場合であって、稼働時間が既定値よりも大きいと判定した場合に、動作周波数を所定値にまで低下させる制御を行なってよい。例えば、周波数制御部２３２Ａは、この場合、プロセッサ１ａの動作周波数を最小化（最低値に設定）してよい。
【０１５４】
これにより、周波数制御部２３２Ａは、低レイテンシストレージ４が既定値よりも長い時間に亘って稼動し続けると判定したタイミングで、プロセッサ１ａの動作周波数を段階的ではなく即座に最小化することができる。すなわち、数サイクルに亘る１段階ごとの低下制御によって動作周波数を最小値に設定するのではなく、１サイクルでの低下制御によって動作周波数を最小値に設定することができる。従って、第１実施形態と比較して、プロセッサ１ａの消費電力の削減を図ることができる。
【０１５５】
さらに、周波数制御部２３２Ａは、監視結果に基づき、低レイテンシストレージ４の使用率が所定の閾値未満であると判定した場合に、プロセッサ１ａの動作周波数を増加させる制御を行なうとともに、待機時間に既定値を設定（待機時間をリセット）してよい。
【０１５６】
これにより、制御部２３Ａは、デバイス使用率の低下後、再びデバイス使用率が所定の閾値以上になるまでは、第１実施形態と同様の制御を行なうことができる。
【０１５７】
〔２−２〕第２実施形態に係るコンピュータの動作例
次に、図１８及び図１９を参照して、上述の如く構成された第２実施形態に係るコンピュータ１Ａの動作例を説明する。
【０１５８】
なお、第２実施形態において、コンピュータ１Ａの処理部２Ａには、入力パラメータとして、第１実施形態と同様に「interval」及び「dec_thr」が入力されてよい。
【０１５９】
以下、前提として、ＯＳ２１及び低レイテンシストレージ４が、Ｉ／Ｏ集中アプリ２２からの要求に従いアクセス処理を行なうものとする（図１９の（i-1）及び（i-2）参照）。
【０１６０】
図１８に例示するように、コンピュータ１Ａの処理部２Ａにおける制御部２３Ａは、メモリ部３の制御情報３１から待機時間の既定値を定義するパラメータである「interval」を抽出する。そして、制御部２３Ａは、抽出した「interval」に従い、待機時間「wait_time」の間待機する（ステップＳ１１）。
【０１６１】
「wait_time」の経過後、制御部２３Ａの算出部２３１は、第１実施形態と同様に、デバイス使用率を計測する（ステップＳ２；図１９の（ii）参照）。
【０１６２】
次いで、周波数制御部２３２Ａは、メモリ部３の制御情報３１から所定の閾値を定義するパラメータである「dec_thr」を抽出し、デバイス使用率が、抽出した「dec_thr」未満か否かを判定する（ステップＳ３）。
【０１６３】
デバイス使用率が「dec_thr」未満ではない（「dec_thr」以上である）と判定した場合（ステップＳ３でＮｏ）、稼働時間予測部２３３は、デバイス稼働時間Ｔを予測する（ステップＳ１２）。
【０１６４】
例えば、稼働時間予測部２３３は、「Ｎ」及び「request_size_i」を、それぞれ、ＯＳ２１等により記録されたパラメータ等に基づき取得し、図１７及び上記（１）式に示す予測モデルを用いて、デバイス稼働時間Ｔを予測してよい。
【０１６５】
そして、稼働時間予測部２３３は、予測したデバイス稼働時間Ｔを周波数制御部２３２Ａに送信（通知）する（図１９の（iii）参照）。
【０１６６】
周波数制御部２３２Ａは、稼働時間予測部２３３から受信したデバイス稼働時間Ｔと、「interval」とを比較し、デバイス稼働時間Ｔが「interval」よりも大きいか否かを判定する（ステップＳ１３）。
【０１６７】
デバイス稼働時間Ｔが「interval」よりも大きいと判定した場合（ステップＳ１３でＹｅｓ）、周波数制御部２３２Ａは、プロセッサ１ａの動作周波数を所定値にまで低下、例えば最小値に設定し（ステップＳ１４）、処理がステップＳ１５に移行する。
【０１６８】
一方、デバイス稼働時間Ｔが「interval」以下であると判定した場合（ステップＳ１３でＮｏ）、周波数制御部２３２Ａは、プロセッサ１ａの動作周波数を１段階低下するように制御し（ステップＳ４）、処理がステップＳ１５に移行する。
【０１６９】
ステップＳ１５では、周波数制御部２３２Ａは、待機時間「wait_time」に対して、デバイス稼働時間Ｔを設定し、動作周波数制御の１サイクルが終了する。
【０１７０】
一方、ステップＳ３において、デバイス使用率が「dec_thr」未満であると判定した場合（ステップＳ３でＹｅｓ）、周波数制御部２３２Ａは、プロセッサ１ａの動作周波数を増加、例えば最大値に設定する（ステップＳ５）。
【０１７１】
そして、周波数制御部２３２Ａは、待機時間「wait_time」に対して、既定値である「interval」を設定し（ステップＳ１６）、動作周波数制御の１サイクルが終了する。
【０１７２】
このように、周波数制御部２３２Ａは、ステップＳ３及びＳ１３の判定結果に応じて、ステップＳ４、Ｓ５、及びＳ１４においてプロセッサ１ａの動作周波数制御を行なう（図１９の（iv）参照）。
【０１７３】
なお、ステップＳ１５又はＳ１６の終了後、処理がステップＳ１１に移行してもよい。また、プロセッサ１ａがマルチコアプロセッサである場合は、図１８に示す処理がコアごとに実行されてよい。
【０１７４】
以上のように、第２実施形態によれば、第１実施形態と同様の効果を奏することができる。また、第２実施形態によれば、Ｉ／Ｏ集中アプリ２２の振る舞いにより低レイテンシストレージ４へのアクセス傾向にばらつきが生じ、デバイス稼働時間がタイミングによって異なる場合であっても、制御部２３Ａの制御間隔を柔軟に変更することができる。
【０１７５】
〔３〕その他
上述した第１実施形態及び第２実施形態に係る技術は、以下のように変形、変更して実施することができる。
【０１７６】
例えば、図９に示す制御部２３において、算出部２３１及び周波数制御部２３２の機能は、任意の組み合わせで併合してもよく、それぞれ分割してもよい。また、図１６に示す制御部２３Ａにおいて、算出部２３１、周波数制御部２３２Ａ、及び稼働時間予測部２３３の機能は、任意の組み合わせで併合してもよく、それぞれ分割してもよい。
【０１７７】
〔４〕付記
以上の第１実施形態及び第２実施形態に関し、さらに以下の付記を開示する。
【０１７８】
（付記１）
ストレージに対するアクセスを行なうアクセス部と、
所定のタイミングで、前記ストレージの使用状態を監視する監視部と、
前記監視部による監視結果に応じて、前記アクセス部の処理を実行するプロセッサの動作周波数を変化させる制御を行なう制御部と、をそなえる
情報処理装置。
【０１７９】
（付記２）
前記ストレージの使用状態は、前記ストレージの使用率であり、
前記制御部は、前記監視結果に基づき、前記ストレージの使用率が所定の閾値以上であると判定した場合に、前記プロセッサの動作周波数を低下させる制御を行なう、
付記１に記載の情報処理装置。
【０１８０】
（付記３）
前記制御部は、前記監視結果に基づき、前記ストレージの使用率が前記所定の閾値未満であると判定した場合に、前記プロセッサの動作周波数を増加させる制御を行なう、
付記２に記載の情報処理装置。
【０１８１】
（付記４）
前記アクセス部が前記ストレージに対して発行するアクセス要求を格納するキューをそなえ、
前記監視部は、前記キューにおける前記アクセス要求の格納状態に基づき、前記ストレージの使用状態を監視する、
付記１〜３のいずれか１項に記載の情報処理装置。
【０１８２】
（付記５）
前記監視部は、前記ストレージのビジー率に基づき、前記ストレージの使用状態を監視する、
付記１〜３のいずれか１項に記載の情報処理装置。
【０１８３】
（付記６）
前記監視部は、前記ストレージから送信されるビジー応答の有無に基づき、前記ストレージの使用状態を監視する、
付記１〜３のいずれか１項に記載の情報処理装置。
【０１８４】
（付記７）
前記所定のタイミングは、前記制御部による制御の実行タイミングに所定時間を加算したタイミングを含み、
前記制御部は、前記監視部による監視結果に応じて、前記所定時間を既定値から変化させる、
付記１〜６のいずれか１項に記載の情報処理装置。
【０１８５】
（付記８）
前記ストレージによる前記アクセスの処理時間を予測する予測部をそなえ、
前記ストレージの使用状態は、前記ストレージの使用率であり、
前記制御部は、前記監視結果に基づき、前記ストレージの使用率が所定の閾値以上であると判定した場合に、前記所定時間に前記処理時間を設定する、
付記７に記載の情報処理装置。
【０１８６】
（付記９）
前記制御部は、前記監視結果に基づき、前記ストレージの使用率が所定の閾値以上であると判定した場合であって、前記処理時間が前記既定値よりも大きいと判定した場合に、前記プロセッサの動作周波数を所定値にまで低下させる制御を行なう、
付記８に記載の情報処理装置。
【０１８７】
（付記１０）
前記制御部は、前記監視結果に基づき、前記ストレージの使用率が前記所定の閾値未満であると判定した場合に、前記プロセッサの動作周波数を増加させる制御を行なうとともに、前記所定時間に前記既定値を設定する、
付記８又は付記９に記載の情報処理装置。
【０１８８】
（付記１１）
前記アクセス部が前記ストレージに対して発行するアクセス要求を格納するキューをそなえ、
前記予測部は、前記キューに格納されたアクセス要求の総数と、前記キューに格納されたアクセス要求の各々の要求データサイズと、に基づき、前記処理時間を予測する、
付記７〜１０のいずれか１項に記載の情報処理装置。
【０１８９】
（付記１２）
ストレージに対するアクセスを行ない、
所定のタイミングで、前記ストレージの使用状態を監視し、
前記監視による監視結果に応じて、前記アクセスの処理を実行するプロセッサの動作周波数を変化させる制御を行なう、
処理をコンピュータに実行させる、情報処理プログラム。
【０１９０】
（付記１３）
前記ストレージの使用状態は、前記ストレージの使用率であり、
前記制御は、前記監視結果に基づき、前記ストレージの使用率が所定の閾値以上であると判定した場合に、前記プロセッサの動作周波数を低下させる制御を行なう、
付記１２に記載の情報処理プログラム。
【０１９１】
（付記１４）
前記制御は、前記監視結果に基づき、前記ストレージの使用率が前記所定の閾値未満であると判定した場合に、前記プロセッサの動作周波数を増加させる制御を行なう、
付記１３に記載の情報処理プログラム。
【０１９２】
（付記１５）
前記監視は、前記アクセスにより前記ストレージに対して発行されるアクセス要求を格納するキューにおける前記アクセス要求の格納状態に基づき、前記ストレージの使用状態を監視する、
付記１２〜１４のいずれか１項に記載の情報処理プログラム。
【０１９３】
（付記１６）
前記監視は、前記ストレージのビジー率に基づき、前記ストレージの使用状態を監視する、
付記１２〜１４のいずれか１項に記載の情報処理プログラム。
【０１９４】
（付記１７）
前記監視は、前記ストレージから送信されるビジー応答の有無に基づき、前記ストレージの使用状態を監視する、
付記１２〜１４のいずれか１項に記載の情報処理プログラム。
【０１９５】
（付記１８）
前記所定のタイミングは、前記制御の実行タイミングに所定時間を加算したタイミングを含み、
前記制御は、前記監視結果に応じて、前記所定時間を既定値から変化させる、
付記１２〜１７のいずれか１項に記載の情報処理プログラム。
【０１９６】
（付記１９）
情報処理装置のプロセッサが、
ストレージに対するアクセスを行ない、
所定のタイミングで、前記ストレージの使用状態を監視し、
前記監視による監視結果に応じて、前記アクセスの処理を実行する前記プロセッサの動作周波数を変化させる制御を行なう、
情報処理方法。
【０１９７】
（付記２０）
前記ストレージの使用状態は、前記ストレージの使用率であり、
前記制御は、前記監視結果に基づき、前記ストレージの使用率が所定の閾値以上であると判定した場合に、前記プロセッサの動作周波数を低下させる制御を行なう、
付記１９に記載の情報処理方法。
【符号の説明】
【０１９８】
１、１Ａ    コンピュータ
２、２Ａ    処理部
２１    ＯＳ
２１１    デバイスドライバ
２２    Ｉ／Ｏ集中アプリケーション
２３、２３Ａ    制御部
２３１    算出部
２３２、２３２Ａ    周波数制御部
２３３    稼働時間予測部
３    メモリ部
３１    制御情報
３２    Ｉ／Ｏキュー
４    低レイテンシストレージ
【図１】
2019212274.tif 000004
【図２】
2019212274.tif 000005
【図３】
2019212274.tif 000006
【図４】
2019212274.tif 000007
【図５】
2019212274.tif 000008
【図６】
2019212274.tif 000009
【図７】
2019212274.tif 000010
【図８】
2019212274.tif 000011
【図９】
2019212274.tif 000012
【図１０】
2019212274.tif 000013
【図１１】
2019212274.tif 000014
【図１２】
2019212274.tif 000015
【図１３】
2019212274.tif 000016
【図１４】
2019212274.tif 000017
【図１５】
2019212274.tif 000018
【図１６】
2019212274.tif 000019
【図１７】
2019212274.tif 000020
【図１８】
2019212274.tif 000021
【図１９】
2019212274.tif 000022