新聞中心

EEPW首頁(yè) > 手機(jī)與無線通信 > 設(shè)計(jì)應(yīng)用 > 基于Linux的Socket網(wǎng)絡(luò)編程的性能優(yōu)化

基于Linux的Socket網(wǎng)絡(luò)編程的性能優(yōu)化

作者: 時(shí)間:2009-10-20 來源:網(wǎng)絡(luò) 收藏

4.3 為Bandwidth Delay Product調(diào)節(jié)TCP窗口
TCP的性能取決于幾方面因素,最重要的是鏈接帶寬(link bandwidth)(報(bào)文在網(wǎng)絡(luò)上傳輸?shù)乃俾?和往返時(shí)間(round-trip time)或RTT(發(fā)送報(bào)文與接收到另一端的響應(yīng)之間的延時(shí))。這兩個(gè)值確定稱為BDP(Bandwidth Delay Prod-uct)的內(nèi)容。BDP給出一種簡(jiǎn)單的方法計(jì)算理論上最優(yōu)的TCP 緩沖區(qū)大小(其中保存排隊(duì)等待傳輸和等待應(yīng)用程序接收的數(shù)據(jù))。緩沖區(qū)太小,TCP窗口就不能完全打開,這會(huì)限制性能;緩沖區(qū)太大,則會(huì)浪費(fèi)寶貴的內(nèi)存資源;設(shè)置的緩沖區(qū)大小合適,就可完全利用可用帶寬。
BDP計(jì)算公式:
BDP=link bandwidth×RTT
若應(yīng)用程序通過一個(gè)100MB/s的局域網(wǎng)通信,其RRT為500ms,則BDP為:50MB/sx0.050/ 8625M=625KB。2.6默認(rèn)的TCP窗口大小是110KB,這將連接的帶寬限制為22M/S,計(jì)算方法如下:
throughput=window_size/RTT
110 KB/0.050=2.2 MB/s
使用上面計(jì)算的窗口大小,得到帶寬為12.5 MB/s,即:
625 KB/0 050=12.5 MB/s
差別很大,并且可以為提供更大的吞吐量。可以根據(jù)自己的計(jì)算最優(yōu)的緩沖區(qū)大小。Socket提供幾個(gè)Socket選項(xiàng),其中兩個(gè)可以用于修改Socket的發(fā)送和接收緩沖區(qū)的大小。使用SO_SNDBUF和SO_RCVBUF選項(xiàng)來調(diào)整發(fā)送和接收緩沖區(qū)的大小。

本文引用地址:http://2s4d.com/article/157808.htm


2.6內(nèi)核中.發(fā)送緩沖區(qū)的大小由調(diào)用用戶定義,而接收緩沖區(qū)會(huì)自動(dòng)加倍。通過計(jì)算合理設(shè)置緩沖區(qū)的大小,Socket網(wǎng)絡(luò)傳輸帶寬的資源將得到充分利用,從而提高了傳輸性能。

5 結(jié)束語(yǔ)
設(shè)計(jì)和實(shí)現(xiàn)一個(gè)的Socket,通過在服務(wù)器端運(yùn)行預(yù)先編譯的可執(zhí)行文件serv,和在客戶端運(yùn)行預(yù)先編譯的可執(zhí)行文件clt,服務(wù)器端和客戶端建立通信連接。加入select()函數(shù)以后,服務(wù)器端可以允許多個(gè)客戶端接入服務(wù)器端,解決了I/O多路復(fù)用問題,更加接近實(shí)際應(yīng)用。利用TCP socket禁用Nagle算法實(shí)現(xiàn)了最小化報(bào)文傳輸?shù)难訒r(shí),提高了Socket的性能。在網(wǎng)絡(luò)帶寬非常珍貴的現(xiàn)實(shí)中。提出了為Bandwidth Delay Product調(diào)節(jié)TCP窗口,修改socket的發(fā)送和接收緩沖區(qū)的大小,完全利用可用的帶寬。達(dá)到較好的網(wǎng)絡(luò)傳輸效果。實(shí)際網(wǎng)絡(luò)傳輸環(huán)境復(fù)雜多變,如何達(dá)到最理想的網(wǎng)絡(luò)傳輸,還需進(jìn)一步的分析和研究。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

p2p機(jī)相關(guān)文章:p2p原理



上一頁(yè) 1 2 3 4 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉