<Anterior | Contenido | Siguiente>
5.9. Soporte y solución de problemas
DPDK es un proyecto de rápida evolución. En cualquier caso de búsqueda de soporte y guías adicionales, se recomienda encarecidamente verificar primero si se aplican a la versión actual.
• Listas de correo DPDK38
• Para listas de distribución de OpenStack OpenVswitch-DPDK39
• Problemas conocidos en el área de Launchpad de DPDK40
• Únase a los canales de IRC #DPDK o #openvswitch en freenode.
Los problemas suelen deberse a que faltan pequeños detalles en la configuración general. Más adelante, estos detalles faltantes causan problemas que pueden ser difíciles de rastrear hasta su causa raíz. Un caso común parece ser el problema "No se pudo abrir el dispositivo de red dpdk0 (No existe tal dispositivo)". Esto ocurre bastante tarde cuando se configura un puerto en Open vSwitch con DPDK. Pero la causa principal la mayor parte del tiempo es muy temprano en la configuración e inicialización. Aquí un ejemplo de cómo se ve una inicialización adecuada de un dispositivo: esto se puede encontrar en el registro del sistema / diario al iniciar Open vSwitch con DPDK habilitado.
ovs-ctl [3560]: EAL: dispositivo PCI 0000: 04: 00.1 en el zócalo NUMA 0 ovs-ctl [3560]: EAL: controlador de sonda: 8086: 1528 rte_ixgbe_pmd ovs-ctl [3560]: EAL: memoria PCI asignada a 0x7f2140000000 ovs-ctl [3560]: EAL: memoria PCI asignada a 0x7f2140200000
39 http://openvswitch.org/mlists
40 https://bugs.launchpad.net/ubuntu/+source/dpdk
Si esto falta, ya sea por tarjetas ignoradas, inicialización fallida u otras razones, más adelante no habrá ningún dispositivo DPDK al que referirse. Desafortunadamente, el registro se distribuye entre syslog / journal y el registro de openvswitch. Para permitir una verificación cruzada, aquí un ejemplo de lo que se puede encontrar en estos registros, en relación con el comando ingresado.
#Nota: Este registro se tomó con los subtítulos dpdk 2.2 y openvswitch 2.5:
CMD: que ingresas
SYSLOG: (incluye mensajes EAL y OVS) OVS-LOG: (mensajes Openvswitch)
#PREPARACIÓN
Vincular una interfaz a los controladores DPDK UIO, hacer que Hugepages esté disponible, habilitar DPDK en OVS
CMD: reinicio de sudo service openvswitch-switch
REGISTRO DEL SISTEMA:
2016-01-22T08: 58: 31.372Z | 00003 | daemon_unix (monitor) | INFO | pid 3329 murió, asesinado (Terminado), saliendo
2016-01-22T08: 58: 33.377Z | 00002 | vlog | INFORMACIÓN | archivo de registro abierto / var / log / openvswitch / ovs- vswitchd.log
2016-01-22T08: 58: 33.381Z | 00003 | ovs_numa | INFO | Descubierto 12 núcleos de CPU en el nodo NUMA 0 2016-01-22T08: 58: 33.381Z | 00004 | ovs_numa | INFO | Descubierto 1 nodos NUMA y 12 núcleos de CPU 2016-01-22T08: 58: 33.381Z | 00005 | volver a conectar | INFORMACIÓN | unix: /var/run/openvswitch/db.sock:
conectando ...
2016-01-22T08:58:33.383Z|00006|reconnect|INFO|unix:/var/run/openvswitch/db.sock: connected 2016-01-22T08:58:33.386Z|00007|bridge|INFO|ovs-vswitchd (Open vSwitch) 2.5.0
REGISTRO OVS:
systemd [1]: Deteniendo Open vSwitch ... systemd [1]: Detenido Open vSwitch.
systemd [1]: Deteniendo la unidad interna vSwitch abierta ... ovs-ctl [3541]: * Eliminando ovs-vswitchd (3329)
ovs-ctl [3541]: * Eliminando ovsdb-server (3318) systemd [1]: Unidad interna vSwitch abierta detenida. systemd [1]: Iniciando Open vSwitch Internal Unit ... ovs-ctl [3560]: * Iniciando ovsdb-server
ovs-vsctl: ovs | 00001 | vsctl | INFO | Llamado como ovs-vsctl --no-wait - init - set Open_vSwitch. db-versión = 7.12.1
ovs-vsctl: ovs | 00001 | vsctl | INFO | Llamado como ovs-vsctl --no-wait set Open_vSwitch. ovs- versión = 2.5.0 "id-externos: id-del-sistema = \" e7c5ba80-bb14-45c1-b8eb-628f3ad03903 \ "" "tipo de sistema = \" Ubuntu \ "" "versión del sistema = \" 16.04- xenial \ ""
ovs-ctl [3560]: * Configuración de las ID del sistema Open vSwitch
ovs-ctl [3560]: 2016-01-22T08: 58: 31Z | 00001 | dpdk | INFO | No se proporciona -vhost_sock_dir - predeterminado en / var / run / openvswitch
ovs-vswitchd: ovs | 00001 | dpdk | INFO | No se proporciona -vhost_sock_dir - por defecto es / var / run / openvswitch
ovs-ctl [3560]: EAL: lcore 0 detectado como núcleo 0 en el zócalo 0 ovs-ctl [3560]: EAL: lcore 1 detectado como núcleo 1 en el zócalo 0 ovs-ctl [3560]: EAL: lcore 2 detectado como núcleo 2 en el zócalo 0 ovs-ctl [3560]: EAL: lcore 3 detectado como núcleo 3 en el zócalo 0 ovs-ctl [3560]: EAL: lcore 4 detectado como núcleo 4 en el zócalo 0
ovs-ctl [3560]: EAL: lcore 5 detectado como núcleo 5 en el zócalo 0 ovs-ctl [3560]: EAL: lcore 6 detectado como núcleo 0 en el zócalo 0 ovs-ctl [3560]: EAL: lcore 7 detectado como núcleo 1 en el zócalo 0 ovs-ctl [3560]: EAL: lcore 8 detectado como núcleo 2 en el zócalo 0 ovs-ctl [3560]: EAL: lcore 9 detectado como núcleo 3 en el zócalo 0 ovs-ctl [3560]: EAL: detectado lcore 10 como núcleo 4 en el zócalo 0 ovs-ctl [3560]: EAL: lcore 11 detectado como núcleo 5 en el zócalo 0
ovs-ctl [3560]: EAL: Admite un máximo de 128 núcleos lógicos por configuración. ovs-ctl [3560]: EAL: Detectado 12 lcore (s)
ovs-ctl [3560]: EAL: No todos los módulos VFIO están cargados, omita la compatibilidad con VFIO ... ovs-ctl [3560]: EAL: Configuración de memoria físicamente contigua ...
ovs-ctl [3560]: EAL: Pregunte a un área virtual de 0x100000000 bytes
ovs-ctl [3560]: EAL: Área virtual encontrada en 0x7f2040000000 (tamaño = 0x100000000) ovs-ctl [3560]: EAL: Solicitando 4 páginas de tamaño 1024 MB desde el zócalo 0
ovs-ctl [3560]: EAL: La frecuencia TSC es ~ 2397202 KHz
ovs-vswitchd [3592]: EAL: La frecuencia TSC es ~ 2397202 KHz
ovs-vswitchd [3592]: EAL: Master lcore 0 está listo (tid = fc6cbb00; cpuset = [0]) ovs-vswitchd [3592]: EAL: dispositivo PCI 0000: 04: 00.0 en el zócalo NUMA 0
ovs-vswitchd [3592]: EAL: controlador de sonda: 8086: 1528 rte_ixgbe_pmd
ovs-vswitchd [3592]: EAL: No administrado por un controlador de kernel compatible, se omitió ovs-vswitchd [3592]: EAL: dispositivo PCI 0000: 04: 00.1 en el socket 0 de NUMA
ovs-vswitchd [3592]: EAL: controlador de sonda: 8086: 1528 rte_ixgbe_pmd ovs-vswitchd [3592]: EAL: memoria PCI asignada a 0x7f2140000000 ovs-vswitchd [3592]: EAL: memoria PCI asignada a 0x7f2140200000
ovs-ctl [3560]: EAL: Master lcore 0 está listo (tid = fc6cbb00; cpuset = [0]) ovs-ctl [3560]: EAL: dispositivo PCI 0000: 04: 00.0 en el zócalo NUMA 0
ovs-ctl [3560]: EAL: controlador de sonda: 8086: 1528 rte_ixgbe_pmd
ovs-ctl [3560]: EAL: No administrado por un controlador de kernel compatible, se omitió ovs-ctl [3560]: EAL: Dispositivo PCI 0000: 04: 00.1 en el socket 0 de NUMA
ovs-ctl [3560]: EAL: controlador de sonda: 8086: 1528 rte_ixgbe_pmd ovs-ctl [3560]: EAL: memoria PCI asignada a 0x7f2140000000 ovs-ctl [3560]: EAL: memoria PCI asignada a 0x7f2140200000
ovs-vswitchd [3592]: PMD: eth_ixgbe_dev_init (): MAC: 4, PHY: 3
ovs-vswitchd [3592]: PMD: eth_ixgbe_dev_init (): puerto 0 vendorID = 0x8086 deviceID = 0x1528 ovs-ctl [3560]: PMD: eth_ixgbe_dev_init (): MAC: 4, PHY: 3
ovs-ctl [3560]: PMD: eth_ixgbe_dev_init (): puerto 0 vendorID = 0x8086 deviceID = 0x1528 ovs-ctl [3560]: Zona 0: nombre: , phys: 0x83fffdec0, len: 0x2080,
virt:0x7f213fffdec0, socket_id:0, flags:0
ovs-ctl[3560]: Zone 1: name:<MP_log_history>, phys:0x83fd73d40, len:0x28a0c0, virt:0x7f213fd73d40, socket_id:0, flags:0
ovs-ctl [3560]: Zona 2: nombre: , phys: 0x83fd43380, len: 0x2f700, virt: 0x7f213fd43380, socket_id: 0, banderas: 0
ovs-ctl [3560]: * Iniciando ovs-vswitchd
ovs-ctl [3560]: * Habilitación de administradores OVSDB remotos systemd [1]: Se inició Open vSwitch Internal Unit. systemd [1]: Iniciando Open vSwitch ... systemd [1]: Iniciando Open vSwitch.
CMD: sudo ovs-vsctl add-br ovsdpdkbr0 - establecer puente ovsdpdkbr0 datapath_type = netdev
REGISTRO DEL SISTEMA:
2016-01-22T08: 58: 56.344Z | 00008 | memoria | INFORMACIÓN | 37256 kB tamaño de conjunto residente máximo después de 24.5 segundos
2016-01-22T08:58:56.346Z|00009|ofproto_dpif|INFO|netdev@ovs-netdev: Datapath supports recirculation
2016-01-22T08: 58: 56.346Z | 00010 | ofproto_dpif | INFO | netdev @ ovs-netdev: Longitud de la pila de etiquetas MPLS probada como 3
2016-01-22T08: 58: 56.346Z | 00011 | ofproto_dpif | INFO | netdev @ ovs-netdev: Datapath admite ID de flujo únicos
2016-01-22T08: 58: 56.346Z | 00012 | ofproto_dpif | INFORMACIÓN | netdev @ ovs-netdev: Datapath no admite ct_state
2016-01-22T08: 58: 56.346Z | 00013 | ofproto_dpif | INFORMACIÓN | netdev @ ovs-netdev: Datapath no admite ct_zone
2016-01-22T08: 58: 56.346Z | 00014 | ofproto_dpif | INFORMACIÓN | netdev @ ovs-netdev: Datapath no admite ct_mark
2016-01-22T08: 58: 56.346Z | 00015 | ofproto_dpif | INFORMACIÓN | netdev @ ovs-netdev: Datapath no admite ct_label
2016-01-22T08: 58: 56.360Z | 00016 | puente | INFORMACIÓN | puente ovsdpdkbr0: interfaz agregada ovsdpdkbr0 en el puerto 65534
2016-01-22T08:58:56.361Z|00017|bridge|INFO|bridge ovsdpdkbr0: using datapath ID 00005a4a1ed0a14d
2016-01-22T08: 58: 56.361Z | 00018 | connmgr | INFO | ovsdpdkbr0: controlador de servicio agregado "punix: / var / run / openvswitch / ovsdpdkbr0.mgmt"
REGISTRO OVS:
ovs-vsctl: ovs | 00001 | vsctl | INFORMACIÓN | Llamado como ovs-vsctl add-br ovsdpdkbr0 - establecer puente ovsdpdkbr0 datapath_type = netdev
systemd-udevd [3607]: no se pudo generar la dirección MAC persistente para ovs-netdev: no existe ese archivo o directorio
kernel: [50165.886554] dispositivo ovs-netdev entró en modo promiscuo kernel: [50165.901261] dispositivo ovsdpdkbr0 entró en modo promiscuo
CMD: sudo ovs-vsctl add-port ovsdpdkbr0 dpdk0 - establecer interfaz dpdk0 tipo = dpdk
REGISTRO DEL SISTEMA:
2016-01-22T08: 59: 06.369Z | 00019 | memoria | INFORMACIÓN | el tamaño máximo del conjunto residente creció un 155% en los últimos 10.0 segundos, de 37256 kB a 95008 kB
2016-01-22T08:59:06.369Z|00020|memory|INFO|handlers:4 ports:1 revalidators:2 rules:5 2016-01-22T08:59:30.989Z|00021|dpdk|INFO|Port 0: 8c:dc:d4:b3:6d:e9
2016-01-22T08:59:31.520Z|00022|dpdk|INFO|Port 0: 8c:dc:d4:b3:6d:e9
2016-01-22T08: 59: 31.521Z | 00023 | dpif_netdev | INFORMACIÓN | Creó 1 hilo pmd en el nodo numa 0 2016-01-22T08: 59: 31.522Z | 00001 | dpif_netdev (pmd16) | INFORMACIÓN | Puerto de procesamiento del núcleo 0 ' dpdk0 '
2016-01-22T08: 59: 31.522Z | 00024 | puente | INFORMACIÓN | puente ovsdpdkbr0: interfaz agregada dpdk0 en el puerto 1
2016-01-22T08:59:31.522Z|00025|bridge|INFO|bridge ovsdpdkbr0: using datapath ID 00008cdcd4b36de9
2016-01-22T08:59:31.523Z|00002|dpif_netdev(pmd16)|INFO|Core 0 processing port 'dpdk0'
REGISTRO OVS:
ovs-vsctl: ovs | 00001 | vsctl | INFORMACIÓN | Llamado como ovs-vsctl add-port ovsdpdkbr0 dpdk0 - establecer interfaz dpdk0 type = dpdk
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a79ebc0 hw_ring=0x7f211a7a6c00 dma_addr=0x81a7a6c00
ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Usando una ruta de código tx simple ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Vector tx habilitado.
ovs-vswitchd[3595]: PMD: ixgbe_dev_rx_queue_setup(): sw_ring=0x7f211a78a6c0 sw_sc_ring=0x7f211a786580 hw_ring=0x7f211a78e800 dma_addr=0x81a78e800
ovs-vswitchd [3595]: PMD: ixgbe_set_rx_function (): Vector rx habilitado, asegúrese de que el tamaño de ráfaga de RX no sea inferior a 4 (puerto = 0).
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a79ebc0 hw_ring=0x7f211a7a6c00 dma_addr=0x81a7a6c00
ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Usando una ruta de código tx simple ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Vector tx habilitado.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a76e4c0 hw_ring=0x7f211a776500 dma_addr=0x81a776500
ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Usando una ruta de código tx simple ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Vector tx habilitado.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a756440 hw_ring=0x7f211a75e480 dma_addr=0x81a75e480
ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Usando una ruta de código tx simple ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Vector tx habilitado.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a73e3c0 hw_ring=0x7f211a746400 dma_addr=0x81a746400
ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Usando una ruta de código tx simple ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Vector tx habilitado.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a726340 hw_ring=0x7f211a72e380 dma_addr=0x81a72e380
ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Usando una ruta de código tx simple ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Vector tx habilitado.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a70e2c0 hw_ring=0x7f211a716300 dma_addr=0x81a716300
ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Usando una ruta de código tx simple ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Vector tx habilitado.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a6f6240 hw_ring=0x7f211a6fe280 dma_addr=0x81a6fe280
ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Usando una ruta de código tx simple ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Vector tx habilitado.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a6de1c0 hw_ring=0x7f211a6e6200 dma_addr=0x81a6e6200
ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Usando una ruta de código tx simple ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Vector tx habilitado.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a6c6140 hw_ring=0x7f211a6ce180 dma_addr=0x81a6ce180
ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Usando una ruta de código tx simple ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Vector tx habilitado.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a6ae0c0 hw_ring=0x7f211a6b6100 dma_addr=0x81a6b6100
ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Usando una ruta de código tx simple ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Vector tx habilitado.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a696040 hw_ring=0x7f211a69e080 dma_addr=0x81a69e080
ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Usando una ruta de código tx simple ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Vector tx habilitado.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a67dfc0 hw_ring=0x7f211a686000 dma_addr=0x81a686000
ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Usando una ruta de código tx simple ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Vector tx habilitado.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a665e40 hw_ring=0x7f211a66de80 dma_addr=0x81a66de80
ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Usando una ruta de código tx simple ovs-vswitchd [3595]: PMD: ixgbe_set_tx_function (): Vector tx habilitado.
ovs-vswitchd[3595]: PMD: ixgbe_dev_rx_queue_setup(): sw_ring=0x7f211a78a6c0 sw_sc_ring=0x7f211a786580 hw_ring=0x7f211a78e800 dma_addr=0x81a78e800
ovs-vswitchd [3595]: PMD: ixgbe_set_rx_function (): Vector rx habilitado, asegúrese de que el tamaño de ráfaga de RX no sea inferior a 4 (puerto = 0).
CMD: sudo ovs-vsctl add-port ovsdpdkbr0 vhost-user-1 - establecer interfaz vhost-user-1 type = dpdkvhostuser
REGISTRO OVS:
2016-01-22T09: 00: 35.145Z | 00026 | dpdk | INFORMACIÓN | Socket / var / run / openvswitch / vhost-user-1 creado para el puerto vhost-user vhost-user-1
2016-01-22T09:00:35.145Z|00003|dpif_netdev(pmd16)|INFO|Core 0 processing port 'dpdk0'
2016-01-22T09:00:35.145Z|00004|dpif_netdev(pmd16)|INFO|Core 0 processing port 'vhost-user-1' 2016-01-22T09:00:35.145Z|00027|bridge|INFO|bridge ovsdpdkbr0: added interface vhost-user-1
en el puerto 2
REGISTRO DEL SISTEMA:
ovs-vsctl: ovs | 00001 | vsctl | INFO | Llamado como ovs-vsctl add-port ovsdpdkbr0 vhost-user-1 - establecer interfaz vhost-user-1 type = dpdkvhostuser
ovs-vswitchd [3595]: VHOST_CONFIG: socket creado, fd: 46
ovs-vswitchd [3595]: VHOST_CONFIG: enlazar con / var / run / openvswitch / vhost-user-1
Eventualmente podemos ver el hilo de la encuesta en la parte superior.
PID USUARIO PR NI VIRT RES SHR S% CPU% TIEMPO MEM + COMANDO
3595 raíz 10-10 4975344 103936 9916 S 100.0 0.3 33: 13.56 ovs-vswitchd