首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高负载网络服务器是否可以使用硬件解复用器?

高负载网络服务器是否可以使用硬件解复用器?
EN

Stack Overflow用户
提问于 2013-08-23 17:16:43
回答 2查看 595关注 0票数 1

例如,对于使用TCP/IP (使用POSIX轮询/选择或更高级的epoll、kqueue、poll_set、IOCP)的异步IO,网络驱动程序通过不同(硬件解复用器)CPU内核中的中断启动,接收消息并在内核级别将它们转储到单个(复用器)缓冲区中。然后,我们的线程接受者通过使用epoll / kqueue / poll_set / IOCP从这个单一缓冲区接收消息套接字的描述符列表,这些套接字一次又一次地将(demultiplexer)分散到运行在不同CPU核上的线程(线程池中)中。

简单地说,方案如下:硬件中断(硬件解复用器)、内核空间的->网络驱动程序(多路复用器)、用户空间中的->用户接受器(使用epoll / kqueue / poll_set / IOCP )

摆脱最后两个环节,只使用“硬件解复用器”,不是更容易、更快吗?

举个例子。如果网络数据包到达,网卡将中断CPU。在今天的大多数系统中,这些中断都分布在各个核之间。也就是说,这项工作是一个硬件解复用器。在收到这样的中断后,我们可以立即处理这个网络的消息并等待下一个中断。所有的解复用器工作都是通过CPU中断在硬件级别完成的。

在Cortex-A5 MPCore:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0434b/CCHDBEBE.html

在所有的Linux中,像QNX这样的实时*nix中,是否有一种可行的方法,并且是否有使用这种方法的公共项目可能是ngnix?

更新:

对我的问题的简单回答-是的,我可以通过使用/proc/irq/<N>/smp_affinityhttp://www.alexonlinux.com/smp-affinity-and-proper-interrupt-handling-in-linux使用硬件解复用

但请注意,这不是一件好事,因为一个数据包的不同部分可以由不同的核心处理,缓存同步(L1(CoreX)->L3->L1(CoreY))需要时间来实现缓存一致性:http://www.alexonlinux.com/why-interrupt-affinity-with-multiple-cores-is-not-such-a-good-thing

解决方案:

  • 硬绑定不同的以太网适配器(其IRQs)到不同的单CPU核心。
  • 当数据包通常完全包含整个消息时,使用大数据包和小消息。

问题:但是可能有一些更好的解决方案,例如当我们从网络适配器收到一批网络数据包时使用软IRQ(无硬件-IRQ),是吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-30 08:31:58

对我的问题的简单回答-是的,我可以通过使用/proc/irq/<N>/smp_affinityhttp://www.alexonlinux.com/smp-affinity-and-proper-interrupt-handling-in-linux使用硬件解复用

但请注意,这不是一件好事,因为一个数据包的不同部分可以由不同的核心处理,缓存同步(L1(CoreX)->L3->L1(CoreY))需要时间来实现缓存一致性:http://www.alexonlinux.com/why-interrupt-affinity-with-multiple-cores-is-not-such-a-good-thing

解决办法:

  • 硬绑定不同的以太网适配器(其IRQs)到不同的单CPU核心。
  • 当数据包通常完全包含整个消息时,使用大数据包和小消息。
票数 2
EN

Stack Overflow用户

发布于 2013-08-26 21:49:57

你问了一个相当宽泛的问题。

..。摆脱了前两个环节,只使用了“硬件解复用器”?

从您的描述中,我了解到您真正想要的是硬件向用户应用程序提供接收到的数据。难到不是么?这可以通过RDMA来实现。

硬件(网卡)可以在参与此过程的预分配缓冲器w/o CPU中提供所接收的数据。

我可以详细说明,但我不确定这是你要问的方向。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18408363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档