您好,登錄后才能下訂單哦!
一直以來(lái)我一直以為操作系統(tǒng)內(nèi)核是高大上的東西,但是實(shí)際上用戶態(tài)的應(yīng)用才是!
上周的一次技術(shù)交流中,一家網(wǎng)絡(luò)加速卡廠商聲稱他們的協(xié)議棧是用戶態(tài)的協(xié)議棧,用來(lái)提高性能,我對(duì)其產(chǎn)品直接就泄了氣,然而會(huì)后,我查閱了相關(guān)的資料,找到一篇文章《 千萬(wàn)并發(fā)的秘密-內(nèi)核是問(wèn)題的根本》http://www.oschina.net/translate/the-secret-to-10-million-concurrent-connections-the-kernel,寫(xiě)出了我的心聲,原來(lái)我一直都是這么認(rèn)為的,只是一直都不敢承認(rèn)罷了,為何不敢承認(rèn),那是因?yàn)槲铱釔?ài)內(nèi)核。我對(duì)那家廠商泄氣表達(dá)了我深深的虛偽,內(nèi)在的分裂!
文中說(shuō)”我們學(xué)的是Unix而不是網(wǎng)絡(luò)編程“,對(duì)《Unix網(wǎng)絡(luò)編程》一書(shū)給出了正確的評(píng)價(jià),告訴我們,我們被平臺(tái)牽累了,我們一直在面對(duì)的都是操作系統(tǒng)的接口如何使用的技術(shù),而不是真正的編程,真正的天馬行空般超乎想象的編程。一個(gè)又一個(gè)的應(yīng)用編程框架或者中間件在提出的時(shí)候,說(shuō)的是”如何能讓我們不必關(guān)注實(shí)現(xiàn)細(xì)節(jié)而精心處理我們自己的業(yè)務(wù)邏輯“,這篇文章能讓人理解這句話的好意。
歷史地看網(wǎng)絡(luò)編程,是先有了UNIX,再有了TCP/IP和BSD socket,當(dāng)然要把網(wǎng)絡(luò)編程往UNIX里面硬塞,曾幾何時(shí),一直到現(xiàn)在,做網(wǎng)絡(luò)編程的不懂UNIX會(huì)被人恥笑,當(dāng)然,Linux某種意義上已經(jīng)代替了UNIX。UNIX的哲學(xué)包括機(jī)制和策略分離這一真理,它在映射成這個(gè)信條之前是數(shù)據(jù)和控制的分離這個(gè)箴言,這個(gè)箴言如今已經(jīng)淹沒(méi)在網(wǎng)絡(luò)設(shè)備中,比如路由器,其數(shù)據(jù)面和控制面是合在一起的,當(dāng)該箴言再次喚醒其信徒的時(shí)候,SDN就出現(xiàn)了。是對(duì)UNIX理念的誤解,導(dǎo)致了網(wǎng)絡(luò)設(shè)備將控制面和數(shù)據(jù)面合在在一起而并非利益使然,這種誤解甚至影響了UNIX本身。要知道UNIX理念影響了幾乎所有的操作系統(tǒng)以及網(wǎng)絡(luò)設(shè)備的設(shè)計(jì),其中包括Mirosoft Windows以及Cisco的IOS。我之所以說(shuō)是一種誤解而并非背叛,是因?yàn)閁NIX的理念可能從來(lái)就沒(méi)有被真正理解過(guò)。也許,這是對(duì)宏內(nèi)核的誤解導(dǎo)致的對(duì)UNIX的誤解。
UNIX的宏內(nèi)核思想影響面甚大,然而它的本意并非將所有的操作都塞進(jìn)內(nèi)核,而是僅僅將機(jī)要操作塞進(jìn)內(nèi)核,保持內(nèi)核的緊湊性與高效性,因?yàn)槟K之間的交流是需要成本的,宏內(nèi)核思想不講解耦合(但在實(shí)現(xiàn)機(jī)制上,還是模塊化的)??墒侨绾味x什么是機(jī)要操作,考慮以下的服務(wù):
制定一套合理的經(jīng)濟(jì)政策;
制定一套合理的稅收計(jì)劃;
生產(chǎn)棉布;
制作一件面料考究的羊毛西服;
提供價(jià)值¥160的發(fā)型;
...
請(qǐng)問(wèn)哪些是機(jī)要操作?對(duì)于普通民眾而言,比如我,根本就沒(méi)有西服,頭發(fā)一年理一次,但是對(duì)于貴族而言,除了最后一條,其它的可能都是機(jī)要操作...很難定義機(jī)要操作,所以這種定義法很容易將所有的東西都塞進(jìn)UNIX?!禪NIX網(wǎng)絡(luò)編程》講述的是,你僅需要寫(xiě)一個(gè)很小的輕量級(jí)的服務(wù)器就可以讓UNIX做一切繁復(fù)的工作。一件頗具說(shuō)服力的事可以幫助《千萬(wàn)并發(fā)的秘密-內(nèi)核是問(wèn)題的根本》的作者表達(dá)一下深深的惡意,那就是Linux曾經(jīng)在內(nèi)核中實(shí)現(xiàn)了一個(gè)WEB服務(wù)器,多么巨大的一個(gè)玩笑,或者說(shuō)是對(duì)宏內(nèi)核多么巨大的一個(gè)諷刺...我們要記住的是,UNIX并沒(méi)有讓后來(lái)者把所有的東西塞進(jìn)內(nèi)核,只是說(shuō),內(nèi)核要保留控制權(quán)。
我們不妨換一個(gè)思路,回到UNIX最初的思路,從控制權(quán)角度來(lái)看,哪些是屬于控制面的,也許你能說(shuō)出一大堆,進(jìn)程調(diào)度,資源管理,文件系統(tǒng)...網(wǎng)絡(luò)協(xié)議棧。不過(guò),好像我們所有人一直以來(lái)都把網(wǎng)絡(luò)視為例外,網(wǎng)絡(luò)IO即不是塊設(shè)備IO也不是字符設(shè)備IO,按照UNIX一切皆文件的觀念,我們沒(méi)法給網(wǎng)絡(luò)一個(gè)合理的位置。socket接口的是一個(gè)完整的協(xié)議棧,而不是什么設(shè)備,我們不得不面對(duì)網(wǎng)絡(luò)參數(shù)的調(diào)整,為此我們加了多少次班,這正是網(wǎng)絡(luò)IO和其它設(shè)備IO相比所處的尷尬位置。
直接和網(wǎng)卡接口是不是更自由些,從此我們擺脫了協(xié)議棧的束縛,然而我們必須自己實(shí)現(xiàn)協(xié)議棧,前些日子我就想過(guò)這些,主要是為了解決手機(jī)上面操作網(wǎng)絡(luò)無(wú)權(quán)限的問(wèn)題,我當(dāng)時(shí)想得是一個(gè)關(guān)于自由的問(wèn)題而不是性能問(wèn)題,而《秘密》一文說(shuō)的正是性能問(wèn)題,回顧那個(gè)廠商的介紹,他們的產(chǎn)品在用戶態(tài)進(jìn)行數(shù)據(jù)包的協(xié)議棧處理,最大限度的使用了網(wǎng)絡(luò)協(xié)處理器等硬件加速功能,讓人感嘆,請(qǐng)問(wèn),使用操作系統(tǒng)內(nèi)核的協(xié)議棧,如何把處理轉(zhuǎn)到協(xié)處理器上?!回答使用Netfilter已經(jīng)過(guò)時(shí)了!我一直都想玩玩用Netfilter將處理轉(zhuǎn)到一塊卡上,但是我發(fā)現(xiàn)我過(guò)時(shí)了,如今的回答是,直接把內(nèi)核協(xié)議棧旁路掉!如今,真的有這樣的技術(shù),其中之一叫做PF_RING,實(shí)際上就是一個(gè)抓包機(jī)制,將數(shù)據(jù)包直接從鏈路層獲取,然后你想怎么處理就怎么處理,剛剛試了一下,挺好用,和uIP結(jié)合,簡(jiǎn)直太猛了。當(dāng)然,我可沒(méi)有千萬(wàn)級(jí)并發(fā)的測(cè)試環(huán)境,我說(shuō)的猛僅僅是它竟然真的可以工作!
說(shuō)說(shuō)性能問(wèn)題。性能和內(nèi)核無(wú)關(guān),你不要指望從32位的Linux 2.6.8換到64位的Linux 2.6.32內(nèi)核在性能上會(huì)有一個(gè)突破,也不要指望拼出Linux和Windows內(nèi)核對(duì)性能提升效果的優(yōu)劣,關(guān)鍵還是在于應(yīng)用程序!WHY?因?yàn)樾阅苁且粋€(gè)高端私人定***務(wù),內(nèi)核這種基礎(chǔ)設(shè)施是不負(fù)責(zé)這種高定服務(wù)的。想出高性能,實(shí)際上一種藝術(shù)行為,涉及到方方面面的微調(diào),絕對(duì)是高端大氣上檔次的行為,你指望內(nèi)核能幫你做到這些嗎?在微內(nèi)核的世界,這是可能的,但是千萬(wàn)別把你的偏好轉(zhuǎn)向微內(nèi)核,干嘛非要內(nèi)核搞定一切呢?干嘛不自己搞定??!就算自己搞不定,把思想或者想法放出去,總會(huì)有人搞定的?。〔还苁呛陜?nèi)核還是微內(nèi)核,都不宜把高定的東西往里面塞,否則,對(duì)于宏內(nèi)核而言,它就變成了屎殼郎滾的球,對(duì)于微內(nèi)核而言,它就變成了蜘蛛織的網(wǎng)...
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。