![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux 内核机制
aaa6695798
这个作者很懒,什么都没留下…
展开
-
零拷贝技术
作者:梁健(firstdot)E-MAIL:firstdot@163.com感谢王超、史晓龙的共同研究与大力帮助一.基本概念零 拷贝(zero-copy)基本思想是:数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,实现CPU的零参与,彻底消除 CPU在这方面的负载。实现零拷贝用到的最主要技术是DMA数据传输技术和内存区域映射技术。如图1所示,传统的网络数据报处理,需要经转载 2009-07-26 19:22:00 · 1412 阅读 · 1 评论 -
socket和send两个系统调用为例,协议栈是如何工作
首先以socket和send两个系统调用为例,来回顾一下协议栈是如何工作的,在这过程中可以找到如何在协议栈中增加对UDP协议的支持。socket系统调用的原型是 int socket(int domain, int type, int protocol);domain是协议域,对于ipv4协议来说,其值是PF_INET(ipv4因特网协议),对于我们自己实现的ipv4协议模块,我转载 2009-08-28 16:42:00 · 981 阅读 · 0 评论 -
Linux 可加载内核模块剖析
2008 年 8 月 07 日Linux® 可加载内核模块(从内核的 1.2 版本开始引入)是 Linux 内核的最重要创新之一。它们提供了可伸缩的、动态的内核。探索隐藏在可加载模块后面的原理,并学习这些独立的对象如何动态地转换成 Linux 内核的一部分。Linux 就是通常所说的单内核(monolithic kernel),即操作系统的大部分功能都被称为内核,并在特权模式下运行。转载 2009-08-24 13:40:00 · 481 阅读 · 0 评论 -
NAPI技术在Linux网络驱动上的应用
2004 年 6 月 24 日NAPI 是 Linux 上采用的一种提高网络处理效率的技术,它的核心概念就是不采用中断的方式读取数据,而代之以 POLL 的方法来轮询数据,类似于底半方式(bottom-half 的处理模式);但是目前在 Linux 的 NAPI 工作效率比较差,本文在分析 NAPI 的同时,提供了一种高效的改善方式供大家参考。前言:NAPI 是 Linux 上采用转载 2009-08-18 11:15:00 · 555 阅读 · 0 评论 -
我对基于设备轮询,PF_RING机制的理解
我们在试验中,采用了NAPI技术,PF_RING技术,MMAP技术,RTIRQ技术。在网卡抓包的时候,未采用NAPI的程序在每个包到达时,由网卡硬件触发内核中断。这样,如果在高流量gbit情况下,内核忙于处理由频繁的中断而引发的现场保存和恢复,而无暇处理其他,导致包的丢失。现在采用NAPI技术(需要网卡支持和版本在2.4.23以上的内核),由操作系统采用轮询的方式来处理中断,即中断的控制权交给转载 2009-08-18 10:57:00 · 987 阅读 · 0 评论 -
PF_RING 机制(原创 翻译)
Pf_ring (翻译) 一,研究开源的Mmp_libpcap 没有解决数据到网卡的效率问题,1. 网卡收到的数据被拷贝到环形缓冲区中,PF_RING套接字依赖于环形缓冲区 1. 套接字被创建时,创建环形缓冲区, 不同的套接字创建不同的环形缓冲区.2. 当套接字绑定网卡时,这个网卡一直在可读模式,一直到该套接字被释放3. 当从原创 2009-08-17 20:45:00 · 1924 阅读 · 1 评论 -
Linux接收包的性能
OS层面:在早期的linux(2.4以前),还是采用早期的“纯中断“处理机制,中断的开销太大而且还要经过几次内存搬运;后来采用了在NAPI机制以后(第一个中断发生后接连polling一段时间),有所好转,但仍然距离理想差很远,特别是小包(但报告显示512B的包最成问题,pcap在linux 2.6丢包率在100Mbps线速可以到97%+); pcap层面:他的问题主要出在buff的搬移拷贝,从网转载 2009-08-16 14:10:00 · 644 阅读 · 0 评论 -
Linux设备轮询机制分析
所谓的设备轮询机制实际上就是利用网卡驱动程序提供的NAPI机制加快网卡处理数据包的速度,因为在大流量的网络环境当中,标准的网卡中断加上逐层的数据拷贝和系统调用会占用大量的CPU资源,而真正用于处理这些数据的资源却很少。一个基本的想法是对于大流量网络,如果发现一个DMA传输中断(这表明一个网络数据通过DMA通道到达了DMA缓冲区),则首先关闭网卡的中断模式,而对于随后的数据全部采用轮询方式进行接转载 2009-08-13 16:45:00 · 613 阅读 · 0 评论 -
Linux内核NAPI机制分析
简介:NAPI 是 Linux 上采用的一种提高网络处理效率的技术,它的核心概念就是不采用中断的方式读取数据,而代之以首先采用中断唤醒数据接收的服务程序,然后 POLL 的方法来轮询数据。随着网络的接收速度的增加,NIC 触发的中断能做到不断减少,目前 NAPI 技术已经在网卡驱动层和网络层得到了广泛的应用,驱动层次上已经有 E1000 系列网卡,RTL8139 系列网卡,3c50X 系列等主转载 2009-08-13 16:37:00 · 425 阅读 · 0 评论 -
Linux中软中断机制分析
Linux中的软中断机制用于系统中对时间要求最严格以及最重要的中断下半部进行使用。在系统设计过程中,大家都清楚中断上下文不能处理太多的事情,需要快速的返回,否则很容易导致中断事件的丢失,所以这就产生了一个问题:中断发生之后的事务处理由谁来完成?在前后台程序中,由于只有中断上下文和一个任务上下文,所以中断上下文触发事件,设置标记位,任务上下文循环扫描标记位,执行相应的动作,也就是中断发生之转载 2009-08-13 14:39:00 · 456 阅读 · 0 评论 -
Linux内核网络设备操作部分阅读笔记
网络设备初始化就是调用具有__init 前缀的net_dev_init函数完成的,网络设备初始化包含两个部分(在linux内核2.4办源代码分析大全一书的第550页有详细说明),就是:在系统初始化期间对系统已知的网络设备进行初始化过程,也就是,我们在编译内核时选择编入内核的那部分网卡设备就会在这个时候逐个进行初始化工作。系统中已知的网络设备都存储在一个全局表中,dev_base[],它将所有网转载 2009-08-13 16:52:00 · 290 阅读 · 0 评论 -
网络处理的软中断机制分析
首先需要介绍的就是netif_rx(在net/core/dev.c中定义)函数,这个函数在网卡驱动程序与linux内核之间建立了一道桥梁,将网卡接收上来的数据包(sk_buff形式)插入内核维护的接收缓冲区队列当中:int netif_rx(struct sk_buff *skb){ int this_cpu = smp_processor_id();转载 2009-08-13 15:58:00 · 425 阅读 · 0 评论 -
机制与策略-内核执行机制之析
开源-展现在我们面前的是数以千计的代码,在那一行行的代码背后,到底蕴藏着怎样的设计思想,高手们曾怎样苦思冥想。在一堆堆的代码面前,有时候,我们很容易迷失曾经进来的入口,而掉入符号,变量以及函数堆积成的沼泽地。操作系统的本质是什么?管理者?亦或服务者?但,归根结底,它是一个执行者:执行用户程序-所谓为用户服务;执行中断-所谓为外设服务;执行系统调用-所谓解放程序员(姑且说它为广大的程序员服务,因为程转载 2009-09-21 10:06:00 · 580 阅读 · 0 评论