blk-iocost 重みベースのスロットリング機能は、cgroup 入出力サブシステム(blkcg)の重みベースのディスクスロットリング機能に対する Alibaba Cloud Linux の改良点です。 blk-iocost は、アプリケーションまたはプロセスの優先順位に基づいて、ブロックデバイスでの入出力操作に帯域幅を割り当てるために使用される入出力コントローラーです。 blk-iocost は、指定された重み値に基づいて、特定のアプリケーションまたはプロセスによるブロックデバイスの入出力帯域幅の使用量を制御することもできます。 blk-iocost は、ディスク入出力リソースをより適切に制御および管理するのに役立ちます。
cgroup v1 と cgroup v2 は、Linux カーネルのリソース管理機能の 2 つのバージョンです。 Alibaba Cloud Linux カーネルでは、blk-iocost 機能は cgroup v1 と v2 の両方のインターフェイスをサポートしています。ほとんどの場合、システムでアクティブ化されて使用されるのは 1 つのバージョンだけです。 stat -fc %T /sys/fs/cgroup コマンドを実行して確認できます。
tmpfsが返された場合、cgroup v1 インターフェイスが使用されています。cgroup2fsが返された場合、cgroup v2 インターフェイスが使用されています。
オペレーティングシステムの制限
カーネルバージョン
4.19.81-17以後の Alibaba Cloud Linux 2Alibaba Cloud Linux 3
cost.qos インターフェイスの使用上の注意
cost.qos は、blk-iocost 機能を有効または無効にし、レイテンシの重みに基づいてサービス品質(QoS)レートを制限するために使用される読み取り/書き込みインターフェイスです。インターフェイスファイルは blkcg のルートグループにのみ存在し、そのフルネームは cgroup のバージョンによって異なります。
cgroup v1:
blkio.cost.qoscgroup v2:
io.cost.qos
設定
構成ファイルの各行は、MAJ:MIN 形式のディスクのメジャー(MAJ)番号とマイナー(MIN)番号で始まり、その後に次の表のパラメーターが続きます。ディスクの MAJ 番号と MIN 番号を照会するには、lsblk | grep <disk name> コマンドを実行します。
パラメーター | 説明 |
enable | blk-iocost 機能を有効にするかどうかを指定します。
|
ctrl | 制御モード。有効値:
|
blk-iocost 機能の有効化
ディスクの blk-iocost 機能を有効にします。この例では、254:48 ディスクが使用され、制御モードは user に設定されています。読み取りおよび書き込みリクエストの 95% 以上でレイテンシ(rlat|wlat)が 5 ミリ秒を超える場合、ディスクは飽和状態とみなされます。カーネルは、50% ~ 150% の範囲内でディスクにリクエストが送信されるレートを調整します。
cgroup v1 インターフェイス
sudo sh -c 'echo "254:48 enable=1 ctrl=user rpct=95.00 rlat=5000 wpct=95.00 wlat=5000 min=50.00 max=150.00" > /sys/fs/cgroup/blkio/blkio.cost.qos'cgroup v2 インターフェイス
sudo sh -c 'echo "254:48 enable=1 ctrl=user rpct=95.00 rlat=5000 wpct=95.00 wlat=5000 min=50.00 max=150.00" > /sys/fs/cgroup/io.cost.qos'
cost.model インターフェイスの使用
cost.model は、コストモデルを構成するために使用される読み取り/書き込みインターフェイスです。インターフェイスファイルは blkcg のルートグループにのみ存在し、そのフルネームは cgroup のバージョンによって異なります。
cgroup v1:
blkio.cost.modelcgroup v2:
io.cost.model
設定
構成ファイルの各行は、MAJ:MIN 形式のディスクのメジャー(MAJ)番号とマイナー(MIN)番号で始まり、その後に次の表のパラメーターが続きます。ディスクの MAJ 番号と MIN 番号を照会するには、lsblk | grep <disk name> コマンドを実行します。
パラメーター | 説明 |
ctrl | 制御モード。有効値:
|
model | モデルパラメーター。有効値:
|
cost.model インターフェイスを使用したコストモデルの設定
この例では、254:48 ディスクが使用されています。 model パラメーターを linear に設定し、モデリングパラメーターを指定してコストモデルを構成します。
cgroup v1 インターフェイス
sudo sh -c 'echo "254:48 ctrl=user model=linear rbps=2706339840 rseqiops=89698 rrandiops=110036 wbps=1063126016 wseqiops=135560 wrandiops=130734" > /sys/fs/cgroup/blkio/blkio.cost.model'cgroup v2 インターフェイス
sudo sh -c 'echo "254:48 ctrl=user model=linear rbps=2706339840 rseqiops=89698 rrandiops=110036 wbps=1063126016 wseqiops=135560 wrandiops=130734" > /sys/fs/cgroup/io.cost.model'
`weight/cost.weight` インターフェイスの使用上の注意
Alibaba Cloud Linux 3 の weight インターフェイスと Alibaba Cloud Linux 2 の cost.weight インターフェイスは、入出力リソースの割り当てを制御するために使用されるカーネルのコアインターフェイスです。どちらのインターフェイスも読み取り/書き込みインターフェイスです。 [1,10000] の範囲内で重み値を構成することにより、ディスク入出力帯域幅を動的に割り当てることができます。インターフェイスファイルは blkcg のサブグループにのみ存在し、そのフルネームは cgroup のバージョンによって異なります。
Alibaba Cloud Linux 3
cgroup v1:
blkio.cost.weightcgroup v2:
io.weight
Alibaba Cloud Linux 2
cgroup v1:
blkio.cost.weightcgroup v2:
io.cost.weight
設定
インターフェイスの重み値
<weight>を設定して、blkcgのデフォルトの重みを変更します。インターフェイスのポート番号と重み値
MAJ:MIN <weight>を設定して、指定したディスクの blkcg の重みを変更します。
重みの変更
blk-iocost 機能を有効にした後、cgroup v1 の blkcg1 制御グループと cgroup v2 の cg1 制御グループを作成し、cgroup v1 には cost.weight インターフェイスを、cgroup v2 には weight インターフェイスを使用して、制御グループのデフォルトの重みを 50 に変更します。次に、254:48 ディスクの制御グループの重みを 50 に設定します。
cgroup v1 インターフェイス
sudo mkdir /sys/fs/cgroup/blkio/blkcg1 # 制御グループ blkcg1 を作成する sudo sh -c 'echo "50" > /sys/fs/cgroup/blkio/blkcg1/blkio.cost.weight' # デフォルトの重みを 50 に変更する sudo sh -c 'echo "254:48 50" > /sys/fs/cgroup/blkio/blkcg1/blkio.cost.weight' # ディスクの重みを 50 に設定するcgroup v2 インターフェイス
Alibaba Cloud Linux 3
sudo mkdir /sys/fs/cgroup/cg1 # 制御グループ cg1 を作成する sudo sh -c 'echo "50" > /sys/fs/cgroup/cg1/io.weight' # デフォルトの重みを 50 に変更する sudo sh -c 'echo "254:48 50" > /sys/fs/cgroup/cg1/io.weight' # ディスクの重みを 50 に設定するAlibaba Cloud Linux 2
sudo mkdir /sys/fs/cgroup/cg1 # 制御グループ cg1 を作成する sudo sh -c 'echo "50" > /sys/fs/cgroup/cg1/io.cost.weight' # デフォルトの重みを 50 に変更する sudo sh -c 'echo "254:48 50" > /sys/fs/cgroup/cg1/io.cost.weight' # ディスクの重みを 50 に設定する
一般的なモニタリングツール
blk-iocost は、システムの入出力パフォーマンスを監視および評価する必要があります。次のツールまたはインターフェイスを使用して、入出力リソースの使用状況を監視し、リソース使用率を最適化できます。