RSS 다중 대기열(수신 측 크기 조정) 기반 애플리케이션을 개발하고 이를 vmware 워크스테이션에서 테스트하고 있는데 vmxnet3 네트워크 카드에 RSS 문제가 있다는 사실을 발견했습니다.
내 Linux 가상 머신에는 vCPU가 4개 있고 vmxnet3에는 rx 대기열이 4개 있지만 패킷은 항상 queue0에 도착하고 queue1-queue3은 항상 유휴 상태입니다. 다른 버전의 Linux/워크스테이션을 사용해 보았지만 동일한 결과를 얻었습니다. 내가 시도한 것은 Wind River Linux 4.3+workstation 10, centos6+workstation10 및 ceotos7+workstation11이며 vmxnet3 드라이버의 여러 버전을 시도했습니다: vmtools-8.8.4, vmtools-9.6.0, vmtools-9.9.0 및 centos7 vmxnet3 드라이버.
vmware 워크스테이션에서 다중 대기열(수신기 확장)이 작동할 수 있습니까?
다음은 수정된 vmxnet3 드라이버의 일부 메시지입니다(장치를 검색할 때 rss 구성을 인쇄하고 패킷을 수신할 때 rx desc를 인쇄).
vmxnet3 0000:13:00.0 eth2: intr 유형 3, 모드 0, 5개 벡터 할당
---------- eth2 RSS 구성: hashType=0xf rx_queues=4
vmxnet3 0000:13:00.0 eth2: NIC 링크 최대 10000Mbps
vmxnet3 0000:03:00.0 eth0: intr 유형 3, 모드 0, 5개 벡터 할당
---------- eth0 rss 구성: hashType=0xf rx_queues=4
vmxnet3 0000:03:00.0 eth0: NIC 링크 최대 10000Mbps
vmxnet3 0000:0b:00.0 eth1: intr 유형 3, 모드 0, 5개 벡터 할당
---------- eth1 rss 구성: hashType=0xf rx_queues=4
vmxnet3 0000:0b:00.0 eth1: NIC 링크 최대 10000Mbps
eth0-rxtx-0: rssType=0 rqID=0 rssHash=0x0(0) v4=1 v6=0 tcp=0 udp=1 tuc=1 cnc=0 ipc=1
eth0-rxtx-0: rssType=0 rqID=0 rssHash=0x0(0) v4=1 v6=0 tcp=0 udp=1 tuc=1 cnc=0 ipc=1
...같은 메시지입니다. IP 주소를 변경하더라도 패킷은 항상 eth0-rxtx-0에 도착합니다.
감사해요!
답변1
이 주제에 대한 지식 기반 기사가 있습니다.http://kb.vmware.com/kb/2020567(귀하의 요청에 따라 VMware에서 작성한 것 같습니다.) 주요 사항은 다음과 같습니다.
VMXNET3 Linux 장치 드라이버에는 RSS(Receive Side Extensions) 및 다중 대기열 지원이 포함되어 있습니다. VMXNET3 장치는 항상 여러 대기열을 지원했지만 Linux 드라이버는 이전에 1개의 Rx 및 1개의 Tx 대기열을 사용했습니다.
- VMware Tools에 포함된 VMXNET3 드라이버용 다중 대기열 지원이 vSphere 5.0에 도입되었습니다.
- Linux 운영 체제와 함께 제공되는 VMXNET3 드라이버의 경우 Linux 커널 버전 2.6.37 이후에 다중 대기열 지원이 도입되었습니다.
최신 버전의 VMware Tools에서는 기본적으로 다중 대기열을 활성화합니다. 그러나 이전 버전에서는 다중 대기열을 수동으로 활성화해야 했습니다. 이는 modprobe를 사용하여 각 어댑터에 대한 전송 및 수신 대기열 수를 설정하여 수행할 수 있습니다.