KVM을 사용하여 가상 머신을 관리합니다. 가상 머신에 제공되는 리소스를 제한하려고 합니다. libvirt/cgroups를 사용하여 가상 머신에 할당되는 CPU와 메모리를 제한할 수 있습니다. 이제 몇 가지 가중치를 적용하여 각 가상 머신에 할당된 디스크 시간을 제어하고 싶습니다. 나는 cgroups에서 blkio 컨트롤을 살펴보았습니다. VM은 단지 Linux 프로세스이므로 cgroup을 사용할 수 있지만 비동기 IO에서도 작동할지는 확실하지 않습니다. 그렇지 않다면 누구든지 좋은 대체 솔루션을 제안할 수 있습니까?
답변1
부르치오 인cgroup 용어대표하다블록 장치의 I/O에 액세스. 소프트웨어 개발자가 I/O 관련 목적을 위해 사용할 수 있는 다양한 방법을 모두 규제하려는 의도는 아닌 것 같습니다.
주로 겨냥하고 있는 것 같습니다.장비, 소프트웨어가 장치에 액세스하는 방식이 아닙니다. Iops 수, 대역폭 또는 다른 프로세스의 가중치 등을 제한할 수 있습니다. blockio는 현재 버퍼링된 쓰기를 지원하지 않는 것 같습니다. 위치해있습니다공식 문서:
현재 블록 I/O 하위 시스템은 버퍼링된 쓰기 작업에 적합하지 않습니다. 주로 직접 I/O를 대상으로 하지만 버퍼링된 읽기 작업에도 적합합니다.
당신이 보면이 프레젠테이션위의 20페이지에 있는 Red Hat의 Linda Wang과 Bob Kozdemba를 통해 그래프가 무작위 I/O, 차단 I/O 및 비동기 I/O에 관한 것이 아니라 가상 머신당 장치 대역폭에 관한 것임을 알 수 있습니다.
있었던 것 같아요최근의 일하다이는 Red Hat에 의해 virsh에 직접 구현됩니다. 되었습니다해방됨지난주 libvirt 0.9.9. 몇 달 안에 여러분이 선호하는 배포판에서 다음을 수행할 수 있게 될 것입니다.
virsh blkiotune domA --device-weights /dev/sda,250
virsh blkiotune domB --device-weights /dev/sda,750
답변2
ionice를 사용하고 싶을 수도 있지만 훌륭하지만 IO용입니다.