NAPI是linux一套最新的处理网口数据的API,据说是由于找不到更好的名字,所以称之为NAPI(New API)。它是到linux 2.5才引入的,所以很多驱动并不支持这种操作方式。
简单来说,NAPI是综合中断方式与轮询方式的技术。
中断的好处是响应及时,如果数据量较小,则不会占用太多的CPU时间;缺点是数据量大时,会产生过多中断,而每个中断都要消耗不少的cpu时间,从而导致效率反而不如轮询高。轮询方式与中断方式相反,它更适合处理大量数据,因为每次轮询不需要消耗过多cpu时间;缺点是即使只接收很少数据或不接数据时,也要占用cpu时间。
NAPI是二者的结合体,数据量低时采用中断法,数据量高时采用轮询法。平时是中断方式,当有数据到达时,会触发中断处理函数执行,中断处理函数关闭中断并开始处理函数。如果此时有数据到达,则没必要再触发中断了,因为中断处理函数中会轮询处理数据,直到没有新数据时才打开中断。
很明显,数据量很低与很高时,NAPI可以发挥中断方式与轮询方式的优点,性能较好。如果数据量不稳定,且说高不高说低不低,则NAPI会在两种方式切换上消耗不少时间,效率反而较低一些。
阅读(906) | 评论(0) | 转发(0) |