NAPI简介

摘要:
什么是NAPINAPI 是 Linux 上采用的一种提高网络处理效率的技术,它的核心概念就是不采用中断的方式读取数据,而代之以首先采用中断唤醒数据接收的服务程序,然后 POLL 的方法来轮询数据。为什么使用NAPI中断缓和 (Interrupt mitigation)。在日常使用中,网卡产生的中断可能达到每秒几千次,而如果每次中断都需要系统来处理,是一个很大的压力,而 NAPI 使用轮询时是禁止了网卡的接收中断的,这样会减小系统处理中断的压力;数据包节流 (Packet throttling),

什么是NAPI

NAPI 是 Linux 上采用的一种提高网络处理效率的技术,它的核心概念就是不采用中断的方式读取数据,而代之以首先采用中断唤醒数据接收的服务程序,然后 POLL 的方法来轮询数据。

为什么使用NAPI

  1. 中断缓和 (Interrupt mitigation)。在日常使用中,网卡产生的中断可能达到每秒几千次,而如果每次中断都需要系统来处理,是一个很大的压力,而 NAPI 使用轮询时是禁止了网卡的接收中断的,这样会减小系统处理中断的压力;

  2. 数据包节流 (Packet throttling),NAPI 之前的 Linux NIC 驱动总在接收到数据包之后产生一个 IRQ,接着在中断服务例程里将这个 skb 加入本地的 softnet,然后触发本地 NET_RX_SOFTIRQ 软中断后续处理。如果包速过高,因为 IRQ 的优先级高于 SoftIRQ,导致系统的大部分资源都在响应中断,但 softnet 的队列大小有限,接收到的超额数据包也只能丢掉,所以这时这个模型是在用宝贵的系统资源做无用功。而 NAPI 则在这样的情况下,直接把包丢掉,不会继续将需要丢掉的数据包扔给内核去处理,这样,网卡将需要丢掉的数据包尽可能的早丢弃掉,内核将不可见需要丢掉的数据包,这样也减少了内核的压力。

NAPI的缺点

  1. 对于上层的应用程序而言,系统不能在每个数据包接收到的时候都可以及时地去处理它,而且随着传输速度增加,累计的数据包将会耗费大量的内存,经过实验表明在 Linux 平台上这个问题会比在 FreeBSD 上要严重一些;

  2. 另外一个问题是对于大的数据包处理比较困难,原因是大的数据包传送到网络层上的时候耗费的时间比短数据包长很多(即使是采用 DMA 方式)。所以,NAPI 技术适用于对高速率的短长度数据包的处理。

参考文献

  1. https://sites.google.com/site/emmoblin/smp-yan-jiu/napi

  2. https://blog.csdn.net/shanshanpt/article/details/20564845


免责声明:文章转载自《NAPI简介》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇libevent源码深度剖析获取Object对象的length下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux下mysql的安装与使用

一、mysql的安装 之前搭建linux下项目的发布,最后遗留的问题时数据库的迁移,如何从windows上迁移到linux上?这里首先进行mysql数据库的安装 1、下载mysql安装包 在这里下载的是如下版本的mysql https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc...

Linux安装Elasticsearch-head插件

首先需要下载以下内容:   我试验的对应版本:ES:elasticsearch-6.6.1.tar.gz  Node:node-v10.15.3-linux-x64.tar  JDK:jdk-8u201-linux-x64.tar.gz   1. node-v10.15.3-linux-x64.tar 下载地址:https://nodejs.org/en/...

恢复grub启动

 重装windows7之后修复grub方法。     装了双系统之后(ubuntu linux和windows7),再继续装windows7,就会导致grub被覆盖,导致无法进入linux,这时候修复一下grub即可。下面是最简单的一个修复方法。     1、下载grub4dos(设置参见网上,需要在c盘根目录放置三个文件,grldr,grldr.mbr,...

记录 anaconda安装jieba

最近用到 jieba ,在anaconda 怎么也安装补上,在网上找了一下,发现有几篇文章写得很好,但是为了怕自己以后再浪费时间,这里还是做个记录。 通常安装模块直接用pip install jieba,或者conda install jieba,但是有一些模块是无法使用以上两种方式安装上,这时就需要首先寻找模块,再安装。  1、anaconda sear...

linux安装wkhtmltox

1、下载安装wkhtmltox系统环境 http://wkhtmltopdf.org/downloads.html 根据系统类型选择下载wkhtmltox: 这里我的系统环境是CentOS 6-64bit 所以选择:Linux CentOS 6 – 64bit 下载下来后是一个rpm包 [wkhtmltox-0.12.2_linux-centos6-amd...

Adobe/Flash Media Server 5.0 linux 64位系统下的安装

一、下载Adobe/Flash MS5.0下载地址:http://fs1.d-h.st/download/00036/VOt/adobemediaserver_5_ls1_linux64.tar.gz# ./wget http://fs1.d-h.st/download/00036/VOt/adobemediaserver_5_ls1_linux64.t...