我具有由CX4电缆2个万兆卡之间会连接的两个Debian机器。人会非常快速地生成数据(间4Gbits / s和16Gbits / S),以及其他需要能够抓住这一切,它存储在RAM中供以后分析。我是新来这种低级别的编码,并会愉快地接受什么广泛的方法使用任何想法(我需要DMA?RDMA?),或者可能适用的技巧和窍门。谢谢!

有帮助吗?

解决方案

如果你想不断地处理1 GB的流量的第二你需要一个非常宽的总线和一个非常快的处理速度,以及我的经验来自的 NIDS 。需要专门的硬件来consistantly执行数据的处理NIDS 100MB(1个千兆以太网)(10千兆是另一个宇宙)。拉姆不会帮助你,因为你可以在5-10秒补GB和1 GB持有大量的请求。

如果你正在尝试做的任何形式的业务或网络处理的有10演出,你可能需要把负载分配器,可以在前面加上10GB跟上流量。

P.S,我必须澄清NIDS是1:看到交通机上加工1个业务 - 即,最坏的情况下处理该同一台机器上的每个字节;而贸易/卷筒纸加工为1:许多:许多机器和的大小的字节数的顺序来处理

<强> - 编辑 -

现在,您已经提到,有(没有标准的万兆网卡可以与万兆跟上反正)数据传输之间的差距,我们需要知道处理的内容是什么,才能提出建议。

<强> - 编辑2 -

Berkeley DB的(用一个简单的数据模型数据库)的行为就像一个企业数据库(在成交率而言)当您使用多个线程。如果你想在高利率写入到磁盘你应该探讨这个解决方案。你可能需要一个RAID设置,以提高吞吐量 - RAID 0 + 1是最好的IO吞吐量和保护方面。

其他提示

我听说过的用于该会负责拉饱和的10GbE了用户空间对任何后期处理的是那些由Napatech制造普通PC机只有网卡 - 你将不得不使用自己定制的API <。 / p>

和你最好把这样的卡与总线管道相当长大服务器以支持这种速度的(我想肯定是从任何种类的NVIDIA芯片组这样的盒子的指导了。)

您打算什么特殊的编程之前,你应该做一些测试,看看有多少你可以用香草系统处理。建立生产者机和消费机上的一个简单的受主/分析器上的虚拟数据文件和发送过程,并做分析的一群 - 你去哪儿碰到的数据问题?你可以扔了更好的硬件,或者你可以调整你的处理要快一些?

确保你开始与硬件平台,能够支持您所期望的数据速率?如果你喜欢的东西英特尔82598EB网卡工作,确保你已经得到它插入的PCIe 2.0插槽,最好在x16插槽,以便从网卡获得全带宽的芯片组。

有办法来调整网卡驱动程序的参数,以您的数据流,以获得最出你的设置中。例如,要确保你是为了尽量减少TCP开销中的链接巨型帧。此外,您可以用驱动程序的中断节流速率起到加速低水平处理。

是处理你的数据集并行?如果你有一个任务中的数据转储到内存中,可以设置几个任务同时数据的过程块?这将充分利用多核CPU的。

最后,如果没有这就够了,使用你收集找到系统,您可以调整获得更好的性能的部分分析/定时数据。不只是假设你知道你需要调整:回到它与真实数据 - 你可能会惊讶

好了,你会需要钱。一种方法可能是买了负载共享开关到输入数据分割成两个计算机和后处理成一个单一数据库。

由于你有一些方面中,简化的情况我将实际尝试的系统之间的单个TCP流的琐碎或显而易见的方法以及使用write()到磁盘写入数据(稳定点只有两台机器,没有处理之间指向) 。然后测量的性能,和配置文件,以确定任何瓶颈。

有关的起点,阅读有关 C10K (10000个同时连接)的问题,这是大多数高性能服务器的发展。它应该给你的高性能服务器问题,一个强大的背景。当然,你并不需要担心选择/投票/ epoll的用于建立新的连接,这是一个重大的简化。

我觉得最近的Linux内核支持从nic->内核的10Gb包 但我怀疑,有复制数据到用户空间effiecent方式,即使酷睿i7 / XEON 5500玩平台

什么似乎被遗忘了:如果网卡是10GB的,你不用担心接收器,你可以休息(相对)简单:即使源能够以这样的速度生成的数据,就会有得到的是同样的问题数据到10GB线作为接收器已经得到它从线路到RAM中。

而如果NIC的10GB则意味着位主频为这样的速度,但没有提到单个数据包之间的时间,而我们还没有谈论协议呢。

我想这个问题,同时是过时的OP,但如果你有这样的任务,开始为了能够判断什么样的速度增长,有必要为您的特殊情况下,定期编程解决方案(你的情况是永远特; - )

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top