Fw: [問題] Linux Socket Performance消失
※ [本文轉錄自 C_and_CPP 看板 #1QyTR0gb ]
作者: carylorrk (carylorrk) 看板: C_and_CPP
標題: [問題] Linux Socket Performance
時間: Wed May 9 00:56:28 2018
開發平台(Platform): (Ex: Win10, Linux, ...)
Ubuntu 16.04
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
gcc-5.5
問題(Question):
先承認這是作業文
小弟對網路程式不熟悉
第一次使用 Linux TCP socket 實作簡單的 RPC
但是不知道是哪裡的問題
performance 大概只有原本使用 gRPC 的一半
可能只是很蠢的操作方式錯誤
又或者是哪裡 implement 太慢
還請各位鞭小力一點
整個系統的架構是
每臺電腦之間都會互相溝通
所以我一開始就把每臺之間的 socket 創好
用一個 bind & listen & accept 的 thread
加上 connet 到所有比自己後面的機器取得 sockets
並建立兩個 thread 分別負責傳送和接收(init.h)
傳送的 thread 是一個 task queue
有人需要傳送時先把資料加到 queue 裡
這個 thread 就負責一直從 queue 裡拿資料
然後利用 send 把資料傳到對應 socket 去 (sender.cc)
接收的 thread 則是利用 epoll
來等待所有 sockets 的訊息進來
讀進來之後會根據 command
創一個 thread call 相對應的 handler function (receiver.cc)
目前測量應該不是 serialize 方面的問題
也有試過在 receiver 創 thread 的部分使用 thread pool
但是暫時還沒有找到效能的問題點
不知道有沒有先進能給點意見?感謝~
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
https://gist.github.com/CaryLorrk/12726181cd3ebd79a1c6ccdedeb8c29f
不是完整的程式碼
不過網路部分都有出來了
我知道架構很醜,傷眼了 XD
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.116.234.91
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1525798592.A.AA5.html
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: carylorrk (122.116.234.91), 05/09/2018 00:58:37
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章