一样思路解决不一样的问题,集大成者

1.BFS调度器与O(1)调度器

O(1)调度器采用二级分类,第一级是CPU,即每个CPU一个队列,第二级是优先级,每CPU队 列又细分为140个优先级队列。第一级采用负载均衡调度,第二级采用优先级调度。虽然很清晰,可是要加入“小手段”来补偿/惩罚。本质上CFS调度器也一 样,只是采用了红黑树以及新增了一个虚拟时钟层屏蔽了补偿/惩罚操做。
BFS调度器一样采用二级队列,第一级是优先级分类,第二级是个简单对的队列,和CPU无关。第一级其实只有两类,实时和普通,针对普通优先级直接掉入第二级链表遍历,链表元素基于到期时间排队,所以欺骗了O(n)!
网络

2.iptables与nf-HiPAC

iptables规则做用于每个数据包的行为是一条一条遍历,直到匹配。因此它的执行是O(n)的,然而nf-HiPAC采用了基于match而不是基于rule的排列,整合成了树型结构,直接降低到了log级别。
数据结构

3.个人TCP优化与fastsocket

fastsocket 本质上依然是让socket基于CPU亲和绑定或者乱蹦乱跳,而只要拉CPU入伙,让CPU所有参与进来,就能够分割socket自己和TCP链接处理。 TCP链接处理完成成为内核的一部分,相似softirqd,工做队列那样,而再也不是socket的一部分。
负载均衡

4.DxR与DxR Pro++

DxR 本质上依然是用IP地址匹配前缀找到nexthop,而若是将nexthop做为基准,数据结构就能够彻底散列开来,能够实现O(1)查询。个人DxR Pro++采用了继续分割区间的方式让其对应到nexthop,区间和nexthop的对应是一对多的关系而不是传统查询中区间和nexthop多多对一 的关系。
       传统方案中,一个区间对应惟一的nexthop,这就是咱们要查找的。而DxR Pro++中,一个区间能够对应多个nexthop,咱们只须要一个简单的索引就能够获得一个数据包到底匹配哪一个nexthop。
socket

5.UNIX文件抽象与IPC

还纠结为何UNIX没有把网卡抽象成文件吗?事实上UNIX将网络通讯当作了对等的IPC而不是CPU到设备的不对等的IO,其IO层面上的语义由socket取代。
ide

6..........

相关文章
相关标签/搜索