首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux相关>其他unix>正文

Linux的NAPI和Solaris的GLDv3

http://www.oklinux.cn  2007-04-02  oklinux收集整理   会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn
一、NAPI(New API)是linux内核对设备驱动包处理框架的一种修改。它通过以下两方面来改进高速网络的性能。
1. 减少中断
高速网络每秒能产生上千次中断,每次中断都是告诉内核已经知道的事情:有很多包要处理。NAPI允许驱动在禁止中断的情况下运行,以此来减小系统负载。
2. 尽早丢弃包
系统必须要丢弃那些来不及处理包时。但是丢弃前我们要尽量少花时间处理这些它们。与NAPI兼容的驱动能够在网络适配层丢弃这些处理不了的包,内核根本就看不见它们。

NAPI首先集成到了2.5/2.6内核,不过也已经移植到了2.4内核。需要注意的是NAPI完全是可选的,驱动程序没有它也能工作的很好,只是可能会慢些。用以前2.4内核写的驱动在新内核中仍然可以工作。

NAPI驱动程序设计:
当有新包到达并且产生中断后,驱动应该禁止任何“新包到达”的中断,并且让网络子系统轮询以尽可能多的得到随后到达的包。通过以下接口让驱动轮询:
    void netif_rx_schedule(struct net_device *dev);
下一步是创建poll()方法;它的功能是将从网卡得到包传给内核。原型如下:
    int (*poll)(struct net_device *dev, int *budget);
poll能得到的包的个数由budget来限制,Linux在net/core/dev.c中将其设置为300。
得到的包不应该交给老的接口netif_rx()来处理,应该用新接口:
    int netif_receive_skb(struct sk_buff *skb);
当所有包都处理完后由下面的接口开启中断,禁止轮询:
    void netif_rx_complete(struct net_device *dev);


二、在Solaris 8和Solaris 9的多处理器系统中,处理器的速度滞后于千兆网卡速度。为了缓解一个CPU忙于处理中断而其他CPU无事可做的情况,Solaris引进了一个叫做工作者的线程模型。也就是由一个或多个工作者线程将工作分发给多个CPU,而不是仅仅由被中断的CPU来处理所有得到的包。但是设备驱动自己也不知道应该创建多少个工作者线程;如果系统有多个网卡处于活动状态事情就更复杂了;当10G网卡出现后,而以太网包大小仍然是1500字节时,事情就更糟糕了。系统每秒能得到80000个包,仅留下12微秒给CPU处理它们。
于是Solaris 10引进了一种新的框架,GLDv3(General LAN Driver version 3)。思想和NAPI是一致的,只不过Solaris更擅长于多处理系统。


三、目前我还不清楚究竟是Solaris先引进的GLDv3还是Linux先引进的NAPI,或者同时。但是可以肯定的是Linux的slab内存分配算法还有模块化的思想都是从Solaris借鉴过来的。不过Linux开始的时候就是一个UNIX克隆。但是我们也看到Solaris已经移植了大量的Linux应用软件,包括桌面系统,gcc编译器,游戏,音视频软件等等。虽然Linux服务器占有率远远高于Solaris,但是Oracle的首选平台依然是Solaris,我也相信世界500强的大公司也是不会吝惜的选择Linux+MySQL+php的;虽然Solaris已经移植了大量Linux应用程序,但是要想直接编译最新的源代码依然不太现实。所以我觉得存在的都是合理的,完全没有必要厚此薄彼,重要的是作出适合自己的选择。BSD之所以依然有大量的跟随者肯定也是和它出色的安全性分不开的,不是说国防科大搞的麒麟操作系统抄的就是BSD吗。



参考资料:
http://linux-net.osdl.org/index.php/NAPI
Solris Internals


上一篇:redbook 上的LVM   下一篇:Unix环境高级编程一例

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·redbook 上的LVM
·Unix环境高级编程一例
·HP 下db2定时备份脚本
·SUID和SGID的详细解
·NT和UNIX下FTP非交互方式文件传输
·Solaris系统性能监控之一:处理器监控命令总结
·如何配置Solaris的PPPOEi以支持ADSL访问
·FreeBSD下vim的安装
·Linux应用技巧之有问有答
·怎样让您的Linux操作系统更加安全牢固
·Linux系统下以太网卡的安装及配置
·Linux防火墙配置入门必学
·菜鸟必读 Linux系统的字型设定方法
·教你配置Linux系统安全管理服务
·freebsd手工配置网络
·HP-UX下EMS的使用说明
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Unix Shell程序编写的方法详解
·高手进阶:UNIX系统环境下高级编程一例
·freebsd目录架构
·Unix/Linux中Cron的用法
·Unix主流操作系统
·Unix环境高级编程一例
·redbook 上的LVM
·HP 下db2定时备份脚本
·SUID和SGID的详细解
·Solaris系统性能监控之一:处理器监控
·NT和UNIX下FTP非交互方式文件传输
·如何配置Solaris的PPPOEi以支持ADSL访
  阅读排行
·HP-UX Glance的用法
·Sun Cluster 3.0 的规划、安装、配置及
·菜鸟从硬盘安装Redhat Linux 9.0中文版
·FREEBSD分区总结
·dos2unix, unix2dos 对应的命令
·各种 UNIX 下载地址
·solaris下,添加静态路由的方法
·介绍几个Unix版本
·Solaris 修改root 可以Telnet 与ftp
·UNIX系统管理-第二章 创建和管理用户
·OpenSolaris, Solaris Express, Solari
·freebsd里的kqueue 和linux 2.6下的epo
·Unix Shell程序编写的方法详解
·手把手教你Solaris 10安装(概述篇)
·更改CDE GUI的分辨率和刷新率
网摘收藏: