我嘗試通過在單個服務器進程中傳輸和路由它們來嘗試在多個客戶端(進程)之間本地移動數據。這個傳輸是通過localhost:8080上的websockets完成的。服務器和客戶端都是用python實現的;客戶端是python websocket-client庫的簡單版本,服務器是tornado.web.Application對象。 現在,當從客戶端1 - >服務器 - >客戶端2傳輸數據包(大小約20-100字節)時,我在不同的平臺上看到不同的速度: 1.亞馬遜AWS:給我一個約0.7毫秒的時間延遲。 2. Raspberry Pi:給我一個4.5msec的時間延遲。樹莓中的網絡端口傳輸速度很慢
如果客戶端在頂部使用任何排隊(collections.deque庫),則延遲在RPi中有時超過100毫秒,儘管在AWS中它保持在7.5毫秒內。 我知道本地IP地址套接字必須作爲文件描述符保存在易失性內存中,並且增加不同頭文件和websocket相關參數的網絡開銷,會增加數據包處理期間的延遲。 我的猜測是,在RPi上的RAM讀寫速度比AWS小。我通過在每個平臺上運行'dd'來確認這一點,以傳輸1k大小的塊。 RPi不會超過95Mb /秒,而AWS很容易超過900Mb /秒。我想,RPi通過串行接口連接到SD卡。但是,亞馬遜必須比他們的EC2虛擬機做得更好。
這裏我的問題是這個懷疑是否屬實?這兩種平臺之間的性能差異可能是RAM存取速度的唯一原因嗎?
注:我很抱歉,但我不想粘貼我的代碼的一部分,除非有一個可怕的原因/需要它。感謝你的理解。
我相當懷疑人能回答這樣一個理論性的問題,沒有看到相關的代碼。 Raspberry PI在你所有的傳輸級別上都比AWS服務器強大得多。很有可能,你會看到Raspberry Pi上很多鏈條部分的積累比較慢。 95Mbps的聲音聽起來像普通SD卡的普通訪問速度一樣(儘管如果控制器可以更快地購買更快的卡,則可以購買更快的卡)。 – jfriend00