(57)【要約】【課題】  従来技術の組み合わせでは、コンテンツ配信においてQoS保証を実現しようとしても、時刻情報付ファイルI/OをQoS保証されたブロックI/Oに変換するために、OSバージョン毎に独自のファイルシステムを開発しなければならないという技術上の課題がある。【解決手段】  時刻情報付ファイルI/Oを通常のファイルI/Oに変換する手段と、前記通常のファイルI/Oの発行先となるファイルシステムの情報を取得する手段と、前記ファイルシステムのブロックI/Oの発行先となる前記ディスク装置の情報を取得する手段と、前記ファイルシステムの情報に基づいて、ファイルI/OがブロックI/Oに変換されるか予測する手段と、前記予測に基づいて、ファイルI/Oの要求に付属するオプションを調整する手段とを有する。【選択図】  図１
2015072643.tif 000002
【特許請求の範囲】
【請求項１】
端末と接続され、前記端末に対してデータを送受信するネットワークインターフェースと、
データが格納されるディスク装置と、
時刻情報付ファイルI/Oを通常のファイルI/Oに変換する手段と、
前記通常のファイルI/Oの発行先となるファイルシステムの情報を取得する手段と、
前記ファイルシステムのブロックI/Oの発行先となる前記ディスク装置の情報を取得する手段と、
前記ファイルシステムの情報に基づいて、ファイルI/OがどのようにブロックI/Oに変換されるか予測する手段と、
前記予測に基づいて、ファイルI/Oの要求に付属するオプションを調整する手段と、を備えるコンテンツ配信装置。
【請求項２】
請求項１に記載のコンテンツ配信装置において、
前記時刻情報付ファイルI/O要求を一般的なファイルI/O要求およびファイルI/O要求のオプションに変換する手段と、
前記ファイルI/O要求およびファイルI/O要求のオプションの発行タイミングを調整する手段を備えることによりQoS保証を実現するコンテンツ配信装置。
【請求項３】
請求項２に記載のコンテンツ配信装置において、
前記時刻情報付ファイルI/O要求の時刻情報を参照して期限までの猶予時間が短い順に処理する手段を備えるコンテンツ配信装置。
【請求項４】
請求項３に記載のコンテンツ配信装置において、
前記時刻情報付ファイルI/O要求の猶予時間が所定の閾値を下回っているか判断し、前記猶予時間が前記閾値を下回っていない場合、前記ファイルI/O要求と連続した領域に対するファイルI/O要求とをグループ化する手段を有するコンテンツ配信装置。
【請求項５】
請求項１記載のコンテンツ配信装置において、
ファイルシステムの種類やその設定など条件によってQoS保証が困難と予想される場合、前記ファイルシステムの種類や、その設定や、その他条件に問題があることを警告することを特徴とするコンテンツ配信装置。
【請求項６】
請求項１に記載のコンテンツ配信装置において、
I/O要求にデッドライン時刻とI/Oポリシーと、の情報を付加することを特徴とするコンテンツ配信装置。
【請求項７】
請求項１に記載のコンテンツ配信装置において、
I/O要求を処理するのに要した時間を最新の実績値を用いて更新する手段と当該時間を取得する手段を備えることを特徴とするコンテンツ配信装置。
【請求項８】
端末と接続され、前記端末に対してデータを送受信するネットワークインターフェースと、データが格納されるディスク装置と、前記ネットワークインターフェースと、前記ディスク装置に接続されデータを処理するプロセッサと、を有するコンテンツ配信装置のコンテンツ配信方法であって、
前記プロセッサは、時刻情報付ファイルI/Oを通常のファイルI/Oに変換し、
前記通常のファイルI/Oの発行先となるファイルシステムの情報を取得し、
前記ファイルシステムのブロックI/Oの発行先となる前記ディスク装置の情報を取得し、
前記ファイルシステムの情報に基づいて、ファイルI/OがどのようにブロックI/Oに変換されるか予測し、
前記予測に基づいて、ファイルI/Oの要求に付属するオプションを調整するコンテンツ配信方法。
【請求項９】
請求項８に記載のコンテンツ配信装置のコンテンツ配信方法において、
前記プロセッサは、前記時刻情報付ファイルI/O要求を一般的なファイルI/O要求およびファイルI/O要求のオプションに変換し、
前記ファイルI/O要求およびファイルI/O要求のオプションの発行タイミングを調整するコンテンツ配信方法。
【請求項１０】
請求項９に記載のコンテンツ配信装置のコンテンツ配信方法において、
前記プロセッサは、前記時刻情報付ファイルI/O要求の時刻情報を参照して期限までの猶予時間が短い順に処理するコンテンツ配信方法。
【請求項１１】
請求項１０に記載のコンテンツ配信装置のコンテンツ配信方法において、
前記プロセッサは、前記時刻情報付ファイルI/O要求の猶予時間が所定の閾値を下回っているか判断し、前記猶予時間が前記閾値を下回っていない場合、前記ファイルI/O要求と連続した領域に対するファイルI/O要求とをグループ化するコンテンツ配信方法。
【請求項１２】
請求項８に記載のコンテンツ配信装置のコンテンツ配信方法において、
ファイルシステムの種類やその設定の条件によってQoS保証が困難と予想される場合、前記プロセッサは、前記ファイルシステムの種類や、その設定や、その他条件に問題があることを警告するコンテンツ配信方法。
【請求項１３】
請求項８に記載のコンテンツ配信装置のコンテンツ配信方法において、
前記プロセッサは、I/O要求にデッドライン時刻とI/Oポリシーと、の情報を付加するコンテンツ配信方法。
【請求項１４】
請求項８に記載のコンテンツ配信装置のコンテンツ配信方法において、
前記プロセッサは、I/O要求を処理するのに要した時間を最新の実績値を用いて更新および取得するコンテンツ配信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
音声データや映像データなどのコンテンツを、ネットワークを介して配信するための技術に関する。
【背景技術】
【０００２】
近年、コンテンツ配信技術は社会インフラを支える重要な技術となった。新聞や書籍、音楽、映像などあらゆる情報が電子データ化されて配信されている。このように、ネットワークを介して配信されるコンテンツには様々な種類の電子データが存在するが、特に映像データは個々のデータサイズが大きいためコンテンツの全データ量に対して占める割合が大きいという意味で重要である。
【０００３】
特許文献１記載の技術によれば、ディスク装置に対してコンテンツの読み込み、あるいは、書き込みを指示するためのブロックI/O要求の処理において、QoS保証が必要なI/O要求には当該I/O要求を処理完了させなければならない期限を示す時刻情報（デッドライン）を付加して、デッドラインまでの余裕がないI/O要求から優先して処理することによりQoS保証を実現できる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】US2010-0011182
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来技術の組み合わせのみでコンテンツ配信におけるQoS保証を実現しようとしても、時刻情報付ファイルI/OをQoS保証されたブロックI/Oに変換することが出来ないため、OSバージョン毎に独自のファイルシステムを開発しなければならないという技術上の課題がある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明は、時刻情報付ファイルI/Oを通常のファイルI/Oに変換する手段と、上記通常のファイルI/Oの発行先となるファイルシステムの情報を取得する手段と、上記ファイルシステムのブロックI/Oの発行先となるディスク装置の情報を取得する手段と、上記ファイルシステムの情報に基づいてどのようにファイルI/OがブロックI/Oに変換されるか予測する手段と、当該予測に基づいてファイルI/OのI/O要求に伴うオプションを調整する手段を有する。
【発明の効果】
【０００７】
本発明によれば、一般的なファイルシステムを用いて、時刻情報付ファイルI/OをQoS保証されたブロックI/Oに変換することが出来る。すなわち、OSバージョン毎に独自のファイルシステムを開発することなくコンテンツ配信におけるQoS保証を実現することが出来る。
【０００８】
なお、上述した以外のさらなる課題、構成及び作用効果は、以下の本発明を実施するための形態および添付図面によって明らかになるものである。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態による計算機システムの構成例を示す図である。
【図２】第１の実施形態による動作概要を示す図である。
【図３】第１の実施形態で期待しているコンテンツのアップロード動作を示すシーケンス図である。
【図４】第１の実施形態における単に時刻情報付ファイルI/Oを通常のファイルI/Oに変換しただけでは期待した動作とはならない具体例の１つを示すシーケンス図である。
【図５】第１の実施形態におけるQoS保証された最大マルチストリーム性能と通常の最大スループットの違いを示す図である。
【図６】第１の実施形態におけるQoS保証プログラムのアルゴリズム例を示すシーケンス図である。
【図７】第１の実施形態における時刻情報付I/O要求の具体例を示す図である。
【図８】第１の実施形態におけるファイルシステム動作予測プログラムの処理内容を説明する図である。
【図９】第２の実施形態による計算機システムの構成例を示す図である。
【図１０】第３の実施形態による計算機システムの構成例を示す図である。
【図１１】第４の実施形態による計算機システムの構成例を示す図である。
【発明を実施するための形態】
【００１０】
以下、実施例を図面を用いて説明する。
図１は、本発明の第１の実施形態による計算機システムの構成例を示す図である。
【００１１】
コンテンツ配信サーバ１００は、CPU１１１およびネットワークインターフェース１１２およびディスク１１３およびメモリ１１４が相互に作用してメモリ上のプログラムを実行することにより動作する。また、同様の内部構成を持つ端末１０１とネットワークインターフェース１１２を介して接続されており、ディスク１１３上に格納されているコンテンツを端末１０１に配信することや、端末１０１からアップロードされたコンテンツをディスク１１３に格納することによりコンテンツ配信サービスを実現する。
【００１２】
なお、コンテンツ配信サーバ１００および端末１０１はそれぞれ複数台が接続していてもかまわなく、たとえば、１台のコンテンツ配信サーバ１００が複数の端末１０１に対してコンテンツを配信することや、複数の端末１０１から１台のコンテンツ配信サーバにコンテンツをアップロードすることが出来る。
【００１３】
コンテンツ配信サーバは、起動するとディスク装置１１３に格納されているプログラムを読み込みメモリ１１４上に配置して実行する。
【００１４】
まず、OSプログラム１２０をメモリ１１４上に配置して実行する。OSプログラム１２０には標準ファイルシステムプログラム１２１およびI/O中継プログラム１２２が含まれる。
【００１５】
次に、コンテンツ配信サーバプログラム１３０とQoS保証プログラム１４０と管理プログラム１５０をメモリ１１４上に配置して実行する。これらはOSプログラム１２０上で動作するプログラムであるので、OSプログラム１２０と区別してアプリケーションプログラムと呼ぶ。コンテンツ配信サーバプログラム１３０は端末１０１へコンテンツを配信する処理や、端末１０１からのコンテンツのアップロードを受信する処理を実現するプログラムであり、時刻情報付ファイルI/O生成プログラム１３１を含んでいる。QoS保証プログラム１４０はコンテンツのQoS保証を実現するためのプログラムであり、ファイルI/O変換プログラム１４１と、標準ファイルシステム情報取得プログラム１４２と、ファイルシステム動作予測プログラム１４３と、I/Oオプション調整プログラム１４４と、ディスク情報取得プログラム１４５を含んでいる。また、管理プログラム１５０はコンテンツ配信サーバプログラム１３０やQoS保証プログラム１４０を管理するために使用するプログラムである。これらプログラムの詳細は後述する。
【００１６】
図２は、本発明の動作の概要を示す図である。たとえば、映像コンテンツを端末１０１に配信して再生しており、ディスク１１３から順次映像データを読み出しているとする。  このとき、CPU１１１は、コンテンツ配信サーバプログラム１３０を実行し、時刻情報付ファイルI/O生成プログラム１３１を実行することにより、映像データの再生速度、映像の再生位置、端末１０１や自身がバッファリングしている映像データの量などを鑑みて、これから読み出そうとしている映像データが必要となると予想される時刻を算出できる。そこで、CPU１１１は、当該時刻情報をファイルI/Oに付加して、時刻情報付ファイルI/O要求２０１を発行する。
【００１７】
次に、CPU１１１は、QoS保証プログラム１４０を実行することにより、時刻情報付ファイルI/O要求２０１を受け取る。そして、標準ファイルシステムプログラム１２１の種類や設定などを含むファイルシステム情報２１０および、ディスク１１３の性能に関する情報を含むディスク情報２２０をもとにして、CPU１１１は、QoS保証するためのI/O発行タイミングの調整およびI/O要求のオプションの調整を行ない、ファイルI/O要求２０２およびファイルI/O要求オプション２０３を発行する。
【００１８】
そして、CPU１１１は、標準ファイルシステムプログラム１２１により、ファイルI/O要求２０２および、ファイルI/O要求オプション２０３をブロックI/O要求２０４に変換することによりディスクから映像データを読み込むことができる。ただし、このブロックI/O要求２０４は、QoS保証プログラム１４０によるファイルI/O要求２０２の発行タイミングの調整やファイルI/O要求オプション２０３の調整の効果により、結果的にQoS保証されたブロックI/O要求と同等の特性が実現される。従ってコンテンツ配信のQoS保証が結果的に実現できる。
【００１９】
以下、ブロックI/OのQoS保証が結果的に実現されるプロセスについて詳細を述べる。
【００２０】
図３は、本発明の第１の実施形態で期待しているコンテンツのアップロード動作を示すシーケンス図である。
【００２１】
まず、映像データのアップロードは端末１０１からコンテンツ配信サーバ１００上で動作するコンテンツ配信サーバプログラム１３０に対して書き込みの要求が行われることにより開始する（ステップ３０１）。そして、CPU１１１は、コンテンツ配信サーバプログラム１３０により、OSプログラム１２０が備えるI/O中継プログラム１２２に対して時刻情報付ファイルI/Oを発行する。そして、CPU１１１は、I/O中継プログラム１２２により、QoS保証プログラム１４０に上記時刻情報付ファイルI/Oを中継する（ステップ３０２）。なお、このような中継により、QoS保証プログラムはOSプログラム１２０内部にあっても外部にあっても問題とはならない。
【００２２】
次に、CPU１１１は、QoS保証プログラム１４０により、受け取ったI/O要求に付加されている時刻情報や、標準ファイルシステムプログラム１２１の種類と設定、ディスク１１３の性能といった情報をもとに、I/O要求の発行タイミングや当該I/O要求のオプションを調整して、OSプログラム１２０を介して標準ファイルシステムプログラム１２１にファイルI/Oを発行する（ステップ３０３）。
【００２３】
そして、CPU１１１は、標準ファイルシステムプログラム１２１により、ファイルI/Oを期待した通りのブロックI/Oに変換することにより（ステップ３０４）、コンテンツデータがディスク１１３に書き込まれ、最終的に端末１０１に書き込みの完了が通知される（ステップ３０５）。
【００２４】
この手順は端末１０１へコンテンツを配信する場合も同様であり、ステップ３０５にて読み込み完了通知と共にコンテンツデータが端末１０１に返信されることになる。
【００２５】
図４は、本発明の第１の実施形態において単純に時刻情報付ファイルI/Oを標準ファイルシステムプログラム１２１で通常のファイルI/Oに変換しただけでは期待した動作とはならない具体例の１つを示すシーケンス図である。
【００２６】
まず、映像データのアップロードは、端末１０１からコンテンツ配信サーバプログラム１３０に対して書き込みの要求が行われることにより開始する（ステップ４０１）。そして、I/O中継プログラム１２２を介して、CPU１１１がコンテンツ配信サーバプログラム１３０により、発行した時刻情報付ファイルI/OはQoS保証プログラム１４０に中継される（ステップ４０２）。さらに、CPU１１１は、QoS保証プログラム１４０により、標準ファイルシステムプログラム１２１に対してファイルI/Oを発行する（ステップ４０３）。
【００２７】
このとき、CPU１１１は、QoS保証プログラム１４０により、I/O要求のオプションを調整しなくても時刻情報付ファイルI/Oを通常のファイルI/Oに変換さえすれば、I/O要求を発行すること自体に支障はない。そして、端末１０１に書き込み完了を通知して処理を完了することができる（ステップ４０４）。
【００２８】
しかし、この場合には例えば、ディスク１１３に書き込むべきデータを、CPU１１１は、標準ファイルシステムプログラム１２１により、キャッシングして遅延書き込みを行っている可能性がある（ステップ４０５）。さらに、書き込みデータを分割して複数回に分けてディスク１１３上の物理的に異なる位置に書き込んでいる可能性もある（ステップ４０６）。読み込みにおいても、ステップ４０４のようにブロックI/Oが実行される前にI/O完了が通知されてしまうことはないが、ディスク１１３へのI/O要求が遅延する可能性はある。従って、必ずしもQoS保証プログラム１４０が期待した時間内にI/Oが処理されない、あるいは、I/O要求の分割により、必ずしもQoS保証プログラムが期待したディスク１１３の性能が得られない、という原因によってQoS保証に失敗してしまう。
【００２９】
標準ファイルシステムプログラム１２１がこのような動作をするのは、いわゆる最大スループットと呼ばれる通常のデータ転送における最大性能を高めることを目的に設計されているためである。さらに、なるべくディスク容量を無駄なく使い切ることを目的に設計されているからである。以下、最大スループットとQoS保証を行う場合の最大マルチストリーム性能の違いについて説明する。
【００３０】
図５は、本発明におけるQoS保証された最大マルチストリーム性能と通常の最大スループットの違いを示す図である。
【００３１】
図の縦軸５０１はスループットを表しており、横軸５０２はストリーム数を表している。ストリーム数とは同時に配信している映像の本数のことである。
【００３２】
コンテンツ配信サーバ１００が１本だけ1Mbpsのビットレートの映像をQoS保証しつつ配信したならば、１Mbpsのスループットが計測される（５０３）。そして、２本の１Mbpsの映像をQoS保証しつつ配信するならば、2Mbpsのスループットが計測される（５０４）。
【００３３】
QoS保証とは、個々の映像のビットレートを守る制御であるのだから、QoS制御に成功している限り、スループットはストリーム数に比例した値となる。もし、映像n+1本目にスループットがストリーム数に比例しなくなったならば、映像n本目のスループットを最大マルチストリーム性能５０６とよび、QoS保証可能な最大性能となる。
【００３４】
しかし、QoS保証を無視すれば、さらに高いスループットを得ることも可能であり、この限界性能を最大スループット５０７と呼ぶ。
【００３５】
一般に、標準ファイルシステムプログラム１２１は、最大スループットを高めるよう設計されており、そのために、たとえば、CPU１１１は、I/O要求を発行する順番を入れ換えるリオーダリングと呼ばれる処理を行う。これにより、ディスクにブロックI/Oが発行されるタイミングは無制限に遅延する可能性がある。
【００３６】
また、ディスク上のデータ配置については、同じディスクになるべく多くのデータを書き込むことを目的として、場合によってはI/Oを分割してディスク上の異なる場所に書き込むといった処理を行う可能性がある。
【００３７】
最大マルチストリーム性能５０６を向上させるには、このような標準ファイルシステムプログラム１２１の通常の制御では想定していない性能を向上させるための独特のアプローチが必要となる。QoS保証する場合においては、個々のI/O要求のデッドラインを守ることが最優先事項であり、ディスクの容量効率よりもディスク性能を低下させないために同一コンテンツのデータをディスク上のなるべく連続した領域に記録することが重要になる。
【００３８】
図６は、第１の実施形態におけるQoS保証プログラムのアルゴリズム例を示すフローチャート図である。
【００３９】
QoS保証プログラム１４０は、メモリ１１４上に配置され実行開始される（ステップ６００）。まず、標準ファイルシステム情報取得プログラム１４２が呼び出され、標準ファイルシステム１２１の種類やフォーマットパラメータなどが取得される。
【００４０】
CPU１１１は、標準ファイルシステム情報取得プログラム１４２により、OSプログラム１２０の提供する機能や標準ファイルシステム１２１に付属の管理プログラムなどを用いて当該情報を取得する。なお、フォーマットパラメータとは、データをなるべく連続領域に書くためのエクステントと呼ばれる値やデータを書き込む単位であるブロックサイズと呼ばれる値など、一般にファイルシステムのフォーマット時や設定ファイルなどで指定することが出来る値のことである。しかし、もちろんファイルシステムの実装によっては、ファイルシステム実行後に動的に設定した値の場合もあるし、あらかじめファイルシステム毎に定まっている定数である場合もある（ステップ６０１）。
【００４１】
次に、CPU１１１は、ディスク情報取得プログラム１４５を呼び出してディスクの応答性能などの情報を取得する。
【００４２】
CPU１１１は、ディスク情報取得プログラム１４５は実際に様々なI/Oサイズの読み込みI/O要求や書き込みI/O要求を発行することで、応答性能とよばれるディスク装置がどのくらいの時間でI/Oを処理できるのかを示す情報を取得することが出来る。また、OSプログラム１２０の機能を用いてディスクの種類を取得することにより、ディスクの種類ごとの平均的な性能から上記性能を見積もることもできる。あるいは、あらかじめ性能測定したデータをファイルなどに保存しておいて、当該ファイルを読み込むことによってもディスク性能を取得することが出来る（ステップ６０２）。
【００４３】
以上がQoS保証プログラム１４０の前処理である。これらは、QoS保証プログラム１４０が実行開始した後、最初に一度だけ実行して、その後は以下の手順を繰り返す。
【００４４】
まず、CPU１１１は、QoS保証プログラム１４０により、未処理の新たなI/O要求があるか確認する（ステップ６０３）。存在する場合には、当該I/O要求を自身が管理するI/OキューというI/O要求の並びに追加する（ステップ６０４）。なお。I/Oキューは複数あってもよく、たとえばQoS保証が必要なI/O要求と必要ないI/O要求を別々のI/Oキューに区別して格納しておき、QoS保証が必要なI/O要求を格納しているI/Oキュー内のI/O要求を優先的に処理することもできる。
【００４５】
次に、I/Oキュー内のI/O要求のうちファイル内の連続した領域に対するI/O要求があれば、それらをグループ化する。たとえば同じファイルの先頭１Mバイトと隣接する次の１Mバイトへの２つの１MバイトのI/O要求があれば、それらをグループ化して2MバイトのI/O要求としても扱えるようにする（ステップ６０５）。
【００４６】
また、I/O要求に付加された時刻情報を参照して期限までの猶予時間が短いI/O要求から順にI/Oキュー内のI/O要求をソートする。グループ化されたI/Oについては、それらI/O要求の中で最も猶予時間が短いI/O要求を採用する（ステップ６０６）。
【００４７】
そして、最も猶予時間の短いI/O要求の猶予時間が所定の閾値を下回っているか確認する。なお、所定の閾値とは、I/O要求を発行しなければならないタイムリミットを示しており、ステップ６０２で取得した当該I/O要求と同じサイズのI/O要求を処理する場合のディスクの応答性能データに所定のマージンを加算して算出することができる。もし、閾値を下回ってなければI/O要求のグループ化の機会を得るためにステップ６０３からの手順を繰り返す（ステップ６０７）。
【００４８】
逆に、閾値を下回っていれば、CPU１１１は、ファイルシステム動作予測プログラム１４３を呼び出して標準ファイルシステム１２１がどのようにブロックI/Oを発行するか予測を行う。そして、予測結果に応じてI/Oオプション調整プログラム１４４を呼び出して、当該ファイルI/O要求のオプションの設定を行う。このとき、グループ化されているI/O要求の場合はグループ単位でまとめて処理する。なお、標準ファイルシステム１２１のブロックサイズやエクステントサイズを鑑みてI/Oサイズに端数が残る場合は、当該端数を残してそれ以外の部分のみを処理してもかまわない。この動作については後述のファイルシステム動作予測プログラム１４３の説明の中で詳細を述べる（ステップ６０８）。
【００４９】
さらに、CPU１１１は、ファイルI/O 変換プログラム１４１を呼び出して時刻情報付ファイルI/O要求を通常のファイルI/O要求に変換する。そして、変換されたファイルI/O要求を、ステップ６０８で設定したファイルI/O要求のオプションとともに標準ファイルシステムプログラム１２１に対して発行する（ステップ６０９）。
【００５０】
最後に、CPU１１１は、既に標準ファイルシステム１２１に発行したI/O要求で完了したI/O要求があればI/O完了をI/O中継プログラム１２２を介してコンテンツ配信サーバプログラム１３０に通知する。読み込み要求であれば読み込んだデータも引き渡す。このとき、I/O要求の処理にかかった時間を計測して、ステップ６０２で取得したディスクの応答性能情報を最新の実績値を用いて更新ないし補正してもかまわない。この応答性能情報の最新の実績値は管理プログラム１５０を用いて取得することができる。また、ディスクの応答性能だけでなく、QoS保証プログラム１４０がI/O要求を受け取ってから処理完了するまでの時間など、プログラムの応答性能についても最新の実績値を算出して管理プログラム１５０を用いて取得することができる。完了したI/O要求がなければステップ６０３からの手順を繰り返す（ステップ６１０）。
【００５１】
図７は、本発明における時刻情報付ファイルI/O要求２０１の具体例を示す図である。時刻情報付ファイルI/O要求２０１はオプションとしてファイルの先頭からの位置を示すI/Oアドレス７０１と、当該I/Oで読み書きするデータ量を示すI/Oサイズ７０２と、書き込みか読み込みかを区別するI/O方向７０３と、I/O要求に付属するその他の詳細な性質を決定するI/O詳細オプション７０４と、当該I/Oを処理完了させなければならないデッドライン時刻７０５と、万がデッドライン時刻までにI/O要求を処理できなかった場合の挙動を指定するI/Oポリシー７０６からなる。
【００５２】
このうち、デッドライン時刻７０５と、I/Oポリシー７０６が、いわゆる時刻情報である。デッドライン時刻はミリ秒単位やマイクロ秒単位など任意の時間の単位であらわしてよい。また、現在時刻との差分をとって残された猶予時間に変換できるので、デッドライン時刻とはデッドラインまでの猶予時間と同じ意味を持つ。また、デッドライン時刻の表現方法は様々な形態があり、起点となる時刻と猶予時間の組み合わせで表現してもよく、たとえば、I/O要求を発行した時刻と当該時刻からの猶予時間の組み合わせであってもよい。
【００５３】
そして、I/Oポリシーは、デッドラインとなる時刻を超過した場合に、当該I/O要求を破棄するのか、遅延したまま処理を続行するのか、といった挙動を指定する情報である。  CPU１１１は、ファイルI/O 変換プログラム１４１により、これら２つの時刻情報を削除することにより、容易に時刻情報付ファイルI/Oを通常のファイルI/Oに変換することが出来る。もちろん、時刻情報付ファイルI/Oと通常のファイルI/Oのインターフェースやフォーマットは必ずしも同じではないので、それらの単純変換は必要となる。
【００５４】
なお、I/O詳細オプション７０４には、標準ファイルシステム１２１によるキャッシングを無効化するダイレクトI/Oの指示や、遅延書き込みをOFFにするといった指示や、連続領域にデータが書き込まれるように、I/O要求発行前に、あらかじめディスク上に連続した領域を確保するといった指示が含まれる。これらの指示は、OSが提供する全てのファイルシステムに共通なインターフェースを用いて、実際にファイルI/Oを実行するコマンドのパラメータとして与えられてもよいし、それとは別のコマンドのパラメータとして与えられてもよいし、さらには、全く別の独立した管理プログラムのパラメータとして与えられてもよいし、標準ファイルシステム１２１の初期設定ファイルの書き換え及び再読み込みという形態であってもよい。
【００５５】
I/Oオプション調整プログラム１４４は上述した様々な方法を用いて、標準ファイルシステムプログラム１２１の挙動を制御することが出来る。
【００５６】
図８は、本発明におけるファイルシステム動作予測プログラム１４３の処理内容を説明する図である。
【００５７】
図中のファイルA、ファイルB、ファイルCの横線はファイル先頭からのオフセット位置をあらわしており、ファイルシステムのブロックサイズないしエクステントサイズごとに縦線で区切っている。
【００５８】
ところで、ファイルシステムはブロックサイズまたはエクステントサイズに従ってデータをディスク上の連続領域に記憶するが、どちらが用いられるかはファイルシステム毎に異なる。ブロックサイズの場合には当該区間のデータは必ずディスク上の連続した領域に書かれるのに対して、エクステントサイズの場合は努力目標である点が異なる。しかし、エクステントを用いた場合であっても、ファイルI/OにダイレクトI/Oというファイルシステムのバッファを利用しないファイルI/Oの種類を指定することや、後述するように書き込み領域を事前予約するといった方法で連続した領域にデータが書かれることを保証できる。そこで、以下ブロックサイズに用語を統一するがエクステントサイズのケースも含めて説明を行う。
【００５９】
一般的なファイルシステム上のファイルにブロックサイズと同サイズのファイルI/O（８０１）を発行した場合には、ファイルシステムにより同サイズのブロックI/O（８０３）に変換される。また、ブロックサイズの倍数と同サイズのファイルI/O（８０２）を発行した場合には、同一のサイズのブロックI/O（８０４）に変換される場合や、ブロックサイズ単位に別々のブロックI/Oに分割される場合もある。
【００６０】
ファイルシステム動作予測プログラム１４３はファイルシステムの種類と同時に書き込みを行っているI/O要求の有無という情報を用いてI/O要求が分割されるかどうか判断することが出来る。ファイルシステムの種類によって、分割があるもの、ないもの、同時に書き込みを行っている場合には分割があるもの、の三種類に分けることが出来るためである。
【００６１】
ただし、ブロックサイズの倍数でないオフセット位置からブロックサイズと同サイズのファイルI/O（８０５）を発行しても、ファイル先頭からブロックサイズの倍数ごとの区切り位置でブロックI/O（８０６）、ブロックI/O（８０７）に分割されてしまう。これをアライメントが一致しないことによるI/O要求の分割と呼ぶ。
【００６２】
ブロックI/Oが分割されると、それぞれがディスク上の別々の領域に書かれる可能性がある。特に遅延アロケーションと呼ばれる方式を採用するファイルシステムでは、データをディスクに実際に書き込む直前までデータ格納先ブロックが決定されないため、このような現象が発生する可能性が高まる。そして、QoS保証に必要な安定したディスク性能が得られなくなる可能性も高まる。
【００６３】
そこで、ファイルシステム動作予測プログラム１４３は、ケースバイケースにファイルI/Oのオプションをどのように調整すべきか決定する。具体的には、上述したようなファイルシステムの種類など異なる条件を異なる軸で網羅した多次元のテーブルを備え、以下に述べる具体的なファイルI/Oのオプション調整手順に番号をつけて、上記多次元のテーブルの要素として上記番号を保持する。これにより、多次元のテーブルからファイルシステムの種類などの条件によって異なるファイルI/Oのオプション調整手順の番号を得ることができ、当該番号をI/Oオプション調整プログラム１４４に引数として渡すことにより、I/Oオプション調整プログラム１４４が当該番号に対応するファイルI/Oオプションの調整を実行することが出来る。
【００６４】
なお、特定のファイルシステムのみを対象として実施する場合など、上記多次元のテーブルの規模が小さい場合には、プログラム内の条件分岐の羅列の形で同様の機能を実施できる。
【００６５】
また、ファイルシステムの種類とその設定など条件によっては、適切なファイルI/Oオプションの調整手段が存在しない場合も考えられる。そのような場合にはQoS保証できないため、警告を行うことができる。具体的には、管理プログラム１５０を使って取得できるQoS保証プログラム１４０の動作ログなどに警告を出力したり、さらに所定のメールアドレスにメールを送付したり様々な方法で警告することができる。また、警告が発生する可能性があるかどうかは、上記多次元テーブルにファイルI/Oオプションの調整手段を識別する番号が格納されていない箇所があれば警告が発生する可能性があるのは自明であるので、QoS保証プログラム１４０の開始時にチェックを行ない、あらかじめ問題があることを警告することもできる。
【００６６】
以下、ファイルI/Oのオプション調整内容について詳細を述べる。
まず、アライメントが一致しないケースを無くすための調整方法について述べる。コンテンツ配信では基本的にファイルの先頭から順次I/O要求を処理していくので、アライメントが一致しなくなる原因は、ブロックサイズより大きいファイルI/O（８０８）が発行される場合と、ブロックサイズより小さいファイルI/O（８１２）が発行される場合の２つの場合が考えられる。
【００６７】
ブロックサイズより大きいファイルI/O（８０８）の場合には、当該I/O要求のデッドライン時間が許す限り、次のファイルI/O（８０９）を待ち、ブロックサイズの倍数単位でファイルI/Oを発行することを試みる。猶予時間が無い場合には、ブロックサイズの倍数となる範囲のデータ（８１０）を先に処理して、次のファイルI/O（８０９）が到着しだいファイルI/O（８１１）を発行するか、書き込みの場合においてはパディングと呼ばれる空白のデータで不足箇所を埋めてブロックサイズの倍数となるファイルI/Oを発行する。読み込みの場合は、今後続くデータへのI/O要求がくると仮定して、プリフェッチと呼ばれるまだI/O要求されていない領域の先読みをすることでブロックサイズの倍数のファイルI/Oを発行する。
【００６８】
一方、ブロックサイズより小さいファイルI/O（８１２）の場合にも、ブロックサイズより大きいファイルI/O（８０８）の端数の処理と同じ方法により、たとえば次のファイルI/O（８１３）とパディングないしプリフェッチ（８１４）を組み合わせてブロックサイズの倍数のファイルI/O（８１５）を発行する。
【００６９】
なお、上述したように、ファイルシステムの種類によっては、ブロックサイズの倍数のファイルI/O（８１６）を発行してもブロックI/Oがブロックサイズ単位に分割されてしまう場合がある。このようなケースでは、当該ファイルI/Oと同サイズかそれ以上の領域予約（８１７）をあらかじめ行ってからファイルI/Oを発行する。領域予約の方法には、OSやファイルシステムが提供する領域予約のためのシステムコールを利用する方法や、遅延書き込み機能を持つファイルシステムの場合には遅延書き込みをOFFに設定する方法や、同時書き込みが起こらないように書き込み処理をシーケンシャルに実行していく方法や、あらかじめファイル全体と同サイズのダミーファイルを作成して、当該ファイルの上書きしていく方法などがあり、ファイルシステムの種類に応じて最適な方法を選択できる。
【００７０】
以上述べた以外のファイルI/Oのオプション調整方法についても、当該方法を識別する番号を与えて、当該番号を上述の多次元のテーブルの適切な箇所に要素として格納することにより全て対応することが出来る。
【００７１】
なお、以上述べたQoS保証プログラム１４０およびQoS保証プログラム１４０に含まれる他のプログラムの内部情報は、全て管理プログラム１５０を用いて取得したり、書き換えたり、追加したりすることが出来る。具体的には、メモリ１１４上の情報は当該メモリ空間を使用しているプログラムが自由に読み書きできるのであるから、たとえばOSプログラム１２０が提供するプログラム間通信の機能を用いて、管理プログラム１５０がQoS保証プログラム１４０に情報の提供を要求した場合に、QoS保証プログラム１４０が当該情報を提供すれば、管理プログラム１５０はQoS保証プログラム１４０の情報を容易に取得できる。
【００７２】
以下、本発明の第１の実施形態とは異なる実施形態について述べる。
【００７３】
図９は、本発明の第２の実施形態による計算機システムの構成例を示す図である。本発明の第２の実施形態では、コンテンツ配信サーバプログラム１３０にQoS保証プログラム１４０を内蔵する。これにより、I/O中継プログラム１２２が不要になるか、サイズの大きいデータについてI/O中継プログラム１２２を介さず、直接コンテンツ配信サーバプログラム１３０とQoS保証プログラム１４０の間で引き渡すことができるというメリットがある。
【００７４】
図１０は、本発明の第３の実施形態による計算機システムの構成例を示す図である。本発明の第３の実施形態では、QoS保証プログラム１４０をネットワークファイルシステムサーバプログラム（NFSサーバプログラム）１６０に内蔵する。これにより、I/O中継プログラム１２２が不要となり、さらに、QoS保証プログラム１４０を含むNFSサーバプログラム１６０をコンテンツ配信サーバ１００の中だけでなく、外部のNFSサーバ１０２として実施して、複数のコンテンツ配信サーバ１００で共有するような実施も可能となる。  図１１は、本発明の第４の実施形態による計算機システムの構成例を示す図である。本発明の第４の実施形態では、QoS保証プログラム１４０をOSプログラム１２０内で動作するローダブルカーネルモジュールとして実施する。これにより、アプリケーション空間とOS空間の間で情報を送受することによるオーバヘッドを削減できる。
【符号の説明】
【００７５】
100：コンテンツ配信サーバ装置
101：端末装置
111：CPU
112：ネットワークインターフェース
113：ディスク
120：OSプログラム
121：標準ファイルシステムプログラム
122：I/O中継プログラム
130：コンテンツ配信サーバプログラム
131：時刻情報付ファイルI/O生成プログラム
140：QoS保証プログラム
141：ファイルI/O変換プログラム
142：標準ファイルシステム情報取得プログラム
143：ファイルシステム動作予測プログラム
144： I/Oオプション調整プログラム
145：ディスク情報取得プログラム
150：管理プログラム
【図１】
2015072643.tif 000003
【図２】
2015072643.tif 000004
【図３】
2015072643.tif 000005
【図４】
2015072643.tif 000006
【図５】
2015072643.tif 000007
【図６】
2015072643.tif 000008
【図７】
2015072643.tif 000009
【図８】
2015072643.tif 000010
【図９】
2015072643.tif 000011
【図１０】
2015072643.tif 000012
【図１１】
2015072643.tif 000013