17.5. 가상 머신 I/O 성능 최적화
VM(가상 머신)의 입력 및 출력(I/O) 기능은 VM의 전체 효율성을 크게 제한할 수 있습니다. 이를 해결하기 위해 블록 I/O 매개변수를 구성하여 VM의 I/O를 최적화할 수 있습니다.
17.5.1. 가상 머신에서 블록 I/O 튜닝 링크 복사링크가 클립보드에 복사되었습니다!
하나 이상의 VM에서 여러 블록 장치를 사용하는 경우 I/O weights 를 수정하여 특정 가상 장치의 I/O 우선 순위를 조정하는 것이 중요할 수 있습니다.
장치의 I/O 가중치를 늘리면 I/O 대역폭의 우선 순위가 증가하므로 더 많은 호스트 리소스를 제공합니다. 마찬가지로, 장치의 가중치를 줄이면 호스트 리소스가 적게 소비됩니다.
각 장치의 가중치 값은 100 ~1000 범위 내에 있어야 합니다. 또는 값은 장치별 목록에서 해당 장치를 제거하는 0 일 수 있습니다.
프로세스
VM의 블록 I/O 매개변수를 표시하고 설정하려면 다음을 수행합니다.
VM의 현재 &
lt;blkio> 매개변수를 표시합니다.# virsh dumpxml VM-nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 지정된 장치의 I/O 가중치를 편집합니다.
virsh blkiotune VM-name --device-weights device, I/O-weight
# virsh blkiotune VM-name --device-weights device, I/O-weightCopy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들어, 다음에서는 testguest1 VM의 /dev/sda 장치의 가중치를 500으로 변경합니다.
virsh blkiotune testguest1 --device-weights /dev/sda, 500
# virsh blkiotune testguest1 --device-weights /dev/sda, 500Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
VM의 블록 I/O 매개변수가 올바르게 구성되었는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요특정 커널은 특정 장치의 I/O 가중치 설정을 지원하지 않습니다. 이전 단계에서 가중치가 예상대로 표시되지 않으면 이 기능이 호스트 커널과 호환되지 않을 수 있습니다.
17.5.2. 가상 머신의 디스크 I/O 제한 링크 복사링크가 클립보드에 복사되었습니다!
여러 VM이 동시에 실행되면 과도한 디스크 I/O를 사용하여 시스템 성능을 방해할 수 있습니다. KVM 가상화의 디스크 I/O 제한은 VM에서 호스트 머신으로 전송된 디스크 I/O 요청에 제한을 설정할 수 있는 기능을 제공합니다. 이렇게 하면 VM에서 공유 리소스를 과도하게 활용하고 다른 VM의 성능에 영향을 미치는 것을 방지할 수 있습니다.
디스크 I/O 제한을 활성화하려면 VM에 연결된 각 블록 장치에서 호스트 시스템에 연결된 디스크 I/O 요청에 대한 제한을 설정합니다.
프로세스
virsh domblklist명령을 사용하여 지정된 VM에 있는 모든 디스크 장치의 이름을 나열합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow throttle이 마운트되는 가상 디스크가 마운트된 호스트 블록 장치를 찾습니다.
예를 들어 이전 단계의
sdb가상 디스크를 제한하려면 다음 출력에서 디스크가/dev/nvme0n1p3파티션에 마운트되었음을 보여줍니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow virsh blkiotune명령을 사용하여 블록 장치의 I/O 제한을 설정합니다.virsh blkiotune VM-name --parameter device,limit
# virsh blkiotune VM-name --parameter device,limitCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예제에서는
rollin-coalVM의sdb디스크를 초당 I/O 작업과 초당 50MB의 읽기 및 쓰기 처리량으로 1000으로 제한합니다.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
# 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,52428800Copy to Clipboard Copied! Toggle word wrap Toggle overflow
추가 리소스
- 디스크 I/O 제한은 다양한 상황에서 유용할 수 있습니다(예: 서로 다른 고객에 속하는 VM이 동일한 호스트에서 실행 중이거나 다른 VM에 대한 서비스 품질 보장이 제공되는 경우). 디스크 I/O 제한은 느린 디스크를 시뮬레이션하는 데에도 사용할 수 있습니다.
- I/O 제한은 VM에 연결된 각 블록 장치에 독립적으로 적용할 수 있으며 처리량 및 I/O 작업에 대한 제한을 지원합니다.
-
Red Hat은
virsh blkdeviotune명령을 사용하여 VM에서 I/O 제한을 구성하는 것을 지원하지 않습니다. RHEL 8을 VM 호스트로 사용할 때 지원되지 않는 기능에 대한 자세한 내용은 RHEL 8 가상화에서 지원되지 않는 기능을 참조하십시오.
17.5.3. 스토리지 장치에서 다중 대기열 활성화 링크 복사링크가 클립보드에 복사되었습니다!
VM(가상 시스템)에서 virtio-blk 또는 virtio-scsi 스토리지 장치를 사용하는 경우 멀티 큐 기능을 통해 스토리지 성능과 확장성을 개선할 수 있습니다. 이를 통해 각 가상 CPU(vCPU)에 다른 vCPU에 영향을 주지 않고 사용할 별도의 대기열과 인터럽트가 있을 수 있습니다.
멀티 큐 기능은 Q35 시스템 유형에 대해 기본적으로 활성화되어 있지만 i440FX 시스템 유형에서 수동으로 활성화해야 합니다. 워크로드에 최적의 대기열 수를 조정할 수 있지만 최적의 수는 각 워크로드 유형에 따라 다르며 경우에 가장 적합한 대기열 수를 테스트해야 합니다.
절차
스토리지 장치에서
다중 큐를 활성화하려면 VM의 XML 구성을 편집합니다.virsh edit <example_vm>
# virsh edit <example_vm>Copy to Clipboard Copied! Toggle word wrap Toggle overflow XML 구성에서 의도한 스토리지 장치를 찾고 여러 I/O 대기열을 사용하도록
queues매개변수를 변경합니다. N 을 VM의 vCPU 수(최대 16개)로 바꿉니다.virtio-blk예제:Copy to Clipboard Copied! Toggle word wrap Toggle overflow virtio-scsi예:<controller type='scsi' index='0' model='virtio-scsi'> <driver queues='N' /> </controller>
<controller type='scsi' index='0' model='virtio-scsi'> <driver queues='N' /> </controller>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 변경 사항을 적용하려면 VM을 다시 시작합니다.
17.5.4. 전용 IOThreads 구성 링크 복사링크가 클립보드에 복사되었습니다!
VM(가상 머신)에서 디스크의 입력/출력(IO) 성능을 개선하기 위해 VM 디스크의 IO 작업을 관리하는 데 사용되는 전용 IOThread 를 구성할 수 있습니다.
일반적으로 디스크의 IO 작업은 기본 QEMU 스레드의 일부이므로 집중 IO 워크로드 중 VM의 응답성을 줄일 수 있습니다. IO 작업을 전용 IOThread 로 분리하면 VM의 응답성 및 성능을 크게 높일 수 있습니다.
절차
- 실행 중인 경우 선택한 VM을 종료합니다.
호스트에서 VM의 XML 구성에서 <
;iothreads> 태그를 추가하거나 편집합니다. 예를 들어testguest1VM에 대한 단일IOThread를 생성하려면 다음을 수행합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고최적의 결과를 얻으려면 호스트에서 CPU당 1-2개의
IOThreads만 사용합니다.VM 디스크에 전용
IOThread'를 할당합니다. 예를 들어 ID가 1인IOThread를testguestVM의 디스크에 할당하려면 다음을 수행합니다.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고IOThreadID는 1에서 시작하며 단일IOThread만 디스크에만 사용해야 합니다.일반적으로 최적의 성능을 위해 VM당 하나의 전용
IOThread로 충분합니다.virtio-scsi스토리지 장치를 사용하는 경우 전용IOThread를virtio-scsi컨트롤러에 할당합니다. 예를 들어 ID가 1인IOThread를testguestVM의 컨트롤러에 할당하려면 다음을 수행합니다.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
- VM 성능에 대한 변경 사항의 영향을 평가합니다. 자세한 내용은 다음을 참조하십시오. 가상 머신 성능 모니터링 툴
17.5.5. 가상 디스크 캐싱 구성 링크 복사링크가 클립보드에 복사되었습니다!
KVM은 여러 가상 디스크 캐싱 모드를 제공합니다. IIO(Intent Input/Output) 워크로드의 경우 최적의 캐싱 모드를 선택하면 VM(가상 머신) 성능이 크게 증가할 수 있습니다.
+
가상 디스크 캐시 모드 개요
writethrough- 호스트 페이지 캐시는 읽기에만 사용됩니다. 쓰기는 데이터가 스토리지 장치에 커밋된 경우에만 완료된 것으로 보고됩니다. 유지 관리되는 IO 성능은 줄어들지만 이 모드에서는 쓰기가 좋습니다.
writeback-
호스트 페이지 캐시는 읽기 및 쓰기 모두에 사용됩니다. 데이터가 물리적 스토리지가 아닌 호스트의 메모리 캐시에 도달하면 쓰기가 완료된 것으로 보고됩니다. 이 모드는
writethrough보다 IO 성능이 빠르지만 호스트 실패 시 데이터가 손실될 수 있습니다. none- 호스트 페이지 캐시는 완전히 무시됩니다. 이 모드는 물리적 디스크의 쓰기 대기열에 직접 의존하므로 예측 가능한 IO 성능을 갖추고 안정적인 게스트에서 쓰기 보장을 제공합니다. VM 실시간 마이그레이션의 안전한 캐시 모드이기도 합니다.
절차
- 실행 중인 경우 선택한 VM을 종료합니다.
선택한 VM의 XML 구성을 편집합니다.
virsh edit <vm_name>
# virsh edit <vm_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 디스크 장치를 찾아
드라이버태그에서캐시옵션을 편집합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow