|
パーティションやプロセスといった帯域を制御する単位毎にウエイトを割り当て、ウエイトの比率に従って帯域を分配します。例えばデバイスsda上に二つの論理ボリュームLogVol00とLogVol01があり、それぞれにデバイスioband00とioband01をスタックしてウエイトを60:40で割り当てた場合には、ioband00にはsdaの帯域の60%、ioband01にはsdaの帯域の40%が割り当てられることになります。
この時のdm-iobandの動作を説明します。
まず最初にdm-iobandは設定されたウエイトの比率に従って各デバイスにトークンを配ります。ここではioband00に60個、ioband01に40個のトークンを配ることとします。各デバイスはI/O要求を受け取ると、トークンが有る場合にはトークンを一つ減らして下位のデバイスにI/O要求を渡し、無い場合にはそのI/O要求をdm-ioband内に保留します。そして、
|
 |
両方のデバイスのトークンが0になった。 |
|
 |
一方のデバイスのトークンが0になり、かつもう一方のデバイスはI/O要求を受け取っていない。 |
という状態になると、dm-iobandは各デバイスにトークンを補充し、保留されていたI/O要求は下位のデバイスに渡されます。ioband00とioband01に対して常にI/O要求が出されている状態では、トークンが補充される間隔でioband00が60回、ioband01が40回のI/Oを行うことになります。従って、sdaの帯域がウエイトの比率に従って分配されることになります。 |