KVM을 사용하여 가상 머신을 관리합니다. VM에 제공되는 리소스를 제한하려고합니다. libvirt / cgroup을 사용하여 VM에 할당 된 CPU 및 메모리를 제한 할 수 있습니다. 이제 가중치를 적용하여 각 VM에 할당 된 디스크 시간을 제어하려고합니다. 나는 cgroup에서 blkio control을 보았습니다. VM은 Linux 프로세스 일 뿐이므로 cgroup을 사용할 수는 있지만 비동기 IO에서도 작동하는지 확실하지 않습니다. 그렇지 않다면 누군가 좋은 대안 솔루션을 제안 할 수 있습니까?
답변
cgroup 용어의 Blkio는 블록 장치의 I / O에 대한 액세스를 나타냅니다 . 소프트웨어 개발자가 I / O 관련 목적으로 사용하는 모든 다른 방식을 규제하는 것은 아닙니다.
소프트웨어가 장치에 액세스하는 방식이 아니라 주로 장치의 I / O를 대상으로하는 것 같습니다 . 다른 프로세스의 iops 수, 대역폭 또는 가중치를 제한 할 수 있습니다. 현재 blockio는 버퍼 쓰기를 지원하지 않는 것 같습니다. 그것은에서의 공식 문서 :
현재 블록 I / O 하위 시스템은 버퍼 된 쓰기 작업에 작동하지 않습니다. 버퍼링 된 읽기 작업에 적합하지만 주로 직접 I / O를 대상으로합니다.
당신이 한 번 봐 걸릴 경우 이 프레젠테이션 린다 왕과 페이지 레드햇, 20 + 밥 Kozdemba에서를, 당신은 그래프가되지 비동기 I / O 대 차단 대 임의 대해, VM 당 장치 대역폭에 대한 것을 볼 수 있습니다.
거기 것 같다 최근 작업 virsh를에 직접 구현하기에 Red Hat. 지난 주 libvirt 0.9.9에서 발표 되었습니다 . 몇 개월 후에, 좋아하는 배포판에서 다음과 같은 작업을 수행 할 수 있습니다.
virsh blkiotune domA --device-weights /dev/sda,250
virsh blkiotune domB --device-weights /dev/sda,750
답변
ionice를 사용하고 싶을 수도 있지만 IO와 비슷합니다.