Ubuntu
cgroups: blkio.weight 似乎沒有預期的效果
我有 2 個具有這些 cgroup 設置的 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
主機作業系統上確實設置為 200。我已經驗證
cpu.shares
將 80% 分配給容器 1,將 20% 分配給容器 2。但是當我在兩個容器中執行這個命令時:
# 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 速度在
iotop
兩個容器之間幾乎相同。在這種情況下,我希望看到容器 2 控制 80% 的 IO 訪問。
這裡的問題是您需要使用公平調度程序,我使用了錯誤的調度程序,並且誤讀了設置(以為我使用的是公平調度程序,但實際上不是)。切換到正確的 IO 調度程序解決了這個問題。
要更改 IO 調度程序(取自此處):
echo cfq > /sys/block/{DEVICE-NAME}/queue/scheduler
您是否嘗試先刷新記憶體,這可能是您的系統記憶體的 dd 命令問題:
echo 3 > /proc/sys/vm/drop_caches
並使用“nocache”選項啟動 dd 命令?