亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4190 | 回復(fù): 8
打印 上一主題 下一主題

求助: linux 2.6 SMP環(huán)境,kernel, 多線程UDP發(fā)包遠(yuǎn)大于網(wǎng)絡(luò)帶寬,為什么?在線等待 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2007-11-27 17:27 |只看該作者 |倒序?yàn)g覽
如題,初始化時(shí)根據(jù)CPU個(gè)數(shù)分別指定各線程(每個(gè)線程的任務(wù)就是發(fā)UDP包,每個(gè)線程使用了10個(gè)SOCKET輪循發(fā)送)。使用sock_sendmsg進(jìn)行UDP包發(fā)送遠(yuǎn)大于網(wǎng)絡(luò)帶寬,為什么?在線等待 謝謝。。。。。。。。

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2007-11-27 17:33 |只看該作者

回復(fù) #1 xaking 的帖子

是不是  sock_sendmsg在CPU之間 需要什么同步 或者保護(hù)之類的??? 急 謝謝!

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2007-11-28 10:51 |只看該作者

回復(fù) #2 xaking 的帖子

計(jì)算方法?
具體數(shù)據(jù)?
或者是包沒發(fā)出去?

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2007-11-28 13:38 |只看該作者
原帖由 xaking 于 2007-11-27 17:27 發(fā)表
如題,初始化時(shí)根據(jù)CPU個(gè)數(shù)分別指定各線程(每個(gè)線程的任務(wù)就是發(fā)UDP包,每個(gè)線程使用了10個(gè)SOCKET輪循發(fā)送)。使用sock_sendmsg進(jìn)行UDP包發(fā)送遠(yuǎn)大于網(wǎng)絡(luò)帶寬,為什么?在線等待 謝謝。。。。。。。!



這依賴于你的測(cè)試手段,首先UDP本身沒有flow control如果你的測(cè)試工具也是沒有flow control的話,

那么測(cè)試UDP發(fā)送就沒有意義,基本上測(cè)試接收就可以了,發(fā)送再多,也可能是被協(xié)議棧丟棄。

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2007-11-28 16:39 |只看該作者

回復(fù) #4 Solaris12 的帖子

謝謝Solaris12  的回答,但是,netperf是怎么測(cè)試出網(wǎng)絡(luò)的最大帶寬的??? 我看來一下 不是靠檢查對(duì)方是否收到包為保準(zhǔn)的,是檢查自身發(fā)出包個(gè)數(shù)的。不過netpertf是用戶態(tài)的代碼,我不知道在kernel需要加什么控制,比如:不加MSG_DONTWAIT標(biāo)志???

但是 我的程序都是成功返回的。由于每個(gè)kernel線程(我為每個(gè)CPU開一個(gè)處理線程,以便balance)有10個(gè)socket輪循發(fā)包,我門可以任務(wù)包都緩存在協(xié)議棧了 但是,為什么也沒有發(fā)出去啊? 既然發(fā)不過來了  sock_sendmsg 應(yīng)該返回失敗啊?

求高手指點(diǎn)!

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2007-11-28 16:47 |只看該作者

回復(fù) #3 cowboy_fang 的帖子

具體過程是這樣的:(比如2個(gè)CPU)

netfilter---|-->|_buffer__| ----->thread(有10個(gè)socket,輪循發(fā)包)----->sock_sendmsg
                |                                           (分別發(fā)往300或者更多地址)
                |-->|_buffer__| ----->thread(有10個(gè)socket,輪循發(fā)包)----->sock_sendmsg
                                                              (分別發(fā)往300或者更多地址)

計(jì)算方法是:
統(tǒng)計(jì)發(fā)送出去的包數(shù),每個(gè)包是1K數(shù)據(jù),netfilter進(jìn)來的是每秒50個(gè),如果發(fā)出的是一共1000個(gè)不同的地址的話,那么 全部成功的帶寬是:
1000個(gè)*50包/S*1K Bytes = 50MB/S
---- 其實(shí) 我測(cè)試了5000個(gè)都可以 那么
5000個(gè)*50包/S*1K Bytes = 250MB/S

但是 我的網(wǎng)絡(luò)帶寬是100Mbps=12.5MB/s

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2007-11-28 16:49 |只看該作者

回復(fù) #6 xaking 的帖子

即使 考慮緩存 也不會(huì)有這么大的差別

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2007-11-28 16:51 |只看該作者

回復(fù) #3 cowboy_fang 的帖子

實(shí)際發(fā)出去的包 剛好是一定時(shí)間內(nèi)最大網(wǎng)絡(luò)帶寬的包數(shù),表明 有包不見了(我測(cè)試差了一個(gè)數(shù)量級(jí)) 但是 sock_sendmsg 一直返回成功, 那么包哪里去了呢???

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2007-11-28 20:07 |只看該作者
原帖由 xaking 于 2007-11-28 16:47 發(fā)表
具體過程是這樣的:(比如2個(gè)CPU)

netfilter---|-->|_buffer__| ----->thread(有10個(gè)socket,輪循發(fā)包)----->sock_sendmsg
                |                                           (分別發(fā)往300或者更 ...




沒做過這方面的,不過我想發(fā)是一方面,接收還是一方面,
而且?guī)捯膊荒苣菢铀惆?
要知道網(wǎng)絡(luò)傳輸,接收不了,會(huì)延時(shí)等待哦.

也就是要發(fā)送成功,接收也要成功,才行吧.

延時(shí)太長,那只能丟包咯.
發(fā)再多也沒用.
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP