blk-ioscostウェイトベースのスロットリング機能は、cgroup I/Oサブシステム (blkcg) のウェイトベースのディスクスロットリング機能をAlibaba Cloud Linuxで改良したものです。 blk-iocostは、アプリケーションまたはプロセスの優先順位に基づいてブロックデバイス上のI/O操作に帯域幅を割り当てるために使用されるI/Oコントローラです。 blk_iocostはまた、特定の重み値に基づいて、特定のアプリケーションまたはプロセスによるブロックデバイスI/O帯域幅の使用を制御することができる。 blk-ioscostは、ディスクI/Oリソースの制御と管理を改善します。
cgroup v1とcgroup v2は、Linuxカーネルのリソース管理機能の2つのバージョンです。 Alibaba Cloud Linuxカーネルでは、blk-ioscost機能がcgroup v1およびv2インターフェイスをサポートします。 ほとんどの場合、1つのバージョンのみがアクティブ化され、システムで使用されます。 システムがcgroup v1インターフェイスまたはcgroup v2インターフェイスを使用しているかどうかを確認するには、stat -fc % T /sys/fs/cgroup
コマンドを実行します。
tmpfs
が返された場合、cgroup v1インターフェイスが使用されます。cgroup2fs
が返された場合、cgroup v2インターフェイスが使用されます。
使用上の注意
cost.qos
cost.mo del
weight (Alibaba Cloud Linux 3) またはcost.weight (Alibaba Cloud Linux 2)
制限事項
次のカーネルバージョンを含むAlibaba Cloud Linuxイメージのみがblk-iocost機能をサポートしています。
Alibaba Cloud Linux 2:
4.19.81-17
以降Alibaba Cloud Linux 3: すべてのバージョン
手順
ステップ1: cost.qosを使用してblk-iocost機能を有効にする
シナリオ例: cost.qos
インターフェイスを使用して、254:48
ディスクのblk-iocost機能を有効にします。 5% を超える読み取りおよび書き込み要求のレイテンシ (rlat | wlat
) が5ミリ秒を超える場合、ディスクは飽和していると見なされます。 カーネルは、要求がディスクに送信されるレートを、元のレートの50% から150% までの間隔内で調整します。 cgroup v1およびcgroup v2インターフェイスに対して次のコマンドを実行します。
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'
手順2: cost.mo delを使用してコストモデルを設定する
シナリオ例: cost.mo del
インターフェイスを使用してモデルを線形
に設定し、モデルパラメーターを指定して254:48
ディスクでモデルを構成します。 cgroup v1およびcgroup v2インターフェイスに対して次のコマンドを実行します。
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'
ステップ3: 重みの変更
シナリオ例: ステップ1: cost.qosインターフェイスを使用してblk-iocost機能を有効にすることでcost.qos
を設定し、ステップ2: cost.mo delインターフェイスを使用してコストモデルを設定することでcost.mo del
を設定すると、blk-iocost機能が有効になります。 次に、blkcg1 (cgroup v1) またはcg1 (group v2) コントロールグループを作成し、cgroup v1のcost.weight
インターフェイスまたはcgroup v2のweight
インターフェイスを使用して、コントロールグループのデフォルトの重みを50に変更します。 次に、254:48
のディスク上のコントロールグループの重みを50に設定します。 cgroup v1およびcgroup v2インターフェイスに対して次のコマンドを実行します。
cgroup v1のコマンド
sudo mkdir /sys/fs/cgroup/blkio/blkcg1 # Create the control group named blkcg1.
sudo sh -c 'echo "50" > /sys/fs/cgroup/blkio/blkcg1/blkio.cost.weight' # Change the default weight to 50.
sudo sh -c 'echo "254:48 50" > /sys/fs/cgroup/blkio/blkcg1/blkio.cost.weight' # Set the weight for the disk to 50.
cgroup v2のコマンド
Alibaba Cloud Linux 2
sudo mkdir /sys/fs/cgroup/cg1 # Create the control group named cg1. sudo sh -c 'echo "50" > /sys/fs/cgroup/cg1/io.cost.weight' # Change the default weight to 50. sudo sh -c 'echo "254:48 50" > /sys/fs/cgroup/cg1/io.cost.weight' # Set the weight to 50.
Alibaba Cloud Linux 3
sudo mkdir /sys/fs/cgroup/cg1 # Create the control group named cg1. sudo sh -c 'echo "50" > /sys/fs/cgroup/cg1/io.weight' # Change the default weight to 50. sudo sh -c 'echo "254:48 50" > /sys/fs/cgroup/cg1/io.weight' # Set the weight for the disk to 50.
一般的なモニタリングツール
blk-ioscostは、システムのI/Oパフォーマンスを監視および評価できる必要があります。 次のツールまたはインターフェイスを使用して、I/Oリソース使用量を監視し、リソース使用量を最適化できます。