首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当PCI-interrupts使用CPU的两个核心时,`netif_rx(skb)`是否有可能导致乱序?

当PCI-interrupts使用CPU的两个核心时,`netif_rx(skb)`是否有可能导致乱序?
EN

Stack Overflow用户
提问于 2012-10-25 16:12:24
回答 1查看 528关注 0票数 0

我使用的是Linux2.6.32.28版本,我只是想知道:因为在使用netif_rx(skb)时每个CPU有一个队列,并且如果PCI-interrupt将使用CPU的两个核心来处理(现在它只使用一个,另一个好问题是为什么),为什么内核不会打乱接收到的包的顺序?我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-06 15:08:28

在Linux版本2.6.32.28中,基本上使用了NAPI,在这种情况下,如果第一个数据包到来,则会生成中断&它的相关处理程序用于处理数据包。

数据包处理基本上分为两部分:

DMA1-> hard interrupt在这种情况下,数据包仅在NIC的 Engine的帮助下放入内核内存。因此,不需要CPU,并且为该分组分配sk_buff structure。& this sk_buff的指针放在CPU backlog中。

cpu 2-> soft iterrupt在这种情况下,会产生一个软中断,它负责从 backlog中删除数据包,并将其处理到网络堆栈的上层。

由于在NAPI中,只使用了一个cpu核心,所以您的问题只使用了两个cpu核心。

如果在处理前一个包的过程中出现另一个包,则不会产生中断,但只有这个包在DMA的帮助下被放入linux内核。&正在运行的中断只显示数据包,并继续其处理。

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

https://stackoverflow.com/questions/13064326

复制
相关文章

相似问题

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