![網(wǎng)絡(luò)算法學(xué):第五章拷貝數(shù)據(jù)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/261ed277-a42a-49b6-9438-3bd2fb0538ea/261ed277-a42a-49b6-9438-3bd2fb0538ea1.gif)
![網(wǎng)絡(luò)算法學(xué):第五章拷貝數(shù)據(jù)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/261ed277-a42a-49b6-9438-3bd2fb0538ea/261ed277-a42a-49b6-9438-3bd2fb0538ea2.gif)
![網(wǎng)絡(luò)算法學(xué):第五章拷貝數(shù)據(jù)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/261ed277-a42a-49b6-9438-3bd2fb0538ea/261ed277-a42a-49b6-9438-3bd2fb0538ea3.gif)
![網(wǎng)絡(luò)算法學(xué):第五章拷貝數(shù)據(jù)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/261ed277-a42a-49b6-9438-3bd2fb0538ea/261ed277-a42a-49b6-9438-3bd2fb0538ea4.gif)
![網(wǎng)絡(luò)算法學(xué):第五章拷貝數(shù)據(jù)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/261ed277-a42a-49b6-9438-3bd2fb0538ea/261ed277-a42a-49b6-9438-3bd2fb0538ea5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第二部分 端節(jié)點(diǎn)算法學(xué)端節(jié)點(diǎn)算法學(xué)端節(jié)點(diǎn)算法學(xué):網(wǎng)絡(luò)算法學(xué)在端節(jié)點(diǎn)(尤其是服務(wù)器)上的運(yùn)用,是建立高速服務(wù)器的一組系統(tǒng)性技術(shù)。研究如何減少以下開銷:數(shù)據(jù)拷貝(chapter 5)控制轉(zhuǎn)移(chapter 6)解復(fù)用(chapter 7)定時(shí)器(chapter 8)其它一般性協(xié)議處理任務(wù) (chapter 9)第五章 拷貝數(shù)據(jù)消除不必要的拷貝(P1)計(jì)算機(jī)中額外的拷貝消耗兩個(gè)寶貴的資源:內(nèi)存帶寬:如果處理一個(gè)消息涉及k次拷貝,系統(tǒng)吞吐量可能降至1/k內(nèi)存:如果一個(gè)消息在內(nèi)存中存k份,有效內(nèi)存容量降至1/k一個(gè)拷貝如果不是由硬件要求的,該拷貝是不必要的。消除多余的拷貝使得軟件接近實(shí)現(xiàn)硬件的潛力,是
2、網(wǎng)絡(luò)算法學(xué)的目標(biāo)之一。 5.1 為什么要拷貝數(shù)據(jù)應(yīng)用場(chǎng)景:用戶向web服務(wù)器請(qǐng)求一個(gè)文件;服務(wù)器從磁盤讀出文件,發(fā)送到網(wǎng)絡(luò)上。 資源消耗情況拷貝和TCP檢查和計(jì)算都要消耗內(nèi)存總線帶寬。不同內(nèi)存區(qū)域之間的拷貝(copy 2,copy 3):每個(gè)字都要通過內(nèi)存總線讀一次和寫一次。計(jì)算TCP檢查和:需對(duì)每個(gè)字讀一次。涉及外設(shè)的拷貝(copy 1,copy 4):如果由CPU做拷貝(PIO):每個(gè)字都要通過內(nèi)存總線讀一次和寫一次。如果由設(shè)備做拷貝(DMA):每個(gè)字只需通過內(nèi)存總線讀一次或?qū)懸淮巍?涉及外設(shè)的拷貝還消耗I/O總線帶寬。對(duì)服務(wù)器吞吐量的影響在上面的例子中:Web服務(wù)器吞吐量不超過T/7,T
3、為內(nèi)存速度和內(nèi)存總線速度中的較小值。有效的文件緩沖區(qū)大小僅為總?cè)萘康?/3。多余的拷貝在兩個(gè)方面損害了服務(wù)器的性能:由于使用了過多的總線和內(nèi)存帶寬,服務(wù)器的運(yùn)行速度低于總線速度。由于使用了過多的內(nèi)存,服務(wù)器不得不大量地從磁盤而不是主存讀文件。 請(qǐng)求動(dòng)態(tài)內(nèi)容5.2 消除 Copy 4為什么需要copy 4?適配器內(nèi)存位于適配器上,而內(nèi)核存儲(chǔ)空間位于存儲(chǔ)子系統(tǒng)中。理論上,在一個(gè)內(nèi)存映射的體系結(jié)構(gòu)中,內(nèi)存可以位于總線上的任何地方,包括在適配器中。利用網(wǎng)絡(luò)適配器中已有的存儲(chǔ)空間(P4,利用系統(tǒng)組件)和內(nèi)核存儲(chǔ)空間放置的自由度(P13,利用自由度),可以將部分內(nèi)核空間放在網(wǎng)絡(luò)適配器中。如何計(jì)算檢查和?W
4、itless方法(P2c,共享開銷):CPU讀入每個(gè)字時(shí),捎帶計(jì)算檢查和。Afterburner適配器(TCP offloading engine):數(shù)據(jù)傳輸由網(wǎng)卡通過DMA完成,網(wǎng)卡使用特殊的硬件在傳輸數(shù)據(jù)的同時(shí)計(jì)算檢查和。缺點(diǎn):網(wǎng)絡(luò)適配器需要很大的內(nèi)存空間來支持大量的高速TCP連接,網(wǎng)卡成本很高。在Witless方法中,出錯(cuò)的數(shù)據(jù)包可能寫入應(yīng)用緩沖區(qū)。5.3 消除 Copy 3應(yīng)用和內(nèi)核之間需要一次拷貝有兩個(gè)原因:應(yīng)用程序在write()之后可能修改其緩沖區(qū),而TCP需要緩存數(shù)據(jù)以備重發(fā),應(yīng)用和內(nèi)核之間通過數(shù)據(jù)拷貝可以解除耦合。應(yīng)用程序和內(nèi)核程序使用不同的虛擬地址空間,需要通過拷貝來傳遞數(shù)
5、據(jù)。寫時(shí)拷貝的原理寫時(shí)拷貝(copy-on-write):當(dāng)應(yīng)用程序?qū)?nèi)核執(zhí)行一個(gè)寫時(shí)拷貝時(shí),通過修改一些描述符,將內(nèi)核緩沖區(qū)映射到應(yīng)用緩沖區(qū)的物理內(nèi)存頁(yè)上。當(dāng)應(yīng)用程序試圖修改其緩沖區(qū)時(shí),內(nèi)核進(jìn)行真正的拷貝(P2b),但這種情況很少發(fā)生。這里運(yùn)用了Lazy Evaluation(P2b)來優(yōu)化預(yù)期情形(P11)。使用寫時(shí)拷貝的示意圖寫時(shí)拷貝的實(shí)現(xiàn)舉例:假定進(jìn)程 P1 的虛擬頁(yè) X 映射到物理頁(yè) P,現(xiàn)操作系統(tǒng)要復(fù)制 X的內(nèi)容到進(jìn)程 P2 的虛擬頁(yè) Y。當(dāng)對(duì) X 進(jìn)行寫時(shí)拷貝時(shí):內(nèi)核修改頁(yè)表,令 Y 指向物理頁(yè) P將 X 表項(xiàng)的COW保護(hù)位置位當(dāng)應(yīng)用試圖寫頁(yè)X時(shí):硬件讀X的COW位,發(fā)現(xiàn)置位,產(chǎn)
6、生一個(gè)異常。操作系統(tǒng)將物理頁(yè) P 拷貝到物理頁(yè) P,清除 X 的COW位,令 X 指向 P,Y 繼續(xù)指向 P。 寫時(shí)拷貝的實(shí)現(xiàn)(續(xù))對(duì)于不提供寫時(shí)拷貝功能的操作系統(tǒng)(如UNIX和Windows):可以通過修改頁(yè)表避免物理拷貝需要找到一種替代COW位的保護(hù)機(jī)制(硬件檢測(cè)、觸發(fā)操作系統(tǒng)異常)5.4 優(yōu)化頁(yè)面重映射對(duì)頁(yè)面映射過于簡(jiǎn)單的看法是,只需修改進(jìn)程2的頁(yè)表,使VP 8指向存放包數(shù)據(jù)的物理頁(yè)。(X)頁(yè)面重映射的開銷修改多級(jí)頁(yè)表:實(shí)際映射可能要求修改多級(jí)頁(yè)表,涉及多次寫。要求鎖操作:修改頁(yè)表前后要有請(qǐng)求鎖和釋放鎖的開銷。刷新TLB:當(dāng)新的地址映射寫入頁(yè)表時(shí),相關(guān)的TLB表項(xiàng)要清除或修正。 在目標(biāo)域
7、中分配虛擬內(nèi)存:系統(tǒng)要在目標(biāo)進(jìn)程中找到一個(gè)空閑的頁(yè)表表項(xiàng)。鎖住物理頁(yè):為防止頁(yè)被換出,必須鎖住物理頁(yè)。 Fbufs(fast buffers)基本觀察:如果一個(gè)應(yīng)用正在通過內(nèi)核向網(wǎng)絡(luò)發(fā)送大量的數(shù)據(jù)包,那么一個(gè)緩沖區(qū)可能會(huì)被重用多次。 方法一:提前分配好包緩沖區(qū)并計(jì)算好所有的頁(yè)面映射信息(P2a),避免實(shí)際傳輸時(shí)的許多映射開銷。方法二:當(dāng)數(shù)據(jù)傳輸開始時(shí)計(jì)算頁(yè)面映射(P2b),然后將其緩存起來(P11a),消除后續(xù)包的頁(yè)面映射開銷。推遲建立映射比預(yù)先映射更適合突發(fā)流量。實(shí)現(xiàn)原理利用共享內(nèi)存,將一組物理頁(yè)P(yáng)1、P2、Pk 同時(shí)映射給內(nèi)核和應(yīng)用。一般地,將一個(gè)有序的安全域序列定義為一條路徑,為每一條路
8、徑預(yù)留不同的一組物理頁(yè)。提前解復(fù)用(early demultiplexing)當(dāng)數(shù)據(jù)包到達(dá)時(shí),底層驅(qū)動(dòng)通過檢查數(shù)據(jù)包的所有頭部確定一條完整的路徑(提前解復(fù)用)。對(duì)于每條路徑,適配器有一個(gè)空閑緩沖區(qū)鏈表:適配器把數(shù)據(jù)包寫入一個(gè)空閑緩沖區(qū),將緩沖區(qū)描述符傳給接收路徑上的下一個(gè)進(jìn)程。最后一個(gè)進(jìn)程將用完的緩沖區(qū)交還給第一個(gè)進(jìn)程,緩沖區(qū)重新回到空閑緩沖區(qū)鏈表。 單向路徑的實(shí)現(xiàn)為什么路徑是單向的?我們假定每條路徑上的第一個(gè)進(jìn)程是writer,其余進(jìn)程是reader,顯然這是不對(duì)稱的??梢蕴峁┮欢ǖ谋Wo(hù)級(jí)別。如何實(shí)現(xiàn)單向路徑?給第一個(gè)進(jìn)程的頁(yè)表表項(xiàng)設(shè)置寫允許位,給其它進(jìn)程的頁(yè)表表項(xiàng)設(shè)置只讀位。避免不必要的一
9、般性(P7)在將物理頁(yè)映射給路徑上的進(jìn)程時(shí),同一個(gè)物理頁(yè)映射到同一個(gè)虛擬頁(yè)上。將所有進(jìn)程的虛擬內(nèi)存中一定數(shù)量的起始頁(yè)預(yù)留為 fbuf 頁(yè)。如何添加包頭?在發(fā)送路徑上,每一個(gè)安全域都要給數(shù)據(jù)包加上一個(gè)包頭。然而,為了實(shí)現(xiàn)保護(hù),每條路徑只允許一個(gè)writer,其余為reader。問題:怎么允許其它安全域添加包頭呢?定義數(shù)據(jù)包為聚合數(shù)據(jù)結(jié)構(gòu)將數(shù)據(jù)包定義為一個(gè)帶有指針的聚合數(shù)據(jù)結(jié)構(gòu),每個(gè)指針指向一個(gè)fbuf。給數(shù)據(jù)包添加包頭,就是將一個(gè)fbuf添加到聚合數(shù)據(jù)結(jié)構(gòu)中。 修改應(yīng)用API大量已有的應(yīng)用軟件是根據(jù)拷貝語(yǔ)義的API書寫的。然而采用fbufs后,在包緩沖區(qū)被其它進(jìn)程使用完之前,應(yīng)用不允許寫或釋放包
10、緩沖區(qū)。解決方案:API 不再保持拷貝語(yǔ)義,應(yīng)用必須判斷能不能寫緩沖區(qū)。安全的實(shí)現(xiàn)方法:當(dāng)一個(gè)fbuf從應(yīng)用傳遞到內(nèi)核后,內(nèi)核翻轉(zhuǎn)寫允許比特,歸還fbuf時(shí)再重新設(shè)置該位。已有的網(wǎng)絡(luò)應(yīng)用軟件必須重寫嗎?方法一:已有的API增加新的系統(tǒng)調(diào)用,要求高性能的應(yīng)用使用新的系統(tǒng)調(diào)用進(jìn)行重寫。 方法二:用新的擴(kuò)展實(shí)現(xiàn)一個(gè)公共的I/O庫(kù),鏈接到該庫(kù)的應(yīng)用不需要修改,就可以得到性能提升。 實(shí)踐表明,將應(yīng)用移植到類fbuf的API,對(duì)應(yīng)用所做的修改不大,且是局部的。 5.5 使用RDMA避免拷貝 通過以太網(wǎng)在兩個(gè)工作站之間傳輸1MB的文件:發(fā)送端:文件被劃分成一系列數(shù)據(jù)塊,封裝在以太幀中傳輸。接收端:CPU處理
11、每一個(gè)幀,進(jìn)行協(xié)議處理,將數(shù)據(jù)拷貝(可能通過像fbufs的零拷貝接口)到應(yīng)用緩沖區(qū)。使用DMA在磁盤和內(nèi)存之間傳輸1MB數(shù)據(jù):CPU設(shè)置DMA,告知磁盤數(shù)據(jù)的寫入地址;數(shù)據(jù)傳輸結(jié)束后,磁盤通過中斷通知CPU。什么是RDMARDMA的愿景:數(shù)據(jù)在兩臺(tái)計(jì)算機(jī)的主存之間直接傳輸,而不需要兩端CPU對(duì)數(shù)據(jù)包進(jìn)行逐個(gè)處理。兩個(gè)網(wǎng)絡(luò)適配器協(xié)作從一個(gè)主存讀數(shù)據(jù),然后寫入另一個(gè)主存。RDMA需要解決兩個(gè)問題:接收端適配器如何知道應(yīng)將數(shù)據(jù)放在哪兒?如何保證安全?5.5.1 VAX Cluster 的RDMAVAX Cluster為可伸縮應(yīng)用(如數(shù)據(jù)庫(kù)應(yīng)用)提供計(jì)算平臺(tái):系統(tǒng)核心是一個(gè)140Mb/s的網(wǎng)絡(luò)(稱CL
12、),使用一個(gè)以太網(wǎng)風(fēng)格的協(xié)議。用戶可以將許多VAX計(jì)算機(jī)和網(wǎng)絡(luò)硬盤連接到CL。RDMA的需求背景:在遠(yuǎn)程硬盤和VAX機(jī)的內(nèi)存之間有效傳輸大量數(shù)據(jù)。要求包含文件數(shù)據(jù)的包在進(jìn)入目的適配器之后,直接到達(dá)它的存放位置。傳統(tǒng)網(wǎng)絡(luò)的接收端接收端應(yīng)用將一些頁(yè)(如頁(yè)1、2、3)放入一個(gè)隊(duì)列交給適配器,用于接收應(yīng)用1到來的包。假設(shè)數(shù)據(jù)包的到達(dá)順序?yàn)榘?、包3、包2,則這些包被依次放入頁(yè)1、2、3。數(shù)據(jù)包接收完后,CPU做一個(gè)重映射(若文件很大,重映射的開銷很大)。VAX 的 RDMA 解決方案接收端應(yīng)用鎖住一些物理頁(yè),用作文件傳輸?shù)哪康拇鎯?chǔ)區(qū)域,將緩沖區(qū)名字傳送到發(fā)送端應(yīng)用。發(fā)送端應(yīng)用將緩沖區(qū)名字及包存放的偏移
13、量隨同數(shù)據(jù)包一起發(fā)送。(P10,在包頭中傳遞線索)接收端適配器根據(jù)緩沖區(qū)名字和偏移量,將數(shù)據(jù)存放到指定的緩沖區(qū)(不需要頁(yè)重映射)。為實(shí)現(xiàn)RDMA,網(wǎng)絡(luò)適配器必須實(shí)現(xiàn)傳輸層協(xié)議。如何保證安全?允許一個(gè)攜帶緩沖區(qū)ID的網(wǎng)絡(luò)數(shù)據(jù)包直接寫入內(nèi)存,是一個(gè)明顯的安全隱患。為降低安全風(fēng)險(xiǎn),緩沖區(qū)ID中包含一個(gè)難以猜測(cè)的隨機(jī)串。VAX Cluster只在本集群內(nèi)部可信的計(jì)算機(jī)之間使用RDMA傳遞數(shù)據(jù)。5.5.2 RDMA在SAN中的應(yīng)用存儲(chǔ)區(qū)域網(wǎng)(Storage Area Network,SAN):一種后端網(wǎng)絡(luò),用于將大量的計(jì)算機(jī)和網(wǎng)絡(luò)硬盤連接在一起。目前有好幾種這樣的技術(shù):Fiber Channel(FC)
14、InfinibandInternet Small Computer System Interface(iSCSI)Fiber ChannelFC的目標(biāo)之一是將工作站與本地硬盤之間的標(biāo)準(zhǔn)接口SCSI擴(kuò)展到較長(zhǎng)距離。FC使用了現(xiàn)代網(wǎng)絡(luò)技術(shù),比如用交換機(jī)連接點(diǎn)-點(diǎn)光纖鏈路,使得速度更高,距離跨度更大。FC增加了一些安全措施:允許將網(wǎng)絡(luò)虛擬化為一些區(qū)域,一個(gè)區(qū)域中的節(jié)點(diǎn)不能訪問其它區(qū)域中節(jié)點(diǎn)的內(nèi)存。增加了認(rèn)證要求。5.6 把避免拷貝技術(shù)擴(kuò)展到文件系統(tǒng)考慮消除copy 25.6.1 共享內(nèi)存方法類UNIX操作系統(tǒng)提供一個(gè)系統(tǒng)調(diào)用mmap(),允許應(yīng)用(如web服務(wù)器)將一個(gè)文件映射到自己的虛擬地址空間。
15、概念上,當(dāng)一個(gè)文件被映射到一個(gè)應(yīng)用的地址空間,這個(gè)應(yīng)用就好像在自己的內(nèi)存中緩存了這份文件。如果Web程序?qū)⑽募成涞阶约旱牡刂房臻g,則它和文件cache訪問的是同一組物理頁(yè)(免除了拷貝)。Flash Web服務(wù)器Web應(yīng)用程序?qū)⒔?jīng)常用到的文件映射到自己的內(nèi)存空間,以避免copy 1和copy 2。受到可分配給文件頁(yè)的物理頁(yè)數(shù)量及頁(yè)表映射的限制,F(xiàn)lash Web服務(wù)器只能將這些映射的文件當(dāng)成是一個(gè)高速緩存(cache)。Flash Web服務(wù)器只是緩存了一些文件分片,并使用LRU策略將一段時(shí)間未用的文件unmap。尚未解決的問題Flash Web 不能避免web服務(wù)器與CGI進(jìn)程之間的拷貝:C
16、GI程序生成的動(dòng)態(tài)內(nèi)容通過UNIX管道傳給web服務(wù)器;典型地,管道要在兩個(gè)地址空間之間拷貝內(nèi)容。一個(gè)被訪問多次的文件,不能緩存檢查和: 傳統(tǒng)的緩存方案需要從數(shù)據(jù)包內(nèi)容映射到檢查和,很低效??梢越Y(jié)合 fbufs 和 mmap 嗎?可以結(jié)合 fbufs 和 mmap 嗎?在mmap中,應(yīng)用選擇緩沖區(qū)的地址和格式。在fbufs中,內(nèi)核選擇緩沖區(qū)的地址和格式??梢越Y(jié)合 fbufs 和 mmap 嗎?在mmap中,應(yīng)用選擇緩沖區(qū)的地址和格式。在fbufs中,內(nèi)核選擇緩沖區(qū)的地址和格式。如果應(yīng)用使用其虛擬地址空間的一個(gè)緩沖區(qū)映射了一個(gè)文件,這個(gè)緩沖區(qū)不能用fbuf(內(nèi)核地址空間)發(fā)送,必須要有一次物理拷
17、貝!可以結(jié)合 fbufs 和 mmap 嗎?在mmap中,應(yīng)用選擇緩沖區(qū)的地址和格式。在fbufs中,內(nèi)核選擇緩沖區(qū)的地址和格式。如果應(yīng)用使用其虛擬地址空間的一個(gè)緩沖區(qū)映射了一個(gè)文件,這個(gè)緩沖區(qū)不能用fbuf(內(nèi)核地址空間)發(fā)送,必須要有一次物理拷貝!當(dāng)消除copy 2時(shí),討厭的copy 3又出現(xiàn)了!5.6.2 IO-LiteIO-Lite推廣 fbufs 至包含文件系統(tǒng),使得不必使用 mmap。IO-Lite 借用了 fbufs 的主要思想:為同一條路徑上的進(jìn)程映射相同的物理頁(yè),實(shí)現(xiàn)只讀共享;推遲創(chuàng)建路徑的緩沖區(qū);使用緩沖區(qū)聚合以允許添加包頭。IO-Lite 響應(yīng) Get 請(qǐng)求IO-Lite
18、 響應(yīng) Get 請(qǐng)求的步驟當(dāng)文件第一次從磁盤讀入文件系統(tǒng)的高速緩存時(shí),文件頁(yè)被保存為IO-Lite buffer。當(dāng)應(yīng)用通過一個(gè)調(diào)用讀文件時(shí),創(chuàng)建一個(gè)緩沖區(qū)聚合體,指針指向IO-Lite buffer。當(dāng)應(yīng)用發(fā)送文件給TCP時(shí),網(wǎng)絡(luò)系統(tǒng)得到一個(gè)指向相同IO-Lite頁(yè)的指針。應(yīng)用將常用文件的HTTP響應(yīng)維護(hù)在一個(gè)高速緩存中。IO-Lite給每個(gè)緩沖區(qū)分配一個(gè)編號(hào),TCP模塊維護(hù)一個(gè)以緩沖區(qū)編號(hào)為索引的檢查和高速緩存。實(shí)現(xiàn)零拷貝的管道IO-Lite也可以用來實(shí)現(xiàn)一個(gè)消除了拷貝的改良型管道程序。將改良后的管道應(yīng)用到CGI程序和web服務(wù)器之間,可以消除冗余的拷貝。實(shí)現(xiàn)IO-LiteIO-Lite必
19、須處理復(fù)雜的共享模式:多個(gè)應(yīng)用、TCP代碼和文件服務(wù)器均可能有指向IO-Lite buffer的緩沖區(qū)。IO-Lite必須實(shí)現(xiàn)一個(gè)復(fù)雜的替換策略:IO-Lite頁(yè)既可能是虛擬內(nèi)存頁(yè)又可能是文件頁(yè)需將標(biāo)準(zhǔn)的頁(yè)替換規(guī)則和文件緩存替換策略集成在一起。找到一種干凈的方法將IO-Lite集成到OS中5.6.3 使用I/O拼接避免文件系統(tǒng)拷貝I/O拼接的基本思想:引入一個(gè)新的系統(tǒng)調(diào)用sendfile(),允許內(nèi)核將讀文件的調(diào)用和向網(wǎng)絡(luò)發(fā)送消息的調(diào)用合并。文件到socket傳輸?shù)膫鹘y(tǒng)方法(4次拷貝):read (file, tem_buf, len); write (socket, tmp_buf, len
20、); 使用sendfile()傳輸文件到socket:sendfile (socket, file, len);內(nèi)核2.1版本的sendfile實(shí)現(xiàn)調(diào)用sendfile()時(shí):文件數(shù)據(jù)先被拷貝到內(nèi)核中的文件緩沖區(qū);然后從文件緩沖區(qū)拷貝到內(nèi)核中的socket緩沖區(qū);最后從socket緩沖區(qū)拷貝到適配器。與read/write方式相比,減少了一次拷貝。內(nèi)核版本2.4之后的sendfile實(shí)現(xiàn)調(diào)用sendfile()時(shí):文件數(shù)據(jù)先被拷貝到內(nèi)核中的文件緩沖區(qū);將記錄數(shù)據(jù)位置和長(zhǎng)度的信息保存到socket緩沖區(qū);數(shù)據(jù)通過DMA通道直接發(fā)送到適配器。消除了copy 2 和 copy 3基于sendfile
21、的機(jī)制不能推廣到與CGI程序通信。I/O Splicing5.7 擴(kuò)展到拷貝之外利用load和store之間的空周期做累加計(jì)算,不需額外開銷,拷貝循環(huán)可以擴(kuò)展到包括檢查和計(jì)算。Integrated Layer Processing(ILP)整合層次處理(ILP)的主要思想:對(duì)同一個(gè)數(shù)據(jù)包進(jìn)行多種數(shù)據(jù)操作時(shí),將這些操作整合在一個(gè)循環(huán)中,避免對(duì)包中的數(shù)據(jù)進(jìn)行多次的讀和寫(P1)。ILP面臨的問題問題一:不同操作需要的信息一般來自不同的層次,將不同層次的代碼整合在一起而不犧牲模塊化特性是極其困難的。問題二:不同操作可能需要在不同長(zhǎng)度的數(shù)據(jù)塊上以及數(shù)據(jù)包的不同部位進(jìn)行。ILP面臨的問題(續(xù))問題三:有
22、些操作可能是相互依賴的。比如,如果數(shù)據(jù)包的TCP檢查和驗(yàn)證失敗,就不應(yīng)當(dāng)對(duì)包進(jìn)行解密操作。問題四:過分提高整合度可能降低代碼的局部性,增大cache miss率,反而產(chǎn)生不良的后果。ILP的前景ILP很難實(shí)現(xiàn),且超過一定數(shù)量的操作整合在一起可能會(huì)降低性能。特別是,如果包數(shù)據(jù)被使用幾次,它可能駐留在d-cache中,使得整合操作完全沒有必要。因此,除了整合拷貝-檢查和計(jì)算之外,在整合其它操作方面,學(xué)術(shù)界和工業(yè)界一直沒有跟進(jìn)。5.8 擴(kuò)展到數(shù)據(jù)操作之外消除數(shù)據(jù)拷貝和整合數(shù)據(jù)操作,其技術(shù)共同點(diǎn)都是避免冗余的讀/寫操作,以減少對(duì)內(nèi)存總線(以及I/O總線)的壓力。還有哪些因素會(huì)影響內(nèi)存總線的使用呢?Ca
23、che的使用效率DMA或PIO的選擇5.8.1 有效使用 I-cache處理器有一個(gè)或多個(gè)數(shù)據(jù)cache,以及一個(gè)或多個(gè)指令cache。包數(shù)據(jù)幾乎不能從 d-cache 獲得好處。處理數(shù)據(jù)包的程序代碼可以從 I-cache 獲益。處理數(shù)據(jù)包需要的狀態(tài)可以從d-cache 獲益。代碼和狀態(tài)都可能競(jìng)爭(zhēng)內(nèi)存帶寬,其中代碼對(duì)內(nèi)存帶寬的競(jìng)爭(zhēng)更嚴(yán)重:處理一個(gè)包需要的狀態(tài)一般較?。ǖ珳p小狀態(tài)仍是必要的)協(xié)議棧處理的代碼大得多(1)代碼布局代碼在內(nèi)存中的布局是一個(gè)可以利用的自由度(P13)。代碼布局的主要思想:通過安排代碼在內(nèi)存中的位置優(yōu)化常見情形(P11),使得最常使用的代碼駐留在I-cache中I-Cac
24、he的實(shí)現(xiàn)特點(diǎn)(1)大多數(shù)處理器使用直接映射的I-cache:內(nèi)存地址的低位比特用來檢索I-cache條目;如果高位比特匹配,直接從I-cache返回內(nèi)容;若不匹配,進(jìn)行一個(gè)主存訪問,用新的數(shù)據(jù)替換原來的條目。問題:被映射到I-cache同一位置的代碼會(huì)被輪流替換出去,即使它們都是經(jīng)常使用的代碼。I-Cache的實(shí)現(xiàn)特點(diǎn)(2)每條I-cache包含多條指令:當(dāng)取一條指令時(shí),同一個(gè)代碼塊中的全部指令都會(huì)被讀入。(基于空間局部性假設(shè)而優(yōu)化)問題:不常用的代碼會(huì)被讀入I-cache,如果它與常用代碼在一個(gè)塊中。舉例許多網(wǎng)絡(luò)代碼包含錯(cuò)誤檢查,比如:if error E do X, else do Z雖然 Z 幾乎從不被執(zhí)行,但是編譯器通常會(huì)將 Z 的代碼緊跟在 X 的后面。如果 X 和 Z 位于同一個(gè)指令塊中,取經(jīng)常使用的代碼 X,會(huì)把不經(jīng)常使用的代碼 Z 也取進(jìn)來,浪費(fèi)了內(nèi)存帶寬和cache空間。重新組織代碼解決方案:重新組織代碼,將經(jīng)常使用的代碼連續(xù)放置。比如,將Z的代碼放置到遠(yuǎn)離X的地方。這里運(yùn)用了兩條原則:代碼在內(nèi)存中的位置是一個(gè)可以利用的自由度(P13)優(yōu)化常
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度房地產(chǎn)項(xiàng)目資金代管代收代付服務(wù)合同
- 2025年度離婚夫妻共同子女法律權(quán)益保護(hù)協(xié)議
- 施工總體籌劃
- 施工日志填寫樣本施工過程中的質(zhì)量問題與整改記錄
- 打造高效、智能的辦公環(huán)境-基于工業(yè)互聯(lián)網(wǎng)平臺(tái)的實(shí)踐研究
- 深度探討學(xué)術(shù)研究匯報(bào)的要點(diǎn)與制作技巧
- 業(yè)績(jī)達(dá)標(biāo)股票期權(quán)合同范本
- 產(chǎn)品分銷合作合同書
- 萬(wàn)科地產(chǎn)集團(tuán):合同管理新篇章
- 二手房交易合同樣本
- MotionView-MotionSolve應(yīng)用技巧與實(shí)例分析
- 碳納米管應(yīng)用研究
- 投標(biāo)聲明書模板
- 運(yùn)動(dòng)技能學(xué)習(xí)與控制課件第十一章運(yùn)動(dòng)技能的練習(xí)
- 蟲洞書簡(jiǎn)全套8本
- 2023年《反電信網(wǎng)絡(luò)詐騙法》專題普法宣傳
- 小學(xué)數(shù)學(xué)五年級(jí)上、下冊(cè)口算題大全
- 和平精英電競(jìng)賽事
- 熱應(yīng)激的防與控
- 高標(biāo)準(zhǔn)農(nóng)田施工組織設(shè)計(jì)(全)
- 職業(yè)安全健康工作總結(jié)(2篇)
評(píng)論
0/150
提交評(píng)論