看板 C_and_CPP 關於我們 聯絡資訊
小弟最近在開發一個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
nickexe:你時間計算是從連線+資料傳輸這段? 還是單只有傳輸這段? 02/29 20:46
shaopin:不要等ACK回來直接繼續傳下一筆, 可提升效率 03/01 00:56
james732:如果是用TCP,那就不需要自己寫ACK吧,TCP會保證送到 03/01 08:02
ireullin:同步的做法是一個需求 03/01 08:06
ireullin:ack其實是回傳一個處理完的序號 03/01 08:17
ireullin:這時間是只有傳輸這段 03/01 08:18
adxis:有試過 writev 嗎? 以前的經驗是用 iovec 速度比較正常 03/02 14:09