5.9. 支持和故障排除
DPDK 是一个快速发展的项目。 在搜索支持和进一步指南的任何情况下,强烈建议首先检查它们是否适用于当前版本。
• DPDK 邮件列表38
• 对于 OpenVswitch-DPDK OpenStack 邮件列表39
• DPDK Launchpad 区域中的已知问题40
• 加入freenode 上的IRC 频道#DPDK 或#openvswitch。
问题通常是由于缺少一般设置中的小细节。 稍后,这些缺失的细节会导致问题,而这些问题很难追查到其根本原因。 一个常见的情况似乎是“无法打开网络设备 dpdk0(没有这样的设备)”问题。 在使用 DPDK 在 Open vSwitch 中设置端口时,这种情况发生得相当晚。 但大部分时间的根本原因是在设置和初始化的早期。 这里是一个设备正确初始化的示例 - 这可以在启用 DPDK 的情况下启动 Open vSwitch 时在 syslog/journal 中找到。
ovs-ctl[3560]: EAL: NUMA 套接字 0000 上的 PCI 设备 04:00.1:0 ovs-ctl[3560]: EAL: 探针驱动程序: 8086:1528 rte_ixgbe_pmd ovs-ctl[3560]: EAL: PCIx0f7 ovs-ctl[2140000000]: EAL: PCI 内存映射在 3560x0f7
39 http://openvswitch.org/mlists
40 https://bugs.launchpad.net/ubuntu/+source/dpdk
如果缺少这个,无论是由于忽略卡,初始化失败或其他原因,稍后将没有DPDK设备可参考。 不幸的是,日志分布在 syslog/journal 和 openvswitch 日志中。 为了允许在此处进行一些交叉检查,例如可以在这些日志中找到与输入的命令相关的内容。
#注意:此日志是使用 dpdk 2.2 和 openvswitch 2.5 字幕拍摄的:
CMD:你输入
SYSLOG:(包括 EAL 和 OVS 消息)OVS-LOG:(Openvswitch 消息)
#准备
将接口绑定到 DPDK UIO 驱动程序,使 Hugepages 可用,在 OVS 上启用 DPDK
CMD: sudo service openvswitch-switch 重启
系统日志:
2016-01-22T08:58:31.372Z|00003|daemon_unix(monitor)|INFO|pid 3329 已死,已被杀死(已终止),正在退出
2016-01-22T08:58:33.377Z|00002|vlog|INFO|打开的日志文件/var/log/openvswitch/ovs-vswitchd.log
2016-01-22T08:58:33.381Z|00003|ovs_numa|INFO|在 NUMA 节点 12 上发现了 0 个 CPU 内核 2016-01-22T08:58:33.381Z|00004|ovs_numa 发现了 1 个 CPU 内核和 12 个 CPU 内核 |INFO|INFO 2016-01-22T08:58:33.381Z|00005|reconnect|INFO|unix:/var/run/openvswitch/db.sock:
连接中...
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-日志:
systemd[1]:停止 Open vSwitch... systemd[1]:停止 Open vSwitch。
systemd[1]: 停止打开 vSwitch 内部单元... ovs-ctl[3541]: * 杀死 ovs-vswitchd (3329)
ovs-ctl[3541]: * 杀死 ovsdb-server (3318) systemd[1]: 停止打开 vSwitch 内部单元。 systemd[1]: 正在启动 Open vSwitch 内部单元... ovs-ctl[3560]: * 正在启动 ovsdb-server
ovs-vsctl: ovs|00001|vsctl|INFO|称为 ovs-vsctl --no-wait -- init -- set Open_vSwitch 。 数据库版本=7.12.1
ovs-vsctl: ovs|00001|vsctl|INFO|称为 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 系统 ID
ovs-ctl[3560]: 2016-01-22T08:58:31Z|00001|dpdk|INFO|没有提供 -vhost_sock_dir - 默认为 /var/run/openvswitch
ovs-vswitchd: ovs|00001|dpdk|INFO|没有提供 -vhost_sock_dir - 默认为 /var/run/openvswitch
ovs-ctl[3560]:EAL:检测到lcore 0 作为socket 0 上的core 0 ovs-ctl[3560]:EAL:检测到lcore 1 作为socket 1 上的core 0 ovs-ctl[3560]:EAL:检测到lcore 2 作为核心插槽 2 上的 0 ovs-ctl[3560]:EAL:在插槽 3 上检测到 lcore 3 作为核心 0 ovs-ctl[3560]:EAL:在插槽 4 上检测到 lcore 4 作为核心 0
ovs-ctl[3560]:EAL:检测到 lcore 5 作为插槽 5 上的核心 0 ovs-ctl[3560]:EAL:检测到 lcore 6 作为插槽 0 上的核心 0 ovs-ctl[3560]:EAL:检测到 lcore 7 作为核心插槽 1 上的 0 ovs-ctl[3560]:EAL:检测到 lcore 8 作为插槽 2 上的核心 0 ovs-ctl[3560]:EAL:检测到插槽 9 上的 lcore 3 作为核心 0 ovs-ctl[3560]:EAL:检测到lcore 10 作为插槽 4 上的核心 0 ovs-ctl[3560]:EAL:检测到 lcore 11 作为插槽 5 上的核心 0
ovs-ctl[3560]:EAL:通过配置支持最多 128 个逻辑核心。 ovs-ctl[3560]:EAL:检测到 12 个 lcore(s)
ovs-ctl[3560]: EAL: VFIO 模块未全部加载,跳过 VFIO 支持... ovs-ctl[3560]: EAL: 设置物理连续内存...
ovs-ctl[3560]: EAL: 请求一个 0x100000000 字节的虚拟区域
ovs-ctl[3560]:EAL:在 0x7f2040000000(大小 = 0x100000000)处找到虚拟区域 ovs-ctl[3560]:EAL:从套接字 4 请求 1024 个大小为 0MB 的页面
ovs-ctl[3560]:EAL:TSC 频率为 ~2397202 KHz
ovs-vswitchd[3592]:EAL:TSC 频率为 ~2397202 KHz
ovs-vswitchd[3592]:EAL:主 lcore 0 已准备好 (tid=fc6cbb00;cpuset=[0]) ovs-vswitchd[3592]:EAL:NUMA 插槽 0000 上的 PCI 设备 04:00.0:0
ovs-vswitchd[3592]:EAL:探针驱动程序:8086:1528 rte_ixgbe_pmd
ovs-vswitchd[3592]:EAL:不受支持的内核驱动程序管理,跳过 ovs-vswitchd[3592]:EAL:NUMA 插槽 0000 上的 PCI 设备 04:00.1:0
ovs-vswitchd[3592]:EAL:探针驱动程序:8086:1528 rte_ixgbe_pmd ovs-vswitchd[3592]:EAL:映射在 0x7f2140000000 的 PCI 内存 ovs-vswitchd[3592]:EAL:映射在 0x7f2140200000 的 PCI 内存
ovs-ctl[3560]:EAL:主 lcore 0 已准备好 (tid=fc6cbb00;cpuset=[0]) ovs-ctl[3560]:EAL:NUMA 插槽 0000 上的 PCI 设备 04:00.0:0
ovs-ctl[3560]:EAL:探针驱动程序:8086:1528 rte_ixgbe_pmd
ovs-ctl[3560]:EAL:不受支持的内核驱动程序管理,跳过 ovs-ctl[3560]:EAL:NUMA 插槽 0000 上的 PCI 设备 04:00.1:0
ovs-ctl[3560]:EAL:探针驱动程序:8086:1528 rte_ixgbe_pmd ovs-ctl[3560]:EAL:映射在 0x7f2140000000 的 PCI 内存 ovs-ctl[3560]:EAL:映射在 0 的 PCI 内存
ovs-vswitchd[3592]:PMD:eth_ixgbe_dev_init():MAC:4,PHY:3
ovs-vswitchd[3592]:PMD:eth_ixgbe_dev_init():端口 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():端口 0 vendorID=0x8086 deviceID=0x1528 ovs-ctl[3560]:区域 0:名称: , 物理:0x83fffdec0, 长度: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]:区域 2:名称: , 物理:0x83fd43380, len:0x2f700, 虚拟:0x7f213fd43380, socket_id:0, 标志:0
ovs-ctl[3560]: * 启动 ovs-vswitchd
ovs-ctl[3560]:* 启用远程 OVSDB 管理器 systemd[1]:已启动 Open vSwitch 内部单元。 systemd[1]:启动 Open vSwitch... systemd[1]:启动 Open vSwitch。
CMD: sudo ovs-vsctl add-br ovsdpdkbr0 -- 设置网桥 ovsdpdkbr0 datapath_type=netdev
系统日志:
2016-01-22T08:58:56.344Z|00008|memory|INFO|37256 kB 峰值驻留集大小 24.5 秒后
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:MPLS 标签堆栈长度探测为 3
2016-01-22T08:58:56.346Z|00011|ofproto_dpif|INFO|netdev@ovs-netdev:数据路径支持唯一的流 ID
2016-01-22T08:58:56.346Z|00012|ofproto_dpif|INFO|netdev@ovs-netdev:数据路径不支持 ct_state
2016-01-22T08:58:56.346Z|00013|ofproto_dpif|INFO|netdev@ovs-netdev:数据路径不支持 ct_zone
2016-01-22T08:58:56.346Z|00014|ofproto_dpif|INFO|netdev@ovs-netdev:数据路径不支持 ct_mark
2016-01-22T08:58:56.346Z|00015|ofproto_dpif|INFO|netdev@ovs-netdev:数据路径不支持 ct_label
2016-01-22T08:58:56.360Z|00016|bridge|INFO|bridge ovsdpdkbr0:在端口 0 上添加了接口 ovsdpdkbr65534
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:添加了服务控制器“punix:/var/run/openvswitch/ovsdpdkbr0.mgmt”
OVS-日志:
ovs-vsctl: ovs|00001|vsctl|INFO|称为 ovs-vsctl add-br ovsdpdkbr0 -- 设置网桥 ovsdpdkbr0 datapath_type=netdev
systemd-udevd[3607]:无法为 ovs-netdev 生成持久 MAC 地址:没有这样的文件或目录
内核:[50165.886554] 设备 ovs-netdev 进入混杂模式 内核:[50165.901261] 设备 ovsdpdkbr0 进入混杂模式
CMD:sudo ovs-vsctl add-port ovsdpdkbr0 dpdk0 -- 设置接口dpdk0 type=dpdk
系统日志:
2016-01-22T08:59:06.369Z|00019|memory|INFO|peak resident set size 在过去 155 秒内增长了 10.0%,从 37256 kB 增加到 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|在 numa 节点 1 上创建了 0 个 pmd 线程 2016-01-22T08:59:31.522Z|00001|dpif_netdev(INFO|DCore16) processing dpdk0'
2016-01-22T08:59:31.522Z|00024|bridge|INFO|bridge ovsdpdkbr0:在端口 0 上添加了接口 dpdk1
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-日志:
ovs-vsctl: ovs|00001|vsctl|INFO|称为ovs-vsctl add-port ovsdpdkbr0 dpdk0 -- 设置接口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():使用简单的 tx 代码路径 ovs-vswitchd[3595]:PMD:ixgbe_set_tx_function():矢量 tx 启用。
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 enabled,请确保RX突发大小不小于4(端口=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():使用简单的 tx 代码路径 ovs-vswitchd[3595]:PMD:ixgbe_set_tx_function():矢量 tx 启用。
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():使用简单的 tx 代码路径 ovs-vswitchd[3595]:PMD:ixgbe_set_tx_function():矢量 tx 启用。
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():使用简单的 tx 代码路径 ovs-vswitchd[3595]:PMD:ixgbe_set_tx_function():矢量 tx 启用。
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():使用简单的 tx 代码路径 ovs-vswitchd[3595]:PMD:ixgbe_set_tx_function():矢量 tx 启用。
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():使用简单的 tx 代码路径 ovs-vswitchd[3595]:PMD:ixgbe_set_tx_function():矢量 tx 启用。
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():使用简单的 tx 代码路径 ovs-vswitchd[3595]:PMD:ixgbe_set_tx_function():矢量 tx 启用。
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():使用简单的 tx 代码路径 ovs-vswitchd[3595]:PMD:ixgbe_set_tx_function():矢量 tx 启用。
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():使用简单的 tx 代码路径 ovs-vswitchd[3595]:PMD:ixgbe_set_tx_function():矢量 tx 启用。
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():使用简单的 tx 代码路径 ovs-vswitchd[3595]:PMD:ixgbe_set_tx_function():矢量 tx 启用。
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():使用简单的 tx 代码路径 ovs-vswitchd[3595]:PMD:ixgbe_set_tx_function():矢量 tx 启用。
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():使用简单的 tx 代码路径 ovs-vswitchd[3595]:PMD:ixgbe_set_tx_function():矢量 tx 启用。
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():使用简单的 tx 代码路径 ovs-vswitchd[3595]:PMD:ixgbe_set_tx_function():矢量 tx 启用。
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():使用简单的 tx 代码路径 ovs-vswitchd[3595]:PMD:ixgbe_set_tx_function():矢量 tx 启用。
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 enabled,请确保RX突发大小不小于4(端口=0)。
CMD: sudo ovs-vsctl add-port ovsdpdkbr0 vhost-user-1 -- 设置接口 vhost-user-1 type=dpdkvhostuser
OVS-日志:
2016-01-22T09:00:35.145Z|00026|dpdk|INFO|socket /var/run/openvswitch/vhost-user-1 为 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
在端口 2
系统日志:
ovs-vsctl: ovs|00001|vsctl|INFO|称为 ovs-vsctl add-port ovsdpdkbr0 vhost-user-1 -- 设置接口 vhost-user-1 type=dpdkvhostuser
ovs-vswitchd[3595]: VHOST_CONFIG: 套接字已创建,fd:46
ovs-vswitchd[3595]: VHOST_CONFIG: 绑定到 /var/run/openvswitch/vhost-user-1
最终我们可以在顶部看到投票线程
PID 用户 PR NI VIRT RES SHR S %CPU %MEM TIME+ 命令
3595 根 10 -10 4975344 103936 9916 S 100.0 0.3 33:13.56 ovs-vswitchd