本文档和技术没有直接关联,只是一些回忆。
记录内核模块变成是因为最近在搞那个可恶的GMA500的驱动,翻到了《Linux Device
Drivers》。回想起来我倒真有一个设计kernel
模块的项目,也算大的。我处理器中内核模块,也就是高速从网卡过滤数据包的方式,上层软件从内核模块中获取过滤(包括端口范围、IP地址范围、关键字、协
议特征等等)的包进行协议分析,除了记录分析外还有一些其他的处理,和kernel module没有关系。整个关键就是过滤的效率。
这是我第一个接触Linux kernel module的项目,而且对性能的要求很高。对于SMP
Linux,内核kernel模块如何实现CPU均衡,麻烦死了,而且效果不太好,因为每一个网卡的接收都指定使用某一个CPU,缺省是CPU0,这部分
资源耗费不是我们的代码可以解决。百兆流量没有问题,千兆就很惨,为了这个问题提供花费了很长时间(按月计算)。
我还记得为了保证同时过滤,同时向上层分析软件提供数据,采用了两个队列轮回的方式,其中还有些一些"巧妙"的处理,我只记得在上面使了点小聪明,用来
特别的方式。可是过了一段时间我看回那段程序,我只记得目的,但是如何处理,已经看不懂了。看来人是越来越笨的,没有将处理方法加注,只说明了处理目的。
这个印象很深,所以注释或者笔记是必须的。
实际上那时,根本就没学过内核模块编程,也没有人可以找,我在很长一段时间内都认为程序、程序语言都只是工具,工具不需要明白原理,只要会用就行,一开
始时间也紧,网上共产主义的没有现在繁荣,而且向来也就不求甚解,只求何用。直接在一个开源程序中看懂的,只能说看懂了怎么做。现在翻开
Linux Device Drivers》.,才发现,这个见过,原来是这么一回事……惭愧!
千兆高速分析的性能测试被人整过,这事我记得。实际上也是我们单位悲哀,典型的窝里斗。测试由数据部的同事进行,事后才知道一开始就定调不让通过。原因
不详,估计和利益有关系。但是关系这个东东,你可以让不通过的变成通过,但是不能让通过的变成不通过。不过让你不过就不过,办法总是有的。哼哼,那个家
伙,我记得……不,已经不记得是谁了。实际上数据包的分析和流量并没有直接关系,只是和每秒的数据包的数目有关,处理的单位是数据包,不是一个一个比特。
一般来讲每秒数据包数据越多,带宽越大。我们自己测试的时候好像是按照平均包大小为100-200byte来计算,具体是多少忘了,因为实际网络上有很多
1500的包,BT嘛。但是他们测试给出的包除了目标包之外,都是短包,不记得具体是多少,好像是40或者32,即是smartbit发送的缺省短包,因
为现象就不对,问他们怎么配,死后不说,后来才知道的。测试环境的每秒packet实在太大了,和实际值差太多,短一半就消耗至少多一倍,少了几
倍,CPU就多几倍。而网卡接收这部分只能通过一个CPU来处理,内核模块里面到可以轮选,但是切换CPU也是消耗的,所以最后简单处理是选择和接收不同
的CPU,尽可能优化程序。但是接收的问题不是我能解决。就这样被“自己人”玩了一把。
当开发人员去接触单位政治是一种悲哀。不知道领导上面的关系如何,但是下面同事的关系还是可以的,当时不敢和我说,实际上最后还是知道的。相对一声叹息,还能如何……
这个项目测试问题,领导后来去解决,具体的不清楚,但是这种测试很无耻,没有底线。
这个项目的最后一个故事是后来另一个同事抽取其中的某些部分去报了专利,今年年初批下来了。具体报了哪一部分不记得报。记得批下来之后,看了电子扫描文
档,哇,前面挂的领导的名字那个长啊,挂第一位,不,应该说挂1、2、3位的可能都不知道这个项目具体的开发者是哪个小人物,而且我相信,挂在1、2、
3、4、5位的他们根本不知道这个专利说将的技术具体是什么,说白了,他们啥都不清楚。我终于在倒数第二发现了我名字,倒数第一是这个项目的另一个开发者
及申报者。不错了,虽然排在第7、第8,至少让我们漏了把脸,我们要感谢领导们宽广的胸怀,在这个学术争名夺利的地方,居然还能让开发人员排上,虽然
有些勉强,虽然考在最后,上去嘛总比不上的强。
分享到:
相关推荐
### Kernel Panic - Not Syncing: Fatal Exception 解析与解决方案 #### 标题解析 - **Kernel Panic**: 内核恐慌,通常表示内核遇到了无法处理的严重错误。 - **Not Syncing**: 表示内核在尝试同步文件系统时失败。...
1.1. What Is A Kernel Module? 1.2. How Do Modules Get Into The Kernel? 2. Hello World 2.1. Hello, World (part 1): The Simplest Module 2.2. Compiling Kernel Modules 2.3. Hello World (part 2): The ...
Kernel panic - not syncing: Attempted to kill init 解决办法 开源成就技术;技术成就梦想
Linux Kernel Module及Tcpip程序设计配套光盘
简单Kernel Module
公司Ubuntu12.04服务器突然开机起来后就卡住不动,打印kernel offset信息 目前已尝试以下方法,均失败 1:开机启动选择Ubuntu选项时,选择recovery mode启动,仍然卡住,显示kernel offset信息 2:在开机选项...
The Linux Kernel Module Programming Guide CHS Linux内核驱动模块编程指南 (内核版本2.2, 2.4) Peter Jay Salzman Ori Pomerantz 版权 © 2001 Peter Jay Salzman 2003-04-04 ver 2.4.0 -------------------...
在Linux系统中,内核模块(Kernel Module)是一种可加载的代码段,允许用户自定义扩展内核功能。本文将探讨如何通过编写简单的Linux内核模块来模拟`ps`命令,该命令通常用于显示系统中运行的进程状态。首先,我们...
Ubuntu18系统下,在安装cuda及nvidia驱动时,安装失败,查看日志显示“ERROR: The nvidia kernel module was not created.” 指令如下: sudo ./cuda_10.1.168_418.67_linux.run 解决办法: nvidia内核模块没有被...
《Linux内核模块编程指南2.6》是一本专为开发者设计的深度解析Linux内核模块编程的经典教程。这本书详尽地介绍了如何编写、调试和理解Linux内核模块,是学习这一领域的必备参考资料。文档提供了中文和英文双语版本,...
Linux内核模块编程指南是一本针对早期Linux参与者编写的指南,主要目的是指导用户如何进行Linux内核模块编程。这本指南详细介绍了Linux内核模块的编程原则和方法,是学习Linux内核编程的宝贵资料。本文将详细解读...
很好的一个内核模块,欢迎大家下载这些创新创效程序从vdcvcx
《Linux内核模块编程指南2.4中文版》是一本专为希望深入理解Linux内核模块编程的开发者准备的教程。这本书详细介绍了如何在Linux 2.4版本的内核中编写、调试和管理内核模块,是学习Linux内核编程的重要参考资料。...
《Linux内核模块编程指南2.6英文版》是一本为初学者和进阶者提供Linux驱动程序开发基础知识的重要文档。这份文档详细介绍了如何在Linux操作系统中编写和管理内核模块,是理解Linux内核机制和进行驱动程序开发的宝贵...
如果你在VNware官网下载了VMware-Workstation-Full-15.5.1-15018445.x86_64.bundle 安装以后打VMware-Workstation-15.5.1 显示如下图所示: 那么你可能需要做以下修改才能顺利进入软件 步骤如下: ...