PowerEdge: Enumeración incorrecta de funciones virtuales de puertos con varios adaptadores Intel X520 o X540 en VMware ESXi SR-IOV

Resumen: Configuración SR-IOV de VMware ESXi Intel X520/X540 max_vfs

Este artículo se aplica a Este artículo no se aplica a Este artículo no está vinculado a ningún producto específico. No se identifican todas las versiones del producto en este artículo.

Síntomas

El uso de varias tarjetas de red Intel X520 o Intel X540 en un único servidor PowerEdge puede generar un mensaje de VMware ESXi SR-IOV.

VMware informa que hay una enumeración incorrecta de funciones virtuales de puertos.

El problema se puede experimentar cuando se intenta configurar SR-IOV según la documentación técnica de Intel en
http://www.intel.com/content/dam/www/public/us/en/documents/technology-briefs/converged-network-adapter-sr-iov-on-esxi-5-1-brief.pdfEste hipervínculo lo redirige a un sitio web fuera de Dell Technologies.
http://www.intel.com/content/dam/www/public/us/en/documents/reference-guides/sr-iov-guide-ethernet-can-x710-xl710-vmware-vsphere-6-brief.pdfEste hipervínculo lo redirige a un sitio web fuera de Dell Technologies.

Cuando se observa el problema, después de habilitar las funciones virtuales desde la utilidad de línea de comandos (CLI) con el parámetro max_vfs, la enumeración de la función virtual del puerto parece incoherente con la asignación que se intentó. La visualización de la interfaz de usuario web también puede mostrar una enumeración de funciones virtuales de puerto incoherente después de habilitar las funciones virtuales desde la CLI de esta manera.

 

Causa

Sin causa

Resolución

VMware está al tanto de este problema y se está investigando una corrección. La documentación de VMware recomienda que los usuarios activen las funciones virtuales SR-IOV mediante vSphere Web Client.

Cuando utilice la CLI para configurar SR-IOV, asegúrese de que los controladores y el cliente web más recientes estén implementados; a continuación, se recomienda utilizar el método de cliente web para habilitar las funciones virtuales. 

 

Solución alternativa de CLI avanzada

Esta solución alternativa de la CLI se proporciona a los usuarios avanzados.
El kernel de ESXi escanea y ordena los dispositivos PCI de tres maneras diferentes según el comando utilizado.

Segmento: Autobús: Dispositivo: Función (Segmento = Dominio en términos de Linux, es 0)

  1. Orden de escaneo de árbol PCI que es orden conectado al dispositivo
  2. El VMkernel escanea desde el puente raíz y todos los nodos secundarios leen desde el espacio de configuración y de la manera recursiva de "búsqueda de profundidad primero".
     No hay documentación, pero es similar a http://wiki.osdev.org/PCI#Recursive_Scan_With_Bus_ConfigurationEste hipervínculo lo redirige a un sitio web fuera de Dell Technologies..
  3. Nombre de Vmnic: Es decir, vmnic1, vmnic1x,... vmnic2, vmnic2x,...,vmnic3

Luego, las diversas herramientas para enumerar dispositivos pueden seguir cualquiera de estos tres métodos:

  1.  Lspci se ordena por S,B,D,F
  2. esxcfg-nics-l' se ordena por vmnicX name.
  3. El cliente web se ordena por S,B,D,F.
  4. Esxcfg-module -s max_vsf= se ordena por escaneo de árbol PCI orderDmesg muestra los dispositivos PCI ordenados según el orden de escaneo del árbol de PCI.

Para configurar/habilitar SR-IOV correctamente (configure max_vfs mediante la línea de comandos), el usuario debe habilitar un dispositivo PCI según el orden de escaneo del árbol de PCI, que se puede lograr de la siguiente manera:

-corriente dmesg para obtener la información y analizarla con la información del dispositivo PCI, luego configure el max_vfs Según el orden indicado en el dmesg salida.
-ejecutar lspci.py script (a continuación) y establecer el comando max_vfs según el orden indicado por el script.

Este script consulta el PCI y ordena por orden de escaneo de árbol de PCI.
Por ejemplo, el script es solo y es posible que no se ejecute en todas las versiones del kernel de ESXi.
Se probó con ESXi 6.0U3.

Guarde el siguiente script en un archivo separado con la extensión .py (lspci.py, por ejemplo). 

#!/usr/bin/env python

import vmware
import vmware.vsi as vsi

VSI_HW_PCI_DEVICES = '/hardware/pci/devices'
VSI_HW_PCI_ROOT    = '/hardware/pci'
VSI_SYS_MOD_ROOT   = '/system/modules'

modInfo = {}

for m in vsi.list(VSI_SYS_MOD_ROOT):
   general = vsi.get("%s/%s/general" % (VSI_SYS_MOD_ROOT, m))
   id = int(general['moduleId'])
   modInfo[id] = m

for ptr in vsi.list(VSI_HW_PCI_DEVICES):
   dev = vsi.get("%s/%s/info" % (VSI_HW_PCI_DEVICES, ptr.strip()))
   s, b, d, f = dev['seg'], dev['bus'], dev['dev'], dev['func']
   nodePath = "%s/seg/%d/bus/%d/slot/%d/func/%d" % (VSI_HW_PCI_ROOT, s, b, d, f)
   cfg = vsi.get("%s/seg/%d/bus/%d/slot/%d/func/%d/pciConfigHeader" % (VSI_HW_PCI_ROOT, s, b, d, f))
   modName = modInfo[cfg['moduleID']] if cfg['moduleID'] != 0xffffffff else " " * 8
   print("%04d:%02d:%02d:%d\t%-16s\t%s" % (s, b, d, f, modName, cfg['name']))

Productos afectados

Intel PRO Family of Adapters, OEMR R440, OEMR R540, OEMR R640, OEMR R6415, OEMR R740, OEMR R740xd, OEMR R740xd2, OEMR R7415, OEMR R7425, OEMR R840, OEMR R940, OEMR R940xa, OEMR T640, PowerEdge C6420, PowerEdge FC640, PowerEdge M640 , PowerEdge M640 (for PE VRTX), PowerEdge R440, PowerEdge R540, PowerEdge R640, PowerEdge R6415, PowerEdge R740, PowerEdge R740XD, PowerEdge R740XD2, PowerEdge R7415, PowerEdge R7425, PowerEdge R840, PowerEdge R940, PowerEdge R940xa, PowerEdge T640 ...
Propiedades del artículo
Número del artículo: 000137659
Tipo de artículo: Solution
Última modificación: 05 jun 2025
Versión:  4
Encuentre respuestas a sus preguntas de otros usuarios de Dell
Servicios de soporte
Compruebe si el dispositivo está cubierto por los servicios de soporte.