본문 바로가기

VDI/VMware

[VMware]화상회의 관련 조치 품질 개선 정리

반응형

1. Windows 가상 머신(VM)에서 UDP 처리 성능 향상
트래픽양이 적은 환경에서도 Windows 가상 시스템에서 1024바이트보다 큰 UDP 패킷을 전송할 때 처리량이 예상보다
낮거나 안정적이지 않으며, 비디오 스트리밍 서버의 경우 비디오 재생이 일시 중지된다.

 

- Windows 네트워크 스택은 1024바이트보다 큰 모든 UDP 패킷에 대해 다음 패킷을 보내기 전에 전송 완료 인터럽트를
  기다린다.


- Vmware vSphere는 CPU 사용율을 낮추기 위해, Guest OS의 여러 인터럽트 요청을 단일 Intterrupt로 처리하는 
  Interrupt Coalescing 기능이 적용되어 있어서, 윈도우에게 즉각적으로 인터럽트를 제공하지 않음.

 

- Vmware에서 Interrupt 처리를 지연함에 따라, 윈도우에서 1024 바이트 이상의 UDP 패킷처리가 지연되고, 
  전체적인 성능이 저하됨.

 

Windows 윈도우에서 1,500 바이트 패킷에 대해, 
인터럽트를 기다리지 않고 처리하게
파라미터 변경(1,024 -> 1,500)
1. Windows + r
2. regedit
3. HKLM\System\CurrentControlSet\Services\Afd\Parameters
4. FastSendDatagramThreshold: DWORD 1,500
Vmware VM의 인터럽트 요청을 지연 없이
즉각적으로 처리할 수 있게 설정 변경
1. vmx 파일
2. ethernetX.coalescingScheme: Disabled

 

- 전송하는 UDP 패킷의 속성을 기준으로 전송하는 UDP 패킷의 크기가 1024바이트를 넘지 않을 경우 설정이 필요하지

않는다.


- FastSendDatagramThreshhold 값을 변경 또는 적용 후  Windows 를 재부팅해야 적용된다.

 

- 대상 vSphere 버전: 5.1, 5.5, 6.0, 6.5, 7.0이며, ESXi 호스트의 CPU 가 그만큼 인터럽트를 자주 처리하므로
  CPU 부담이 커질 수 있다.

 

< 참고 문헌 >

https://docs.vmware.com/kr/VMware-vSphere/6.0/com.vmware.vsphere.troubleshooting.doc/GUID-F07634C7-4D90-4EFD-841F-8743F5DF36BF.html

 

Windows 가상 시스템에서 UDP 워크로드에 대한 처리량이 낮음

vSphere 5.1 이상의 Windows 가상 시스템에서 대형 UDP 패킷을 전송할 때 다른 트래픽이 무시해도 될 정도인 경우에도 처리량이 예상보다 낮거나 안정적이지 않습니다.

docs.vmware.com

 

https://kb.vmware.com/s/article/2040065

 

VMware Knowledge Base

 

kb.vmware.com

 

2. Windows에서 전송 성능 개선

전송량이 많은 미디어 서버의 특성을 고려하여, 전송 처리 성능 개선한다.

(적용 전, 사전 테스트를 통해  UDP 처리 성능 향상 확인)

 

-  Windows에서 단일 전송큐(Tx Qeueu) 사용

 

Windows Tx Queue: 1 -> 8
Windows Tx Ring Buffer 사이즈 조절: 512 -> 4,096

 

- Tx Queue 설정은 vmxnet3 vNIC 속성으로 vNIC 및   driver 에 따라 설정 메뉴를 제공하지 않을 수 있다.

 

 

- vNIC에서 아래의 명령어를 통해 TX ring buffer full 이 감지되거나 감지될 확률이 높을 때 설정 필요. 설정시 메모리 

  사용량이 증가될 수 있다.

 

# vsish -e get /net/portsets/vSwitch0/ports/[portid]/vmxnet3/txSummary

 

< 참고 문헌 >

https://kb.vmware.com/s/article/2061598

 

VMware Knowledge Base

 

kb.vmware.com

 

3. 가상 머신의 Rx Queue Full 확인

수신 큐(Rx Queue)가 꽉 차거나(Full), 패킷 유실(Drop)이 발생하면서, 전체적인 미디어 처리 성능이나 품질에 영향을

미칠 수 있다.

 

- 가상 머신의 Rx Queue Full 확인

[root@esx0:~] vsish -e get /net/portsets/vSwitch0/ports/33554464/vmxnet3/rxSummary
stats of a vmxnet3 vNIC rx queue {
LRO pkts rx ok:50314577
LRO bytes rx ok:1670451542658
pkts rx ok:50714621
bytes rx ok:1670920359206
== 중략 ==
running out of buffers:10370
pkts receive error:0
# of times the 1st ring is full:7086
# of times the 2nd ring is full:0
fail to map a rx buffer:0
request to page in a buffer:0
# of times rx queue is stopped:0
failed when copying into the guest buffer:0
# of pkts dropped due to large hdrs:0
# of pkts dropped due to max number of SG limits:0
}

 

Windows RSS(Receive Side Scaling): Enabled, Rx Queue 8
Rx Ring #1, #2 Buffer 사이즈 조절(512 -> 4,096)
Small Rx Buffers: 8,192

 

- RSS는 Windows 와 NIC 모두 설정이 활성화 되어 있어야 한다.

 

- Windows 에서는 다음 명령으로 활성 여부를 확인할 수 있다.

netsh int tcp show global

 

 

Windows 에서는 다음 명령으로 통해 활성화 할 수 있다.

netsh int tcp set global rss=enabled

 

- NIC의 RSS 설정과 Rx Queue 설정은 vNIC 및  driver 에 따라 설정 메뉴를 제공하지 않을 수 있다.

 

- Rx Ring #1, #2 사이즈 설정은 vmxnet3 vNIC 속성으로 vNIC 및 driver 에 따라 설정 메뉴를 제공하지 않을 수 있다.

 

- vNIC에서 아래의 명령어를 통해 RX ring buffer full 이 감지되거나 감지될 확률이 높을 때 설정 필요하다.

# vsish -e get /net/portsets/vSwitch0/ports/[portid]/vmxnet3/rxSummary

 

- 설정시 메모리 사용량이 증가될 수 있다.

 

< 참고 문헌 >

https://kb.vmware.com/s/article/2061598

 

VMware Knowledge Base

 

kb.vmware.com

 

https://kb.vmware.com/s/article/2039495

 

VMware Knowledge Base

 

kb.vmware.com

 

반응형