Linux Virtual Machine 고려 사항

Linux 및 BSD 가상 머신에는 Hyper-V의 Windows 가상 머신에 비해 추가 고려 사항이 있습니다.

첫 번째 고려 사항은 Integration Services가 있는지 또는 VM이 인식 없이 에뮬레이트된 하드웨어에서만 실행되는지 여부입니다. 기본 제공 또는 다운로드 가능한 Integration Services가 있는 Linux 및 BSD 릴리스 테이블은 WindowsHyper-V용 지원되는 Linux 및 FreeBSD 가상 머신에서 사용할 수 있습니다. 이러한 페이지에는 Linux 배포 릴리스에서 사용할 수 있는 사용 가능한 Hyper-V 기능의 그리드와 해당되는 기능에 대한 참고 사항이 있습니다.

게스트가 Integration Services를 실행하는 경우에도 최상의 성능을 나타내지 않는 레거시 하드웨어로 구성할 수 있습니다. 예를 들어 레거시 네트워크 어댑터를 사용하는 대신 게스트에 대한 가상 이더넷 어댑터를 구성하고 사용합니다. Windows Server 2016에서는 SR-IOV와 같은 고급 네트워킹도 사용할 수 있습니다.

Linux 네트워크 성능

Linux는 기본적으로 하드웨어 가속 및 오프로드를 사용하도록 설정합니다. 호스트의 NIC 속성에서 vRSS를 사용하도록 설정하고 Linux 게스트에 vRSS를 사용할 수 있는 기능이 있는 경우 기능이 활성화됩니다. Powershell에서 이 동일한 매개 변수는 명령을 사용하여 EnableNetAdapterRSS 변경할 수 있습니다.

마찬가지로 게스트 속성>구성에서 사용하는 물리적 NIC에서 VMMQ(가상 스위치 RSS) 기능을 사용하도록 설정할 수 있습니다.>고급 탭 > 은 다음을 사용하여 Powershell에서 VMMQ를 사용하도록 설정하거나 사용하도록 가상 스위치 RSS를 설정합니다.

 Set-VMNetworkAdapter -VMName **$VMName** -VmmqEnabled $True

게스트에서 제한을 늘려 추가 TCP 튜닝을 수행할 수 있습니다. 여러 CPU에 워크로드를 분산하고 심층 워크로드를 사용하는 최상의 성능을 위해 가상화된 워크로드는 "완전" 워크로드보다 대기 시간이 더 높기 때문에 최상의 처리량을 생성합니다.

네트워크 벤치마크에서 유용한 튜닝 매개 변수의 예는 다음과 같습니다.

net.core.netdev_max_backlog = 30000
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.ipv4.tcp_wmem = 4096 12582912 33554432
net.ipv4.tcp_rmem = 4096 12582912 33554432
net.ipv4.tcp_max_syn_backlog = 80960
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240 65535
net.ipv4.tcp_abort_on_overflow = 1

네트워크 마이크로크런치마크에 유용한 도구는 Linux 및 Windows 모두에서 사용할 수 있는 ntttcp입니다. Linux 버전은 오픈 소스 github.com ntttcp-for-linux에서 사용할 수 있습니다. Windows 버전은 다운로드 센터에서 찾을 수 있습니다. 워크로드를 튜닝할 때 최상의 처리량을 얻기 위해 필요한 만큼 스트림을 사용하는 것이 가장 좋습니다. ntttcp를 사용하여 트래픽을 모델링하는 매개 변수는 -P 사용된 병렬 연결 수를 설정합니다.

Linux Storage 성능

다음과 같은 몇 가지 모범 사례는 Hyper-V에서 Linux를 실행하기 위한 모범 사례에 나열됩니다. Linux 커널에는 다양한 알고리즘을 사용하여 요청을 다시 정렬하는 다른 I/O 스케줄러가 있습니다. NOOP는 하이퍼바이저 수행 하기 위해 일정 의사 결정을 전달 하는 선입 선출 방식입니다. Hyper-v의 Linux 가상 머신을 실행하는 경우 NOOP 스케줄러로 사용하는 것이 좋습니다. 특정 디바이스에 대한 스케줄러를 변경하려면 부팅 로더의 구성(예: /etc/grub.conf)에서 커널 매개 변수에 추가 elevator=noop 한 다음 다시 시작합니다.

네트워킹과 마찬가지로 스토리지를 사용하는 Linux 게스트 성능은 호스트를 바쁘게 유지하기에 충분한 깊이를 가진 여러 큐에서 가장 많은 이점을 제공합니다. libaio 엔진을 사용하는 fio 벤치마크 도구를 사용하면 스토리지 성능을 마이크로브런치하는 것이 가장 좋습니다.

추가 참조