Skip to main content
QUICK REVIEW

[论文解读] The ngdp framework for data acquisition systems

A. Yu. Isupov|arXiv (Cornell University)|Apr 26, 2010
Particle Detector Development and Performance参考文献 2被引用 3
一句话总结

ngdp 框架是一种专为分布式高能物理实验设计的轻量级、模块化且高性能的数据采集(DAQ)系统框架。它在类 UNIX 环境中利用内核线程和 netgraph(4),通过 ng_mm(4) 实现内核到用户空间的直接内存映射,并借助可加载过滤模块实现高效的包过滤,从而最小化内存复制并消除对慢速中间存储的依赖,实现超过 1 GB/s 的高吞吐量。

ABSTRACT

The ngdp framework is intended to provide a base for the data acquisition (DAQ) system software. The ngdp's design key features are: high modularity and scalability; usage of the kernel context (particularly kernel threads) of the operating systems (OS), which allows to avoid preemptive scheduling and unnecessary memory--to--memory copying between contexts; elimination of intermediate data storages on the media slower than the operating memory like hard disks, etc. The ngdp, having the above properties, is suitable to organize and manage data transportation and processing for needs of essentially distributed DAQ systems. The investigation has been performed at the Veksler and Baldin Laboratory of High Energy Physics, JINR.

研究动机与目标

  • 设计一种轻量级、可扩展且模块化的 DAQ 软件框架,用于分布式高能物理实验。
  • 消除由慢速存储和用户与内核上下文之间过度内存复制导致的性能瓶颈。
  • 在标准硬件和操作系统上实现超过 1 GB/sec 的数据吞吐量。
  • 通过内核可加载模块(KLD)实现在运行时动态加载和卸载过滤功能。
  • 使用 mmap(2) 和 netgraph(4) 节点,实现内核与用户空间之间高效、低开销的数据交换。

提出的方法

  • 该框架以 netgraph(4) 作为核心数据传输和处理引擎,支持模块化、分层的数据流路由。
  • 使用内核线程在内核上下文中执行数据处理,避免抢占式调度,减少上下文切换开销。
  • ng_mm(4) 节点提供内核与用户空间之间的共享内存映射,允许通过 mmap(2) 直接访问数据包缓冲区,从而消除套接字 I/O 层。
  • 通过控制消息(addflt/delflt)动态注册的可加载 KLD 模块实现过滤功能,支持运行时插件化。
  • ng_filter(4) 节点通过链式顺序应用过滤函数来管理数据包流,每个函数返回 0 表示通过数据包,非零则表示释放该数据包。
  • 用户空间工具 ngget(1) 和 ngput(1) 支持通过 ng_socket(4) 和 ng_mm(4) 进行数据交换,其中 ng_mm(4) 因直接内存访问而更受推荐。

实验结果

研究问题

  • RQ1如何在标准硬件上实现高吞吐量(>1 GB/sec)的同时最小化资源消耗?
  • RQ2哪些架构模式能够实现在分布式 DAQ 系统中内核与用户空间之间高效、低延迟的数据传输?
  • RQ3如何在不牺牲性能的前提下实现在运行时对过滤功能和模块化处理的动态实现?
  • RQ4哪些机制可以消除在高速数据采集中对慢速介质(如硬盘)的中间存储?
  • RQ5如何实现内核与用户空间组件之间的高效同步与通信,同时最小化内存复制?

主要发现

  • 通过 ng_mm(4) 实现内核到用户空间的直接内存映射,ngdp 框架成功避免了用户与内核上下文之间的内存到内存复制,实现了超过 1 GB/sec 的高吞吐量。
  • 使用内核线程处理数据消除了抢占式调度开销,降低了数据流管理的延迟。
  • 通过 KLD 模块和控制消息(addflt/delflt)实现的动态过滤加载与卸载,支持运行时对数据处理流水线的重新配置。
  • ng_filter(4) 节点通过顺序应用过滤函数成功管理数据包流,非零返回值可实现早期终止,减少不必要的处理。
  • ngget(1) 和 ngput(1) 工具展示了通过 ng_socket(4) 和 ng_mm(4) 进行有效数据交换的能力,其中后者因直接内存访问而展现出更优性能。
  • 该框架通过在整个处理过程中将数据保留在主内存中,成功消除了在慢速介质(如硬盘)上的中间存储。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。