JP2012079272A - 録画再生装置、i/oスケジューリング方法、及びプログラム - Google Patents
録画再生装置、i/oスケジューリング方法、及びプログラム Download PDFInfo
- Publication number
- JP2012079272A JP2012079272A JP2010226674A JP2010226674A JP2012079272A JP 2012079272 A JP2012079272 A JP 2012079272A JP 2010226674 A JP2010226674 A JP 2010226674A JP 2010226674 A JP2010226674 A JP 2010226674A JP 2012079272 A JP2012079272 A JP 2012079272A
- Authority
- JP
- Japan
- Prior art keywords
- task
- recording
- block device
- request
- time
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/76—Television signal recording
- H04N5/78—Television signal recording using magnetic recording
- H04N5/782—Television signal recording using magnetic recording on tape
- H04N5/783—Adaptations for reproducing at a rate different from the recording rate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/76—Television signal recording
Abstract
【課題】
ブロックデバイスに対するI/Oデータ量のタスク間での不均一を軽減して、録画再生に関するマルチタスク処理を良好に行うことのできる録画再生装置を提供する。
【解決手段】
ブロックデバイスに対する録画及び再生に関する一つ一つの処理をタスクとして、複数のタスクが実行されるとき、各タスクそれぞれのブロックデバイスに対するラウンドロビンのサイクル毎のI/O総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたスライスタイムを用いて、ブロックデバイスに対するI/Oスケジューリングを行う。また、I/Oリクエストの実行終了時点のスライスタイムからの超過分をデフォルトのスライスタイムから減算した時間を、ラウンドロビンの次サイクルのスライスタイムとして設定し、その次のサイクルではデフォルトのスライスタイムに戻す。
【選択図】 図5
ブロックデバイスに対するI/Oデータ量のタスク間での不均一を軽減して、録画再生に関するマルチタスク処理を良好に行うことのできる録画再生装置を提供する。
【解決手段】
ブロックデバイスに対する録画及び再生に関する一つ一つの処理をタスクとして、複数のタスクが実行されるとき、各タスクそれぞれのブロックデバイスに対するラウンドロビンのサイクル毎のI/O総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたスライスタイムを用いて、ブロックデバイスに対するI/Oスケジューリングを行う。また、I/Oリクエストの実行終了時点のスライスタイムからの超過分をデフォルトのスライスタイムから減算した時間を、ラウンドロビンの次サイクルのスライスタイムとして設定し、その次のサイクルではデフォルトのスライスタイムに戻す。
【選択図】 図5
Description
本発明は、マルチタスク環境においてブロックデバイスに対するI/Oスケジューリングを行うことの可能な録画再生装置、I/Oスケジューリング方法、及びプログラムに関する。
近年、複数のチャンネルの同時録画や、録画済みの番組を再生しながら別の番組を録画したりすることのできる録画再生装置が一般的となってきている。このような録画再生装置のストレージとしては、ブルーレイドライブやハードディスクドライブなどのブロックデバイスが用いられる。ブロックデバイスとは、データの書き込みおよび読み出しが所定の単位(ブロック単位)で行われるストレージである。ブロックデバイスに対するデータの入出力はファイルシステムを通じて行われる。
ブロックデバイスへの複数チャンネルの同時録画や、同時録画再生を行うためには、ブロックデバイスに対するI/O(入出力)のリソースを、各処理に公平に割り当てることが重要となる。ブロックデバイスに対するI/Oリソースを複数のタスクに公平に割り当てる技術としてはI/Oスケジューリングが知られている。
例えば、CFQ(Completely Fair Queuing)スケジューラは、現在Linuxカーネルに標準に組み込まれたI/Oスケジューラである(特許文献1参照)。CFQスケジューラでは、I/O要求を、その優先度に対応したリクエストキューに登録する。各リクエストキューにはI/O要求の優先度に応じて決められるスライスタイムが設定されている。通常、リアルタイム性の要求度が比較的高いタスクからのI/O要求には高い優先度が与えられ、リアルタイム性の要求度が比較的低いタスクからのI/O要求には低い優先度が与えられる。
CFQスケジューラは、隣り合うセクタに対するI/O要求を同じ種類(読み出し要求、書き込み要求)毎に1つのI/Oリクエストと呼ばれるデータ構造にまとめてリクエストキューに登録する。CFQスケジューラは、複数のリクエストキューの中から、空でない1つのリクエストキューを例えばラウンドロビン方式で選択し、選択されたリクエストキューからスライスタイムの時間内にI/Oリクエストを1つずつ選択してデバイスドライバに渡す。スライスタイムが経過した後、CFQスケジューラは、優先度が同じまたは次に高いリストを選択し、そのリストからI/Oリクエストを選択してデバイスドライバにわたす。これによりデバイスドライバによってI/Oリクエストが実行される。
前述したように、CFQスケジューラでは、リアルタイム性の要求度が比較的高いタスクからの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リソースが減れば、バッファオーバーフローによる録画のエラーが発生する。本発明によれば、このような録画のエラーの発生を防止できる。
前記制御部は、選択中のタスクのリクエストキューが空である場合には、前記スライスタイムの経過を待たずにタスクの切り替えを行う。これにより、I/Oリソースの利用効率を向上させることができる。このような面からも、録画再生に関するマルチタスク処理を良好に行うことができる。
前記制御部は、I/Oリクエストの実行終了時点の前記スライスタイムからの超過分をデフォルトのスライスタイムから減算した時間を、ラウンドロビンの次サイクルのスライスタイムとして設定し、その次のサイクルでは前記デフォルトのスライスタイムに戻すことを繰り返す。これにより早送り再生など高いレートでブロックデバイスに対するI/O処理を行うタスクの次のタスクの処理が開始されるタイミングの遅延時間の累積を防止でき、タスク間でのI/Oデータ量の不均一をより一層改善できる。
本発明の別の側面による録画再生装置のI/Oスケジューリング方法は、録画用の記録媒体として用いられるブロックデバイスに対する録画及び再生に関する一つ一つの処理をタスクとして、複数の前記タスクが実行されるとき、前記各タスクそれぞれの前記ブロックデバイスに対するラウンドロビンのサイクル毎のI/O総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたスライスタイムを用いて、前記ブロックデバイスに対するI/Oスケジューリングを行うというものである。
本発明の別の側面によるプログラムは、録画用の記録媒体として用いられるブロックデバイスに対する録画及び再生に関する一つ一つの処理をタスクとして、前記各タスクそれぞれの前記ブロックデバイスに対するラウンドロビンのサイクル毎のI/O総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたスライスタイムを用いて、前記ブロックデバイスに対するI/Oスケジューリングを行う制御部としてコンピュータを動作させるプログラムである。
本発明によれば、ブロックデバイスに対するI/Oデータ量のタスク間での不均一を軽減して、録画再生に関するマルチタスク処理を良好に行うことができる。
以下、図面を参照しながら、本発明に係る実施形態を説明する。
本実施形態は、外部より取得した映像及び音声などの番組データを、ブルーレイディスクやハードディスクドライブ等のブロックデバイスに録画したり録画した番組データを再生したりすることのできる録画再生装置である。また、本実施形態は、複数チャンネルの同時録画や、同時の録画再生など、ブロックデバイスに対するI/O(入出力)を伴う複数の処理を、見掛け上同時に実行することの可能な録画再生装置に関するものである。
本実施形態は、外部より取得した映像及び音声などの番組データを、ブルーレイディスクやハードディスクドライブ等のブロックデバイスに録画したり録画した番組データを再生したりすることのできる録画再生装置である。また、本実施形態は、複数チャンネルの同時録画や、同時の録画再生など、ブロックデバイスに対するI/O(入出力)を伴う複数の処理を、見掛け上同時に実行することの可能な録画再生装置に関するものである。
<第1の実施形態>
[録画再生装置のハードウェア構成]
図1は、本発明の第1の実施形態に係る録画再生装置100の構成を示すブロック図である。
同図に示すように、この録画再生装置100は、CPU11(制御部)、メインメモリ12、プログラム記憶部13、番組受信部14、ブロックデバイス15、番組再生部16、バス17などを備える。
[録画再生装置のハードウェア構成]
図1は、本発明の第1の実施形態に係る録画再生装置100の構成を示すブロック図である。
同図に示すように、この録画再生装置100は、CPU11(制御部)、メインメモリ12、プログラム記憶部13、番組受信部14、ブロックデバイス15、番組再生部16、バス17などを備える。
CPU(Central Processing Unit)11は、録画再生装置100の各部を総括的に制御する。CPU11は、プログラム記憶部13に記憶されたOS、アプリケーションプログラムなどの各種のプログラム及びデータを用いて番組の録画及び再生に関する様々な処理を実行する。
メインメモリ12は、CPU11の作業空間として用いられるメモリである。
プログラム記憶部13は、CPU11により実行される各種のプログラム、そのプログラムの実行に必要なデータが記憶された記憶部である。
プログラム記憶部13は、CPU11により実行される各種のプログラム、そのプログラムの実行に必要なデータが記憶された記憶部である。
番組受信部14は、例えば、地上波デジタルチューナ、BSデジタルチューナ、CSデジタルチューナなどのデジタルチューナや、インターネットを通じて番組を受信するネットワークインタフェースなどである。ここで、受信される番組とは、少なくとも映像及び音声のデータが多重化されて圧縮符号化された情報である。より具体的には、MPEG−2(Moving Picture Experts Group phase 2)ストリーム、MPEG−4ストリームなどである。
ブロックデバイス15は、番組受信部14にて受信された番組が記録される、例えばブルーレイディスク、ハードディスクドライブなどのデバイスである。ここで、ブロックデバイスとは、データの書き込みと読み出しが所定の単位(ブロック単位)で行われるデバイスのことである。ブロックデバイスに対するデータの入出力はファイルシステムを通じて行われる。
番組再生部16は、番組の映像及び音声のストリームをデコードするデコーダ161と、デコーダ161のデコード結果である映像及び音声を出力する映像・音声出力部162とを備える。この実施形態では、複数の番組再生部16が、バス17に図示しないネットワーク接続部を通じて接続可能とされ、CPU11は複数の番組再生部16に対して同一の番組を供給したり、選択的に別々の番組を供給したりすることが可能である。
[録画再生装置のソフトウェア構成]
図2は、本実施形態の録画再生装置100のソフトウェア構成を示す図である。
図2は、本実施形態の録画再生装置100のソフトウェア構成を示す図である。
録画再生装置100には、ソフトウェアとして、OS(Operating System)31と、OS31上で動作可能な複数のアプリケーションプログラム(以下「アプリケーション」と呼ぶ。)32が存在する。ここで、それぞれのアプリケーション32は、例えば、番組の録画のためのプログラム、録画された番組の通常再生、早送り再生、スロー再生、コマ送り再生、スキップ再生、さらには、重要度の高いシーンを自動検出して番組の見所を再生するダイジェスト再生のためのプログラムなどである。
OS31には、ファイルシステム33、I/Oスケジューラ34、デバイスドライバ35などが含まれる。OS31のカーネルは、実行中のアプリケーション32を処理の実行単位である「タスク」として扱う。
ファイルシステム33は、アプリケーション32からのファイルの書き込みまたは読み出しのためのI/O要求を受けて、このI/O要求をブロック形式のI/O要求に変換する。
I/Oスケジューラ34は、ブロックデバイス15に対するI/O処理の効率向上を目的として、各タスクからのI/O要求の順序の制御、複数のI/O要求の結合、タスク毎のI/Oリソースの割り当ての時間的な制御などを行うスケジューラである。I/Oスケジューラ34は、タスク毎のリクエストキューを有する。リクエストキューにはタスク毎に予め決められたスライスタイムが設定される。I/Oスケジューラ34は、タスクからファイルシステムを通じて受けとったブロック形式のI/O要求を対応するリクエストキューに入れる。このときI/Oスケジューラ34は、隣り合うセクタに対するI/O要求を同じ種類(読み出し要求、書き込み要求)毎に1つのI/Oリクエストと呼ばれるデータ構造にまとめる。I/Oスケジューラ34は、タスク毎のリクエストキューの中から1つのリクエストキューをラウンドロビン方式で選択し、選択したリクエストキューから1つのI/Oリクエストを選択してデバイスドライバ35に渡す。このI/Oスケジューラ34の動作については後で詳しく説明する。
デバイスドライバ35は、ブロックデバイス15に対して、I/Oスケジューラ34によって選択されたI/Oリクエストの処理を実行する。
[I/Oスケジューラ34の動作]
図3はI/Oスケジューラ34の動作を説明するための概念図である。
同図に示すように、I/Oスケジューラ34は、タスク毎のリクエストキュー41を有する。I/Oスケジューラ34は、各タスクのリクエストキュー41に、当該各タスクそれぞれのブロックデバイス15に対するラウンドロビンのサイクル毎のI/O総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたスライスタイムを割り当てる。
図3はI/Oスケジューラ34の動作を説明するための概念図である。
同図に示すように、I/Oスケジューラ34は、タスク毎のリクエストキュー41を有する。I/Oスケジューラ34は、各タスクのリクエストキュー41に、当該各タスクそれぞれのブロックデバイス15に対するラウンドロビンのサイクル毎のI/O総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたスライスタイムを割り当てる。
ここで、録画や通常再生時に比べて早送り再生、ダイジェスト再生時の単位時間当たりのI/Oデータ量は大きいため、早送り再生、ダイジェスト再生のための各タスクに割り当てられるスライスタイムは、録画や通常再生のためのタスクに割り当てられるスライスタイムよりも短いものとなる。
1.リクエストキュー41への登録
ファイルシステム33は、アプリケーション32(タスク)から渡された、ファイルの書き込みまたは読み出しのためのI/O要求を受けて、要求元であるタスクを識別する識別子を含むI/O要求をブロック形式のI/O要求に変換してI/Oスケジューラ34に渡す。
ファイルシステム33は、アプリケーション32(タスク)から渡された、ファイルの書き込みまたは読み出しのためのI/O要求を受けて、要求元であるタスクを識別する識別子を含むI/O要求をブロック形式のI/O要求に変換してI/Oスケジューラ34に渡す。
I/Oスケジューラ34は、ファイルシステム33より渡されたI/O要求に含まれるタスク識別子をもとにリクエストキュー41を生成または選択して、このリクエストキュー41にI/O要求を入れる。このとき、隣り合うセクタに対するI/O要求は同じ種類(読み出し要求、書き込み要求)毎に1つのI/Oリクエストと呼ばれるデータ構造にまとめられる。
2.I/Oリクエストのデバイスドライバ35への供給
I/Oスケジューラ34は、デバイスドライバ35にI/Oリクエストを渡すリクエストキュー41をラウンドロビン方式で切り替える。ラウンドロビン方式とは、デバイスドライバ35にI/Oリクエストを渡すリクエストキュー41を、順番にかつサイクリックに切り替える方式である。リクエストキュー41はタスク毎に作成されるので、以降の説明において「リクエストキュー41の切り替え」を「タスクの切り替え」と表記する。
I/Oスケジューラ34は、デバイスドライバ35にI/Oリクエストを渡すリクエストキュー41をラウンドロビン方式で切り替える。ラウンドロビン方式とは、デバイスドライバ35にI/Oリクエストを渡すリクエストキュー41を、順番にかつサイクリックに切り替える方式である。リクエストキュー41はタスク毎に作成されるので、以降の説明において「リクエストキュー41の切り替え」を「タスクの切り替え」と表記する。
図4は、このラウンドロビン方式によるタスクの切り替えのフローチャートである。
このフローチャートは繰り返し実行される。
なお、ラウンドロビンのためのタスクの切り替えの順序は、例えば、I/O要求が発生したタスク順などに設定される。タスクが終了すると、設定されたタスクの順序配列から終了したタスクが外される。
このフローチャートは繰り返し実行される。
なお、ラウンドロビンのためのタスクの切り替えの順序は、例えば、I/O要求が発生したタスク順などに設定される。タスクが終了すると、設定されたタスクの順序配列から終了したタスクが外される。
I/Oスケジューラ34はタスクを切り替えると(ステップS101)、タイマをスタートする(ステップS102)。
次に、I/Oスケジューラ34は、切り替えられたタスクのリクエストキュー41にI/Oリクエストが保持されているかどうかを調べ(ステップS103)、I/Oリクエストが保持されているならば、そのI/Oリクエストを選択してデバイスドライバ35に渡すことにより、そのI/Oリクエストが実行される(ステップS104)。
また、リクエストキュー41にI/Oリクエストが保持されていない場合、I/Oスケジューラ34は待機状態に入る(ステップS106)。I/Oスケジューラ34は待機状態に入ってから所定の時間内にリクエストキュー41に新たなI/Oリクエストが登録されると(ステップS103のYES)、そのI/Oリクエストを選択してデバイスドライバ35に渡す。所定の時間が経過してもリクエストキュー41に新たなI/Oリクエストが登録されなかった場合(ステップS107のYES)、I/Oスケジューラ34は、I/Oリクエストの選択先を次のタスクに切り替える(ステップS101)。リクエストキュー41から選択されたI/Oリクエストはリクエストキュー41から削除される。なお、待機状態はスライスタイムを超えて継続されることはない。
I/Oリクエストの実行完了後、I/Oスケジューラ34は、現在のタイマの値がリクエストキュー41に設定されたスライスタイムの値以上であるかどうかを調べる(ステップS105)。タイマの値がリクエストキュー41に設定されたスライスタイムの値未満であれば、I/Oスケジューラ34は、リクエストキュー41にI/Oリクエストが保持されているかどうかを再度調べ(ステップS103)、保持されていれば、そのI/Oリクエストを選択してデバイスドライバ35に渡す。また、タイマの値がリクエストキュー41に設定されたスライスタイムの値以上であれば、I/Oスケジューラ34はI/Oリクエストの選択先を次のタスクに切り替える(ステップS101)。以降も同様に上記の処理が繰り返される。
図5は本実施形態のI/Oスケジューリングの例を示す図である。
ここで、r1−x、r2−x、r3−xはそれぞれタスク1、タスク2、タスク3からのI/Oリクエストを示している。"−x"はI/Oリクエストの順位を示している。ラウンドロビンの順序はタスク1、タスク2、タスク3とする。STM1、STM2、STM3はタスク1、タスク2、タスク3にそれぞれ設定されたスライスタイムである。これらのSTM1、STM2、STM3は、各タスクそれぞれのブロックデバイス15に対するラウンドロビンのサイクル毎のI/O総データ量が互いにほぼ同じとなるようにタスク毎に予め決められた値である。各スライスタイムの長さの関係はSTM1>STM2とする。例えば、タスク1は録画、タスク2は早送り再生などである。すなわち、録画時に比べて早送り再生時の単位時間当たりのI/Oデータ量は大きいため、各タスクそれぞれのブロックデバイス15に対するラウンドロビンのサイクル毎のI/O総データ量が互いにほぼ同じとなるようにスライスタイムを決定した場合、早送り再生のためのタスクに割り当てられるスライスタイムは録画のためのタスクに割り当てられるスライスタイムよりも短くなる。
ここで、r1−x、r2−x、r3−xはそれぞれタスク1、タスク2、タスク3からのI/Oリクエストを示している。"−x"はI/Oリクエストの順位を示している。ラウンドロビンの順序はタスク1、タスク2、タスク3とする。STM1、STM2、STM3はタスク1、タスク2、タスク3にそれぞれ設定されたスライスタイムである。これらのSTM1、STM2、STM3は、各タスクそれぞれのブロックデバイス15に対するラウンドロビンのサイクル毎のI/O総データ量が互いにほぼ同じとなるようにタスク毎に予め決められた値である。各スライスタイムの長さの関係はSTM1>STM2とする。例えば、タスク1は録画、タスク2は早送り再生などである。すなわち、録画時に比べて早送り再生時の単位時間当たりのI/Oデータ量は大きいため、各タスクそれぞれのブロックデバイス15に対するラウンドロビンのサイクル毎のI/O総データ量が互いにほぼ同じとなるようにスライスタイムを決定した場合、早送り再生のためのタスクに割り当てられるスライスタイムは録画のためのタスクに割り当てられるスライスタイムよりも短くなる。
I/Oスケジューラ34は、タスク1のリクエストキュー41からI/Oリクエストを選択する。I/Oスケジューラ34は、スライスタイムSTM1内に、タスク1のリクエストキュー41から1つずつI/Oリクエストを選択してデバイスドライバ35に渡す。
図5の例では、3つのI/Oリクエストr1−1、r1−2、r1−3がタスク1のリクエストキュー41から順次選択された場合を示している。3つ目のI/Oリクエストr1−3が実行された後、タスク1のリクエストキュー41が一時的に空になったため、I/Oスケジューラ34は所定の時間を上限とする待機状態に入る。この例では、待機状態に入ってから所定の時間が経過する前にタスク1のリクエストキュー41内に新しいI/Oリクエストr1−4が新たに登録されたため、I/Oスケジューラ34はそのI/Oリクエストr1−4を選択する。この後、タスク1のリクエストキュー41が再び空になったため、I/Oスケジューラ34は再び待機状態に入る。そして所定の時間が経過してもタスク1のリクエストキュー41内に新しいI/Oリクエストが新たに登録されなかったため、I/Oスケジューラ34はタスクの切り替えを行う。
続いてI/Oスケジューラ34は、タスク2のリクエストキュー41からI/Oリクエストを選択する。この例では、タスク2は早送り再生など、単位時間当たりのI/Oデータ量が比較的大きいタスクである場合を示している。このため、タスク2のリクエストキュー41からはスライスタイムSTM2の期間、連続してI/Oリクエストr2−1、r2−2、r2−3、r2−4、r2−5が選択される。ここで、最後のI/Oリクエストr2−5の実行が終了する前にスライスタイムSTM2が経過している。I/Oスケジューラ34は、このことを判定するとタスクの切り替えを行う。
続いてI/Oスケジューラ34は、タスク3のリクエストキュー41からI/Oリクエストを選択する。
以上のように本実施形態のI/Oスケジューリングによれば、各タスクそれぞれのブロックデバイス15に対するラウンドロビンのサイクル毎のI/O総データ量が互いにほぼ同じとなるようにタスク毎のスライスタイムを設定した。これにより、各タスク間でブロックデバイスに対するI/Oリソースを共有するにあたって、タスク間でのI/Oデータ量の不均一を軽減できる。したがって、例えば、早送り再生やダイジェスト再生等の大量のデータをブロックデバイスから読み出す処理と同時に放送番組の録画を良好に行うことができるなど、録画再生に関するマルチタスク処理を良好に行うことができる。
また、本実施形態のI/Oスケジューリングによれば、選択中のタスクのリクエストキュー41が空である場合には、スライスタイムの経過を待たずにタスクの切り替えが行われることから、I/Oリソースの利用効率を向上させることができる。このような面からも、録画再生に関するマルチタスク処理を良好に行うことができる。
<変形例1>
次に、上記の実施形態の変形例を説明する。
上記の実施形態では、図5で説明したように、タスク2の最後のI/Oリクエストr2−5の実行が終了する前にスライスタイムSTM2が経過していた場合にタスクの切り替えだけが行われることとした。このI/Oリクエストr2−5の実行終了時点のスライスタイムSTM2に対する超過分は、次のタスクの処理の開始を遅らせる時間となる。ラウンドロビンのサイクル毎にこのような遅延が発生すると、次のタスクの処理が開始されるタイミングの遅延時間が次第に累積し、処理のリアルタイム性が低下するおそれがある。
次に、上記の実施形態の変形例を説明する。
上記の実施形態では、図5で説明したように、タスク2の最後のI/Oリクエストr2−5の実行が終了する前にスライスタイムSTM2が経過していた場合にタスクの切り替えだけが行われることとした。このI/Oリクエストr2−5の実行終了時点のスライスタイムSTM2に対する超過分は、次のタスクの処理の開始を遅らせる時間となる。ラウンドロビンのサイクル毎にこのような遅延が発生すると、次のタスクの処理が開始されるタイミングの遅延時間が次第に累積し、処理のリアルタイム性が低下するおそれがある。
そこで、スライスタイムからの超過分をデフォルトのスライスタイムから減算した時間を、ラウンドロビンの次サイクルのスライスタイムとして設定し、その次のサイクルではデフォルトのスライスタイムに戻すことを繰り返すようにする。すなわち、ラウンドロビンの2サイクルにおいて、最初の1サイクルで、デフォルトのスライスタイムからの超過分を取得し、次の1サイクルでは、その超過分をデフォルトのスライスタイムから減算した時間を採用する。そして、この2サイクルを繰り返す。これにより、スライスタイムからの超過分の累積によるマルチタスク処理への悪影響を回避できる。
図6は本変形例でのI/Oスケジューリングの例を示す図である。
図6は上記ラウンドロビンの2サイクル分のI/Oスケジューリングを示している。
r1−x、r2−x、r3−xはそれぞれタスク1、タスク2、タスク3のI/Oリクエストを示している。ラウンドロビンの順序はタスク1、タスク2、タスク3とする。STM1、STM2、STM3は各タスクそれぞれのブロックデバイス15に対するラウンドロビンのサイクル毎のI/O総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたデフォルトのスライスタイムである。
図6は上記ラウンドロビンの2サイクル分のI/Oスケジューリングを示している。
r1−x、r2−x、r3−xはそれぞれタスク1、タスク2、タスク3のI/Oリクエストを示している。ラウンドロビンの順序はタスク1、タスク2、タスク3とする。STM1、STM2、STM3は各タスクそれぞれのブロックデバイス15に対するラウンドロビンのサイクル毎のI/O総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたデフォルトのスライスタイムである。
ラウンドロビンの上記2サイクルの1サイクル目において、I/Oスケジューラ34は、タスク2のリクエストキュー41から選択したI/Oリクエストの実行が終了した時点でデフォルトのスライスタイムSTM2を超過している場合には、その超過時間を算出する。すなわち、図6の例では、I/Oリクエストr2−5の実行が終了した時点でのデフォルトのスライスタイムSTM2からの超過時間として算出される。
I/Oスケジューラ34は、上記2サイクルの2サイクル目において、デフォルトのスライスタイムSTM2から上記の超過時間を減算した時間を、補正されたスライスタイムSTM2´として、デフォルトのスライスタイムSTM2に代えて採用する。これにより早送り再生など高いレートでブロックデバイス15に対するI/O処理を行うタスクの次のタスクの処理が開始されるタイミングの遅延時間の累積を防止でき、タスク間でのI/Oデータ量の不均一をより一層改善できる。
本発明は上述の実施形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更され得る。
11…CPU
12…メインメモリ
13…プログラム記憶部
14…番組受信部
15…ブロックデバイス
16…番組再生部
31…OS
32…アプリケーションプログラム
33…ファイルシステム
34…I/Oスケジューラ
35…デバイスドライバ
41…リクエストキュー
100…録画再生装置
12…メインメモリ
13…プログラム記憶部
14…番組受信部
15…ブロックデバイス
16…番組再生部
31…OS
32…アプリケーションプログラム
33…ファイルシステム
34…I/Oスケジューラ
35…デバイスドライバ
41…リクエストキュー
100…録画再生装置
Claims (5)
- 録画用の記録媒体として用いられるブロックデバイスと、
前記ブロックデバイスに対する録画及び再生に関する一つ一つの処理をタスクとして、複数の前記タスクが実行されるとき、前記各タスクそれぞれの前記ブロックデバイスに対するラウンドロビンのサイクル毎のI/O総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたスライスタイムを用いて、前記ブロックデバイスに対するI/Oスケジューリングを行う制御部と
を具備する録画再生装置。 - 請求項1に記載の録画再生装置であって、
前記制御部は、選択中のタスクのリクエストキューが空である場合には、前記スライスタイムの経過を待たずにタスクの切り替えを行う
録画再生装置。 - 請求項1または2に記載の録画再生装置であって、
前記制御部は、I/Oリクエストの実行終了時点の前記スライスタイムからの超過分をデフォルトのスライスタイムから減算した時間を、ラウンドロビンの次サイクルのスライスタイムとして設定し、その次のサイクルでは前記デフォルトのスライスタイムに戻す
録画再生装置。 - 録画用の記録媒体として用いられるブロックデバイスに対する録画及び再生に関する一つ一つの処理をタスクとして、複数の前記タスクが実行されるとき、前記各タスクそれぞれの前記ブロックデバイスに対するラウンドロビンのサイクル毎のI/O総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたスライスタイムを用いて、前記ブロックデバイスに対するI/Oスケジューリングを行う
I/Oスケジューリング方法。 - 録画用の記録媒体として用いられるブロックデバイスに対する録画及び再生に関する一つ一つの処理をタスクとして、前記各タスクそれぞれの前記ブロックデバイスに対するラウンドロビンのサイクル毎のI/O総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたスライスタイムを用いて、前記ブロックデバイスに対するI/Oスケジューリングを行う制御部としてコンピュータを動作させるプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010226674A JP2012079272A (ja) | 2010-10-06 | 2010-10-06 | 録画再生装置、i/oスケジューリング方法、及びプログラム |
US13/241,717 US8615165B2 (en) | 2010-10-06 | 2011-09-23 | Video-recording and replaying apparatus, I/O scheduling method, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010226674A JP2012079272A (ja) | 2010-10-06 | 2010-10-06 | 録画再生装置、i/oスケジューリング方法、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012079272A true JP2012079272A (ja) | 2012-04-19 |
Family
ID=45925210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010226674A Pending JP2012079272A (ja) | 2010-10-06 | 2010-10-06 | 録画再生装置、i/oスケジューリング方法、及びプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US8615165B2 (ja) |
JP (1) | JP2012079272A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016194171A1 (ja) * | 2015-06-03 | 2016-12-08 | 株式会社日立製作所 | ストレージシステム |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9866990B2 (en) * | 2014-05-28 | 2018-01-09 | Technical Consumer Products, Inc. | System and method for simultaneous wireless control of multiple peripheral devices |
TWI574158B (zh) * | 2014-12-01 | 2017-03-11 | 旺宏電子股份有限公司 | 具應用程式資訊感知的資料處理方法以及系統 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007519103A (ja) | 2004-01-08 | 2007-07-12 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | マルチプロセッサシステムにおけるリソース管理 |
KR101395504B1 (ko) * | 2007-10-25 | 2014-05-14 | 엘지전자 주식회사 | 영상표시기기 및 영상재생 방법 |
JP5676845B2 (ja) | 2008-11-06 | 2015-02-25 | イグジット−キューブ,インク. | コンピュータシステム、カーネルスケジューリングシステム、リソース割当方法及びプロセス実行共有方法 |
-
2010
- 2010-10-06 JP JP2010226674A patent/JP2012079272A/ja active Pending
-
2011
- 2011-09-23 US US13/241,717 patent/US8615165B2/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016194171A1 (ja) * | 2015-06-03 | 2016-12-08 | 株式会社日立製作所 | ストレージシステム |
Also Published As
Publication number | Publication date |
---|---|
US8615165B2 (en) | 2013-12-24 |
US20120087632A1 (en) | 2012-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8141088B2 (en) | Multithreaded processor | |
KR100628492B1 (ko) | 실시간 동작 수행방법 및 시스템 | |
US8161491B2 (en) | Soft real-time load balancer | |
JP4519082B2 (ja) | 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置 | |
CN100483351C (zh) | 信息处理装置、进程控制方法、以及计算机程序 | |
WO2000059216A1 (en) | Trick playback of digital video data | |
KR100927190B1 (ko) | 디스크 스케줄링 방법 및 장치 | |
WO2016078259A1 (zh) | 一种基于嵌入式文件系统的流式数据读取方法 | |
JP5698156B2 (ja) | 復号装置、復号方法、および編集装置 | |
EP0797897A1 (en) | Method for making a multimedia application executable on hardware platforms with various different resource levels, a physical record containing such application, and an apparatus for executing such application | |
KR20060008896A (ko) | 자원 관리 방법 및 장치 | |
US20060288397A1 (en) | Stream controller | |
WO2017008477A1 (zh) | 一种集群视频分析方法和系统 | |
JP5825261B2 (ja) | 情報処理装置、その方法及びそのプログラム | |
JP2012079272A (ja) | 録画再生装置、i/oスケジューリング方法、及びプログラム | |
JP2007219577A (ja) | データ処理装置、データ処理方法、データ処理方法のプログラム及びデータ処理方法のプログラムを記録した記録媒体 | |
US7861012B2 (en) | Data transmitting device and data transmitting method | |
JPH10240548A (ja) | タスクスケジューリング装置及び方法 | |
WO1999013647A1 (fr) | Procede de decodage et support d'enregistrement ou est enregistre un programme de decodage | |
JP2002049497A (ja) | データ処理方法および処理装置 | |
KR100719416B1 (ko) | 데이터 처리 장치 및 데이터 처리 방법 | |
To et al. | Interactive Video-on-demand Systems: Resource Management and Scheduling Strategies | |
JP3975795B2 (ja) | タスク管理装置、同方法およびプログラム | |
WO2007043142A1 (ja) | ジョブ管理装置およびジョブ管理プログラム | |
US20080091438A1 (en) | Audio signal decoder and resource access control method |