[問題] socket的傳輸速率

看板C_and_CPP (C/C++)作者 (raison detre)時間14年前 (2012/02/29 16:56), 編輯推噓1(106)
留言7則, 5人參與, 最新討論串1/1
小弟最近在開發一個server-client的程式 但是遇到了效率上的問題 由client發送一筆資料到本機的server上 (約120byte) 耗時要0.1~0.2秒 同樣由server回ack給client也是一樣的時間 (約5byte) 同步的狀態下一來一回將近就要0.4秒 一秒處理不到3筆資料 我加了一些trace code server 與client端的資料處理時間幾乎都沒有損耗(0.001~0.005) 我嘗試去調過 TCP_NODELAY, SO_SNDBUF, SO_SNDBUF的設定值 但是也都沒有明顯提升 請問還有什麼方法可以嘗試 或是有甚麼辦法可以去追蹤系統的效能是在哪裡被吃掉(也許是其他程式占用掉) 因為在本機上傳輸資料,這種數據真的是有點誇張 我使用的作業系統是AIX 5.3 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.220.71.34

02/29 20:46, , 1F
你時間計算是從連線+資料傳輸這段? 還是單只有傳輸這段?
02/29 20:46, 1F

03/01 00:56, , 2F
不要等ACK回來直接繼續傳下一筆, 可提升效率
03/01 00:56, 2F

03/01 08:02, , 3F
如果是用TCP,那就不需要自己寫ACK吧,TCP會保證送到
03/01 08:02, 3F

03/01 08:06, , 4F
同步的做法是一個需求
03/01 08:06, 4F

03/01 08:17, , 5F
ack其實是回傳一個處理完的序號
03/01 08:17, 5F

03/01 08:18, , 6F
這時間是只有傳輸這段
03/01 08:18, 6F

03/02 14:09, , 7F
有試過 writev 嗎? 以前的經驗是用 iovec 速度比較正常
03/02 14:09, 7F
文章代碼(AID): #1FJUXNQN (C_and_CPP)
文章代碼(AID): #1FJUXNQN (C_and_CPP)