Ubuntu

cgroups: blkio.weight 似乎沒有預期的效果

  • December 9, 2014

我有 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 命令?

引用自:https://unix.stackexchange.com/questions/69300