5.9. Support und Fehlerbehebung
DPDK ist ein sich schnell entwickelndes Projekt. Bei der Suche nach Support und weiteren Anleitungen wird dringend empfohlen, zunächst zu prüfen, ob diese für die aktuelle Version gelten.
• DPDK-Mailinglisten38
• Für OpenVswitch-DPDK OpenStack-Mailinglisten39
• Bekannte Probleme im DPDK Launchpad-Bereich40
• Treten Sie den IRC-Kanälen #DPDK oder #openvswitch auf Freenode bei.
Probleme sind oft darauf zurückzuführen, dass im allgemeinen Setup kleine Details fehlen. Später verursachen diese fehlenden Details Probleme, deren Ursache schwer zu ermitteln ist. Ein häufiger Fall scheint das Problem „Netzwerkgerät dpdk0 konnte nicht geöffnet werden (kein solches Gerät)“ zu sein. Dies geschieht relativ spät beim Einrichten eines Ports in Open vSwitch mit DPDK. Meistens liegt die Ursache jedoch sehr früh bei der Einrichtung und Initialisierung. Hier ein Beispiel, wie eine ordnungsgemäße Initialisierung eines Geräts aussieht – dies finden Sie im Syslog/Journal beim Starten von Open vSwitch mit aktiviertem DPDK.
ovs-ctl[3560]: EAL: PCI-Gerät 0000:04:00.1 auf NUMA-Sockel 0 ovs-ctl[3560]: EAL: Sondentreiber: 8086:1528 rte_ixgbe_pmd ovs-ctl[3560]: EAL: PCI-Speicher zugeordnet bei 0x7f2140000000 ovs-ctl[3560]: EAL: PCI-Speicher zugeordnet bei 0x7f2140200000
39 http://openvswitch.org/mlists
40 https://bugs.launchpad.net/ubuntu/+source/dpdk
Wenn dies fehlt, sei es durch ignorierte Karten, fehlgeschlagene Initialisierung oder aus anderen Gründen, gibt es später kein DPDK-Gerät, auf das verwiesen werden kann. Leider ist die Protokollierung auf Syslog/Journal und das OpenVSwitch-Protokoll verteilt. Um eine Gegenprüfung zu ermöglichen, hier ein Beispiel dafür, was in diesen Protokollen in Bezug auf den eingegebenen Befehl zu finden ist.
#Hinweis: Dieses Protokoll wurde mit dpdk 2.2 und openvswitch 2.5 erstellt. Untertitel:
CMD: das geben Sie ein
SYSLOG: (einschließlich EAL- und OVS-Nachrichten) OVS-LOG: (Openvswitch-Nachrichten)
#VORBEREITUNG
Binden Sie eine Schnittstelle an DPDK-UIO-Treiber, stellen Sie Hugepages zur Verfügung und aktivieren Sie DPDK auf OVS
CMD: Sudo-Dienst openvswitch-switch neu starten
SYSLOG:
2016-01-22T08:58:31.372Z|00003|daemon_unix(monitor)|INFO|pid 3329 gestorben, getötet (beendet), beendet
2016-01-22T08:58:33.377Z|00002|vlog|INFO|geöffnete Protokolldatei /var/log/openvswitch/ovs-vswitchd.log
2016T01:22:08Z|58|ovs_numa|INFO|33.381 CPU-Kerne auf NUMA-Knoten 00003 entdeckt. 12:0:2016Z|01|ovs_numa|INFO|22 NUMA-Knoten und 08 CPU-Kerne entdeckt 58-33.381-00004T1:12:2016Z|01|reconnect|INFO|unix:/var/run/openvswitch/db.sock:
verbinden...
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
OVS-LOG:
systemd[1]: Offener vSwitch wird gestoppt... systemd[1]: Offener vSwitch wird gestoppt.
systemd[1]: Offene interne vSwitch-Einheit wird gestoppt... ovs-ctl[3541]: * ovs-vswitchd wird beendet (3329)
ovs-ctl[3541]: * ovsdb-server wird beendet (3318) systemd[1]: Gestoppt Offene interne vSwitch-Einheit. systemd[1]: Open vSwitch Internal Unit wird gestartet... ovs-ctl[3560]: * ovsdb-server wird gestartet
ovs-vsctl: ovs|00001|vsctl|INFO|Wird aufgerufen als ovs-vsctl --no-wait -- init -- set Open_vSwitch . Datenbankversion=7.12.1
ovs-vsctl: ovs|00001|vsctl|INFO|Wird aufgerufen als ovs-vsctl --no-wait set Open_vSwitch . ovs- version=2.5.0 "external-ids:system-id=\"e7c5ba80-bb14-45c1-b8eb-628f3ad03903\"" "system- type=\"Ubuntu\"" "system-version=\"16.04- xenial\""
ovs-ctl[3560]: * Open vSwitch-System-IDs konfigurieren
ovs-ctl[3560]: 2016-01-22T08:58:31Z|00001|dpdk|INFO|Kein -vhost_sock_dir bereitgestellt – standardmäßig /var/run/openvswitch
ovs-vswitchd: ovs|00001|dpdk|INFO|Kein -vhost_sock_dir bereitgestellt – standardmäßig /var/run/openvswitch
ovs-ctl[3560]: EAL: Lcore 0 als Core 0 auf Socket 0 erkannt ovs-ctl[3560]: EAL: Lcore 1 als Core 1 auf Socket 0 erkannt ovs-ctl[3560]: EAL: Lcore 2 als Core erkannt 2 auf Sockel 0 ovs-ctl[3560]: EAL: Lcore 3 als Kern 3 auf Sockel 0 erkannt ovs-ctl[3560]: EAL: Lcore 4 als Kern 4 auf Sockel 0 erkannt
ovs-ctl[3560]: EAL: Lcore 5 als Core 5 auf Socket 0 erkannt ovs-ctl[3560]: EAL: Lcore 6 als Core 0 auf Socket 0 erkannt ovs-ctl[3560]: EAL: Lcore 7 als Core erkannt 1 auf Sockel 0 ovs-ctl[3560]: EAL: Lcore 8 als Kern 2 auf Sockel 0 erkannt ovs-ctl[3560]: EAL: Lcore 9 als Kern 3 auf Sockel 0 erkannt ovs-ctl[3560]: EAL: Erkannt lcore 10 als Kern 4 auf Sockel 0 ovs-ctl[3560]: EAL: lcore 11 als Kern 5 auf Sockel 0 erkannt
ovs-ctl[3560]: EAL: Unterstützt maximal 128 logische Kerne durch Konfiguration. ovs-ctl[3560]: EAL: 12 lcore(s) erkannt
ovs-ctl[3560]: EAL: VFIO-Module nicht alle geladen, VFIO-Unterstützung überspringen... ovs-ctl[3560]: EAL: Physisch zusammenhängenden Speicher einrichten...
ovs-ctl[3560]: EAL: Erfragen Sie einen virtuellen Bereich von 0x100000000 Bytes
ovs-ctl[3560]: EAL: Virtueller Bereich bei 0x7f2040000000 gefunden (Größe = 0x100000000) ovs-ctl[3560]: EAL: Anfordern von 4 Seiten der Größe 1024 MB von Socket 0
ovs-ctl[3560]: EAL: TSC-Frequenz beträgt ~2397202 KHz
ovs-vswitchd[3592]: EAL: TSC-Frequenz beträgt ~2397202 KHz
ovs-vswitchd[3592]: EAL: Master lcore 0 ist bereit (tid=fc6cbb00;cpuset=[0]) ovs-vswitchd[3592]: EAL: PCI-Gerät 0000:04:00.0 auf NUMA-Socket 0
ovs-vswitchd[3592]: EAL: Probe-Treiber: 8086:1528 rte_ixgbe_pmd
ovs-vswitchd[3592]: EAL: Nicht von einem unterstützten Kernel-Treiber verwaltet, übersprungen ovs-vswitchd[3592]: EAL: PCI-Gerät 0000:04:00.1 auf NUMA-Socket 0
ovs-vswitchd[3592]: EAL: Sondentreiber: 8086:1528 rte_ixgbe_pmd ovs-vswitchd[3592]: EAL: PCI-Speicher zugeordnet bei 0x7f2140000000 ovs-vswitchd[3592]: EAL: PCI-Speicher zugeordnet bei 0x7f2140200000
ovs-ctl[3560]: EAL: Master lcore 0 ist bereit (tid=fc6cbb00;cpuset=[0]) ovs-ctl[3560]: EAL: PCI-Gerät 0000:04:00.0 auf NUMA-Socket 0
ovs-ctl[3560]: EAL: Probe-Treiber: 8086:1528 rte_ixgbe_pmd
ovs-ctl[3560]: EAL: Nicht von einem unterstützten Kernel-Treiber verwaltet, übersprungen ovs-ctl[3560]: EAL: PCI-Gerät 0000:04:00.1 auf NUMA-Socket 0
ovs-ctl[3560]: EAL: Sondentreiber: 8086:1528 rte_ixgbe_pmd ovs-ctl[3560]: EAL: PCI-Speicher zugeordnet bei 0x7f2140000000 ovs-ctl[3560]: EAL: PCI-Speicher zugeordnet bei 0x7f2140200000
ovs-vswitchd[3592]: PMD: eth_ixgbe_dev_init(): MAC: 4, PHY: 3
ovs-vswitchd[3592]: PMD: eth_ixgbe_dev_init(): Port 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(): Port 0 VendorID=0x8086 DeviceID=0x1528 ovs-ctl[3560]: Zone 0: Name: , 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]: Zone 2: Name: , phys:0x83fd43380, len:0x2f700, virt:0x7f213fd43380, socket_id:0, flags:0
ovs-ctl[3560]: * ovs-vswitchd wird gestartet
ovs-ctl[3560]: * Remote-OVSDB-Manager werden aktiviert. systemd[1]: Gestartet. Öffnen Sie die interne vSwitch-Einheit. systemd[1]: Open vSwitch wird gestartet... systemd[1]: Open vSwitch gestartet.
CMD: sudo ovs-vsctl add-br ovsdpdkbr0 – Set Bridge ovsdpdkbr0 datapath_type=netdev
SYSLOG:
2016-01-22T08:58:56.344Z|00008|memory|INFO|37256 kB maximale residente Satzgröße nach 24.5 Sekunden
2016-01-22T08:58:56.346Z|00009|ofproto_dpif|INFO|netdev@ovs-netdev: Datapath supports recirculation
2016T01:22:08Z|58|ofproto_dpif|INFO|netdev@ovs-netdev: Die MPLS-Label-Stack-Länge wurde als 56.346 ermittelt
2016T01:22:08Z|58|ofproto_dpif|INFO|netdev@ovs-netdev: Datapath unterstützt eindeutige Flow-IDs
2016-01-22T08:58:56.346Z|00012|ofproto_dpif|INFO|netdev@ovs-netdev: Datapath unterstützt ct_state nicht
2016-01-22T08:58:56.346Z|00013|ofproto_dpif|INFO|netdev@ovs-netdev: Datapath unterstützt ct_zone nicht
2016-01-22T08:58:56.346Z|00014|ofproto_dpif|INFO|netdev@ovs-netdev: Datapath unterstützt ct_mark nicht
2016-01-22T08:58:56.346Z|00015|ofproto_dpif|INFO|netdev@ovs-netdev: Datapath unterstützt ct_label nicht
2016-01-22T08:58:56.360Z|00016|bridge|INFO|bridge ovsdpdkbr0: Schnittstelle ovsdpdkbr0 auf Port 65534 hinzugefügt
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: Dienst-Controller „punix:/var/run/openvswitch/ovsdpdkbr0.mgmt“ hinzugefügt
OVS-LOG:
ovs-vsctl: ovs|00001|vsctl|INFO|Aufgerufen als ovs-vsctl add-br ovsdpdkbr0 -- set Bridge ovsdpdkbr0 datapath_type=netdev
systemd-udevd[3607]: Permanente MAC-Adresse für ovs-netdev konnte nicht generiert werden: Keine solche Datei oder kein solches Verzeichnis
Kernel: [50165.886554] Gerät ovs-netdev ist in den Promiscuous-Modus eingetreten. Kernel: [50165.901261] Gerät ovsdpdkbr0 ist in den Promiscuous-Modus gewechselt
CMD: sudo ovs-vsctl add-port ovsdpdkbr0 dpdk0 – set Interface dpdk0 type=dpdk
SYSLOG:
2016-01-22T08:59:06.369Z|00019|Speicher|INFO|Peak-Resident-Set-Größe ist in den letzten 155 Sekunden um 10.0 % gestiegen, von 37256 kB auf 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|INFO|1 PMD-Threads auf Numa-Knoten 0 erstellt dpdk2016'
2016-01-22T08:59:31.522Z|00024|bridge|INFO|bridge ovsdpdkbr0: Schnittstelle dpdk0 auf Port 1 hinzugefügt
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'
OVS-LOG:
ovs-vsctl: ovs|00001|vsctl|INFO|Aufgerufen als ovs-vsctl add-port ovsdpdkbr0 dpdk0 -- set Interface 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(): Verwendung des einfachen TX-Codepfads ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): Vector tx aktiviert.
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 aktiviert, bitte stellen Sie sicher, dass die RX-Burst-Größe nicht weniger als 4 beträgt (Port=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(): Verwendung des einfachen TX-Codepfads ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): Vector tx aktiviert.
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(): Verwendung des einfachen TX-Codepfads ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): Vector tx aktiviert.
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(): Verwendung des einfachen TX-Codepfads ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): Vector tx aktiviert.
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(): Verwendung des einfachen TX-Codepfads ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): Vector tx aktiviert.
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(): Verwendung des einfachen TX-Codepfads ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): Vector tx aktiviert.
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(): Verwendung des einfachen TX-Codepfads ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): Vector tx aktiviert.
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(): Verwendung des einfachen TX-Codepfads ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): Vector tx aktiviert.
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(): Verwendung des einfachen TX-Codepfads ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): Vector tx aktiviert.
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(): Verwendung des einfachen TX-Codepfads ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): Vector tx aktiviert.
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(): Verwendung des einfachen TX-Codepfads ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): Vector tx aktiviert.
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(): Verwendung des einfachen TX-Codepfads ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): Vector tx aktiviert.
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(): Verwendung des einfachen TX-Codepfads ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): Vector tx aktiviert.
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(): Verwendung des einfachen TX-Codepfads ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): Vector tx aktiviert.
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 aktiviert, bitte stellen Sie sicher, dass die RX-Burst-Größe nicht weniger als 4 beträgt (Port=0).
CMD: sudo ovs-vsctl add-port ovsdpdkbr0 vhost-user-1 – set Interface vhost-user-1 type=dpdkvhostuser
OVS-LOG:
2016-01-22T09:00:35.145Z|00026|dpdk|INFO|Socket /var/run/openvswitch/vhost-user-1 für vhost-user-Port vhost-user-1 erstellt
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
auf Port 2
SYSLOG:
ovs-vsctl: ovs|00001|vsctl|INFO|Aufgerufen als ovs-vsctl add-port ovsdpdkbr0 vhost-user-1 – set Interface vhost-user-1 type=dpdkvhostuser
ovs-vswitchd[3595]: VHOST_CONFIG: Socket erstellt, fd:46
ovs-vswitchd[3595]: VHOST_CONFIG: an /var/run/openvswitch/vhost-user-1 binden
Schließlich können wir den Umfragethread oben sehen
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ BEFEHL
3595 root 10 -10 4975344 103936 9916 S 100.0 0.3 33:13.56 ovs-vswitchd