如何在相同的 VPC 中對 Amazon EC2 Linux 執行個體之間的網路輸送量進行基準效能測試?
我想要測量位於相同的 Amazon Virtual Private Cloud (Amazon VPC) 中 Amazon Elastic Compute Cloud (Amazon EC2) Linux 執行個體之間的網路頻寬。
解決方法
定義用於測試網路輸送量的執行個體類型、規模和組態
當執行個體位於相同 VPC 中時,多個因素可能會導致不同雲端環境之間的網路效能有顯著差異。最佳作法是定期評估環境的網路效能並進行基準評估,以改善應用程式效能。網路效能測試可提供寶貴的深入見解,以判斷最適合您需求的 EC2 執行個體類型、規模和組態。
修改執行個體以獲得更好的網路效能
保持各個執行個體靠近
請確定各個執行個體非常接近。實際上較近的執行個體可提供較好的效能。彼此距離較遠的執行個體會導致網路延遲。相同可用區域或 AWS 區域中的執行個體比不同可用區域或區域中的 EC2 執行個體具有更好的網路輸送量。在下列情況下,各個執行個體會彼此逐漸遠離:
- 相同區域內相同可用區域中的執行個體
- 相同區域內不同可用區域中的執行個體
- 相同所在洲內不同區域中的執行個體
- 不同所在洲內不同區域中的執行個體
增加執行個體的 MTU
增加最大傳輸單元 (MTU)。所有 EC2 執行個體類型會支援 1500 個 MTU。所有當代執行個體和上一代 C3、G2、I2、M3 和 R3 執行個體均支援巨型訊框。巨型訊框允許超過 1500 個 MTU。但是,在某些情況下,支援巨型訊框的執行個體可能會受限為 1500 個 MTU。
增加執行個體的規模
增加執行個體規模。執行個體類型的較大規模執行個體,通常會比相同類型的較小規模執行個體能提供更好的網路效能。
使用適用於 Linux 的增強型聯網支援
使用增強型聯網。增強型聯網可提供更高的效能和持續降低執行個體之間的延遲。依預設,所有當代執行個體均使用彈性網路介面卡 (ENA) 或 ENA Express 驅動程式來啟動增強型聯網。
支援增強型聯網的上一代執行個體類型可能需要其他組態才能使用增強型聯網。
如需詳細資訊,請參閱如何在 EC2 執行個體上開啟和設定增強型聯網?
將您的執行個體放在置放群組中
將相互相依的執行個體啟動至置放群組中,以滿足工作負載的需求。高效能運算 (HPC) 提供全平分頻寬和低延遲,並支援高達 100 GB 的網路速度,這取決於執行個體類型。
使用網路 I/O 額度機制來配置網路頻寬
若要檢查執行個體類型是否可以使用 I/O 網路額度來突破基準頻寬,請參閱網路規格。
設定測試執行個體
請完成下列步驟:
- 啟動兩個測試 Linux 執行個體。
- 確認執行個體是否支援適用於 Linux 的增強型聯網,並確認該執行個體是否位於相同的 VPC。
- (選用) 如果您要在不支援巨型訊框的執行個體之間執行網路測試,請在執行個體上設定網路 MTU。
- 使用 SSH 連線至執行個體,確認您是否可以存取執行個體。
在兩個執行個體上安裝 iperf3 網路基準效能測試工具
在某些發行版本 (例如 Amazon Linux) 中,iperf3 屬於 Extra Packages for Enterprise Linux (EPEL) 儲存庫。若要開啟 EPEL 儲存庫,請參閱如何為執行 CentOS、RHEL 或 Amazon Linux 的 Amazon EC2 執行個體開啟 EPEL 儲存庫?
如需有關 iperf3 工具的詳細資訊,請參閱 ESnet 網站上的 iperf2/iperf3。
使用 SSH 連線至 Linux 執行個體。然後,為作業系統 (OS) 執行以下其中一項命令來安裝 iperf3。
Red Hat Enterprise Linux (RHEL) 9:
$ sudo dnf -y install iperf3
Debian 或 Ubuntu:
$ sudo apt-get install -y iperf3
CentOS 6/7:
$ sudo yum -y install epel-release && yum -y install iperf3
Amazon Linux 2023:
$ sudo yum -y install iperf3
測試各執行個體之間的 TCP 網路效能
依預設,iperf3 會在測試 TCP 效能時透過連接埠 5001 進行通訊。但是,您可以使用 -p 切換來變更連接埠。請確認將安全群組設定為允許透過 iperf3 使用的連接埠進行通訊。
若要將第一個執行個體設定為在特定 TCP 連接埠上接聽的伺服器,請執行下列命令:
$ sudo iperf3 -s -p 5001
**注意:**如果您選擇變更連接埠,請將 5001 取代為連接埠編號。
將第二個執行個體設定為用戶端,然後使用相關參數針對伺服器執行測試。例如,下列命令會針對具有 40 個平行連線的伺服器執行個體啟動 TCP 測試:
$ sudo iperf3 -c 172.31.30.41 --parallel 40 -i 1 -t 2
輸出顯示每個用戶端串流中傳輸的間隔和資料,以及每個用戶端串流使用的頻寬。下列 iperf3 輸出會顯示叢集置放群組中啟動的兩個 c5n.18xlarge EC2 Linux 執行個體的測試結果。在所有連線間傳輸的總頻寬為 97.6 Gbps。
範例輸出:
------------------------------------------------------------------------------------Client connecting to 172.31.30.41, TCP port 5001 TCP window size: 975 KByte (default) ------------------------------------------------------------------------------------ [ 8] local 172.31.20.27 port 49498 connected with 172.31.30.41 port 5001 [ 38] local 172.31.20.27 port 49560 connected with 172.31.30.41 port 5001 [ 33] local 172.31.20.27 port 49548 connected with 172.31.30.41 port 5001 [ 40] local 172.31.20.27 port 49558 connected with 172.31.30.41 port 5001 [ 36] local 172.31.20.27 port 49554 connected with 172.31.30.41 port 5001 [ 39] local 172.31.20.27 port 49562 connected with 172.31.30.41 port 5001 ... [SUM] 0.0- 2.0 sec 22.8 GBytes 97.6 Gbits/sec
測試各執行個體之間的 UDP 網路效能
依預設,iperf3 在測試 UDP 效能時會透過連接埠 5001 進行通訊。但是,您可以使用 -p 切換來變更連接埠。請確認將安全群組設定為允許透過 iperf3 使用的連接埠進行通訊。
**注意:**除非您指定不同的頻寬,否則 UDP 的預設值為 1 Mbps。
若要將第一個執行個體設定為在特定 UDP 連接埠上監聽的伺服器,請執行下列命令:
$ sudo iperf3 -s -u -p 5001
**注意:**如果您選擇變更連接埠,請將 5001 取代為連接埠編號。
將第二個執行個體設定為用戶端,然後使用所需參數針對伺服器執行測試。下列範例針對伺服器執行個體執行 UDP 測試,並將 -b 參數設為 5g。-b 參數會將頻寬從 UDP 預設值 1 Mbps 變更為 5 Gbps。5 Gbps 是 c5n18xlarge 執行個體可為 VPC 內單一流量提供的最大網路效能:
$ sudo iperf3 -c 172.31.1.152 -u -b 5g
**注意:**UDP 為無連線模式,而且沒有 TCP 擁有的壅塞控制演算法。使用 iperf3 進行測試時,從 UDP 取得的頻寬可能會低於從 TCP 取得的頻寬。
範例輸出:
$ sudo iperf3 -c 172.31.30.41 -u -b 5g ------------------------------------------------------------------------------------ Client connecting to 172.31.30.41, UDP port 5001 Sending 1470 byte datagrams, IPG target: 2.35 us (kalman adjust) UDP buffer size: 208 KByte (default) ------------------------------------------------------------------------------------ [ 3] local 172.31.20.27 port 39022 connected with 172.31.30.41 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 5.82 GBytes 5.00 Gbits/sec [ 3] Sent 4251700 datagrams [ 3] Server Report: [ 3] 0.0-10.0 sec 5.82 GBytes 5.00 Gbits/sec 0.003 ms 1911/4251700 (0.045%) [ 3] 0.00-10.00 sec 1 datagrams received out-of-order
上述範例輸出顯示下列值:
- 間隔 (時間)
- 傳輸的資料量
- 達到的頻寬
- 誤差 (資料封包定期抵達的時間偏差)
- UDP 資料封包的損失和總數
相關資訊
在 ESnet 網站上使用 iperf3 進行磁碟測試
在 ESnet 網站上進行網路調整
在 ESnet 網站上比較輸送量工具
在 SourceForge 網站上的 iperf2
在 ESnet 網站上的 iperf3 常見問答集
相關內容
已提問 2 年前
已提問 1 年前
AWS 官方已更新 9 個月前
