安湖科技产品文档安湖科技产品文档
首页
产品介绍
  • SDK 环境检查
  • 客户端SDK(c++)
  • java语言版本SDK
期货市场
  • 研究资料总览
  • 低延迟系统与架构
  • FPGA、GPU 与硬件加速
  • 网络、时间与行情协议
  • 量化交易系统工程
  • 全球市场协议资料
常见问题
技术支持
首页
产品介绍
  • SDK 环境检查
  • 客户端SDK(c++)
  • java语言版本SDK
期货市场
  • 研究资料总览
  • 低延迟系统与架构
  • FPGA、GPU 与硬件加速
  • 网络、时间与行情协议
  • 量化交易系统工程
  • 全球市场协议资料
常见问题
技术支持
  • 沪深 Level-2 SDK 环境检查

沪深 Level-2 SDK 环境检查

本页提供一个面向沪深 Level-2 C++ SDK 的环境检查脚本。脚本会读取当前主机的系统和 SDK 配置,帮助你在接入前快速发现明显问题;脚本不会修改 sysctl、网卡参数或大页内存配置。

脚本下载地址:check_env.sh

建议的使用顺序

在实际运行 SDK 的 Linux 主机上检查接收行情的网卡。根据结果完成配置后重新运行脚本,再继续 SDK 或 Demo 接入。脚本输出中的 PASS、WARN 和 FAIL 反映当前主机的检查结果,驱动兼容性和现场网络仍需人工确认。

1. 下载并运行

建议在 SDK 交付包根目录(包含 conf 的目录)运行,以便脚本找到配置文件。先用 ip link show 查看网卡,将示例中的 eth0 替换为接收行情的实际网卡名称,例如 enp1s0f0。

curl -fL -o check_env.sh https://haha-sg.oss-cn-shenzhen.aliyuncs.com/check_env.sh
sh check_env.sh eth0

如果主机没有 curl,也可以使用 wget:

wget -O check_env.sh https://haha-sg.oss-cn-shenzhen.aliyuncs.com/check_env.sh
sh check_env.sh eth0

脚本不会自动修改配置。检查完成后,可以根据提示回到接入前检查清单逐项处理。

2. 命令用法

用法: check_env.sh IFACE [选项]

IFACE                 必填,要检查的网卡名称,例如 eth0
-c, --config FILE     SDK 配置文件,默认查找 conf/ah_sdk_sf.conf
-i, --interface IFACE 以选项形式指定网卡(兼容写法)
    --require-onload   强制要求 Onload 版本在 8.0 至 9.1.1 之间
    --strict           将所有警告也视为失败
-h, --help             显示帮助

常用示例:

# 指定 SDK 配置文件
sh check_env.sh enp1s0f0 --config /opt/annhoo/conf/ah_sdk_sf.conf

# Solarflare 模式:要求安装并使用指定范围内的 Onload;警告也返回失败
sh check_env.sh enp1s0f0 --require-onload --strict

# 查看帮助
sh check_env.sh --help

帮助参数为 -h 或 --help,不支持 -help。网卡也可以通过 sh check_env.sh -i enp1s0f0 指定。未使用 --config 时,脚本相对当前工作目录依次查找 conf/ah_sdk_sf.conf 和 ./ah_sdk_sf.conf;找不到时会警告并跳过配置文件及绑核检查。

脚本会提示人工确认 SDK 主机和 FPGA 是否处于同一网络;网卡链路状态由脚本检查。未指定 --require-onload 时,普通网卡模式可以忽略 Onload 警告。

3. 检查内容

脚本将运行环境与系统配置中的手工检查整理为自动检查,主要内容如下:

检查项脚本检查内容建议或通过条件
操作系统uname、/etc/os-releaseLinux;发行版和版本在脚本识别范围内
CPU 架构uname -mx86_64
Linux 内核输出 uname -r 的内核版本SDK、Onload 和网卡驱动的兼容组合需人工核对,脚本不自动判断
网络链路ip link 检查指定网卡状态指定网卡处于 UP;SDK 主机和 FPGA 处于同一网络需人工确认
Socket 接收缓冲区net.core.rmem_default、net.core.rmem_maxrmem_default >= 268435456,rmem_max >= 536870912
网卡 RX 环形缓冲区ethtool -g IFACE当前 RX 值达到网卡支持的最大值;读取不到时给出警告
大页内存/proc/meminfoHugePages_Total > 0
CPU 与 NUMA在线 CPU 数、NUMA 拓扑建议至少能规划 6 个接收线程和 3 个分发线程,接收线程尽量位于同一 NUMA 节点
SDK 配置文件查找配置文件并读取 recv_np、index_np、snapshot_np、tick_np脚本检查已找到的绑核值是否为非负整数且小于在线 CPU 数
Onload(Solarflare)onload --version当前脚本接受 8.0 至 9.1.1(含边界);加上 --require-onload 后,未安装或版本不符会失败

当前脚本对 Onload 的版本检查上限为 9.1.1,而主手册写明的最低版本为 8.0。使用更高版本时应按交付包确认兼容性;脚本报告版本超出范围不等于该组合已经过不兼容验证。普通网卡模式不要求安装 Onload,但缺少 Onload 仍会产生 WARN,使用 --strict 时也会因此返回失败。

CPU 检查只核对在线逻辑 CPU 数、NUMA 拓扑可读性和已找到的绑核编号,不验证 9 个线程的配置是否齐全、核心是否重复或被其他进程占用,也不验证绑核是否位于同一 NUMA 节点。SDK 主机和 FPGA 是否处于同一网络仍需结合现场网络规划和实际组播收包测试确认。

需要调整系统参数时,请参阅运行环境与系统配置。

4. 支持的操作系统与工具

4.1 操作系统和架构

以下区分主手册的适配范围和当前脚本的版本判断规则;发行版检查通过不代表 SDK、Onload 与驱动组合已完成适配验证。

系统脚本行为手册中的适配说明
RHEL / Red Hat版本 ≥ 7.4 时通过,低于此版本失败推荐 RHEL 7.4 x64 及以上
CentOS版本 ≥ 7.4 时通过,低于此版本失败已适配 CentOS 7.9
Rocky Linux版本 ≥ 7.4 时通过,低于此版本失败已适配 Rocky Linux 8.5+
AlmaLinux版本 ≥ 7.4 时通过,低于此版本失败主手册未列为已适配发行版,需人工确认
Ubuntu版本 ≥ 22.04 时通过,低于此版本失败已适配 Ubuntu 22.04 和 Ubuntu 24.04.4 LTS
其他 Linux 发行版输出警告,要求人工确认不在当前脚本的明确适配清单中
Windows、macOS 等非 Linux 系统不支持作为本检查脚本的目标环境;非 Linux 系统检查失败SDK 运行环境要求 Linux
x86_64 / amd64通过架构检查手册推荐 x86_64
其他 CPU 架构输出警告需要联系技术支持确认 SDK、网卡驱动和 Onload 是否支持

脚本使用 POSIX sh 编写,依赖 Linux 的 /proc、/sys 和系统工具。AlmaLinux 即使发行版检查显示 PASS,也应结合交付包确认;其他 Linux 发行版或非 x86_64 架构出现 WARN 时同样需要人工核对。

4.2 检查工具

ip 缺失时无法检查网卡并会导致失败;/proc/meminfo 不可读时无法检查大页并会导致失败。建议准备 ip、ethtool、numactl,以及系统通常自带的 sh、awk、sed、grep、uname 等工具。软件包名称因发行版而异:Ubuntu 的 ip 通常由 iproute2 提供,RHEL 系列通常由 iproute 提供。

ethtool 缺失或无法读取网卡 RX 参数时会警告;没有 numactl 时,脚本会尝试通过 sysfs 检测 NUMA 拓扑。请使用能够读取网卡、系统参数和 SDK 配置的账号运行,读取失败时由运维人员确认工具、驱动和权限。

5. 如何解读结果

脚本结尾会打印汇总表,并通过退出码表示结果:

状态含义
PASS已满足脚本对应的检查条件
WARN未达到建议值、缺少可选信息,或需要结合现场条件人工确认
FAIL检查到明确不满足 SDK 运行要求的条件

默认情况下,只要没有 FAIL,脚本就会以成功退出,并提示仍需处理的警告。加上 --strict 后,任何 WARN 都会使脚本以失败退出,适合在部署流水线中作为门禁使用。

退出码含义
0检查没有硬性失败(默认模式下可能仍有警告);显示帮助也返回 0
1有失败项,或 --strict 模式下有警告项
2命令参数错误,例如缺少网卡、未知选项或选项缺少参数

可在执行结束后运行 echo $? 查看退出码。

典型输出结构如下;实际检查项目和警告数量会随主机配置、网卡能力及命令行选项变化:

检查结果汇总:
NO   | STATUS | RESULT
-----+--------+------------------------------------------------------------
1    | PASS   | 操作系统为 Linux
2    | PASS   | CPU 架构为 x86_64
3    | WARN   | SDK 与 FPGA 是否处于相同网络需人工确认
...

=== 检查结束:通过项已逐项标记 ===
结果:未发现硬性失败(警告若干项,请按提示人工确认)

如果检查结果包含 FAIL,或者在 --strict 模式下包含 WARN,请先处理对应项目,再运行脚本复查。对于网络是否同网、Onload 是否必须启用等现场相关问题,仍以实际部署模式和交付要求为准。

Last Updated:
Contributors: 程龙
Next
沪深 Level-2 行情 C++ SDK 接入指南