5.4.2. 멀티 큐 virtio-net
멀티 큐 virtio-net에서는 vCPU 수가 증가할 때 네트워크 성능을 스케일링하는 접근 방식을 제공하여 한 번에 둘 이상의 virtqueue 쌍을 통해 패킷을 전송할 수 있습니다.
오늘날의 고급 서버에는 더 많은 프로세서가 있으며 게스트는 다수의 vCPU를 사용하는 경우가 많습니다. 단일 큐 virtio-net에서는 vCPU 수가 증가함에 따라 네트워크 성능이 확장되지 않으므로 게스트의 프로토콜 스택 규모가 제한됩니다. virtio-net에는 TX 및 RX 대기열만 있으므로 게스트는 병렬로 패킷을 전송하거나 검색할 수 없습니다.
멀티 큐 지원에서는 병렬 패킷 처리를 허용하여 이러한 병목 현상을 제거합니다.
멀티 큐 virtio-net은 다음과 같은 경우 가장 큰 성능 이점을 제공합니다.
- 트래픽 패킷은 상대적으로 큽니다.
- 게스트는 게스트 간에 트래픽이 실행되고, 게스트를 외부 시스템으로 또는 게스트 간에 실행되는 동시에 여러 연결에서 활성화됩니다.
- 대기열 수는 vCPU 수와 동일합니다. 이는 멀티 큐가 특정 vCPU에 특정 큐를 개인으로 만들기 위해 RX 인터럽트 선호도 및 TX 대기열 선택을 최적화하기 때문입니다.
참고
현재 멀티 큐 virtio-net 연결을 설정하면 나가는 트래픽 성능에 부정적인 영향을 미칠 수 있습니다. 특히 이는 TCP(Transmission Control Protocol) 스트림을 통해 1,500바이트 미만의 패킷을 보낼 때 발생할 수 있습니다. 자세한 내용은 Red Hat Knowledgebase를 참조하십시오.
5.4.2.1. 다중 대기열 virtio-net 구성
멀티 큐 virtio-net을 사용하려면 게스트 XML 구성에 다음을 추가하여 게스트의 지원을 활성화합니다(여기서 N 값은 1에서 256, 즉 커널이 멀티 큐 탭 장치에 대해 최대 256개의 큐를 지원하므로) 게스트 XML 구성에 다음을 추가합니다.
<interface type='network'> <source network='default'/> <model type='virtio'/> <driver name='vhost' queues='N'/> </interface>
게스트에서 N virtio-net 큐를 사용하여 가상 머신을 실행하는 경우 다음 명령을 사용하여 다중 대기열 지원을 활성화합니다( M 값은 1에서 N까지):
# ethtool -L eth0 combined M