CN111488219B - 用于高速数据采集系统的以太网数据流记录方法 - Google Patents

用于高速数据采集系统的以太网数据流记录方法 Download PDF

Info

Publication number
CN111488219B
CN111488219B CN202010266058.6A CN202010266058A CN111488219B CN 111488219 B CN111488219 B CN 111488219B CN 202010266058 A CN202010266058 A CN 202010266058A CN 111488219 B CN111488219 B CN 111488219B
Authority
CN
China
Prior art keywords
network card
data
gigabit network
gigabit
data acquisition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010266058.6A
Other languages
English (en)
Other versions
CN111488219A (zh
Inventor
吕志丰
蒿杰
舒琳
赵美婷
宋亚芳
范秋香
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Automation of Chinese Academy of Science
Guangdong Institute of Artificial Intelligence and Advanced Computing
Original Assignee
Institute of Automation of Chinese Academy of Science
Guangdong Institute of Artificial Intelligence and Advanced Computing
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Automation of Chinese Academy of Science, Guangdong Institute of Artificial Intelligence and Advanced Computing filed Critical Institute of Automation of Chinese Academy of Science
Priority to CN202010266058.6A priority Critical patent/CN111488219B/zh
Priority to PCT/CN2020/092036 priority patent/WO2021203531A1/zh
Priority to US17/597,984 priority patent/US11941449B2/en
Publication of CN111488219A publication Critical patent/CN111488219A/zh
Application granted granted Critical
Publication of CN111488219B publication Critical patent/CN111488219B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明属于高速数据采集、网络数据处理领域,具体涉及一种用于高速数据采集系统的以太网数据流记录方法、系统、装置,旨在解决现有高速数据采集CPU利用率低、系统兼容性差、封装和部署困难以及系统传输可靠性低的问题。本系统方法包括:Linux操作系统启动后,隔离出设定数量的CPU核心;卸载操作系统内核态网卡驱动,创建huge page内存池,对各万兆网卡,分配其对应的数据接收缓存池及无锁FIFO缓存,并对各万兆网卡PCIE寄存器初始化,使其进入采集状态;以用户态轮询的驱动方式对各万兆网卡采集的数据包进行连续接收及磁盘记录。本发明提高了CPU利用率、系统兼容性和传输可靠性,降低了封装和部署难度。

Description

用于高速数据采集系统的以太网数据流记录方法
技术领域
本发明属于高速数据采集、网络数据处理领域,具体涉及一种用于高速数据采集系统的以太网数据流记录方法、系统、装置。
背景技术
随着科学技术的发展,多种应用对数据采集系统提出了更高的存储带宽要求,如雷达信号处理、射电天文探测、高帧率视频记录等。高速数据采集系统主要由高速模拟数字转换器(ADC)、实时数字信号处理机和存储设备等构成,数据传输带宽一般可达500MB/s以上。高速数据采集系统的实时数字信号处理机一般以FPGA或DSP芯片为控制核心,将模数转换后的数字信号直接存储于本地闪存阵列,或经由PCIE总线、高速以太网等途径转发至存储计算机。相比本地闪存阵列和PCIE等传输方案,高速以太网转存方案具有成本低、扩展性强、传输距离远、文件管理方便等优势。
高速数据采集系统一般使用较简单的以太网协议进行数据传输,如UDP等,但对数据完整性有较高要求。由于通用计算机操作系统并非针对高速以太网连续收包设计,传统基于PCAP的抓包方法在大于1Gbps带宽时丢包率较高,系统负载大,无法满足高速数据采集的带宽和可靠性要求。
而针对高速数据采集系统的传输及存储要求,目前业界主要有专用采集网卡、PF_RING、DPDK(Data Plane Development Kit,数据面开发套件)等解决方法。其中专用采集网卡针对数据包处理有进行特别设计的硬件加速单元,可大幅减轻存储计算机的CPU负载,实现高带宽数据记录;PF_RING是ntop公司设计的一种高速网络包处理软件框架,该框架通过环形队列与内存映射技术使网络包从内核到用户程序间得到高效传输,可大幅提升捕获率;DPDK是Intel公司提出的一种开源数据包处理软件,通过在用户态对网卡的直接读写来绕开Linux内核网络协议栈,达到10Gbps以上的可靠传输。上述三种方法中,专用采集网卡售价较为昂贵,同时宿主机的CPU不能得到有效利用而造成资源浪费,对于成本敏感或大规模部署的情景不适用;PF_RING可支持通用网卡设备,但由于运行时需加载特殊的驱动模块至Linux内核,对操作系统版本有兼容性要求,在终端程序封装和部署时会造成一定的麻烦,同时需根据网络接口数量来购买其商业许可证,对于大规模部署的应用增加了成本负担;DPDK重点优化了数据包的转发效率,当加入数据处理时其性能下降明显,且DPDK开发环境复杂,程序运行的依赖项较多,终端程序的封装部署较为繁琐。因此,本发明提出了一种用于高速数据采集系统的以太网数据流记录方法。
发明内容
为了解决现有技术中的上述问题,即为了解决现有基于以太网的高速数据采集系统在采集和记录数据时CPU利用率低、系统兼容性差、封装和部署困难以及在数据带宽较高的情况下,系统传输可靠性低的问题,本发明第一方面,提出了一种用于高速数据采集系统的以太网数据流记录方法,所述高速采集系统由Linux操作系统、多块万兆网卡及高速NVMe固态硬盘构建,该方法包括:
步骤S100,Linux操作系统启动后,隔离出设定数量的CPU核心;
步骤S200,通过sysfs文件系统卸载所述Linux操作系统内核态网卡驱动,并创建hugepage内存池;对每一个万兆网卡,通过hugetlbfs文件系统分配其对应的数据接收缓存池及无锁FIFO缓存,并基于其对应的PCIE地址,通过sysfs文件系统对各万兆网卡PCIE寄存器进行初始化设置,使其进入采集状态;
步骤S300,创建多个工作线程并绑定至所述CPU核心,以用户态轮询的驱动方式对各万兆网卡采集的数据包进行连续接收及磁盘记录;所述工作线程包括数据接收线程和磁盘记录线程。
在一些优选的实施方式中,所述隔离出的CPU核心其至少保留Core0用于Linux操作系统内核线程调度。
在一些优选的实施方式中,步骤S200中“通过sysfs文件系统卸载所述Linux操作系统内核态网卡驱动,并创建hugepage内存池”,其方法为,通过sysfs文件系统下pci设备驱动目录中的unbind节点进行卸载,卸载完成之后在nr_hugepages节点设置hugepages数量,创建hugepage内存池。
在一些优选的实施方式中,步骤S200中“通过hugetlbfs文件系统分配其对应的数据接收缓存池及无锁FIFO缓存”,其方法为:使用mmap在hugetlbfs文件系统中分配各万兆网卡数据接收缓存池和无锁FIFO缓存空间。
在一些优选的实施方式中,步骤S200中“基于其对应的PCIE地址,通过sysfs文件系统对各万兆网卡PCIE寄存器进行初始化设置”其方法为:使用mmap对sysfs文件系统下pci设备资源节点resource0进行映射,并在该映射空间中对相关万兆网卡PCIE寄存器偏移地址内容进行读写;所述读写包括关闭万兆网卡中断、复位万兆网卡主控芯片、二次关闭中断、等待DMA初始化标志完成、复位数据接收环RX头指针RDH和尾指针RDT、填充各DMA描述单元物理地址、开启巨帧和混杂模式标志位。
在一些优选的实施方式中,步骤S300中“以用户态轮询的驱动方式对各万兆网卡采集的数据包进行连续接收”,其方法为:
步骤S310,各万兆网卡根据RX中DMA描述单元对应地址将采集的数据包通过PCIE总线传输至系统内存,并向前移动RDH,直至RX当前位置的DMA描述单元的STAT_DD标志位为1;
步骤S320,获取所述DMA描述单元对应数据包的虚拟地址,存入指针数组;并从hugepage内存池中申请新的数据包接收空间进行初始化,将新缓存的物理地址写入所述DMA描述单元;
步骤S330,循环执行步骤S310-步骤S320,直至达到设定的单次最大接收数量,当达到最大接收数量,执行步骤S340;
步骤S340,向前移动RDT,释放各万兆网卡的存储空间,并对所述指针数组对应数据包进行处理,将处理结果拷贝至无锁FIFO,拷贝完成后释放指针数组所对应的内存池空间;所述处理包括完整性检测、包头过滤。
在一些优选的实施方式中,所述磁盘记录其记录方法为:将无锁FIFO中的数据包取出,把单一连续数据流分为多个文件写入磁盘;当数据文件大小超过设定阈值时,关闭当前文件并创建新的数据文件进行写入。
本发明的第二方面,提出了一种用于高速数据采集系统的以太网数据流记录系统,该系统包括关闭隔离模块、网卡初始化模块、记录模块;
所述关闭隔离模块,配置为Linux操作系统启动后,隔离出设定数量的CPU核心;
所述网卡初始化模块,配置为通过sysfs文件系统卸载所述Linux操作系统内核态网卡驱动,并创建hugepage内存池;对每一个万兆网卡,通过hugetlbfs文件系统分配其对应的数据接收缓存池及无锁FIFO缓存,并基于其对应的PCIE地址,通过sysfs文件系统对各万兆网卡PCIE寄存器进行初始化设置,使其进入采集状态;
所述记录模块,配置为创建多个工作线程并绑定至所述CPU核心,以用户态轮询的驱动方式对各万兆网卡采集的数据包进行连续接收及磁盘记录;所述工作线程包括数据接收线程和磁盘记录线程。
本发明的第三方面,提出了一种存储装置,其中存储有多条程序,所述程序应用由处理器加载并执行以实现上述的用于高速数据采集系统的以太网数据流记录方法。
本发明的第四方面,提出了一种处理装置,包括处理器、存储装置;处理器,适用于执行各条程序;存储装置,适用于存储多条程序;所述程序适用于由处理器加载并执行以实现上述的用于高速数据采集系统的以太网数据流记录方法。
本发明的有益效果:
本发明提高了高速数据采集系统的CPU利用率、系统兼容性和系统传输可靠性,并降低了封装和部署的难度。本发明在网络传输方面,一方面采用轮询的驱动模式来对网卡数据进行读取,避免操作系统对网卡中断响应的不确定性,提高系统传输的可靠性,另一方面利用多核CPU优势,将各路数据流处理线程分离并绑定在独立的CPU核心上,同时屏蔽系统中其他任务对该核心的中断和占用,减小不必要的系统调用和线程调度,实现对数据流的高效并行处理,显著提升处理器使用效率。在数据记录方面,利用NVMe固态硬盘的多队列优势提升多路数据流的写入性能,可根据实际带宽需求和固态硬盘写入性能进行平衡分配。
同时,本发明利用标准函数库实现数据流记录方法,提升了系统兼容性和可移植性,而且数据记录软件在运行前只需做简单拷贝而无须考虑依赖包的安装,极大地简化了系统部署,因此本发明具有传输可靠性高、可线性扩展、系统兼容性强、部署容易的特点。
附图说明
通过阅读参照以下附图所做的对非限制性实施例所做的详细描述,本申请的其他特征、目的和优点将会变得更明显。
图1是本发明一种实施例的用于高速数据采集系统的以太网数据流记录方法的流程示意图;
图2是本发明一种实施例的用于高速数据采集系统的以太网数据流记录系统的框架示意图;
图3是本发明一种实施例的用于高速数据采集系统的以太网数据流记录方法的详细流程示意图;
图4是本发明一种实施例的数据接收线程接收数据的详细流程示意图;
图5是适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明的用于高速数据采集系统的以太网数据流记录方法,如图1所示,包括以下步骤:
步骤S100,Linux操作系统启动后,隔离出设定数量的CPU核心;
步骤S200,通过sysfs文件系统卸载所述Linux操作系统内核态网卡驱动,并创建hugepage内存池;对每一个万兆网卡,通过hugetlbfs文件系统分配其对应的数据接收缓存池及无锁FIFO缓存,并基于其对应的PCIE地址,通过sysfs文件系统对各万兆网卡PCIE寄存器进行初始化设置,使其进入采集状态;
步骤S300,创建多个工作线程并绑定至所述CPU核心,以用户态轮询的驱动方式对各万兆网卡采集的数据包进行连续接收及磁盘记录;所述工作线程包括数据接收线程和磁盘记录线程。
为了更清晰地对本发明用于高速数据采集系统的以太网数据流记录方法进行说明,下面结合附图对本发明方法一种实施例中各步骤进行展开详述。
步骤S100,Linux操作系统启动后,隔离出设定数量的CPU核心。
在本实施例中,先搭建高速数据采集系统:具体的硬件环境包括:多块万兆网卡及高速NVMe固态硬盘、物理核心数不少于2的x86或ARM CPU、至少支持1路PCIE 2.0x8和1路PCIE 3.0x4,其中,各数据流对应的万兆网卡和NVMe固态硬盘应安装于同一NUMA节点所对应的PCIE总线上,如图3所示。软件环境为主流Linux操作系统,内核版本在3.3以上。另外,本发明中设置NVMe固态硬盘的数量为N。
搭建好高速数据采集系统后,在操作系统启动时隔离出用于数据接收和文件记录的CPU核心。具体处理如下:
通过修改内核启动参数isolcpus进行CPU核心隔离,且至少保留Core0用于操作系统内核线程调度,例如:isolcpus=2-7表示隔离第Core2至第Core7共6个核心专用于数据流处理,保留Core0、Core1核心的操作系统调度权,本发明优选设置隔离的核心为2n个。另外,第一次启动Linux操作系统时(即初始化),在隔离CPU核心前需关闭主板BIOS中CPU的超线程设置,此设置仅设置一次,在以后操作系统启动时,无需再进行关闭。
步骤S200,通过sysfs文件系统卸载所述Linux操作系统内核态网卡驱动,并创建hugepage内存池;对每一个万兆网卡,通过hugetlbfs文件系统分配其对应的数据接收缓存池及无锁FIFO缓存,并基于其对应的PCIE地址,通过sysfs文件系统对各万兆网卡PCIE寄存器进行初始化设置,使其进入采集状态。
因此,在本实施例中,在数据记录程序中对万兆网卡进行初始化。具体处理如下:
步骤S210,通过sysfs文件系统下pci设备驱动目录中的unbind节点卸载原有Linux操作系统内核态网卡驱动;
步骤S200,加载hugetlbfs文件系统,创建hugepage内存池,分配网卡数据接收缓存池和大容量无锁FIFO缓存;具体为:使用默认2MB页大小,通过sysfs文件系统下nr_hugepages节点设置hugepages数量,并使用mmap在hugetlbfs中分配网卡数据接收缓存池和大容量无锁FIFO缓存空间;本发明中无锁FIFO的数量设置为n。
步骤S230,获取各万兆网卡对应的PCIE地址,并通过sysfs文件系统对万兆网卡PCIE寄存器进行初始化设置:即对网卡PCIE BAR0空间进行内存映射,并初始化网卡寄存器,具体方法为使用mmap对sysfs文件系统下pci设备资源节点resource0进行映射,再在该映射空间中对相关寄存器偏移地址内容进行读写,包括关闭网卡中断、复位网卡主控芯片、二次关闭中断、等待DMA初始化标志完成、复位数据接收环RX头指针RDH和尾指针RDT、填充各DMA描述单元物理地址、开启巨帧和混杂模式标志位等,此时网卡进入正常采集状态。
步骤S300中,创建多个工作线程并绑定至所述CPU核心,以用户态轮询的驱动方式对各万兆网卡采集的数据包进行连续接收及磁盘记录;所述工作线程包括数据接收线程和磁盘记录线程。
在本实施例中,工作线程主要分为数据接收线程、磁盘记录线程和缓存管理线程。每个物理网卡的数据流分别对应一个数据接收线程和一个磁盘记录线程,线程间通过无锁FIFO进行数据共享。为减少线程切换的资源开销以提高并行处理性能,每个数据接收线程和磁盘记录线程被分别绑定至独占的CPU核心。各线程间的结构关系如图3所示。
其中,数据接收线程主要以轮询的驱动方式实现网卡数据的连续接收。这是因为高速数据采集系统对带宽和数据完整性均有较高要求,由于通用计算机操作系统并非针对高速以太网连续收包设计,对网卡中断响应的实时性较差,且数据包需要先后经过网卡驱动、内核网络协议栈再到用户空间的多次拷贝,严重限制了数据包处理效率。尤其在万兆及以上速率环境下,即便使用8KB以上的巨帧(Jumbo Frame)进行传输,传统方法也不能保证持续零丢包记录。因此在本实施例中,以用户态轮询的驱动方式对网卡数据进行读取,避免操作系统对网卡中断响应的不确定性。随后对数据包进行完整性检测、包头过滤等处理,最终将有效数据转移至无锁FIFO。对网卡数据包进行轮询接收的具体步骤如下,如图4所示:
步骤S310,基于采集到数据包或数据流(数量为n),万兆网卡硬件根据数据接收环RX中DMA描述单元对应地址将数据包通过PCIE总线传输至系统内存后,通过硬件设置STATUS寄存器相关数据位,并同时向前移动RX的头指针RDH;数据接收线程循环读取数据接收环RX当前位置的DMA描述单元直到STATUS寄存器的STAT_DD标志位为1;
步骤S320,获取该DMA描述单元对应网络数据包的虚拟地址,存入指针数组;并从hugepage内存池中申请新的数据包接收空间进行初始化,将新缓存物理地址写入当前DMA描述单元;
步骤S330,循环执行步骤S310-步骤S320,直至达到设定的单次最大接收数量,当达到最大接收数量,执行步骤S340;其中,为减少内存操作次数,采用批量接收数据包后单次处理的策略,单次最大接收数量是人为设定值,一般小于网卡缓冲区大小。
步骤S340,向前移动RX的尾指针RDT,为万兆网卡硬件释放存储空间,对指针数组对应数据包进行完整性检测、包头过滤等处理,并将结果拷贝至无锁FIFO,拷贝完成后释放指针数组所对应的内存池空间。
磁盘记录线程负责从无锁FIFO中取出数据,并将单一连续数据流分为多个文件写入磁盘,当数据文件大小超过设定阈值时关闭当前文件并创建新的数据文件进行写入。
缓存管理线程负责定时释放操作系统已写入的文件缓存以提高连续写入性能。
另外,本记录方法支持连续记录和循环记录两种模式,其中连续记录模式为持续创建新的数据文件直至磁盘写满;循环记录模式仅保存最近时间内的预设大小数据内容,当连续记录数据超出预设大小时将自动覆盖最早的数据文件。
本发明第二实施例的一种用于高速数据采集系统的以太网数据流记录系统,如图2所示,包括:关闭隔离模块100、网卡初始化模块200、记录模块300;
所述关闭隔离模块100,配置为Linux操作系统启动后,隔离出设定数量的CPU核心;
所述网卡初始化模块200,配置为通过sysfs文件系统卸载所述Linux操作系统内核态网卡驱动,并创建hugepage内存池;对每一个万兆网卡,通过hugetlbfs文件系统分配其对应的数据接收缓存池及无锁FIFO缓存,并基于其对应的PCIE地址,通过sysfs文件系统对各万兆网卡PCIE寄存器进行初始化设置,使其进入采集状态;
所述记录模块300,配置为创建多个工作线程并绑定至所述CPU核心,以用户态轮询的驱动方式对各万兆网卡采集的数据包进行连续接收及磁盘记录;所述工作线程包括数据接收线程和磁盘记录线程。
所述技术领域的技术人员可以清楚的了解到,为描述的方便和简洁,上述描述的系统的具体的工作过程及有关说明,可以参考前述方法实施例中的对应过程,在此不再赘述。
需要说明的是,上述实施例提供的用于高速数据采集系统的以太网数据流记录系统,仅以上述各功能模块的划分进行举例说明,在实际应用中,可以根据需要而将上述功能分配由不同的功能模块来完成,即将本发明实施例中的模块或者步骤再分解或者组合,例如,上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块,以完成以上描述的全部或者部分功能。对于本发明实施例中涉及的模块、步骤的名称,仅仅是为了区分各个模块或者步骤,不视为对本发明的不当限定。
本发明第三实施例的一种存储装置,其中存储有多条程序,所述程序适用于由处理器加载并实现上述的用于高速数据采集系统的以太网数据流记录方法。
本发明第四实施例的一种处理装置,包括处理器、存储装置;处理器,适于执行各条程序;存储装置,适于存储多条程序;所述程序适于由处理器加载并执行以实现上述的用于高速数据采集系统的以太网数据流记录方法。
所述技术领域的技术人员可以清楚的了解到,为描述的方便和简洁,上述描述的存储装置、处理装置的具体工作过程及有关说明,可以参考前述方法实例中的对应过程,在此不再赘述。
下面参考图5,其示出了适于用来实现本申请方法、系统、装置实施例的服务器的计算机系统的结构示意图。图5示出的服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图5所示,计算机系统包括中央处理单元(CPU,Central Processing Unit)501,其可以根据存储在只读存储器(ROM,Read Only Memory)502中的程序或者从存储部分508加载到随机访问存储器(RAM,Random Access Memory)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O,Input/Output)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT,Cathode Ray Tube)、液晶显示器(LCD,Liquid Crystal Display)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN(局域网,Local AreaNetwork)卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
术语“第一”、“第二”等是用于区别类似的对象,而不是用于描述或表示特定的顺序或先后次序。
术语“包括”或者任何其它类似用语旨在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备/装置不仅包括那些要素,而且还包括没有明确列出的其它要素,或者还包括这些过程、方法、物品或者设备/装置所固有的要素。
至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。

Claims (9)

1.一种用于高速数据采集系统的以太网数据流记录方法,所述高速数据采集系统由Linux操作系统、多块万兆网卡及高速NVMe固态硬盘构建,其特征在于,该方法包括:
步骤S100,Linux操作系统启动后,隔离出设定数量的CPU核心;
步骤S200,通过sysfs文件系统卸载所述Linux操作系统的内核态网卡驱动,并创建hugepage内存池;对每一个万兆网卡,通过hugetlbfs文件系统分配其对应的数据接收缓存池及无锁FIFO缓存,并基于其对应的PCIE地址,通过sysfs文件系统对各万兆网卡PCIE寄存器进行初始化设置,使其进入采集状态;
步骤S300,创建多个工作线程并绑定至所述CPU核心,以用户态轮询的驱动方式对各万兆网卡采集的数据包进行连续接收及磁盘记录;所述工作线程包括数据接收线程和磁盘记录线程;
以用户态轮询的驱动方式对各万兆网卡采集的数据包进行连续接收,其方法为:
步骤S310,各万兆网卡根据RX中DMA描述单元对应地址将采集的数据包通过PCIE总线传输至系统内存,并向前移动RDH,直至RX当前位置的DMA描述单元的STAT_DD标志位为1;
步骤S320,获取所述DMA描述单元对应数据包的虚拟地址,存入指针数组;并从hugepage内存池中申请新的数据包接收空间进行初始化,将新缓存的物理地址写入所述DMA描述单元;
步骤S330,循环执行步骤S310-步骤S320,直至达到设定的单次最大接收数量,当达到最大接收数量,执行步骤S340;
步骤S340,向前移动RDT,释放各万兆网卡的存储空间,并对所述指针数组对应数据包进行处理,将处理结果拷贝至无锁FIFO,拷贝完成后释放指针数组所对应的内存池空间;所述处理包括完整性检测、包头过滤;其中,RX为复位数据接收环,RDH为RX的头指针,RDT为RX的尾指针。
2.根据权利要求1所述的用于高速数据采集系统的以太网数据流记录方法,其特征在于,所述隔离出的CPU核心其至少保留Core0用于Linux操作系统内核线程调度。
3.根据权利要求2所述的用于高速数据采集系统的以太网数据流记录方法,其特征在于,步骤S200中“通过sysfs文件系统卸载所述Linux操作系统内核态网卡驱动,并创建hugepage内存池”,其方法为,通过sysfs文件系统下pci设备驱动目录中的unbind节点进行卸载,卸载完成之后在nr_hugepages节点设置hugepages数量,创建hugepage内存池。
4.根据权利要求3所述的用于高速数据采集系统的以太网数据流记录方法,其特征在于,步骤S200中“通过hugetlbfs文件系统分配其对应的数据接收缓存池及无锁FIFO缓存”,其方法为:使用mmap在hugetlbfs文件系统中分配各万兆网卡数据接收缓存池和无锁FIFO缓存空间。
5.根据权利要求3所述的用于高速数据采集系统的以太网数据流记录方法,其特征在于,步骤S200中“基于其对应的PCIE地址,通过sysfs文件系统对各万兆网卡PCIE寄存器进行初始化设置”其方法为:使用mmap对sysfs文件系统下pci设备资源节点resource0进行映射,并在该映射对应的映射空间中对相关万兆网卡PCIE寄存器偏移地址内容进行读写;所述读写包括关闭万兆网卡中断、复位万兆网卡主控芯片、二次关闭中断、等待DMA初始化标志完成、复位数据接收环RX头指针RDH和尾指针RDT、填充各DMA描述单元物理地址、开启巨帧和混杂模式标志位。
6.根据权利要求5所述的用于高速数据采集系统的以太网数据流记录方法,其特征在于,所述磁盘记录其记录方法为:将无锁FIFO中的数据包取出,把单一连续数据流分为多个文件写入磁盘;当数据文件大小超过设定阈值时,关闭当前文件并创建新的数据文件进行写入。
7.一种用于高速数据采集系统的以太网数据流记录系统,其特征在于,所述以太网数据流记录系统包括:关闭隔离模块、网卡初始化模块、记录模块;
所述关闭隔离模块,配置为Linux操作系统启动后,隔离出设定数量的CPU核心;
所述网卡初始化模块,配置为通过sysfs文件系统卸载所述Linux操作系统的内核态网卡驱动,并创建hugepage内存池;对每一个万兆网卡,通过hugetlbfs文件系统分配其对应的数据接收缓存池及无锁FIFO缓存,并基于其对应的PCIE地址,通过sysfs文件系统对各万兆网卡PCIE寄存器进行初始化设置,使其进入采集状态;
所述记录模块,配置为创建多个工作线程并绑定至所述CPU核心,以用户态轮询的驱动方式对各万兆网卡采集的数据包进行连续接收及磁盘记录;所述工作线程包括数据接收线程和磁盘记录线程;
以用户态轮询的驱动方式对各万兆网卡采集的数据包进行连续接收,其方法为:
步骤S310,各万兆网卡根据RX中DMA描述单元对应地址将采集的数据包通过PCIE总线传输至系统内存,并向前移动RDH,直至RX当前位置的DMA描述单元的STAT_DD标志位为1;
步骤S320,获取所述DMA描述单元对应数据包的虚拟地址,存入指针数组;并从hugepage内存池中申请新的数据包接收空间进行初始化,将新缓存的物理地址写入所述DMA描述单元;
步骤S330,循环执行步骤S310-步骤S320,直至达到设定的单次最大接收数量,当达到最大接收数量,执行步骤S340;
步骤S340,向前移动RDT,释放各万兆网卡的存储空间,并对所述指针数组对应数据包进行处理,将处理结果拷贝至无锁FIFO,拷贝完成后释放指针数组所对应的内存池空间;所述处理包括完整性检测、包头过滤;其中,RX为复位数据接收环,RDH为RX的头指针,RDT为RX的尾指针。
8.一种存储装置,其中存储有多条程序,其特征在于,所述程序应用由处理器加载并执行以实现权利要求1-6任一项所述的用于高速数据采集系统的以太网数据流记录方法。
9.一种处理装置,包括处理器、存储装置;处理器,适用于执行各条程序;存储装置,适用于存储多条程序;其特征在于,所述程序适用于由处理器加载并执行以实现权利要求1-6任一项所述的用于高速数据采集系统的以太网数据流记录方法。
CN202010266058.6A 2020-04-07 2020-04-07 用于高速数据采集系统的以太网数据流记录方法 Active CN111488219B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202010266058.6A CN111488219B (zh) 2020-04-07 2020-04-07 用于高速数据采集系统的以太网数据流记录方法
PCT/CN2020/092036 WO2021203531A1 (zh) 2020-04-07 2020-05-25 用于高速数据采集系统的以太网数据流记录方法
US17/597,984 US11941449B2 (en) 2020-04-07 2020-05-25 Ethernet data stream recording method and system for high-speed data acquisition system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010266058.6A CN111488219B (zh) 2020-04-07 2020-04-07 用于高速数据采集系统的以太网数据流记录方法

Publications (2)

Publication Number Publication Date
CN111488219A CN111488219A (zh) 2020-08-04
CN111488219B true CN111488219B (zh) 2022-08-02

Family

ID=71812496

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010266058.6A Active CN111488219B (zh) 2020-04-07 2020-04-07 用于高速数据采集系统的以太网数据流记录方法

Country Status (3)

Country Link
US (1) US11941449B2 (zh)
CN (1) CN111488219B (zh)
WO (1) WO2021203531A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111624962B (zh) * 2020-05-19 2021-05-28 中国地质大学(武汉) 一种数据机房供配电设备管控系统
CN112181626A (zh) * 2020-10-16 2021-01-05 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 脱离Android操作系统调度CPU的系统、方法及介质
CN113359510B (zh) * 2021-06-04 2023-01-31 北京理工大学 北斗卫星导航系统信号模拟器数据实时仿真系统
CN114095251B (zh) * 2021-11-19 2024-02-13 南瑞集团有限公司 一种基于dpdk与vpp的sslvpn实现方法
CN114860158A (zh) * 2022-04-11 2022-08-05 中国电子科技集团公司第五十二研究所 一种高速数据采集记录方法
CN115118459A (zh) * 2022-06-02 2022-09-27 合肥卓讯云网科技有限公司 一种基于安全卡与隔离卡异构实现安全数据交换的方法及设备
CN115314416B (zh) * 2022-07-15 2023-07-14 苏州浪潮智能科技有限公司 网卡状态自动检测方法、装置、电子设备及存储介质
CN116095195B (zh) * 2023-04-06 2023-06-20 北京理工大学 一种基于国产化平台的工业以太网数据包生成方法及装置
CN116320737B (zh) * 2023-05-10 2023-08-18 珠海星云智联科技有限公司 用于千兆以太网标准工业相机的控制方法、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110225408A1 (en) * 2010-03-10 2011-09-15 Ren Guo Cache boot mechanism
CN107749893A (zh) * 2017-11-09 2018-03-02 北京精强远科技有限公司 一种共享文件系统中实现快速接收和储存数据的方法
CN110865868A (zh) * 2019-10-21 2020-03-06 苏州元核云技术有限公司 一种低延迟控制方法、装置及其设备
CN110874336A (zh) * 2019-10-21 2020-03-10 无锡江南计算技术研究所 一种基于申威平台的分布式块存储低延迟控制方法及系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7949766B2 (en) * 2005-06-22 2011-05-24 Cisco Technology, Inc. Offload stack for network, block and file input and output
US8364638B2 (en) * 2005-09-15 2013-01-29 Ca, Inc. Automated filer technique for use in virtualized appliances and applications
US20130346700A1 (en) * 2012-06-21 2013-12-26 Alexander I. Tomlinson Systems and methods for managing memory
CN102831015B (zh) 2012-08-01 2015-09-23 华为技术有限公司 多核处理器的调度方法和设备
US9602437B1 (en) * 2012-10-03 2017-03-21 Tracey M. Bernath System and method for accelerating network applications using an enhanced network interface and massively parallel distributed processing
CN102932174B (zh) * 2012-10-25 2015-07-29 华为技术有限公司 一种物理网卡管理方法、装置及物理主机
CN104050137B (zh) * 2013-03-13 2018-02-09 华为技术有限公司 一种异构操作系统中内核运行的方法及装置
KR102431962B1 (ko) * 2015-08-12 2022-08-17 삼성전자 주식회사 전자 장치 및 그의 안테나 성능 개선 방법
CN106549869A (zh) 2015-09-21 2017-03-29 北京信威通信技术股份有限公司 数据包处理方法及装置
CN105429895A (zh) 2015-11-02 2016-03-23 汉柏科技有限公司 一种基于万兆网卡的报文传输方法及系统
CN105577567B (zh) * 2016-01-29 2018-11-02 国家电网公司 基于Intel DPDK的网络数据包并行处理方法
US10114658B2 (en) * 2016-05-23 2018-10-30 Baida USA LLC Concurrent testing of PCI express devices on a server platform
CN107483237A (zh) 2017-08-02 2017-12-15 赛尔网络有限公司 基于dpdk转发的性能优化系统及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110225408A1 (en) * 2010-03-10 2011-09-15 Ren Guo Cache boot mechanism
CN107749893A (zh) * 2017-11-09 2018-03-02 北京精强远科技有限公司 一种共享文件系统中实现快速接收和储存数据的方法
CN110865868A (zh) * 2019-10-21 2020-03-06 苏州元核云技术有限公司 一种低延迟控制方法、装置及其设备
CN110874336A (zh) * 2019-10-21 2020-03-10 无锡江南计算技术研究所 一种基于申威平台的分布式块存储低延迟控制方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
何佳伟.基于Intel DPDK的高性能网络安全审计方案设计.《网络与信息工程》.2016,87-90. *

Also Published As

Publication number Publication date
WO2021203531A1 (zh) 2021-10-14
CN111488219A (zh) 2020-08-04
US20230086756A1 (en) 2023-03-23
US11941449B2 (en) 2024-03-26

Similar Documents

Publication Publication Date Title
CN111488219B (zh) 用于高速数据采集系统的以太网数据流记录方法
EP3754511A1 (en) Multi-protocol support for transactions
CN107995129B (zh) 一种nfv报文转发方法和装置
US20210232528A1 (en) Configurable device interface
US9996484B1 (en) Hardware acceleration for software emulation of PCI express compliant devices
US11099872B2 (en) Techniques to copy a virtual machine
US7480747B2 (en) Method and apparatus to reduce latency and improve throughput of input/output data in a processor
TWI408934B (zh) 網路介面技術
US20130055259A1 (en) Method and apparatus for handling an i/o operation in a virtualization environment
CN106648896B (zh) 一种Zynq芯片在异构称多处理模式下双核共享输出外设的方法
US20150127994A1 (en) Trace Data Export to Remote Memory Using Remotely Generated Reads
US20150127993A1 (en) Trace Data Export to Remote Memory Using Memory Mapped Write Transactions
US10324658B1 (en) Memory sharing for buffered macro-pipelined data plane processing in multicore embedded systems
CN112650558B (zh) 数据处理方法、装置、可读介质和电子设备
US20130060963A1 (en) Facilitating routing by selectively aggregating contiguous data units
CN113010470B (zh) 边缘节点远程控制系统、方法、设备及存储介质
US11928504B2 (en) System and method for queuing work within a virtualized scheduler based on in-unit accounting of in-unit entries
WO2010116402A1 (ja) 情報処理装置
US8214553B2 (en) Virtualization of an input/output device for supporting multiple hosts and functions
US9288163B2 (en) Low-latency packet receive method for networking devices
US20140280716A1 (en) Direct push operations and gather operations
US6665752B1 (en) Interrupt driven interface coupling a programmable media access controller and a process controller
US11237836B2 (en) Reverse order queue updates by virtual devices
US20230333921A1 (en) Input/output (i/o) virtualization acceleration
US20230229497A1 (en) Transparent and remote kernel execution in a heterogeneous computing system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 100190 No. 95 East Zhongguancun Road, Beijing, Haidian District

Applicant after: INSTITUTE OF AUTOMATION, CHINESE ACADEMY OF SCIENCES

Applicant after: Guangdong Institute of artificial intelligence and advanced computing

Address before: 100190 No. 95 East Zhongguancun Road, Beijing, Haidian District

Applicant before: INSTITUTE OF AUTOMATION, CHINESE ACADEMY OF SCIENCES

Applicant before: Guangzhou Institute of artificial intelligence and advanced computing, Institute of automation, Chinese Academy of Sciences

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant