从加载igb驱动引出一些想法

1.加载igb驱动的问题
今日加载igb驱动,自以为已经将其“折磨”得炉火纯青,可是在使用RSS=0参数加载igb的时候却发现只有eth0的队列是8个,而其他的网卡队列只有一个。查看其所有的参数都没有找到解决方案,最终只有看代码了。然而看完代码之后使用modinfo igb发现,其RSS参数后面有一个注释:array if int。这下就一目了然了,原来网卡的多队列是基于每一块网卡单独配置的。RSS参数是一个数组,和标准的linux内核模块数组参数一样以逗号分割,因此如果我们有4块网卡,分别要设置8,7,6,5,个队列,那么就要添加参数:RSS=8,7,6,5
     仅此!
2.再论队列的问题
网卡实现多队列是有开销的,这世上没有免费的午餐。付出之后,得到的好处是更好的支持虚拟化,注意,在操作系统的意义上,多队列并没有带来更高的性能,因为无论何时,你都要信任操作系统内核关于进程以及缓存的设计,否则这个内核就是一个失败的内核...然而在虚拟化的意义上,操作系统所作的优化就无能为力了,毕竟虚拟化所虚拟的就是操作系统本身。
     操作系统内核,网卡硬件,网卡驱动已经做完了几乎一半的工作,剩下的一半工作属于应用程序。
3.InterruptThrottleRate
这是一个经常被忽略的驱动选项,一般而言,很多人并不是很理解Intel千兆网卡的中断的工作方式,因此他们想当然的忽略了这个参数,而实际上,Intel的千兆卡的中断和常规的中断方式截然不同。对于小包而言-大多数的情况-,我还是建议使用0模式。虽然文档所示自适应是一种很有吸引力的模式,然而对于大多数的需求而言,这并不是真的。因为大多数的IP数据报需要跨越公网,而公网和千兆局域网的设计理念是不同的,在公网上,大多数的虚拟连接都不会达到千兆,甚至百兆都很难。
     要记住,由于TCP/UDP/IP的分组性质,加之大多数的MTU都有上限,大多数的节点上通过的都是“小包”!
4.假象
不要被文档所迷惑,要知道,你所看到的大多数都是假的。你所看到的很吸引你的东西十有八九是你目前不需要的,你用不到这些的可能性很大。你所需要的解决方案十有八九还要用传统的方式解决,而这些方案一般并不会出现在文档中。
     “眼见为实”,这正是问题所在。耳听为虚被大众所接受是因为它错的很明显,而眼见为实则迷惑了大多数人的眼睛,然而它却并不一定比耳听的更真实,这正说明眼睛比耳朵更容易被欺骗。视神经对大脑的刺激比听神经对大脑的刺激更大,因此虽说眼见为实,其真实性并不一定比耳听的更加真实!

你可能感兴趣的:(优化,工作,rss,文档,虚拟化,linux内核)