cgroups: blkio.weightが望む効果を出せないようです。

cgroups: blkio.weightが望む効果を出せないようです。

次のcgroup設定を持つ2つのLXCコンテナがあります。

lxc.cgroup.blkio.weight = 200
lxc.cgroup.cpu.shares = 200

and

lxc.cgroup.blkio.weight = 800
lxc.cgroup.cpu.shares = 800

/sys/fs/cgroup/blkio/lxc/test1-lxccontainer/blkio.weight実際にホストOSで200に設定されていることを確認しました。

cpu.sharesコンテナ1に80%、コンテナ2に20%が割り当てられていることを確認しました。

ただし、両方のコンテナでこのコマンドを実行すると、次のようになります。

# write a 10GB file to disk
dd bs=1M count=10000 if=/dev/zero of=1test conv=fdatasync

私は読み取りに対して同様のテストを行いました。

davidparks21@test-cgroups1:/tmp$ time sh -c "dd if=1test of=/dev/null bs=1M"
10000+0 records in
10000+0 records out
10485760000 bytes (10 GB) copied, 37.9176 s, 277 MB/s

real    0m37.939s
user    0m0.004s
sys     0m24.306s

ホストオペレーティングシステムに表示されるIO速度は、iotop2つのコンテナ間でほぼ同じです。

この場合、コンテナ2はIOアクセスの80%を制御すると予想します。

ベストアンサー1

ここでの問題は、プロセススケジューラを使用する必要がありますが、私は間違ったスケジューラを使用し、設定を誤って読んだことです(プロセススケジューラを使用していないときに使用していたと思います)。正しいIOスケジューラに切り替えることで問題が解決しました。

IOスケジューラの変更(ソース:ここ):

echo cfq > /sys/block/{DEVICE-NAME}/queue/scheduler

おすすめ記事