一樣思路解決不一樣的問題,集大成者

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..........

相關文章
相關標籤/搜索