OpenOnlaod 抛出分段错误

问题描述 投票:0回答:1

我安装了 OpenOnload 来加速联网。我按照官方文档从源代码安装了 OpenOnload。

$ onload

Kernel module: 8.1.1.17
find /lib/modules/`uname -r` -type f -name '*.ko' -printf '%f\n' | grep -E 'sfc|onload'
sfc_driverlink.ko
sfc.ko
sfc_resource.ko
sfc_char.ko
onload.ko

正如您在顶部看到的,它是在系统范围内安装的,并且

onload
命令按预期工作。但是,当我使用
onload <app-exe>
运行我的应用程序时,会出现以下错误

Segmentation fault (core dumped)

我还应该检查哪些内容才能发现问题?我的服务器上还连接了 SF NIC。我想使用这些 NIC 和 OpenOnload 来实现内核绕过。

$ lsmod | grep onload
onload                835584  4
sfc_char              143360  1 onload
sfc_resource          249856  2 onload,sfc_char

$ lsmod | grep sfc
sfc_char              143360  1 onload
sfc_resource          249856  2 onload,sfc_char
sfc                   864256  0
vdpa                   32768  1 sfc
sfc_driverlink         16384  2 sfc,sfc_resource
mtd                    90112  8 sfc
networking segmentation-fault openonload
1个回答
0
投票

没有指定何时发生分段错误,也没有指定应用程序在没有

onload
前缀的情况下是否可以正常工作,但我假设它可以。

我建议第一步是使用 Onload 运行一个已知的应用程序,以确认安装是否按预期工作。一个简单的方法是使用以下命令加速

ncat
实例(提供合适的端口号):

onload ncat -l <portnum>

如果无法启动,则表明 Onload 安装存在问题,我建议卸载并重新安装 Onload。

如果它确实有效,则表明应用程序中的某些内容导致 Onload 出现问题。在这种情况下,我建议使用“安全”配置文件运行,以消除可能存在的任何并发问题。为此,请在“onload”和“app-exe”之间添加“--profile=safe”:

onload --profile=safe <app-exe>

它设置 Onload 选项,为调用添加额外的检查,如果同时使用,这些调用可能会损坏数据,例如修改文件描述符。如果这有效,我建议检查可能同时发生的修改套接字的调用,并查看它们是否可以被删除。或者设置

EF_FDS_MT_SAFE=0
可以防止这些冲突。 Onload 用户指南提供了有关此选项的更多信息:https://docs.xilinx.com/r/en-US/ug1586-onload-user/EF_FDS_MT_SAFE

© www.soinside.com 2019 - 2024. All rights reserved.