napi报文接收(e1000)-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 752976
  • 博文数量: 144
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1150
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-17 14:32
个人简介

小公司研发总监,既当司令也当兵!

文章分类

全部博文(144)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: linux

2018-01-24 15:19:11

本文简要介绍napi的实现。
内核版本:3.18.29

概述


napi是linux新的网卡数据处理api,据说是由于找不到更好的名字,所以就叫napi(new api),在2.5之后引入。

简单来说,napi是综合中断方式与轮询方式的技术。中断的好处是响应及时,如果数据量较小,则不会占用太多的cpu事件;缺点是数据量大时,会产生过多中断,而每个中断都要消耗不少的cpu时间,从而导致效率反而不如轮询高。轮询方式与中断方式相反,它更适合处理大量数据,因为每次轮询不需要消耗过多的cpu时间;缺点是即使只接收很少数据或不接收数据时,也要占用cpu时间。

napi是两者的结合,数据量低时采用中断,数据量高时采用轮询。平时是中断方式,当有数据到达时,会触发中断处理函数执行,中断处理函数关闭中断开始处理。如果此时有数据到达,则没必要再触发中断了,因为中断处理函数中会轮询处理数据,直到没有新数据时才打开中断。
 

napi和非napi的区别


(1) 支持napi的网卡驱动必须提供轮询方法poll()。

(2) 非napi的内核接口为netif_rx(),napi的内核接口为napi_schedule(),有网卡驱动在注册硬件中断处理时决定的。

(3) 非napi使用共享的cpu队列softnet_data->input_pkt_queue,napi使用设备内存(或者设备驱动程序的接收环)。



阅读(2563) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图