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

  免費注冊 查看新帖 |

Chinaunix

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

[應(yīng)用] 嵌入式linux下大數(shù)據(jù)量的網(wǎng)絡(luò)傳送問題<請通信程序高手幫幫忙> [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-09-20 18:04 |只看該作者 |倒序瀏覽
請通信程序前輩 多多幫幫忙!
    小弟剛進嵌入式的門檻不久,最近在做一款中速的數(shù)據(jù)采集產(chǎn)品,在網(wǎng)絡(luò)通信這塊兒遇到問題,還望大家多提提意見,幫幫忙!
產(chǎn)品的采樣率達到100ksps到500ksps,產(chǎn)品板跑的是linux系統(tǒng),開發(fā)板上的內(nèi)存總共是32MB,用fpga來做fifo,有不到1MB的空間。如果按100ksps的采樣率采樣的話,基本上每秒鐘會出現(xiàn)如下的數(shù)據(jù)量:
   100 *1000* sizeof(short) 每秒! 每秒約有200kB的數(shù)據(jù)量產(chǎn)生。若為500ksps,則約有1MB/秒 的數(shù)據(jù)。
所以我需要很快地通過網(wǎng)絡(luò)通信程序把這些數(shù)據(jù)全部傳送到windows端! 在linux端構(gòu)建了一個server,專門把這數(shù)據(jù)傳到windos段的客戶端。關(guān)鍵是我的server受限于linux下網(wǎng)絡(luò)傳輸?shù)淖畲髩K4096B限制,所以基本上我一次就傳輸2000個數(shù)據(jù),約有4000B,再加上一些包頭96字節(jié)。我也用setsockopt來設(shè)置過發(fā)送緩沖區(qū)為8192B,但是不太好使!網(wǎng)絡(luò)傳輸跟不上數(shù)據(jù)產(chǎn)生速度,導(dǎo)致了數(shù)據(jù)有丟失,這是老總堅決不同意的!

    所以請教高手,對于這種大量數(shù)據(jù)的傳輸問題,在linux下是如何去解決的呢? 像對于agilent,NI的上兆上G采樣率的產(chǎn)品,它們是如何實現(xiàn)把這種大數(shù)據(jù)傳到windows端呢?  
   
    我的數(shù)據(jù)傳輸過程中,都是以字符數(shù)組的形式來將數(shù)據(jù)發(fā)送的。我想請問一下linux下,在網(wǎng)絡(luò)中有二進制數(shù)據(jù)流這種傳輸形式嗎?不解!
    我的MSN:scastronaut@gmail.com   QQ: 759402252,望前輩提提意見,不吝指教!

[ 本帖最后由 it-rocket 于 2009-9-21 22:50 編輯 ]

論壇徽章:
0
2 [報告]
發(fā)表于 2009-09-21 13:39 |只看該作者
問題可能出在你從驅(qū)動中把數(shù)據(jù)讀出來的方式,你用的什么方式,是不是共享內(nèi)存的形式?

論壇徽章:
0
3 [報告]
發(fā)表于 2009-09-21 15:07 |只看該作者
以1M算,32MB能緩沖20多秒,網(wǎng)絡(luò)速度一般都是10M,100M的,何來"網(wǎng)絡(luò)傳輸跟不上數(shù)據(jù)產(chǎn)生速度"一說?

論壇徽章:
0
4 [報告]
發(fā)表于 2009-09-21 23:20 |只看該作者
原帖由 epegasus 于 2009-9-21 15:07 發(fā)表
以1M算,32MB能緩沖20多秒,網(wǎng)絡(luò)速度一般都是10M,100M的,何來"網(wǎng)絡(luò)傳輸跟不上數(shù)據(jù)產(chǎn)生速度"一說?


   我在UNIX.Network.Programming.Volume.1中,查了socket的buffer默認情況是4096Byte,我目前開發(fā)板上的linux就是這個上限,但該socket的接收和發(fā)送緩沖區(qū),據(jù)書上所說,最多能夠設(shè)置到from 8,192 to 61,440 bytes. 所以我覺得雖說網(wǎng)卡是10/100M自適應(yīng)的,但是最大只能達到61440 *8約為500K比特,遠不到1M,所以10/100M是個和操作系統(tǒng)有關(guān)系的理論值嗎? 小弟對這不太清楚哈!
  另外在我的開發(fā)板上,我增加我的發(fā)送緩沖區(qū)大小,但是好像不起作用,不知道是何原因!可能是我的客戶端程序構(gòu)建的有問題,服務(wù)器每發(fā)送一塊數(shù)據(jù)過來,我需要休眠不到1秒,才可以繼續(xù)向我的windows上客戶端發(fā)送下一包數(shù)據(jù),不然客戶端會停機。在客戶端這種情況,如果用線程處理好的話,是否可以消除這種情況!
  正因為 我服務(wù)器段休眠約一秒之后,在發(fā)送下一包4096Byte的數(shù)據(jù),才導(dǎo)致了“網(wǎng)絡(luò)傳輸跟不上數(shù)據(jù)產(chǎn)生速度"一說!
  對于這種大數(shù)據(jù)量的 網(wǎng)絡(luò)傳輸,有沒有什么開源的類似代碼參考呢? 謝謝指教!

論壇徽章:
0
5 [報告]
發(fā)表于 2009-09-21 23:27 |只看該作者
原帖由 .kaka 于 2009-9-21 13:39 發(fā)表
問題可能出在你從驅(qū)動中把數(shù)據(jù)讀出來的方式,你用的什么方式,是不是共享內(nèi)存的形式?

我是直接調(diào)用類似于read這樣的函數(shù)來讀取數(shù)據(jù)的,一次能讀到1024個采樣數(shù)據(jù),我不斷地這樣讀數(shù)就可以將采樣數(shù)據(jù)讀回來,不用考慮fpga所構(gòu)成的fifo這塊與系統(tǒng)的情況!
  今天調(diào)試了讀取數(shù)據(jù)那塊兒,發(fā)覺讀出來的原始數(shù)據(jù)全部能夠形成正弦波,符合信號源發(fā)送的信號情況。但是當(dāng)我把數(shù)據(jù)傳輸?shù)絯indows上客戶端畫曲線時卻是雜亂無章的曲線,不知道我的網(wǎng)絡(luò)傳輸哪塊兒出了問題,導(dǎo)致傳過來的數(shù)據(jù)不正確!

論壇徽章:
0
6 [報告]
發(fā)表于 2009-09-21 23:30 |只看該作者
加大緩沖區(qū)沒用,主要是你產(chǎn)生的數(shù)據(jù)量大于了你的吞吐能力。
你必須優(yōu)化收發(fā)的過程。

加大緩沖區(qū)能解決問題嗎?如果數(shù)據(jù)不能立刻搬移走,再多的緩沖區(qū)也放不下阿。

你的消耗我覺得是不是浪費在了用戶層和內(nèi)核層的來回通信上了。
干脆直接全部在內(nèi)核實現(xiàn)應(yīng)該會更快

論壇徽章:
0
7 [報告]
發(fā)表于 2009-09-22 23:18 |只看該作者
原帖由 emmoblin 于 2009-9-21 23:30 發(fā)表
加大緩沖區(qū)沒用,主要是你產(chǎn)生的數(shù)據(jù)量大于了你的吞吐能力。
你必須優(yōu)化收發(fā)的過程。

加大緩沖區(qū)能解決問題嗎?如果數(shù)據(jù)不能立刻搬移走,再多的緩沖區(qū)也放不下阿。

你的消耗我覺得是不是浪費在了用戶層和 ...

以前看過你的很多帖子,看見你能出現(xiàn)在這里幫我一起解決問題!真的非常感謝!
我今天重寫了一下板子上的server,開了個2MB的環(huán)形緩沖區(qū),用采樣數(shù)據(jù)的線程和發(fā)送數(shù)據(jù)的線程以及命令處理線程,借助互斥鎖和條件變量,來完成對server的修改,由于今天信號源不再,所以還未測出效果如何!
    確實像開辟大的緩沖區(qū)的方式,對于上G,上M的采樣率,我想絕對是有問題的,弄不好一不小心,兩三秒就會有上G的數(shù)據(jù)產(chǎn)生,以前和同事一起計算過agilent的一款上G采樣率的公司用的數(shù)采產(chǎn)品,真的很嚇人! 呵呵 但是這個問題,真不知道老外是如何解決的!
   我想聽聽你所說的 優(yōu)化收發(fā) 過程,是要怎樣進行處理呢? 由于我需要對該板子進行控制,所以我都是將數(shù)據(jù)和控制進行打包處理的,開一個字符型的發(fā)送緩沖區(qū),來將一個個包發(fā)送出去,這種方式和流傳輸有區(qū)別嗎?  
   目前就是網(wǎng)絡(luò)傳輸速度達不上去,我一次只能傳送2000個數(shù)據(jù),和包頭一起共4096字節(jié),所以實在是個問題!
   對linux還沒有那么深入地去研究,所以你說的那種做到內(nèi)核中去,你能否給我講講,非常感謝!

[ 本帖最后由 it-rocket 于 2009-9-22 23:25 編輯 ]

論壇徽章:
0
8 [報告]
發(fā)表于 2010-09-15 22:10 |只看該作者
今天才來結(jié)貼,實在是有些不好意思!
問題已經(jīng)解決,感謝LS上各位大俠的幫助:有多少就傳送多少,網(wǎng)絡(luò)傳輸速度就上去了。呵呵

論壇徽章:
0
9 [報告]
發(fā)表于 2010-09-28 16:49 |只看該作者
回復(fù) 8# it-rocket


    樓主 ,問題咋解決的啊  我也碰到了相同的問題~~~
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP