JP2008097312A - Multiplexer and information processor - Google Patents
Multiplexer and information processor Download PDFInfo
- Publication number
- JP2008097312A JP2008097312A JP2006278185A JP2006278185A JP2008097312A JP 2008097312 A JP2008097312 A JP 2008097312A JP 2006278185 A JP2006278185 A JP 2006278185A JP 2006278185 A JP2006278185 A JP 2006278185A JP 2008097312 A JP2008097312 A JP 2008097312A
- Authority
- JP
- Japan
- Prior art keywords
- bandwidth
- channel
- request
- time frame
- requests
- 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.)
- Granted
Links
Images
Abstract
Description
この発明は、複数の要求元からのリクエストを多重化する技術に関する。 The present invention relates to a technique for multiplexing requests from a plurality of request sources.
オペレーティングシステムは、動画像や音声などの連続メディアを利用するリアルタイムアプリケーションや、WWW(World Wide Web)サーバやデータベースサーバからのファイル転送、ワードプロセッサなどのインタラクティブなアプリケーションなど、幅広いアプリケーションをサポートする必要がある。これらのアプリケーションは、ハードディスクなどの記憶装置に対するアクセスを伴うが、サービス品質(QoS)の要求は、それぞれ異なっている。テキスト編集などのインタラクティブなアプリケーションは、リクエストの平均レスポンスタイムが最小であることを要求する。一方、ファイル転送はスループットが最大であることを要求する。また、ビデオや音声などのマルチメディアアプリケーションは、動画のフレームがデッドラインよりも前に到着することを要求するが、フレーム落ちが生じることをある程度許容する。 The operating system must support a wide range of applications, including real-time applications that use continuous media such as moving images and audio, file transfers from WWW (World Wide Web) servers and database servers, and interactive applications such as word processors. . These applications involve access to storage devices such as hard disks, but the quality of service (QoS) requirements are different. Interactive applications such as text editing require that the average response time of requests is minimal. On the other hand, file transfer requires maximum throughput. Also, multimedia applications such as video and audio require that frames of moving images arrive before the deadline, but to some extent allow frame dropping.
このようなサービス品質に対する幅広い要求に応えるためには、ディスク装置において個々のアプリケーションのリクエストを適切にスケジューリングすることが必要である。ディスクは、一般に、シリンダ、トラックおよびセクタの組み合わせで論理ブロックアドレスが付けられている。ディスクのアクセス時間は、ディスクヘッドがアクセス対象のトラック位置に移動するのに要するシーク時間、アクセス対象のセクタがディスクヘッドの位置に来るまで待つ回転待ち時間、およびアクセス対象のセクタから読み取ったデータを転送するのにかかるデータ転送時間を足し合わせたものである。ディスクアクセス時間の中で特に支配的なものはシーク時間、すなわちディスクヘッドの移動にかかる時間であり、これをいかにして減らすかがディスク性能を決める。 In order to meet such a wide range of service quality requirements, it is necessary to appropriately schedule requests for individual applications in the disk device. A disk is generally assigned a logical block address by a combination of cylinders, tracks and sectors. The disk access time is determined by the seek time required for the disk head to move to the track position to be accessed, the rotation waiting time until the sector to be accessed reaches the disk head position, and the data read from the sector to be accessed. It is the sum of the data transfer time taken to transfer. A particularly dominant disk access time is a seek time, that is, a time required for moving the disk head, and how to reduce this determines the disk performance.
代表的なディスクスケジューリング方式として、SSTF(Shortest Seek Time First)アルゴリズムやエレベータアルゴリズムがある。SSTFアルゴリズムでは、シーク時間順、すなわちアームの移動が小さいリクエストから順に処理するものであり、ディスクヘッドの移動距離を小さくすることができる。また、エレベータアルゴリズムでは、アームが一方向に動くようにリクエストの処理順序を変え、ディスクヘッドをディスクの内周から外周の方向、あるいは外周から内周の方向に連続的に移動させ、端に到達するまではディスクヘッドの移動方向を変えないようにする。 Typical disk scheduling methods include SSTF (Shortest Seek Time First) algorithm and elevator algorithm. In the SSTF algorithm, processing is performed in order of seek time, that is, in order from the request with the smallest arm movement, and the movement distance of the disk head can be reduced. In the elevator algorithm, the request processing order is changed so that the arm moves in one direction, and the disk head is continuously moved from the inner circumference to the outer circumference or from the outer circumference to the inner circumference to reach the end. Do not change the moving direction of the disk head until this is done.
オペレーティングシステムは、幅広いアプリケーションの様々なサービス品質要求に応える必要があり、ディスク装置からのデータ転送の品質は個々のアプリケーションのサービス品質要求に合ったものでなければならない。しかし、個々のアプリケーションのサービス品質を最優先にリクエストをスケジューリングすると、シーク時間や回転待ち時間などのディスクのアクセス時間が増大し、ディスク性能が落ち、ディスク装置からのデータ転送の帯域幅が減少することになる。一方、ディスク性能を最大化するスケジューリング方式を採用すると、個々のアプリケーションのリクエストがそのサービス品質要求を無視する形でスケジューリングされるため、アプリケーションのサービス品質要求を満足させることができなくなる。 The operating system needs to meet various service quality requirements for a wide range of applications, and the quality of data transfer from the disk device must meet the service quality requirements of the individual applications. However, scheduling requests with the highest priority on the quality of service of each application increases disk access time such as seek time and rotation latency, reduces disk performance, and reduces data transfer bandwidth from disk devices. It will be. On the other hand, if a scheduling method that maximizes the disk performance is adopted, requests for individual applications are scheduled in a manner that ignores the service quality requirements, so that the service quality requirements of the applications cannot be satisfied.
サービス品質要求の異なる複数の要求元からのリクエストをスケジューリングして実行する際、複数の要求元からのリクエストの多重化処理が必要になる。リクエストの多重化処理を効率的に行わなければ、リクエストの実行に支障を来す。また、リクエストの多重化に当たって、複数の要求元の間で公平性を担保することも必要である。 When scheduling and executing requests from a plurality of request sources having different service quality requirements, it is necessary to multiplex requests from the plurality of request sources. If the request multiplexing process is not performed efficiently, the execution of the request will be hindered. Further, in multiplexing requests, it is necessary to ensure fairness among a plurality of request sources.
本発明はこうした課題に鑑みてなされたものであり、その目的は、複数の要求元からのリクエストを公平に多重化することのできる多重化処理技術を提供することにある。 The present invention has been made in view of such problems, and an object of the present invention is to provide a multiplexing processing technique capable of fairly multiplexing requests from a plurality of request sources.
上記課題を解決するために、本発明のある態様のマルチプレクサは、複数のチャネルと出力ポートとを含む。前記チャネルは、サービスの要求元毎に設けられ、各要求元からリクエストを処理するための帯域幅の予約を受け付け、各要求元からリクエストが入力される。前記出力ポートは、複数の前記チャネルから渡されるリクエストを出力する。複数の要求元からのリクエストを多重化するための時間単位であるタイムフレームが設けられ、あるタイムフレームにおいて、他のチャネルから出力されるリクエストによって、予約帯域幅の少なくとも一部が横取りされたチャネルは、次のタイムフレームにおいて、横取りされた予約帯域幅の補償を受ける。 In order to solve the above problems, a multiplexer according to an aspect of the present invention includes a plurality of channels and an output port. The channel is provided for each request source of the service, accepts a bandwidth reservation for processing the request from each request source, and receives a request from each request source. The output port outputs requests passed from a plurality of the channels. A channel in which a time frame that is a time unit for multiplexing requests from multiple request sources is provided, and at least a part of the reserved bandwidth is intercepted by a request output from another channel in a certain time frame Will be compensated for the intercepted reserved bandwidth in the next time frame.
本発明の別の態様は、情報処理装置である。この装置は、サービスの1つ以上の要求元から入力されるリクエストを出力するマルチプレクサと、前記マルチプレクサから出力されたリクエストをスケジューリングして実行するスケジューラとを含む。前記マルチプレクサは、複数のチャネルと出力ポートとを含む。前記チャネルは、前記要求元毎に設けられ、各要求元からリクエストを処理するための帯域幅の予約を受け付け、各要求元からリクエストが入力される。前記出力ポートは、複数の前記チャネルから渡されるリクエストを出力する。複数の要求元からのリクエストを多重化するための時間単位であるタイムフレームが設けられ、あるタイムフレームにおいて、他のチャネルから出力されるリクエストによって、予約帯域幅の少なくとも一部が横取りされたチャネルは、次のタイムフレームにおいて、横取りされた予約帯域幅の補償を受ける。 Another aspect of the present invention is an information processing apparatus. The apparatus includes a multiplexer that outputs a request input from one or more request sources of a service, and a scheduler that schedules and executes the request output from the multiplexer. The multiplexer includes a plurality of channels and an output port. The channel is provided for each request source, receives a bandwidth reservation for processing a request from each request source, and receives a request from each request source. The output port outputs requests passed from a plurality of the channels. A channel in which a time frame that is a time unit for multiplexing requests from multiple request sources is provided, and at least a part of the reserved bandwidth is intercepted by a request output from another channel in a certain time frame Will be compensated for the intercepted reserved bandwidth in the next time frame.
ここで、「リクエスト」は、ハードディスクなどのストレージデバイスに対するリクエストに限らず、プロセッサ、メモリ、周辺機器などの各種のデバイスに対するリクエストや、ネットワークを経由したサーバなどのデバイスに対するリクエストを含む。また「スケジューリング」は、ディスクスケジューリング以外に、プロセッサ、メモリ、周辺機器などの各種のデバイスに対するアクセススケジューリングや、ネットワークを経由したサーバなどのデバイスに対するアクセススケジューリングを含む。 Here, the “request” is not limited to a request for a storage device such as a hard disk but includes a request for various devices such as a processor, a memory, and a peripheral device, and a request for a device such as a server via a network. In addition to disk scheduling, “scheduling” includes access scheduling for various devices such as processors, memories, and peripheral devices, and access scheduling for devices such as servers via a network.
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造などの間で変換したものもまた、本発明の態様として有効である。 It should be noted that any combination of the above-described constituent elements and a representation of the present invention converted between a method, an apparatus, a system, a computer program, a data structure, etc. are also effective as an aspect of the present invention.
本発明によれば、複数の要求元からのリクエストを公平に多重化してサービス品質を向上させることができる。 According to the present invention, it is possible to improve the quality of service by fairly multiplexing requests from a plurality of request sources.
[1]構成
図1は、ストレージサブシステム100の構成を説明する図である。ストレージサブシステム100は、オペレーティングシステム140内にファイルシステム130とともに設けられる。
[1] Configuration FIG. 1 is a diagram illustrating the configuration of the
ファイルシステム130は、ストレージインタフェース120を介してストレージサブシステム100との間でコネクションを構築し、構築されたコネクションを用いて、ストレージデバイス150に対するアクセスリクエストをストレージサブシステム100に供給する。ファイルシステム130はストレージサブシステム100と複数のコネクションを構築することができる。ファイルシステム130は、アプリケーションタイプ毎にコネクションを設定してもよい。アプリケーションタイプとして、マルチメディアアプリケーション、リアルタイムアプリケーション、インタラクティブアプリケーション、ファイル転送などがある。
The
ストレージサブシステム100は、ストレージサービスプロバイダ60、SCSI(Small Computer System Interface)クラスドライバ50、リクエストスケジューラ40、およびデバイスドライバ10を含む。ストレージサービスプロバイダ60は、ファイルシステム130からのコネクションを管理し、ストレージへのアクセスサービスをファイルシステム130に提供する。ストレージサービスプロバイダ60は、アプリケーションタイプやアプリケーションからの要求によってコネクション毎にストレージデバイス150のデータ転送の帯域幅を予約することができる。
The
SCSIクラスドライバ50は、SCSI規格にしたがったドライバであり、各コネクションからのストレージデバイス150に対するアクセスリクエストを発行し、リクエストスケジューラ40に供給する。
The
リクエストスケジューラ40は、ストレージマルチプレクサ30とディスクスケジューラ20を含み、1以上のコネクションからのリクエストを多重化してデバイスドライバ10に与える。
The
デバイスドライバ10は、ストレージデバイス150のデバイス情報をもつデバイス固有のドライバである。デバイスドライバ10は、ディスクスケジューラ20から渡されるリクエストを実行して、ストレージデバイス150に対するデータの読み書きを行い、SCSIクラスドライバ50に結果を通知する。
The
図2は、リクエストスケジューラ40の構成図である。リクエストスケジューラ40は、ストレージデバイス150に対するリクエストを多重化し、スケジュールする。同図は機能に着目したブロック図を描いており、これらの機能ブロックはハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現することができる。
FIG. 2 is a configuration diagram of the
リクエストスケジューラ40は、ストレージマルチプレクサ(以下、単に「マルチプレクサ」と呼ぶ)30とディスクスケジューラ20を含む。マルチプレクサ30は、各コネクションからのリクエストを後述の「タイムフレーム」(time-frame)単位で多重化するとともに、各コネクションの帯域幅を確保する。ディスクスケジューラ20は、マルチプレクサ30から供給されたリクエストの実行順序をタイムフレーム単位でスケジューリングしてデバイスドライバ10に供給する。
The
マルチプレクサ30は、各コネクションのリクエストが入力される複数のチャネル(符号31、32)と、出力ポート42と、タイマ38と、空き帯域幅ポート44とを含む。
The
チャネルは、マルチプレクサ30内に設けられた、リクエストが入出力される論理的な経路であり、チャネル内のポートの開閉によりマルチプレクサ30に入力されたリクエストの出力を制御する。チャネルの帯域幅は、そのチャネルからの最大データ転送レートで与えられる。チャネルには、メインチャネル31と予約チャネル32の二種類がある。
The channel is a logical path provided in the
メインチャネル31は、帯域幅を予約しないコネクション用のチャネルである。メインチャネル31からのデータ転送には、予約可能な総帯域幅(後述の「総予約可能帯域幅net_bw」)の内、残存する未予約帯域が用いられる。予約チャネル32が全く生成されなかった場合、メインチャネル31はデータ転送のために全帯域を用いることができる。
The
予約チャネル32は、帯域幅を予約する各コネクション毎に設けられる。予約チャネル32は、帯域幅を予約するコネクションが構築される度にランタイムで生成され、コネクションの消滅とともに破棄される。
The
メインチャネル31はチャネルポート33とチャネルキュー35をもつ。同様に、予約チャネル32もチャネルポート34とチャネルキュー36をもつ。各チャネル31、32のチャネルポート33、34にはSCSIクラスドライバ50から各コネクションのリクエストが入力される。チャネルポート33、34が開いている場合、チャネルポート33、34に入力されたリクエストは、チャネルキュー35、36にキューイングされることなく、直接、出力ポート42に送られる。チャネルポート33、34は、予約された量のリクエストがポートを通過した後、閉じられる。チャネルポート33、34が閉じられている場合、リクエストは、チャネルキュー35、36にキューイングされる。
The
各チャネルキュー35、36は、現在のタイムフレームに対してチャネルポート33、34が閉じられている間、チャネルポート33、34に入力されたリクエストを蓄積する。予約チャネル32のチャネルポート34は、各タイムフレームの開始時点で開き、予約された量のリクエストがポートを通過した時点で閉じることで、予約された量のリクエストだけが出力ポート42に送られる。メインチャネル31のチャネルポート33も、各タイムフレームの開始時点で開き、予約可能な総帯域幅の内、未予約帯域幅内に収まる量のリクエストがポートを通過した時点で閉じることで、未予約帯域範囲内の量のリクエストだけが出力ポート42に送られる。
Each
タイマ38は1タイムフレーム分の時間経過をクロックによって計測しており、1タイムフレームの経過をメインチャネル31、予約チャネル32、および出力ポート42に通知する。タイマ38からの通知を受けて、メインチャネル31、予約チャネル32、および出力ポート42において、新しいタイムフレームの開始に当たり、各種パラメータが適宜リセットされる。タイマ38から1タイムフレームの経過を通知されると、各チャネル31、32においてチャネルポート33、34が開かれ、まず各チャネル31、32のチャネルキュー35、36にキューイングされたリクエストが開かれたチャネルポート33、34から出力ポート42に送られる。
The
出力ポート42は、各チャネル31、32から渡されたリクエストを多重化してディスクスケジューラ20に送る。これにより、マルチプレクサ30に入力されたリクエストは、出力ポート42を通じて多重化されてディスクスケジューラ20のディスクスケジューリング用のキュー(以下、「ディスクスケジューラキュー」という)22に渡される。なお、タイムフレームの開始時点で、チャネルキュー35、36で待ち状態になっていたリクエストは、開かれたチャネルポート33、34から出力ポート42に出力され、出力ポート42を経由してディスクスケジューラキュー22に送られる。ディスクスケジューラキュー22には、タイムフレーム単位でリクエストがキューイングされる。同図では、タイムフレームnではリクエスト24a〜24cが、タイムフレームn+1ではリクエスト25a〜25dがキューイングされている様子が模式的に示されている。
The
ディスクスケジューラ20は、マルチプレクサ30からフレーム単位で多重化されたリクエストを受け取り、ディスクスケジューラキュー22にキューイングし、フレーム毎にフレーム内のリクエストの実行順序をスケジューリングする。ディスクスケジューラ20は、ディスク性能を最大化するために、フレーム内の各リクエストのディスクアクセスパターンを考慮して、スケジューリングを行い、スケジューリングされたリクエストをデバイスドライバ10に供給する。
The
ディスクスケジューラキュー22にリクエストが全くないとき、ディスクスケジューラ20は、空き帯域幅ポート44にリクエストを要求する。ディスクスケジューラ20からの要求を受けて、マルチプレクサ30は、リクエストをキューイングしている最も高い優先度のチャネルを選び、そのチャネルにキューイングされたリクエストを取り出して空き帯域幅ポート44に渡す。ディスクスケジューラ20は、空き帯域幅ポート44からリクエストを受け取って実行に移す(すなわちリクエストをデバイスドライバ10に渡す)。
When there is no request in the
以上述べたように、マルチプレクサ30に入力されたリクエストは次の3つのパスのいずれかを通ってディスクスケジューラ20に渡される。
(1)チャネルポート33、34が開いているとき、リクエストがチャネルキュー35、36にキューイングされることなく(チャネルキュー35、36をバイパスして)、直接、出力ポート42に渡され、出力ポート42からディスクスケジューラキュー22にキューイングされるパス。
(2)チャネルポート33、34が閉じているとき、リクエストがチャネルキュー35、36にいったんキューイングされた後、次のタイムフレームの始まりにおいて、開かれたチャネルポート33、34から出力ポート42に渡され、出力ポート42からディスクスケジューラキュー22にキューイングされるパス。
(3)ディスクスケジューラキュー22が空いているとき、優先度の高いチャネルのチャネルキュー35、36にキューイングされたリクエストが空き帯域幅ポート44に渡され、ディスクスケジューラキュー22にキューイングされることなく、実行されるパス。
As described above, the request input to the
(1) When the
(2) When the
(3) When the
図3(a)、(b)を参照して、メインチャネル31および予約チャネル32の内部構成とリクエストの入出力制御を詳しく説明する。メインチャネル31と予約チャネル32の内部構成と入出力制御は共通しているので、まとめて説明する。図3(a)に示すように、チャネル31、32のチャネルポート33、34は、入力側ポート45と出力側ポート46を含む。入力側ポート45、出力側ポート46はそれぞれ開端子と閉端子をもち、どちらかに切り替えることでポートが開閉される。
The internal configuration of the
チャネル31、32の入力側ポート45と出力側ポート46の開閉状態により、図3(b)に示すような3通りのチャネルポートの状態が作られる。状態Aは、入力側ポート45が「開」かつ出力側ポート46が「閉」の状態であり、入力側ポート45の開端子に入力されたリクエストは、出力側ポート46の閉端子を通ってチャネルキュー35、36にキューイングされる。
Depending on the open / closed states of the
状態Bは、入力側ポート45が「開」かつ出力側ポート46が「開」の状態であり、入力側ポート45の開端子に入力されたリクエストは、出力側ポート46の開端子を通って出力ポート42に出力される(チャネルキュー35、36をバイパスする)。
State B is a state in which the
状態Cは、入力側ポート45が「閉」かつ出力側ポート46が「開」の状態であり、入力側ポート45が閉じられているため、新しいリクエストが入力されることはなく、チャネルキュー35、36にキューイングされたリクエストが入力側ポート45の閉端子に入力され、出力側ポート46の開端子を通って出力ポート42に出力される。
In state C, the
「チャネルポート33、34が閉じている」とは、状態Aをいう。このとき、入力されたリクエストはチャネルキュー35、36にキューイングされる。
“
「チャネルポート33、34が開いている」とは、状態Bと状態Cの2通りを指す。新しいタイムフレームが始まると、最初は、チャネルポート33、34は状態Cになって、チャネルキュー35、36にキューイングされたリクエストがチャネルポート33、34から出力ポート42に出力される。この後、チャネルの帯域幅がまだ残っていれば、チャネルポート33、34は、状態Bになり、新しく到着するリクエストがチャネルキュー35、36をバイパスしてチャネルポート33、34から出力ポート42に出力される。もし、状態Cにおいてキューイングされたリクエストをチャネルポート33、34から出力したことにより、チャネルの帯域幅を使い切った場合は、チャネルポート33、34は、状態Aになり、新しく到着するリクエストはチャネルキュー35、36にキューイングされる。
“
このように、チャネルポート33、34は、入力側ポート45と出力側ポート46を内部構成としてもち、それらの開閉状態により、リクエストの入出力経路が制御されるが、以下の説明では、簡単のため、内部構成とリクエストの入出力経路の制御動作については触れずに、出力側ポート46の開閉状態のみに注目して、チャネルポート33、34の開閉状態を説明していることに留意する。
As described above, the
[2]パラメータ
図2のリクエストスケジューラ40で用いられる各種パラメータを説明する。
[2.1]タイムフレーム
タイムフレームは、マルチプレクサ30において帯域幅が計算される時間単位である。タイムフレームは、ディスクスケジューラ20において多重化されるリクエストを区切るタイムウインドウでもある。異なるタイムフレームで発行されたリクエスト間では順番が入れ替えられることはなく、発行された順序で実行される。一つのタイムフレーム内で発行されたリクエスト間ではディスクスケジューラ20において順番が入れ替えられることがある。
[2] Parameters Various parameters used in the
[2.1] Time Frame The time frame is a time unit in which the bandwidth is calculated in the
タイムフレームはシステム内で可変の値である。タイムフレームが長いほどスループットが良くなり、タイムフレームが短いほど平均レスポンスタイムがより良くなる。レスポンスタイムとスループットの間にはトレードオフがあり、スケジュール対象のコネクションの種類やその組み合わせなどによってタイムフレームを適宜変えることができる。 The time frame is a variable value in the system. The longer the time frame, the better the throughput, and the shorter the time frame, the better the average response time. There is a trade-off between response time and throughput, and the time frame can be appropriately changed depending on the type of connection to be scheduled and the combination thereof.
[2.2]予約パラメータ
予約パラメータは、帯域幅予約に使われるパラメータであり、帯域幅予約の変更に伴って調整される。以下の帯域幅の定義は、タイムフレームの値によってスケーリングされることに留意する。予約パラメータには以下のものがある。
[2.2] Reservation parameter The reservation parameter is a parameter used for bandwidth reservation, and is adjusted in accordance with the change of the bandwidth reservation. Note that the following bandwidth definition is scaled by the value of the time frame. The reservation parameters are as follows.
[2.2.1]最小デバイス帯域幅と最大デバイス帯域幅
ストレージデバイス150が提供することができるデータ転送レートをデバイス帯域幅という。ディスクのシークタイムが変動することから、ストレージデバイス150は、単位時間当たりに同じ量のデータ転送を実行できるとは限らない。データ転送レートは、最小値と最大値の間で変動する。最小デバイス帯域幅は、ストレージデバイス150が提供できる最小の帯域幅である。ワーストケースの評価にもとづいて、デバイスドライバ10は最小デバイス帯域幅を求めて通知することができる。マルチプレクサ30は、予約された帯域幅の合計が最小デバイス帯域幅を超えない範囲で、帯域幅予約を許可する。最大デバイス帯域幅は、ストレージデバイス150がベストの条件下で提供可能な持続的なデータ転送レートである。
[2.2.1] Minimum Device Bandwidth and Maximum Device Bandwidth The data transfer rate that can be provided by the
[2.2.2]総予約可能帯域幅、総予約帯域幅、および総未予約帯域幅
総予約可能帯域幅net_bwは、1つ以上のチャネルによって予約可能な総帯域幅であり、最小デバイス帯域幅に等しい。総予約帯域幅net_reservedは、すべてのチャネルの予約帯域幅の合計である。総未予約帯域幅net_unreservedは、予約可能な残存する帯域幅であり、総予約可能帯域幅net_bwから総予約帯域幅net_reservedを引いた値に等しい。
[2.2.2] Total Reservable Bandwidth, Total Reserved Bandwidth, and Total Unreserved Bandwidth Total reserved bandwidth net_bw is the total bandwidth that can be reserved by one or more channels, and is the minimum device bandwidth Equal to width. The total reserved bandwidth net_reserved is the total reserved bandwidth of all channels. The total unreserved bandwidth net_unreserved is a remaining bandwidth that can be reserved, and is equal to a value obtained by subtracting the total reserved bandwidth net_reserved from the total reserved bandwidth net_bw.
[2.3]タイムフレームパラメータ
タイムフレームパラメータは、マルチプレクサ30において用いられるパラメータである。タイムフレームパラメータは、すべてのチャネルに共通するパラメータであり、タイムフレーム毎に変化する。タイムフレームパラメータには以下のものがある。
[2.3] Time Frame Parameter The time frame parameter is a parameter used in the
[2.3.1]仮空き帯域幅net_credit
どのチャネルからも要求されないディスク帯域幅は、仮空き帯域幅net_creditと呼ばれる。帯域幅を予約したコネクションは、必ずしも各タイムフレームで予約した帯域幅を利用するとは限らない。帯域幅を予約したコネクションであっても、タイムフレーム内で帯域幅を要求しない、すなわちリクエストを発行しないことがあり、空き帯域幅が生じる。現タイムフレームに対する仮空き帯域幅net_creditには最小デバイス帯域幅と最大デバイス帯域幅の差も加算される。
[2.3.1] Temporary free bandwidth net_credit
The disk bandwidth that is not requested from any channel is called the provisional free bandwidth net_credit. A connection that reserves bandwidth does not necessarily use the bandwidth reserved in each time frame. Even a connection with reserved bandwidth may not request bandwidth within the time frame, that is, may not issue a request, resulting in free bandwidth. The difference between the minimum device bandwidth and the maximum device bandwidth is also added to the provisional free bandwidth net_credit for the current time frame.
各コネクションのリクエストはタイムフレームの始まりに到着することも、タイムフレームの終わり近くになって到着することもあり、リクエストの到着時間は予測不可能である。そのため、タイムフレームの途中で、ある予約チャネルからのリクエストが未到着で帯域に空きが生じる場合は、とりあえず空き帯域が生じたと仮定して、その都度、他の予約チャネルや帯域予約のないメインチャネルからのリクエストに帯域を割り当てる。しかし、そのタイムフレーム内に予約チャネルからリクエストが遅れて到着し、予約した帯域幅が要求されることがある。すなわち、予約リクエストが到着しないために、空き帯域幅であると想定して他のチャネルのリクエストのためにその空き帯域幅を使ってしまうと、遅れて到着した予約チャネルのリクエストに割り当てる帯域が足りなくなり、そのリクエストを実行することができない事態が発生する。これが次に述べる「偽空き帯域幅」が発生した状態である。 Requests for each connection may arrive at the beginning of the time frame or near the end of the time frame, and the arrival time of the request is unpredictable. Therefore, in the middle of a time frame, if a request from a certain reserved channel has not arrived and a bandwidth is vacant, it is assumed that a vacant bandwidth has been created for the time being. Allocate bandwidth for requests from. However, a request arrives late from the reserved channel within the time frame, and the reserved bandwidth may be required. In other words, because the reservation request does not arrive, assuming that it is free bandwidth, and using that free bandwidth for requests on other channels, there is not enough bandwidth allocated for the reservation channel requests that arrived late. It happens that the request cannot be executed. This is the state in which the “false free bandwidth” described below has occurred.
[2.3.2]偽空き帯域幅net_deficit
1つ以上の予約チャネルのリクエストが現タイムフレームにおいて帯域不足で実行できない状態になった場合、現タイムフレームにおいて以前に「空き帯域幅が生じた」と仮定したことが誤りであったことを意味する。仮定した空き帯域幅は、実際は、「偽空き帯域幅」であったのであるから、その帯域幅を要求したチャネルは、次のタイムフレームにおいて、帯域幅が奪われたチャネルに帯域幅を返さなければならない。このように誤って空き帯域幅であると仮定して使用してしまった帯域幅を偽空き帯域幅net_deficitという。
[2.3.2] False free bandwidth net_deficit
If one or more reserved channel requests become unexecutable due to lack of bandwidth in the current time frame, it means that it was an error to assume that there was "free bandwidth" in the current time frame. To do. The assumed free bandwidth was actually a “pseudo free bandwidth”, so the channel that requested the bandwidth must return the bandwidth to the deprived channel in the next time frame. I must. The bandwidth that has been used by assuming that it is an empty bandwidth by mistake is called a false empty bandwidth net_deficit.
[2.3.3]総浪費帯域幅net_wasted
マルチプレクサ30とディスクスケジューラ20がともにリクエストをもたないとき、デバイスドライバ10はアイドル状態になり、ディスク帯域幅は浪費される。デバイスドライバ10がアイドルである、すなわちストレージデバイス150がアイドルである間の帯域幅を総浪費帯域幅net_wastedという。
[2.3.3] Total waste bandwidth net_wasteed
When neither
[2.3.4]総使用帯域幅net_used
総使用帯域幅net_usedは、現タイムフレームにおいて出力ポート42を通過したリクエストのサイズ(バイト単位)の合計である。
[2.3.4] Total bandwidth used net_used
The total used bandwidth net_used is the total size (in bytes) of requests that have passed through the
[2.3.5]総未使用帯域幅net_unused
総未使用帯域幅net_unusedは、現タイムフレームにおいて利用可能な帯域幅の残存量であり、総予約可能帯域幅net_bwから総浪費帯域幅net_wastedと総使用帯域幅net_usedを引いた値である。
net_unused = net_bw - (net_wasted + net_used)
[2.3.5] Total unused bandwidth net_unused
The total unused bandwidth net_unused is the remaining amount of bandwidth that can be used in the current time frame, and is a value obtained by subtracting the total wasted bandwidth net_waste and the total used bandwidth net_used from the total reservable bandwidth net_bw.
net_unused = net_bw-(net_wasted + net_used)
[2.4]チャネルパラメータ
チャネルパラメータも、マルチプレクサ30において用いられるパラメータである。チャネルパラメータはチャネル毎に設定されるパラメータであり、チャネルの状態を示す。チャネルパラメータには以下のものがある。
[2.4] Channel Parameter The channel parameter is also a parameter used in the
[2.4.1]チャネル予約帯域幅c_reserved
チャネルに割り当てられた帯域幅をチャネル予約帯域幅c_reservedという。
[2.4.2]チャネル使用帯域幅c_used
チャネル使用帯域幅c_usedは、現タイムフレームにおいてチャネルを通過したリクエストのサイズ(バイト単位)の合計である。
[2.4.3]チャネル未使用帯域幅c_unused
チャネルが現タイムフレームにおいてデータ転送に用いることができる帯域幅の残存量である。チャネル未使用帯域幅c_unusedは、チャネル予約帯域幅c_reservedからチャネル使用帯域幅c_usedと次に述べるチャネル浪費帯域幅c_wastedを引いたものである。
c_unused = c_reserved - (c_used + c_wasted)
[2.4.1] Channel reserved bandwidth c_reserved
The bandwidth allocated to the channel is referred to as channel reserved bandwidth c_reserved.
[2.4.2] Channel usage bandwidth c_used
The channel use bandwidth c_used is the total size (in bytes) of requests that have passed through the channel in the current time frame.
[2.4.3] Channel unused bandwidth c_unused
The remaining amount of bandwidth that the channel can use for data transfer in the current time frame. The unused channel bandwidth c_unused is the reserved channel bandwidth c_reserved minus the used channel bandwidth c_used and the channel wasted bandwidth c_waste described below.
c_unused = c_reserved-(c_used + c_wasted)
[2.4.4]チャネル浪費帯域幅c_wasted
総浪費帯域幅net_wastedの内、各チャネルの割り当て分をチャネル浪費帯域幅c_wastedという。各チャネルのチャネル浪費帯域幅c_wastedは、そのチャネルのチャネル未使用帯域幅c_unusedに比例する。すなわち、総浪費帯域幅net_wastedは、チャネル未使用帯域幅c_unusedの比でチャネル間に配分される。
[2.4.4] Channel wasted bandwidth c_wasteed
Of the total wasted bandwidth net_waste, the portion allocated to each channel is referred to as channel wasted bandwidth c_wasteed. The channel waste bandwidth c_wasteed of each channel is proportional to the channel unused bandwidth c_unused of that channel. That is, the total wasted bandwidth net_waste is distributed among the channels at a ratio of the unused channel bandwidth c_unused.
[2.4.5]チャネルクレジット帯域幅c_credit
チャネルが、割り当てられた帯域幅を超えて使用した場合、チャネルクレジット帯域幅c_creditは、その超過量だけインクリメントされる。チャネルが、自分自身に割り当てられた帯域幅を他のチャネルに奪われたとき、チャネルクレジット帯域幅c_creditは、その奪われた量だけデクリメントされる。正のチャネルクレジット帯域幅c_creditの値は、そのチャネルが予約量を超えて使ったことを意味し、負のチャネルクレジット帯域幅c_creditの値は、そのチャネルが予約量よりも少ない量しか使っていないことを意味する。
[2.4.5] Channel credit bandwidth c_credit
If the channel uses more than the allocated bandwidth, the channel credit bandwidth c_credit is incremented by the excess amount. When a channel is deprived of the bandwidth allocated to it by another channel, the channel credit bandwidth c_credit is decremented by the deprived amount. A positive channel credit bandwidth c_credit value means that the channel has used more than the reserved amount, and a negative channel credit bandwidth c_credit value uses less than the reserved amount for the channel. Means that.
チャネルクレジット帯域幅c_creditは、次のタイムフレームに対してチャネル使用帯域幅c_usedを設定するために用いられる。あるチャネルが他のチャネルの帯域幅を横取りして、より多くの帯域幅を使った場合、次のタイムフレームにおいて、そのチャネルは超過分を償うために帯域幅の使用量を少なくする。あるチャネルが自分が使用する帯域幅を奪われた場合、次のタイムフレームにおいて、そのチャネルはチャネルクレジット帯域幅c_creditの補償を受ける。 The channel credit bandwidth c_credit is used to set the channel usage bandwidth c_used for the next time frame. If a channel steals the bandwidth of another channel and uses more bandwidth, in the next time frame, that channel will use less bandwidth to make up for the excess. If a channel is deprived of the bandwidth that it uses, it will be compensated for the channel credit bandwidth c_credit in the next time frame.
[2.4.6]チャネル優先度c_priority
チャネル優先度c_priorityは、チャネルが空き帯域幅を使用する際の優先度である。優先度が高いほど、チャネルが空き帯域幅を取得できる確率が高くなる。チャネル優先度c_priorityの調整の仕方は後述する。
[2.4.6] Channel priority c_priority
The channel priority c_priority is a priority when a channel uses an empty bandwidth. The higher the priority, the higher the probability that the channel can acquire free bandwidth. A method for adjusting the channel priority c_priority will be described later.
[2.5]帯域幅予約タイプ
各コネクションは、ストレージデバイス150のデータ転送の帯域幅を絶対量で予約する。すべてのコネクションで予約された帯域幅の合計は、ストレージデバイス150の総予約可能帯域幅net_bwを超えることはできない。帯域幅を予約することにより、ある単位時間内で最低限、ある量のデータが転送されることが保証されるため、レスポンスタイムが予測できないものになるのを防ぐことができる。また、帯域幅を予約することにより、コネクション間でストレージデバイス150のデータ転送能力を公平に共有することが可能になる。
[2.5] Bandwidth Reservation Type Each connection reserves the absolute bandwidth of the data transfer bandwidth of the
帯域幅予約には、最小帯域幅を指定する予約と、最大帯域幅を指定する予約の2種類がある。最小帯域幅予約では、帯域幅の指定量は最小要求として扱われる。最小帯域幅を予約したコネクションは、その指定量の帯域幅を保証され、他の帯域幅予約に影響を与えない限り、より高いデータ転送速度が得られることもある。 There are two types of bandwidth reservations: reservations that specify a minimum bandwidth and reservations that specify a maximum bandwidth. In the minimum bandwidth reservation, the specified amount of bandwidth is treated as a minimum request. A connection that reserves a minimum bandwidth is guaranteed a specified amount of bandwidth, and a higher data transfer rate may be obtained as long as it does not affect other bandwidth reservations.
最大帯域幅予約では、帯域幅の指定量は最大要求として扱われる。最大帯域幅を予約したコネクションは、その指定量を超えるデータ転送速度が得られることはない。最大帯域幅予約は、チャネルが最大帯域幅を超えて空き帯域幅を要求しないように制限するために用いられる。 In maximum bandwidth reservation, a specified amount of bandwidth is treated as a maximum request. A connection that reserves the maximum bandwidth will never have a data transfer rate that exceeds the specified amount. Maximum bandwidth reservation is used to limit a channel from exceeding the maximum bandwidth and requesting free bandwidth.
[3]リクエストの多重化処理
[3.1]概要
リクエストスケジューラ40によるリクエストの多重化処理手順を説明する。リクエスト多重化処理は、帯域幅割り当てのエラー(前述の「偽空き帯域幅」)を補償する処理を含む。あるタイムフレームで発生した帯域幅割り当てのエラーは、次のタイムフレームで補償される。エラー補償処理を用いることで、マルチプレクサ30による多重化処理を高い精度をもたせたままで計算量的に軽量にすることができる。望ましい多重化処理の振る舞いは2つのフレームにまたがって実現されるから、完全な多重化処理が保証される単位時間は2フレーム分の長さになる。
[3] Request Multiplexing Process [3.1] Overview A request multiplexing process procedure by the
リクエスト多重化処理は次の3つの方針に基づいている。
(1)チャネルポートに入力されるリクエストは、チャネル予約帯域幅c_reservedに達するまではチャネルポートを通過することが許される。チャネル予約帯域幅c_reservedに達した後は、チャネルポートに入力されるリクエストは、チャネルキューにキューイングされる。キューイングされたリクエストは、現タイムフレームにおいて帯域幅を使うことが制限される。
(2)現タイムフレームが終わり、次のタイムフレームがスタートすると、チャネルキューからリクエストが(チャネル未使用帯域幅c_unusedを上限として)出力される。
(3)ディスクスケジューラキュー22が空きであるとき、ディスクスケジューラ20は、マルチプレクサ30の最も優先度が高いチャネルからリクエストを一つずつ取り出すことができる。
The request multiplexing process is based on the following three policies.
(1) A request input to a channel port is allowed to pass through the channel port until the channel reserved bandwidth c_reserved is reached. After reaching the channel reserved bandwidth c_reserved, a request input to the channel port is queued in the channel queue. Queued requests are limited to using bandwidth in the current time frame.
(2) When the current time frame ends and the next time frame starts, a request is output from the channel queue (with the channel unused bandwidth c_unused as the upper limit).
(3) When the
[3.2]チャネルポートの状態
チャネルポートは、チャネル未使用帯域幅c_unusedの値に依存して、開いているか、閉じているかどちらかの状態をもつ。チャネル未使用帯域幅c_unusedの値が正(ゼロを含まない)であれば、チャネルポートは開いており、そうでなければ閉じている。チャネルポートが開いているとき、チャネルポートに入力されたリクエストは直接、出力ポート42に送られる。所定の量のリクエストがチャネルポートを通過すると、チャネルポートは次のタイムフレームまで閉じられる。チャネルポートが閉じられると、リクエストはチャネルキューにキューイングされる。チャネルポートは、そのチャネルが他のチャネルの帯域幅を使用するのを制限するために用いられる。
[3.2] Channel Port Status A channel port has either an open state or a closed state depending on the value of the channel unused bandwidth c_unused. If the value of channel unused bandwidth c_unused is positive (not including zero), the channel port is open, otherwise it is closed. When the channel port is open, a request input to the channel port is sent directly to the
[3.3]出力ポートの状態
出力ポート42は、未使用帯域幅net_unusedの値に依存して、開いているか、閉じているかのいずれかの状態を取る。未使用帯域幅net_unusedの値が正であるなら、出力ポート42は開いており、そうでなければ、閉じている。
[3.3] Status of Output Port The
[3.4]チャネル優先度の調整
マルチプレクサ30は、空き帯域幅が利用可能であるときは、その空き帯域幅を最も優先度の高いチャネルに割り当てる。チャネル優先度c_priorityは、チャネル基本優先度c_base_priorityとチャネルキューリクエスト数c_queued_requestの和である。
c_priority=c_base_priority+c_queued_request
[3.4] Adjustment of Channel Priority When the available bandwidth is available, the
c_priority = c_base_priority + c_queued_request
チャネル基本優先度c_base_priorityは、チャネルのタイプの違いまたは緊急性の要求度に応じてチャネルを区別するものであり、次の3つのレベルがある。
通常レベル:各チャネルのデフォルトの優先度である。
優先レベル:空き帯域幅を用いることがより好ましいチャネルに対して設定される。
剥奪レベル:あるチャネルが現タイムフレームにおいて自分の予約した帯域幅を使うことができないとき、そのチャネルは、次のタイムフレームにおいて、剥奪レベルの優先度がマルチプレクサ30によって設定される。
通常レベル、優先レベル、剥奪レベルの順に優先度が高くなる。マルチプレクサ30は、新しいタイムフレームが始まると、チャネル基本優先度をリセットする。
The channel basic priority c_base_priority distinguishes channels according to the difference in channel type or the degree of urgency, and has the following three levels.
Normal level: Default priority for each channel.
Priority level: It is set for a channel for which it is preferable to use a free bandwidth.
Deprivation level: When a channel cannot use its reserved bandwidth in the current time frame, the priority of the deprivation level is set by the
The priority increases in the order of normal level, priority level, and deprivation level.
チャネルキューリクエスト数c_queued_requestは、チャネルキューでペンディングしているリクエストの数である。チャネルキューにあるリクエストの数が増えると、チャネル優先度は増える。 The number of channel queue requests c_requested_request is the number of requests pending in the channel queue. As the number of requests in the channel queue increases, the channel priority increases.
[3.5]浪費帯域幅の更新
ディスクスケジューラ20がアイドルであるなら、帯域幅はリクエストが到着するまで浪費される。マルチプレクサ30はディスクスケジューラ20がアイドルになった時点のタイムスタンプwaste_time_startを記録する。
[3.5] Wasted bandwidth update If the
ディスクスケジューラ20がアイドルであるときにリクエストが到着すると、マルチプレクサ30は現在のタイムスタンプwaste_time_endを取得し、浪費時間wasted_timeを計算する。
waste_time_end = get_current_time();
wasted_time = waste_time_end - waste_time_start;
When a request arrives when the
waste_time_end = get_current_time ();
wasted_time = waste_time_end-waste_time_start;
マルチプレクサ30は、最小デバイス帯域幅を用いて、浪費時間に対応する浪費帯域幅wasted_bandwidthを計算し、総浪費帯域幅net_wastedを更新する。
wasted_bandwidth = scale_to_bandwidth(wasted_time);
net_wasted = net_wasted + wasted_bandwidth;
The
wasted_bandwidth = scale_to_bandwidth (wasted_time);
net_wasted = net_wasted + wasted_bandwidth;
総浪費帯域幅net_wastedは、非ゼロのチャネル未使用帯域幅c_unusedをもっているすべてのチャネルの間で、各チャネルのチャネル未使用帯域幅c_unusedに比例するように分配される。すなわち、チャネル浪費帯域幅c_wastedは以下のように計算される。
for all channels:
c_wasted = c_wasted + (c_unused * wasted_bandwidth) / net_unused;
The total wasted bandwidth net_waste is distributed among all channels with non-zero channel unused bandwidth c_unused in proportion to the channel unused bandwidth c_unused of each channel. That is, the channel wasted bandwidth c_wasteed is calculated as follows.
for all channels:
c_wasted = c_wasted + (c_unused * wasted_bandwidth) / net_unused;
このようにしてマルチプレクサ30はリクエストを発行する予定のあるすべてのチャネルに対して、総浪費帯域幅net_wastedを比例配分したチャネル浪費帯域幅c_wastedを各チャネルのチャネル使用帯域幅c_usedに加算し、そのチャネルがあたかもそのチャネル浪費帯域幅c_wastedの分を使用したかのように扱うことで、各チャネルにペナルティを与える。更新されたチャネル浪費帯域幅c_wastedによって、チャネル未使用帯域幅c_unusedは更新されて減少する。更新されたチャネル未使用帯域幅c_unusedに基づいて、マルチプレクサ30は、チャネルポートの状態を更新する。チャネル未使用帯域幅c_unusedが0以下になると、チャネルポートは閉じられる。
In this way, the
[3.6]フローチャート
図4〜図8を参照して、リクエストスケジューラ40によるリクエスト多重化処理の手順を説明する。図4は、リクエスト多重化処理の全体的な流れを示すフローチャートである。リクエストスケジューラ40は、イベントの発生待ち状態にある(S100)。イベントとして、イベントA「リクエスト到着」、イベントB「ディスクスケジューラキューが空である」、イベントC「新しいタイムフレームの開始」の3つがあり、各イベントが発生すると、ステップS110、S120、S130の処理がそれぞれ実行される。各処理が実行されると、リクエストスケジューラ40は停止条件を確認し(S140)、停止しない場合(S140のN)、ステップS100のイベント発生待ち状態に戻り、停止する場合(S140のY)、終了する。
[3.6] Flowchart A procedure of request multiplexing processing by the
[3.6.1]イベントA:リクエスト到着
図5Aは、ステップS110のイベントA「リクエスト到着」が発生したときの処理を示すフローチャートである。新たなリクエストの到着時、それ以前にディスクスケジューラキュー22が空であったなら(S9のY)、浪費帯域幅の計測を終了するために現在時刻を記録し(S10)、浪費帯域幅の更新とチャネルポートの状態の更新を行う(S11)。新たなリクエストの到着時、それ以前にディスクスケジューラキュー22が空でなかった場合(S9のN)は、浪費帯域幅の計測をしていないので、ステップS10、S11の処理は不要であり、ステップS12に進む。
[3.6.1] Event A: Request Arrival FIG. 5A is a flowchart showing processing when event A “request arrival” in step S110 occurs. If the
図5Bは、ステップS11の浪費帯域幅の更新とチャネルポートの状態の更新の処理を詳しく示すフローチャートである。 FIG. 5B is a flowchart showing in detail the processing of updating the wasted bandwidth and updating the state of the channel port in step S11.
総浪費帯域幅net_wastedとチャネル浪費帯域幅c_wastedを上記の[3.5]で説明した手順にしたがって更新する(S150)。チャネル使用帯域幅c_usedの値と更新されたチャネル浪費帯域幅c_wastedの値によって、チャネル未使用帯域幅c_unusedが次式により更新され(S152)、チャネル未使用帯域幅c_unusedが正でなければ(S154のN)、チャネルポートが閉じられる(S156)。
c_unused = c_reserved - (c_used + c_wasted)
The total wasted bandwidth net_waste and the channel wasted bandwidth c_waste are updated according to the procedure described in [3.5] above (S150). The channel unused bandwidth c_unused is updated by the following equation based on the value of the channel used bandwidth c_used and the updated value of the channel wasted bandwidth c_used (S152). If the channel unused bandwidth c_unused is not positive (S154) N) The channel port is closed (S156).
c_unused = c_reserved-(c_used + c_wasted)
総使用帯域幅net_usedの値と更新された総浪費帯域幅net_wastedの値によって、総未使用帯域幅net_unusedが次式により更新され(S158)、総未使用帯域幅net_unusedが正でなければ(S160のN)、出力ポート42が閉じられる(S162)。
net_unused = net_bw - (net_used + net_wasted)
The total unused bandwidth net_unused is updated by the following equation based on the value of the total used bandwidth net_used and the updated value of the total wasted bandwidth net_used (S158), and if the total unused bandwidth net_unused is not positive (S160 N), the
net_unused = net_bw-(net_used + net_wasted)
図5Aに戻る。リクエストが到着したチャネルのチャネルポートが閉じている場合(S12のN)、リクエストはチャネルキューにキューイングされ、チャネル優先度が1つだけインクリメントされ(S38)、イベントAの処理は終了する。 Returning to FIG. 5A. If the channel port of the channel on which the request has arrived is closed (N in S12), the request is queued in the channel queue, the channel priority is incremented by one (S38), and the processing of event A ends.
リクエストが到着したチャネルのチャネルポートが開いており(S12のY)、かつ、出力ポート42が開いている場合(S14のY)、リクエストは出力ポート42に直接送られ、出力ポート42から出力される(S16)。
If the channel port of the channel on which the request has arrived is open (Y in S12) and the
リクエストが出力ポート42から出力されると、チャネル使用帯域幅c_usedと総使用帯域幅net_usedは次式によりリクエストサイズ(バイト単位)だけインクリメントされる(S18)。
c_used = c_used + request_size
net_used = net_used + request_size
When the request is output from the
c_used = c_used + request_size
net_used = net_used + request_size
更新されたチャネル使用帯域幅c_usedの値によって、チャネル未使用帯域幅c_unusedが次式により更新され(S20)、チャネル未使用帯域幅c_unusedが正でなければ(S22のN)、チャネルポートが閉じられる(S24)。
c_unused = c_reserved - (c_used + c_wasted)
The channel unused bandwidth c_unused is updated by the following equation with the updated value of the channel used bandwidth c_used (S20). If the channel unused bandwidth c_unused is not positive (N in S22), the channel port is closed. (S24).
c_unused = c_reserved-(c_used + c_wasted)
更新された総使用帯域幅net_usedの値によって、総未使用帯域幅net_unusedが次式により更新され(S26)、総未使用帯域幅net_unusedが正でなければ(S28のN)、出力ポート42が閉じられる(S30)。
net_unused = net_bw - (net_used + net_wasted)
The total unused bandwidth net_unused is updated by the following equation with the updated value of the total used bandwidth net_used (S26). If the total unused bandwidth net_unused is not positive (N in S28), the
net_unused = net_bw-(net_used + net_wasted)
なお、ステップS18において、リクエストサイズがチャネル未使用帯域幅c_unusedよりも大きい場合は、チャネル未使用帯域幅c_unusedを超えて帯域幅を割り当てる必要があるため、その超過帯域幅の分だけ、チャネルクレジット帯域幅c_creditをインクリメントした上で、チャネル使用帯域幅c_usedと総使用帯域幅net_usedをリクエストサイズ(バイト単位)だけインクリメントすることになる。この場合、チャネルポートは直ちに閉じられる。ステップS18を疑似コードで書けば、次のようになる。 In step S18, when the request size is larger than the channel unused bandwidth c_unused, it is necessary to allocate a bandwidth exceeding the channel unused bandwidth c_unused, and therefore, the channel credit bandwidth is increased by the excess bandwidth. After incrementing the width c_credit, the channel use bandwidth c_used and the total use bandwidth net_used are incremented by the request size (in bytes). In this case, the channel port is immediately closed. If step S18 is written in the pseudo code, it becomes as follows.
if(c_unused < request_size)
c_credit = c_credit +(request_size - c_unused);
c_used = c_used + request_size;
net_used = net_used + request_size;
if (c_unused <request_size)
c_credit = c_credit + (request_size-c_unused);
c_used = c_used + request_size;
net_used = net_used + request_size;
ステップS14において、出力ポート42が閉じている場合(S14のN)、リクエストが到着したチャネルのチャネルポートが開いているにもかかわらず、出力ポート42が閉じているということであるから、別のチャネルが「偽空き帯域幅」を使用したことを意味する。この場合、リクエストをチャネルキューにキューイングし、チャネルの基本優先度を「剥奪レベル」に設定する(S32)。
In step S14, when the
次に剥奪された帯域幅deprivedを求める(S34)。剥奪された帯域幅deprivedは、通常はリクエストサイズであるが、リクエストサイズがチャネル未使用帯域幅c_unusedを超える場合もあるので、剥奪された帯域幅deprivedは、正確には、リクエストサイズとチャネル未使用帯域幅c_unusedのいずれか小さい方で与えられる。チャネルクレジット帯域幅c_creditから剥奪された帯域幅deprivedを引き、偽空き帯域幅net_deficitに剥奪帯域幅deprivedを加える(S36)。ステップS34、36の疑似コードは次のようになる。 Next, the deprived bandwidth deprived is obtained (S34). The deprived bandwidth deprived is usually the request size, but the request size may exceed the channel unused bandwidth c_unused, so the deprived bandwidth deprived is exactly the request size and the channel unused It is given by the smaller of the bandwidth c_unused. The deprived bandwidth deprived is subtracted from the channel credit bandwidth c_credit, and the deprived bandwidth deprived is added to the false free bandwidth net_defict (S36). The pseudo code in steps S34 and S36 is as follows.
if(c_unused > 0) {
deprived = smallerof(c_unused, request_size);
c_credit = c_credit - deprived;
net_deficit = net_deficit + deprived;
}
if (c_unused> 0) {
deprived = smallerof (c_unused, request_size);
c_credit = c_credit-deprived;
net_deficit = net_deficit + deprived;
}
[3.6.2]イベントB:ディスクスケジューラキューが空
図6は、ステップS120のイベントB「ディスクスケジューラキューが空」が発生したときの処理を示すフローチャートである。マルチプレクサ30が実際のデバイス帯域幅よりも少ないリクエストを出力すると、ディスクスケジューラキュー22は各タイムフレームにおいて空き状態になる。ディスクスケジューラキュー22は、入力されるリクエストが存在しない場合にも空き状態になる。イベントB「ディスクスケジューラキューが空」は、ディスクスケジューラキュー22が空であるとき、ディスクスケジューラ20が空き帯域幅ポート44からリクエストの取り出しを試みることにより発生するイベントである。
[3.6.2] Event B: Disk Scheduler Queue is Empty FIG. 6 is a flowchart showing processing when event B “Disk Scheduler Queue is empty” in step S120 occurs. When the
ディスクスケジューラ20からの空き帯域幅ポート44に対するアクセスを受けて、マルチプレクサ30は、いずれかのチャネルのチャネルキューにリクエストがあるかどうかを調べる(S50)。いずれかのチャネルキューにリクエストがある場合、最も優先度が高いチャネルキューからリクエストを取り出し、空き帯域幅ポート44に渡す(S52)。マルチプレクサ30は、チャネルクレジット帯域幅c_creditと仮空き帯域幅net_creditをリクエストサイズだけインクリメントする(S54)。
c_credit = c_credit + request_size
net_credit = net_credit + request_size
Upon receiving access to the
c_credit = c_credit + request_size
net_credit = net_credit + request_size
空き帯域幅ポート44からリクエストを取得したことが出力ポート42に通知され、総使用帯域幅net_usedが更新され、その結果、総未使用帯域幅net_unusedが更新される(S55)。更新された総未使用帯域幅net_unusedが正でなければ(S56のN)、出力ポート42が閉じられる(S57)。
The
ディスクスケジューラ20は空き帯域幅ポート44からリクエストを取得して実行に移す(S58)。
The
帯域幅が本当に空いているかどうかは、当該タイムフレームが終了し、新しいタイムフレームが始まるときまでわからないから、ステップS52〜S58は「空き帯域幅」であるとの仮定のもと実行される。もし、「偽空き帯域幅」であった場合は、次のタイムフレームで、チャネルクレジット帯域幅を用いて、エラーが補償される。エラー補償処理については、図7および図8で詳述される。 Whether the bandwidth is really free is unknown until the time frame ends and a new time frame begins, so steps S52-S58 are performed under the assumption of "free bandwidth". If it is “false free bandwidth”, the error is compensated for by using the channel credit bandwidth in the next time frame. The error compensation process will be described in detail with reference to FIGS.
いずれのチャネルキューにもリクエストが存在しない場合(S50のN)、マルチプレクサ30は空き帯域幅ポート44にリクエストを渡すことがない。このとき、マルチプレクサ30は、ディスクスケジューラ20が空き帯域幅ポート44からリクエストを取り出そうとしていたことから、ディスクスケジューラ20がアイドルであることを知ることができる。そこで、マルチプレクサ30は、浪費帯域幅の計測を開始するために現在時刻を記録する(S59)。そして、既に図5で述べたように、現タイムフレームにおいて次のリクエストが到着した時点で、マルチプレクサ30は、浪費帯域幅の計測を終了し、そのときの時刻を記録し、すべてのチャネルについてチャネル浪費帯域幅c_wastedを更新し、新しいリクエストを処理する前に適宜チャネルポートの状態を変更する(図5AのS9〜S11参照)。
If there is no request in any channel queue (N in S 50), the
[3.6.3]イベントC:新しいタイムフレームの開始
図7は、ステップS130のイベントC「新しいタイムフレームの開始」が発生したときの処理を示すフローチャートである。一つ前のタイムフレームTF(n−1)の期間が終わると、新しいタイムフレームTF(n)が始まる(ここで、nはタイムフレームの番号を示す)。新しいタイムフレームTF(n)が始まると、マルチプレクサ30は、まず、偽空き帯域幅net_deficitがゼロかどうかを調べる(S60)。偽空き帯域幅net_deficitがゼロなら(S60のY)、マルチプレクサ30は、すべてのチャネルのチャネル使用帯域幅c_usedとチャネルクレジット帯域幅c_creditをゼロにリセットし、総使用帯域幅net_used、仮空き帯域幅net_creditもゼロにリセットし(S62)、ステップS65に進む。
[3.6.3] Event C: Start of New Time Frame FIG. 7 is a flowchart showing processing when event C “Start of new time frame” in step S130 occurs. When the period of the previous time frame TF (n-1) ends, a new time frame TF (n) starts (where n indicates the number of the time frame). When a new time frame TF (n) starts, the
偽空き帯域幅net_deficitがゼロでないなら(S60のN)、一つ前のタイムフレームTF(n−1)で仮空き帯域幅net_creditを用いたチャネルは現タイムフレームTF(n)で帯域幅の使用量を減らさなければならない。一つ前のタイムフレームTF(n−1)で超過帯域幅を使用したチャネルに対してチャネル使用帯域幅c_usedを増加させることにより、偽空き帯域幅net_deficitに対するエラー補償がなされる(S64)。ステップS64のエラー補償処理は、図8で詳述する。 If the false free bandwidth net_defict is not zero (N in S60), the channel using the temporary free bandwidth net_cred in the previous time frame TF (n-1) uses the bandwidth in the current time frame TF (n). The amount must be reduced. By increasing the channel use bandwidth c_used for the channel that used the excess bandwidth in the previous time frame TF (n−1), error compensation for the pseudo free bandwidth net_defit is performed (S64). The error compensation process in step S64 will be described in detail with reference to FIG.
エラー補償処理が終わると、出力ポート42が開く(S65)。各チャネルのチャネル未使用帯域幅を調べ(S66)、チャネル未使用帯域幅が正であれば(S66のY)、そのチャネルのチャネルポートは開き(S68)、チャネルポートが開き続けている限り、チャネルキューが空になるまで、チャネルキューで待ち状態にあったリクエストが直ちに、開かれたチャネルポートから出力ポート42に渡され、出力ポート42から出力される(S70)。チャネルキューからリクエストが出力される度に、そのチャネルのチャネル未使用帯域幅が減少していく。ステップS66において、チャネルのチャネル未使用帯域幅が正でない場合(S66のN)、チャネルポートは閉じられ、新しいタイムフレームTF(n)において開かれることがない(S72)。
When the error compensation process is completed, the
図8は、ステップS64のエラー補償処理の詳細な手順を示すフローチャートである。最低優先度のチャネルを選択し(S80)、偽空き帯域幅net_deficitが正であれば(S82のY)、選択されたチャネルについてステップS84〜S92を実行し、偽空き帯域幅net_deficitが0になれば(S82のN)、選択されたチャネルについてステップS94を実行する。次に優先度が低いチャネルがあればそれを選択し(S96のY)、以降、ステップS82〜S94を繰り返し、すべてのチャネルの処理が終われば(S96のN)、エラー補償処理を終了する。 FIG. 8 is a flowchart showing a detailed procedure of the error compensation process in step S64. If the lowest priority channel is selected (S80) and the false free bandwidth net_deficit is positive (Y in S82), steps S84 to S92 are executed for the selected channel, and the false free bandwidth net_deficit becomes 0. If (N in S82), step S94 is executed for the selected channel. If there is a channel with the next lowest priority (Y in S96), the channel is selected (S96: Y). Thereafter, steps S82 to S94 are repeated. If all channels have been processed (N in S96), the error compensation process is terminated.
まず、偽空き帯域幅net_deficitが正である場合(S82のY)について、選択されたチャネルについてのステップS84〜S92の処理を説明する。 First, the processing of steps S84 to S92 for the selected channel will be described for the case where the false free bandwidth net_deficit is positive (Y in S82).
選択されたチャネルについて、チャネルクレジット帯域幅c_creditが正であり(S84のY)、かつ、チャネルクレジット帯域幅c_creditが偽空き帯域幅net_deficitよりも小さい場合(S86のY)、偽空き帯域幅net_deficitをチャネルクレジット帯域幅c_creditだけ減算する(S88)。そして、チャネル使用帯域幅c_usedにチャネルクレジット帯域幅c_creditを代入し、チャネルクレジット帯域幅c_creditをゼロにする(S92)。これにより、このチャネルについては、あたかもチャネルクレジット帯域幅c_credit分だけ帯域幅を使用したような状態になる。 For the selected channel, if the channel credit bandwidth c_credit is positive (Y in S84) and the channel credit bandwidth c_credit is smaller than the fake free bandwidth net_deficit (Y in S86), the fake free bandwidth net_deficit is set. The channel credit bandwidth c_cred is subtracted (S88). Then, the channel credit bandwidth c_cred is substituted for the channel use bandwidth c_used, and the channel credit bandwidth c_cred is set to zero (S92). As a result, this channel is in a state where the bandwidth is used as much as the channel credit bandwidth c_credit.
チャネルクレジット帯域幅c_creditが正であるが(S84のY)、チャネルクレジット帯域幅c_creditが偽空き帯域幅net_deficit以上である場合(S86のN)、チャネルクレジット帯域幅c_creditを偽空き帯域幅net_deficitに置き換え、偽空き帯域幅net_deficitをゼロにする(S90)。その上で、チャネル使用帯域幅c_usedにチャネルクレジット帯域幅c_creditを代入し、チャネルクレジット帯域幅c_creditをゼロにする(S92)。これにより、偽空き帯域幅net_deficitを超えるチャネルクレジット帯域幅c_creditの場合は、いったんチャネルクレジット帯域幅c_creditを偽空き帯域幅net_deficitの値に減らした上で、チャネル使用帯域幅c_usedに代入される。 If the channel credit bandwidth c_cred is positive (Y in S84) but the channel credit bandwidth c_cred is equal to or larger than the false free bandwidth net_deficit (N in S86), the channel credit bandwidth c_cred is replaced with the false free bandwidth net_deficit. The false free bandwidth net_deficit is set to zero (S90). After that, the channel credit bandwidth c_cred is substituted for the channel use bandwidth c_used to set the channel credit bandwidth c_cred to zero (S92). Thereby, in the case of the channel credit bandwidth c_credit exceeding the fake free bandwidth net_defit, the channel credit bandwidth c_credit is once reduced to the value of the fake free bandwidth net_deficit and then substituted into the channel use bandwidth c_used.
チャネルクレジット帯域幅c_creditが正でない場合(S84のN)、チャネル使用帯域幅c_usedにチャネルクレジット帯域幅c_creditを代入し、チャネルクレジット帯域幅c_creditをゼロにする(S92)。したがって、チャネルクレジット帯域幅c_creditが負である場合、チャネル使用帯域幅c_usedが負になり、その分だけ、チャネル未使用帯域幅c_unsedが増えるから、余分に帯域幅を使用することができることになる。 If the channel credit bandwidth c_cred is not positive (N in S84), the channel credit bandwidth c_cred is substituted for the channel usage bandwidth c_used, and the channel credit bandwidth c_cred is set to zero (S92). Therefore, when the channel credit bandwidth c_cred is negative, the channel use bandwidth c_used is negative, and the channel unused bandwidth c_unsed is increased by that amount, so that it is possible to use extra bandwidth.
偽空き帯域幅net_deficitがゼロになると(S82のN)、それ以上のエラー補償処理は不要であるから、選択されたチャネルについて、チャネルクレジット帯域幅c_creditとチャネル使用帯域幅c_usedをゼロにする(S94)。 When the false free bandwidth net_deficit becomes zero (N in S82), no further error compensation processing is required, so that the channel credit bandwidth c_credit and the channel use bandwidth c_used are set to zero for the selected channel (S94). ).
図9は、図8のエラー補償処理の手順を具体的な例を用いて説明する図である。同図は、1つ前のタイムフレームにおける各チャネルのチャネルクレジット帯域幅c_creditにもとづいて現タイムフレームの各チャネルのチャネル使用帯域幅c_usedが決定される様子を示す。 FIG. 9 is a diagram illustrating the procedure of the error compensation process of FIG. 8 using a specific example. The figure shows how the channel usage bandwidth c_used of each channel of the current time frame is determined based on the channel credit bandwidth c_cred of each channel in the previous time frame.
1つ前のタイムフレームにおける6つのチャネルC1〜C6のチャネルクレジット帯域幅c_creditは、それぞれ2、4、3、1、−4、−1である。1つ前のタイムフレームにおける仮空き帯域幅net_creditは、チャネルC1〜C4の正のチャネルクレジット帯域幅2、4、3、1の和であり、その値は10である。一方、1つ前のタイムフレームにおける偽空き帯域幅net_deficitは、チャネルC5、C6の負のチャネルクレジット帯域幅−4、−1の絶対値の和であり、その値は5である。したがって、現タイムフレームにおいて補償しなければならない帯域幅は5である。
The channel credit bandwidths c_credit of the six channels C1 to C6 in the previous time frame are 2, 4, 3, 1, -4, and -1, respectively. The temporary free bandwidth net_credit in the previous time frame is the sum of the positive
チャネルC1〜C6はこの順で優先度が低くなるとする。最低優先度のチャネルC6を選択し(S80)、偽空き帯域幅net_deficitが5であり(S82のY)、チャネルC6のチャネルクレジット帯域幅c_creditが−1である(S84のN)から、チャネルC6のチャネル使用帯域幅c_usedは、チャネルクレジット帯域幅c_creditの値が代入されることにより、−1になる(S92)。 Assume that the channels C1 to C6 have lower priority in this order. Since the lowest priority channel C6 is selected (S80), the false free bandwidth net_deficit is 5 (Y in S82), and the channel credit bandwidth c_credit of the channel C6 is -1 (N in S84), so that the channel C6 The channel usage bandwidth c_used becomes −1 by substituting the value of the channel credit bandwidth c_credit (S92).
次に優先度が低いチャネルC5を選択し(S96)、偽空き帯域幅net_deficitが5であり(S82のY)、チャネルC5のチャネルクレジット帯域幅c_creditが−4である(S84のN)から、チャネルC5のチャネル使用帯域幅c_usedは、チャネルクレジット帯域幅c_creditの値が代入されることにより、−4になる(S92)。 Next, the channel C5 with the lowest priority is selected (S96), the false free bandwidth net_deficit is 5 (Y in S82), and the channel credit bandwidth c_credit of the channel C5 is −4 (N in S84). The channel use bandwidth c_used of the channel C5 becomes −4 when the value of the channel credit bandwidth c_credit is substituted (S92).
さらに次に優先度が低いチャネルC4を選択し(S96)、偽空き帯域幅net_deficitが5であり(S82のY)、チャネルC4のチャネルクレジット帯域幅c_creditが1であり(S84のY)、チャネルクレジット帯域幅c_creditの値1は偽空き帯域幅net_deficitの値5よりも小さい(S86のY)から、偽空き帯域幅net_deficitは、チャネルクレジット帯域幅c_creditの値1だけ減算されることにより、4になる(S88)。そして、チャネルC4のチャネル使用帯域幅c_usedは、チャネルクレジット帯域幅c_creditの値が代入されることにより、1になる(S92)。
Further, the channel C4 having the next lowest priority is selected (S96), the false free bandwidth net_deficit is 5 (Y in S82), the channel credit bandwidth c_credit of the channel C4 is 1 (Y in S84), and the channel Since the
さらに次に優先度が低いチャネルC3を選択し(S96)、偽空き帯域幅net_deficitが4であり(S82のY)、チャネルC3のチャネルクレジット帯域幅c_creditが3であり(S84のY)、チャネルクレジット帯域幅c_creditの値3は偽空き帯域幅net_deficitの値4よりも小さい(S86のY)から、偽空き帯域幅net_deficitは、チャネルクレジット帯域幅c_creditの値3だけ減算されることにより、1になる(S88)。そして、チャネルC3のチャネル使用帯域幅c_usedは、チャネルクレジット帯域幅c_creditの値が代入されることにより、3になる(S92)。
Further, the channel C3 having the next lowest priority is selected (S96), the false free bandwidth net_deficit is 4 (Y in S82), the channel credit bandwidth c_credit of the channel C3 is 3 (Y in S84), and the channel Since the
さらに次に優先度が低いチャネルC2を選択し(S96)、偽空き帯域幅net_deficitが1であり(S82のY)、チャネルC2のチャネルクレジット帯域幅c_creditが4であり(S84のY)、チャネルクレジット帯域幅c_creditの値4は偽空き帯域幅net_deficitの値1よりも小さくはない(S86のN)から、チャネルクレジット帯域幅c_creditを偽空き帯域幅net_deficitの値1に置き換え、偽空き帯域幅net_deficitをゼロにする(S90)。その上で、チャネルC2のチャネル使用帯域幅c_usedは、置換されたチャネルクレジット帯域幅c_creditの値1が代入されることにより、1になる(S92)。
Further, the channel C2 having the next lowest priority is selected (S96), the false free bandwidth net_deficit is 1 (Y in S82), the channel credit bandwidth c_credit of the channel C2 is 4 (Y in S84), and the channel Since the
さらに次に優先度が低いチャネルC1を選択し(S96)、偽空き帯域幅net_deficitが0になったから(S82のN)、これ以上のエラー補償は不要であり、チャネルC1のチャネル使用帯域幅c_usedはゼロに設定される(S94)。 Further, the channel C1 having the next lowest priority is selected (S96), and the false free bandwidth net_deficit becomes 0 (N in S82), so no further error compensation is necessary, and the channel use bandwidth c_used of the channel C1 Is set to zero (S94).
このようにして、チャネルクレジット帯域幅c_creditが負であるチャネルのチャネル使用帯域幅c_usedはチャネルクレジット帯域幅c_creditと等しい負の値にしておき、余分に帯域幅を使用できるようにし、チャネルクレジット帯域幅c_creditが正であるチャネルについては、優先度の低い方のチャネルから順に、チャネルクレジット帯域幅c_creditの分だけ帯域幅を使用したことにしていくことで、偽空き帯域幅net_deficitを補償することができる。 In this way, the channel usage bandwidth c_used of a channel having a negative channel credit bandwidth c_credit is set to a negative value equal to the channel credit bandwidth c_credit so that an extra bandwidth can be used. For channels with positive c_credit, it is possible to compensate for the fake free bandwidth net_deficit by using the bandwidth corresponding to the channel credit bandwidth c_credit in order from the channel with the lower priority. .
以下、上記の説明では述べなかった点を補足して説明する。 Hereinafter, the points not described in the above description will be supplementarily described.
[4]大きなサイズのデータに対するリクエストの繰り返し処理
ストレージデバイス150に格納された画像や音声などの大きなサイズのデータにアクセスする場合、リクエストするブロックのサイズは大きくなり、1つのタイムフレームには収まらないことがある。また、ブロックサイズが1つのタイムフレームに収まる場合でも、タイムフレームの大部分を大きなブロックサイズのリクエストが占有してしまうと、他のリクエストをタイムフレーム内に割り当てることができなくなり、他のリクエストのレスポンスが極端に悪化する。
[4] Repeat processing of requests for large size data When accessing large size data such as images and sounds stored in the
そこで、マルチプレクサ30は、大きなブロックサイズのリクエストを小さなブロックサイズのリクエストに分割し、分割された小さなブロックサイズのリクエストを繰り返し発行することにより、大きなブロックサイズのリクエストを処理する。これにより、大きなブロックサイズのリクエストにより、他のリクエストのレスポンスタイムが悪くなるのを防ぐことができる。
Therefore, the
[5]ディスクスケジューリング
ディスクスケジューラ20によるディスクスケジューリングの動作について詳しく説明する。ディスクスケジューラ20は、スループットもしくはレスポンスタイムの性能を最大化するために、ディスクに対するアクセスパターンを考慮してディスクスケジューリングを行う。ディスクスケジューラ20は、ディスクスケジューリングアルゴリズムを適宜選択し、あるいは組み合わせて用いる。たとえば、レスポンスタイムを良くするためには、シーク時間の短い順にスケジューリングするSSTFアルゴリズムを用いることができる。また、サービスタイムを良くするためには、エレベータアルゴリズムやSCANアルゴリズムを用いることができる。
[5] Disk scheduling The disk scheduling operation by the
ディスクスケジューラ20は、フレーム内のリクエストをスケジューリングする際、各リクエストのアプリケーションタイプを参考にして、どのようなディスクスケジューリング方式をどのような比率で組み合わせて用いればよいかを判断する。ディスクスケジューラ20は、アプリケーションタイプをディスクスケジューリングのヒントとして用いる。
When scheduling a request in a frame, the
アプリケーションタイプには、マルチメディア、リアルタイム、インタラクティブ、ファイル転送などがある。ディスクスケジューラ20は、フレーム内にどのようなタイプのリクエストがどれくらいの割合で多重化されているかを判断する。インタラクティブなアプリケーションはレスポンスタイムに敏感であり、マルチメディアアプリケーションはサービスタイムに敏感である。レスポンスタイムに敏感なアプリケーションとサービスタイムに敏感なアプリケーションの比率がα対(1−α)である場合、レスポンスタイムのタイプに適したSSTFアルゴリズムと、サービスタイムに適したエレベータアルゴリズムもしくはSCANアルゴリズムとをα対(1−α)の比で組み合わせて用いる。
Application types include multimedia, real-time, interactive, and file transfer. The
ディスクスケジューラ20は、さらに、リクエストサイズを一つの要因として評価し、より小さなリクエストサイズのリクエストについては早くサービスするように制御してもよい。そのために、SSEDV(Shortest Seek and Earliest Deadline by Value)アルゴリズムを改良して用いることができる。
Further, the
以上述べたように、本実施の形態のリクエストスケジューラ40によれば、ディスクスケジューラ20の前段にマルチプレクサ30を設け、各コネクションの予約帯域幅を保証しながら、複数のコネクションからのリクエストを多重化することができる。
As described above, according to the
マルチプレクサ30は、チャネルポートと出力ポート42の2つのポートをもち、各チャネルポートに到着したリクエストの総量がそのチャネルの予約帯域幅の制限を超えない限りは、チャネルポートを開けて、チャネルキューをバイパスして直接、出力ポート42にリクエストが送られるようにしたことで、チャネルキューへのキューイングによるオーバーヘッドをなくし、チャネルがボトルネックとなることを防ぐことができる。
The
また、各チャネルポートに到着したリクエストの総量がそのチャネルの予約帯域幅の制限を超えた場合は、チャネルポートを閉じて、次のタイムフレームが始まるまでチャネルキューにリクエストをキューイングすることで、各チャネルが使用する帯域幅を制限することができる。 Also, if the total amount of requests arriving at each channel port exceeds the reserved bandwidth limit for that channel, close the channel port and queue the request in the channel queue until the next time frame begins, The bandwidth used by each channel can be limited.
さらに、ディスクスケジューラ20のキューにリクエストが存在しないときは、いずれかのチャネルキューにキューイングされたリクエストを取り出してディスクスケジューラ20に渡すための空き帯域幅ポート44が予備ポートとして、出力ポート42とは別に設けられているため、空き帯域幅を有効に活用することができる。そして、リクエストが遅れて到着して、空き帯域幅であると仮定したことが誤りであることがわかった場合は、剥奪された帯域幅を次のタイムフレームで補償することで、チャネル間の帯域幅の割り当ての公平性を保証することができる。
Further, when there is no request in the queue of the
また、本実施の形態によれば、マルチプレクサ30が、各コネクションが予約するディスク転送の帯域幅に応じて、コネクションからのリクエストを多重化し、ディスクスケジューラ20が、ディスクアクセスのリクエストをディスクに対するアクセスパターンにもとづいてスケジューリングする。これにより、様々なサービス品質の要求のあるアプリケーションからディスクアクセスリクエストがあった場合、マルチプレクサ30によるリクエストの多重化により個々のアプリケーションのサービス品質要求を保証することができ、同時に、ディスクスケジューラ20によるディスクアクセスパターンにもとづくディスクスケジューリングによりディスク性能を最大化することができる。
Further, according to the present embodiment, the
ストレージデバイスは、一般的に非決定的(あるいは非確定的)(non-deterministic)な動作をし、ディスクに対するアクセスリクエストがいつ実行されるかを予測することができないが、本実施の形態のリクエストスケジューラ40によれば、マルチプレクサ30が各コネクションのリクエストを一定の時間で処理されるタイムフレーム内に多重化し、ディスクスケジューラ20がタイムフレーム内のリクエストの実行順序を変えることでディスクのスケジューリングを行うため、リクエストが実行される時間は決定的(あるいは確定的)(deterministic)なものとなり、サービス品質の保証が可能になる。
Although the storage device generally operates in a non-deterministic manner (and is not deterministic), it cannot predict when an access request to a disk will be executed. 40, the
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。 The present invention has been described based on the embodiments. The embodiments are exemplifications, and it will be understood by those skilled in the art that various modifications can be made to combinations of the respective constituent elements and processing processes, and such modifications are within the scope of the present invention. .
マルチプレクサ30のチャネルは、いろいろな用途で用いることができる。コネクション毎にチャネルを別々に設けてもよく、1つのチャネルを複数のコネクションで共有してもよい。たとえば、リアルタイム、マルチメディア、インタラクティブなどのアプリケーションタイプ毎にチャネルを用意し、同じアプリケーションタイプの複数のコネクションが、対応するアプリケーションタイプのチャネルを共有するようにしてもよい。インタラクティブアプリケーションの複数のコネクションがあれば、それらのコネクションのリクエストは、すべてインタラクティブタイプ用のチャネルにキューイングされる。
The channel of the
マルチプロセッサシステムにおいてリクエストスケジューラ40が利用される場合、各プロセッサがストレージデバイス150に対してコネクションを構築することができる。その場合、マルチプレクサ30のチャネルは、プロセッサ毎に設けられてもよく、プロセッサが構築するコネクション毎に設けられてもよい。
When the
実施の形態では、ディスクスケジューリングを例に説明したが、本発明は、ディスク以外のデバイスに対するアクセススケジューリングにも適用することができる。また、本実施の形態のマルチプレクサ30をディスクスケジューラ20から切り離し、ディスクなどのデバイスに対するアクセススケジューリング以外に、複数のコネクションからのリクエストの多重化処理が必要な分野にも適用することができる。たとえば、ネットワークを経由したサーバなどへのアクセスリクエストをFIFOバッファに蓄積して多重化処理する場合にも適用することができる。
In the embodiment, the disk scheduling has been described as an example, but the present invention can also be applied to access scheduling for devices other than disks. Further, the
10 デバイスドライバ、 20 ディスクスケジューラ、 22 ディスクスケジューラキュー、 30 ストレージマルチプレクサ、 31 メインチャネル、 32 予約チャネル、 33、34 チャネルポート、 35、36 チャネルキュー、 38 タイマ、 40 リクエストスケジューラ、 42 出力ポート、 44 空き帯域幅ポート、 50 SCSIクラスドライバ、 60 ストレージサービスプロバイダ、 62 コネクション、 100 ストレージサブシステム、 120 ストレージインタフェース、 130 ファイルシステム、 140 オペレーティングシステム、 150 ストレージデバイス。 10 device drivers, 20 disk scheduler, 22 disk scheduler queue, 30 storage multiplexer, 31 main channel, 32 reserved channel, 33, 34 channel port, 35, 36 channel queue, 38 timer, 40 request scheduler, 42 output port, 44 free Bandwidth port, 50 SCSI class driver, 60 storage service provider, 62 connections, 100 storage subsystem, 120 storage interface, 130 file system, 140 operating system, 150 storage device.
Claims (8)
複数の前記チャネルから渡されるリクエストを出力する出力ポートとを含み、
複数の要求元からのリクエストを多重化するための時間単位であるタイムフレームが設けられ、あるタイムフレームにおいて、他のチャネルから出力されるリクエストによって、予約帯域幅の少なくとも一部が横取りされたチャネルは、次のタイムフレームにおいて、横取りされた予約帯域幅の補償を受けることを特徴とするマルチプレクサ。 Provided for each service requester, accepting bandwidth reservations for processing requests from each requester, multiple channels through which requests are input from each requester,
An output port for outputting requests passed from a plurality of the channels,
A channel in which a time frame that is a time unit for multiplexing requests from multiple request sources is provided, and at least a part of the reserved bandwidth is intercepted by a request output from another channel in a certain time frame Is subjected to compensation for the pre-empted reserved bandwidth in the next time frame.
前記マルチプレクサから出力されたリクエストをスケジューリングして実行するスケジューラとを含み、
前記マルチプレクサは、
前記要求元毎に設けられ、各要求元からリクエストを処理するための帯域幅の予約を受け付け、各要求元からリクエストが入力される複数のチャネルと、
複数の前記チャネルから渡されるリクエストを出力する出力ポートとを含み、
複数の要求元からのリクエストを多重化するための時間単位であるタイムフレームが設けられ、あるタイムフレームにおいて、他のチャネルから出力されるリクエストによって、予約帯域幅の少なくとも一部が横取りされたチャネルは、次のタイムフレームにおいて、横取りされた予約帯域幅の補償を受けることを特徴とする情報処理装置。 A multiplexer that outputs requests input from one or more requesters of the service;
A scheduler for scheduling and executing the request output from the multiplexer,
The multiplexer is
A plurality of channels that are provided for each request source, accept bandwidth reservations for processing requests from each request source, and receive requests from each request source;
An output port for outputting requests passed from a plurality of the channels,
A channel in which a time frame that is a time unit for multiplexing requests from multiple request sources is provided, and at least a part of the reserved bandwidth is intercepted by a request output from another channel in a certain time frame Is an information processing apparatus that receives compensation of a reserved bandwidth obtained in the next time frame.
前記マルチプレクサは、タイムフレームの任意の時点において、前記スケジューラキューにリクエストが存在しない場合、当該タイムフレーム内で空き帯域幅が生じたと仮定して、あるチャネルに待ち状態のリクエストがあれば、そのリクエストを取り出して前記スケジューラに渡すことにより、そのチャネルにその空き帯域幅を割り当てることを特徴とする請求項6に記載の情報処理装置。 The scheduler includes a scheduler queue for queuing requests output from the output port;
If there is no request in the scheduler queue at any time point in the time frame, the multiplexer assumes that free bandwidth has occurred in the time frame, and if there is a waiting request on a channel, the request The information processing apparatus according to claim 6, wherein the free bandwidth is allocated to the channel by taking out the data and passing it to the scheduler.
複数の前記チャネルから渡されるリクエストを出力する出力ポートを提供する出力ポート機能と、
複数の要求元からのリクエストを多重化するための時間単位であるタイムフレームが設けられ、あるタイムフレームにおいて、他のチャネルから出力されるリクエストによって、予約帯域幅の少なくとも一部が横取りされたチャネルに対して、次のタイムフレームにおいて、横取りされた予約帯域幅を補償するエラー補償機能とをコンピュータに実現させることを特徴とするプログラム。 A channel function that accepts a bandwidth reservation for processing a request for each service request source, and receives a request from each request source through a plurality of channels;
An output port function for providing an output port for outputting requests passed from a plurality of the channels;
A channel in which a time frame that is a time unit for multiplexing requests from multiple request sources is provided, and at least a part of the reserved bandwidth is intercepted by a request output from another channel in a certain time frame On the other hand, a program for causing a computer to realize an error compensation function for compensating for a reserved bandwidth obtained in the next time frame.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006278185A JP4979332B2 (en) | 2006-10-11 | 2006-10-11 | Multiplexer and information processing apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006278185A JP4979332B2 (en) | 2006-10-11 | 2006-10-11 | Multiplexer and information processing apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008097312A true JP2008097312A (en) | 2008-04-24 |
JP4979332B2 JP4979332B2 (en) | 2012-07-18 |
Family
ID=39380094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006278185A Expired - Fee Related JP4979332B2 (en) | 2006-10-11 | 2006-10-11 | Multiplexer and information processing apparatus |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4979332B2 (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09330552A (en) * | 1996-04-12 | 1997-12-22 | Sony Corp | Data recording/reproducing apparatus |
JP2000066845A (en) * | 1998-08-26 | 2000-03-03 | Sony Corp | Disk array device |
JP2001147886A (en) * | 1999-11-19 | 2001-05-29 | Fujitsu Ltd | Device and method for sharing disk time |
JP2005538441A (en) * | 2002-09-06 | 2005-12-15 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | Method and system for reading data from and writing data to a storage device |
-
2006
- 2006-10-11 JP JP2006278185A patent/JP4979332B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09330552A (en) * | 1996-04-12 | 1997-12-22 | Sony Corp | Data recording/reproducing apparatus |
JP2000066845A (en) * | 1998-08-26 | 2000-03-03 | Sony Corp | Disk array device |
JP2001147886A (en) * | 1999-11-19 | 2001-05-29 | Fujitsu Ltd | Device and method for sharing disk time |
JP2005538441A (en) * | 2002-09-06 | 2005-12-15 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | Method and system for reading data from and writing data to a storage device |
Also Published As
Publication number | Publication date |
---|---|
JP4979332B2 (en) | 2012-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7206866B2 (en) | Continuous media priority aware storage scheduler | |
Rajkumar et al. | Resource kernels: A resource-centric approach to real-time and multimedia systems | |
US6779181B1 (en) | Micro-scheduling method and operating system kernel | |
US6804738B2 (en) | Method and apparatus for scheduling a resource to meet quality-of-service restrictions | |
US5938734A (en) | Real time stream server for handling a plurality of real time stream data with different data rates | |
US8392633B2 (en) | Scheduling requesters of a shared storage resource | |
US7590775B2 (en) | Method for empirically determining a qualified bandwidth of file storage for a shared filed system | |
US7739421B1 (en) | Buffer management method and system with data displayed directly from buffers | |
US20130074091A1 (en) | Techniques for ensuring resources achieve performance metrics in a multi-tenant storage controller | |
WO2018175559A1 (en) | Drive-level internal quality of service | |
EP3251021B1 (en) | Memory network to prioritize processing of a memory access request | |
US10545701B1 (en) | Memory arbitration techniques based on latency tolerance | |
US11586392B2 (en) | Multi-stream SSD QoS management | |
US8019915B2 (en) | Method and device for controlling access to multiple applications | |
US7587549B1 (en) | Buffer management method and system with access grant based on queue score | |
CN112463044A (en) | Method and system for ensuring tail reading delay of server side of distributed storage system | |
Wijayaratne et al. | Providing QOS guarantees for disk I/O | |
Bosch et al. | Real-time disk scheduling in a mixed-media file system | |
JP4979332B2 (en) | Multiplexer and information processing apparatus | |
JP4878979B2 (en) | Multiplexer and information processing apparatus | |
Bigelow et al. | End-to-end performance management for scalable distributed storage | |
Znati et al. | A network-based scheme for synchronization of multimedia streams | |
Wu et al. | Automated QoS support for multimedia disk access | |
Ranjan et al. | Operating System Concerns for Multimedia | |
Brandt et al. | End-to-end performance management for scalable distributed storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090925 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20101125 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20110127 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110921 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110927 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111118 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120417 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120417 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150427 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |