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 속도는 iotop두 컨테이너 간에 거의 동일합니다.

이 경우 컨테이너 2가 IO 액세스의 80%를 제어할 것으로 예상합니다.

답변1

여기서 문제는 공정 스케줄러를 사용해야 하는데 제가 잘못된 스케줄러를 사용하고 설정을 잘못 읽었다는 것입니다(공정 스케줄러를 사용하지 않았을 때 사용하고 있었던 것으로 생각함). 올바른 IO 스케줄러로 전환하면 문제가 해결되었습니다.

IO 스케줄러 변경(출처:여기):

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

답변2

캐시를 먼저 플러시하려고 하면 시스템 캐시 dd 명령에 문제가 있을 수 있습니다.

echo 3 > /proc/sys/vm/drop_caches

그리고 "nocache" 옵션을 사용하여 dd 명령을 시작하시겠습니까?

관련 정보