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://kb.vmware.com/s/article/2040065
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
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
https://kb.vmware.com/s/article/2039495
'VDI > VMware' 카테고리의 다른 글
[VMware]기본 점검 방법 가이드(Basic Inspection Method Guide (0) | 2022.10.11 |
---|---|
[VMware]VMware key reference log File (0) | 2022.09.09 |
[VMware]VM Packet Loss(패킷로스) 많을 경우 해결 방법 (0) | 2022.09.02 |
[VMware]"최대 로그인 횟수 초과" 팝업 (0) | 2022.09.01 |
[Ubuntu]VMware Horizon Ubuntu fdisk disk 확장 (0) | 2022.08.26 |