14.4. 가상 머신 I/O 성능 최적화
VM(가상 시스템)의 입력 및 출력(I/O) 기능은 VM의 전반적인 효율성을 크게 제한할 수 있습니다. 이 문제를 해결하기 위해 블록 I/O 매개변수를 구성하여 VM의 I/O를 최적화할 수 있습니다.
14.4.1. 가상 머신의 블록 I/O 튜닝
하나 이상의 VM에서 여러 블록 장치를 사용하는 경우 I/O 가중치를 수정하여 특정 가상 장치의 I/O 우선 순위를 조정하는 것이 중요할 수 있습니다.
장치의 I/O 가중치를 늘리면 I/O 대역폭의 우선 순위가 증가하므로 더 많은 호스트 리소스를 제공합니다. 마찬가지로 장치의 가중치를 줄이면 호스트 리소스를 더 적게 소비할 수 있습니다.
각 장치의 가중치
값은 1 00~1000
범위 내에 있어야 합니다. 또는 장치별 목록에서 해당 장치를 제거하는 값이
0
일 수 있습니다.
절차
VM의 블록 I/O 매개변수를 표시하고 설정하려면 다음을 수행합니다.
VM의 현재
<blkio>
매개변수를 표시합니다.# virsh dumpxml VM-name
<domain> [...] <blkiotune> <weight>800</weight> <device> <path>/dev/sda</path> <weight>1000</weight> </device> <device> <path>/dev/sdb</path> <weight>500</weight> </device> </blkiotune> [...] </domain>
지정된 장치의 I/O 가중치를 편집합니다.
# virsh blkiotune VM-name --device-weights device, I/O-weight
예를 들어, 다음에서는 testguest1 VM의 /dev/sda 장치의 가중치를 500으로 변경합니다.
# virsh blkiotune testguest1 --device-weights /dev/sda, 500
14.4.2. 가상 머신의 디스크 I/O 제한
여러 개의 VM이 동시에 실행되는 경우 과도한 디스크 I/O를 사용하여 시스템 성능을 방해할 수 있습니다. KVM 가상화의 디스크 I/O 제한은 VM에서 호스트 시스템으로 전송된 디스크 I/O 요청에 제한을 설정하는 기능을 제공합니다. 이렇게 하면 VM이 공유 리소스를 과도하게 활용하고 다른 VM의 성능에 영향을 미치지 않도록 할 수 있습니다.
디스크 I/O 제한을 활성화하려면 VM에 연결된 각 블록 장치에서 호스트 시스템으로 전송된 디스크 I/O 요청에 대한 제한을 설정합니다.
절차
virsh domblklist
명령을 사용하여 지정된 VM의 모든 디스크 장치 이름을 나열합니다.# virsh domblklist rollin-coal Target Source ------------------------------------------------ vda /var/lib/libvirt/images/rollin-coal.qcow2 sda - sdb /home/horridly-demanding-processes.iso
제한할 가상 디스크가 마운트된 호스트 블록 장치를 찾습니다.
예를 들어 이전 단계에서
sdb
가상 디스크를 제한하려면 다음 출력에서 디스크가/dev/nvme0n1p3
파티션에 마운트되어 있음을 보여줍니다.$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT zram0 252:0 0 4G 0 disk [SWAP] nvme0n1 259:0 0 238.5G 0 disk ├─nvme0n1p1 259:1 0 600M 0 part /boot/efi ├─nvme0n1p2 259:2 0 1G 0 part /boot └─nvme0n1p3 259:3 0 236.9G 0 part └─luks-a1123911-6f37-463c-b4eb-fxzy1ac12fea 253:0 0 236.9G 0 crypt /home
virsh blkiotune
명령을 사용하여 블록 장치의 I/O 제한을 설정합니다.# virsh blkiotune VM-name --parameter device,limit
다음 예제에서는
rollin-coal
VM의sdb
디스크를 초당 읽기 및 쓰기 I/O 작업 수가 1000개, 초당 50MB의 읽기 및 쓰기 처리량으로 제한합니다.# virsh blkiotune rollin-coal --device-read-iops-sec /dev/nvme0n1p3,1000 --device-write-iops-sec /dev/nvme0n1p3,1000 --device-write-bytes-sec /dev/nvme0n1p3,52428800 --device-read-bytes-sec /dev/nvme0n1p3,52428800
추가 정보
- 디스크 I/O 제한은 서로 다른 고객에게 속한 VM이 동일한 호스트에서 실행 중이거나 다른 VM에 대해 서비스 품질이 제공되는 경우와 같이 다양한 상황에서 유용할 수 있습니다. 디스크 I/O 제한도 느린 디스크를 시뮬레이션하는 데 사용할 수 있습니다.
- I/O 제한은 VM에 연결된 각 블록 장치에 독립적으로 적용할 수 있으며 처리량 및 I/O 작업에 대한 제한을 지원합니다.
-
Red Hat은 VM에서 I/O 제한을 설정하기 위해
virsh blkdeviotune
명령을 사용하는 것을 지원하지 않습니다. RHEL 8을 VM 호스트로 사용할 때 지원되지 않는 기능에 대한 자세한 내용은 RHEL 8 가상화에서 지원되지 않는 기능을 참조하십시오.
14.4.3. 다중 대기열 virtio-scsi 활성화
VM(가상 시스템)에서 virtio-scsi
스토리지 장치를 사용할 때 다중 대기열 virtio-scsi 기능을 사용하면 스토리지 성능과 확장성이 향상됩니다. 이를 통해 각 가상 CPU(vCPU)에 다른 vCPU에 영향을 주지 않고 사용할 별도의 대기열과 인터럽트가 있을 수 있습니다.
절차
특정 VM에 대한 다중 대기열 virtio-scsi 지원을 활성화하려면 VM의 XML 구성에 다음을 추가합니다. 여기서 N 은 총 vCPU 대기열 수입니다.
<controller type='scsi' index='0' model='virtio-scsi'> <driver queues='N' /> </controller>