Networking
1Gbit LAN 上的 scp 性能
在我的有線 LAN 上,使用 1GBit/s 設備,我有兩台 Linux 機器(一台 Haswell,一台 Skylake Xeon),當我對一個大文件進行安全複製時,我看到 38MB/s。
看到這比1000Mbit/s規格低3倍,不知道這個性能是否符合預期?
兩台機器都使用 SSD 進行儲存,都執行 64 位 Ubuntu。
在傳輸過程中,兩台機器大約有一個核心,負載為 30%。
位於機器之間的路由器是 TP-Link Archer C7 AC1750。兩台機器都具有處於全雙工模式的 Intel(R) 千兆乙太網網路設備。
1Gbit LAN 上的正常 scp 傳輸速度是多少?
更新
- 使用
/dev/zero
排除磁碟 IO 產生相同的結果。- 使用 nc 的結果略高:41MiB/s。
- 矛盾的是,UDP nc 比 TCP nc 慢,為 38MiB/s?
- 切換到交叉電纜:scp 為 112MB/s。
結論
中間的 TP-Link 路由器是網路中的薄弱環節,跟不上。
從理論的角度來看,它確實看起來很慢,儘管我沒有看到在家用硬體上實際傳輸速度更快。
您可能希望嘗試排除可能的限制因素的一些實驗:
- 通過從 複製到
/dev/zero
來評估您的原始 SSH 速度/dev/null
。這排除了高畫質瓶頸。ssh remote_host cat /dev/zero | pv > /dev/null
- 檢查其他未加密的協議,例如 HTTP。HTTP 實際上發送文件時只包含一個標頭。通過 HTTP 發送大文件是衡量 TCP 速度的合理方法。
- 檢查您是否沒有強制流量通過路由器,而只是通過乙太網交換機。例如,如果您的機器具有公共 IP 和本地 IP,則 scp 與本地 IP 往來。這是因為家庭路由器通常必須通過其 CPU 處理 WAN 流量,這會造成瓶頸。即使兩台機器都在 LAN 上,使用公共 IP 也可以強制數據包通過 CPU,就好像它要去 WAN 一樣。
- 同樣,我會使用 IPv4。 一些家用路由器對 IPv6 有一種奇怪的行為,它們要求將所有本地流量轉發到路由器。
- 如果可能的話,嘗試使用千兆交叉電纜而不是路由器。這應該排除路由器。