監控 EC2 執行個體的網路效能
彈性網絡介面 (ENA) 驅動程式會從啟用它們的執行個體發行網路效能指標。您可以使用這些指標來進行執行個體效能的故障診對、為工作負載選擇正確的執行個體大小、主動計劃擴展活動,以及基準化分析應用程式,以判斷它們是否能夠最大化執行個體上的可用效能。
Amazon EC2 會在執行個體層級定義網路最大值,以確保高品質的聯網體驗,包括跨執行個體大小的一致網路效能。AWS 為每個執行個體提供下列項目的上限:
-
頻寬能力 - 每個 EC2 執行個體都具有最大頻寬,用於彙總傳入和傳出流量 (根據執行個體類型和大小)。一些執行個體使用網路 I/O 額度機制,根據平均頻寬使用率來配置網路頻寬。Amazon EC2 也具有 AWS Direct Connect 和網際網路流量的最大頻寬。如需詳細資訊,請參閱 Amazon EC2 執行個體網路頻寬。
-
每秒封包數 (PPS) 效能 - 根據執行個體類型和大小,每個 EC2 執行個體都具有 PPS 效能上限。
-
追蹤的連線 - 安全性群組會追蹤每個建立的連線,以確保傳回封包如預期般交付。每個執行個體可追蹤的連線數目上限。如需詳細資訊,請參閱 安全群組連線追蹤。
-
連結本機服務存取 - Amazon EC2 可為 DNS 服務、執行個體中繼資料服務和 Amazon Time Sync Service 等服務的流量提供每個網路介面的 PPS 上限。
當執行個體的網路流量超過上限時,AWS 會透過佇列然後捨棄網路封包來調整超過上限的流量。您可以使用網路效能指標監控流量何時超過上限。這些指標可即時通知您網路流量的影響,以及可能的網路效能問題。
需求
下列需求適用於 Linux 執行個體。
-
若要支援
conntrack_allowance_available
指標,請安裝 ENA 驅動程式 2.8.1 版。
ENA 驅動程式的指標
ENA 驅動程式會即時將下列指標交付至執行個體。它們提供自上次重設驅動程式後,每個網路介面上排入佇列或丟棄的累積封包數目。
下列指標可用於 Linux 執行個體、FreeBSD 執行個體和 DPDK 環境。
指標 | 描述 | 支援於 |
---|---|---|
bw_in_allowance_exceeded |
因傳入的彙總頻寬超過執行個體的上限而排入佇列或丟棄的封包數目。 |
所有執行個體類型 |
bw_out_allowance_exceeded |
因傳出的彙總頻寬超過執行個體的上限而排入佇列或丟棄的封包數目。 |
所有執行個體類型 |
conntrack_allowance_exceeded |
因為連線追蹤超過執行個體的上限且無法建立新的連線,而丟棄的封包數目。這可能會導致傳送或傳回執行個體流量的封包遺失。 |
所有執行個體類型 |
conntrack_allowance_available |
在達到該執行個體類型的追蹤連線限額之前,執行個體可建立的追蹤連線數目。 | 僅限 Nitro 型執行個體類型。 不支援 FreeBSD 執行個體或 DPDK 環境。 |
linklocal_allowance_exceeded |
由於本機代理伺服器服務的流量 PPS 超過網路介面上限而丟棄的封包數目。這會影響 DNS 服務、執行個體中繼資料服務和 Amazon Time Sync Service 的流量。 |
所有執行個體類型 |
pps_allowance_exceeded |
因雙向 PPS 超過執行個體的上限而排入佇列或丟棄的封包數目。 |
所有執行個體類型 |
檢視 Linux 執行個體的網路效能指標
您可以將指標發佈至您最愛的工具,以視覺化方式呈現指標資料。例如,您可以使用 CloudWatch 代理程式將指標發佈至 Amazon CloudWatch。代理程式可讓您選取個別指標並控制發佈。
您也可以使用 ethtool 以擷取每個網路介面的指標,例如下方所示的 eth0。
[ec2-user ~]$
ethtool -S
eth0
bw_in_allowance_exceeded: 0 bw_out_allowance_exceeded: 0 pps_allowance_exceeded: 0 conntrack_allowance_exceeded: 0 linklocal_allowance_exceeded: 0 conntrack_allowance_available: 136812
ENA Express 的指標
ENA Express 由 AWS 可擴展可靠資料包 (SRD) 技術提供支援。SRD 是一種高效能的網路傳輸通訊協定,其使用動態路由來增加輸送量並將網路流量尾延遲降至最低。您可以使用 ENA Express 指標來協助確保執行個體會充分利用 SRD 技術提供的效能改進,例如:
-
評估您的資源,以確保其有足夠的容量來建立更多 SRD 連線。
-
識別存在防止合格傳出封包使用 SRD 的潛在問題的位置。
-
計算對執行個體使用 SRD 的傳出流量百分比。
-
計算對執行個體使用 SRD 的傳入流量百分比。
注意
若要產生指標,請使用 2.8 或更新版本的驅動程式。
下列 ENA Express 指標可透過 Linux 型執行個體使用 ethtool 命令來取得。
-
ena_srd_mode
– 描述已啟用哪些 ENA Express 功能。相關值如下:-
0
= ENA Express 關閉,UDP 關閉 -
1
= ENA Express 開啟,UDP 關閉 -
2
= ENA Express 關閉,UDP 開啟注意
僅在原先啟用 ENA Express,且將 UDP 設定為使用它時,才會發生這種情況。會保留 UDP 流量的先前值。
-
3
= ENA Express 開啟,UDP 開啟
-
-
ena_srd_eligible_tx_pkts
– 在指定時間段內傳送符合 SRD 資格要求的網路封包數目,如下所示:-
支援傳送和接收執行個體類型。如需詳細資訊,請參閱 ENA Express 支援的執行個體類型 資料表。
-
傳送和接收執行個體都必須設定 ENA Express。
-
傳送和接收執行個體必須在相同的子網路中執行。
-
執行個體之間的網路路徑不得包含中介軟體方塊。ENA Express 目前不支援中介軟體。
注意
ENA Express 資格指標涵蓋來源和目的地需求,以及兩個端點之間的網路。在計算後,合格封包仍可能會被取消資格。例如,如果合格封包超過最大傳輸單位 (MTU) 限制,則其會回復為標準 ENA 傳輸,儘管封包在計數器中仍會反映為合格。
-
-
ena_srd_tx_pkts
– 在給定時間段內傳輸的 SRD 封包數目。 -
ena_srd_rx_pkts
– 在給定時間段內接收的 SRD 封包數目。 -
ena_srd_resource_utilization
– 執行個體使用的並行 SRD 連線允許的最大記憶體使用率百分比。
若要查看針對 ENA Express 篩選的指標清單,請遵循適用於您的網路介面的 ethtool 命令 (在這裡顯示為 eth0
):
[ec2-user ~]$
ethtool -S
eth0
| grep ena_srdNIC statistics: ena_srd_mode: 0 ena_srd_tx_pkts: 0 ena_srd_eligible_tx_pkts: 0 ena_srd_rx_pkts: 0 ena_srd_resource_utilization: 0
出口流量 (傳出封包)
若要確保您的出口流量如預期般使用 SRD,請比較 SRD 合格封包數目 (ena_srd_eligible_tx_pkts
) 與指定期間內傳送的 SRD 封包數目 (ena_srd_tx_pkts
)。
合格封包數目與傳送的 SRD 封包數目之間的顯著差異通常是資源使用率問題所造成的。當連接到執行個體的網路卡已耗盡其最大資源,或封包超過 MTU 限制時,合格封包無法透過 SRD 傳輸,而且必須回復為標準 ENA 傳輸。在即時遷移或即時水滴更新期間,封包也可能會歸於此差距中。需要額外的疑難排解,才能判斷根本原因。
注意
您可以忽略合格封包數目和 SRD 封包數目之間偶爾的細微差異。例如,當您的執行個體為 SRD 流量建立與另一個執行個體的連線時,就可能會發生這種情況。
若要了解指定期間內的總出口流量使用 SRD 的百分比,請比較傳出的 SRD 封包數目 (ena_srd_tx_pkts
) 與該執行個體在該時間內傳送的封包總數 (NetworkPacketOut
)。
輸入流量 (傳入封包)
若要了解傳入流量使用 SRD 的百分比,請比較指定期間內接收的 SRD 封包數目 (ena_srd_rx_pkts
) 與該執行個體在該時間內接收的封包總數 (NetworkPacketIn
)。
資源使用率
資源使用率是根據單一執行個體在指定時間可以保留的並行 SRD 連線數目而定。資源使用率指標 (ena_srd_resource_utilization
) 會追蹤您目前執行個體的使用率。當使用率接近 100% 時,您預期將會看到效能問題。ENA Express 從 SRD 回復為標準 ENA 傳輸,且捨棄封包的可能性增加。高資源使用率表示是時候擴展執行個體,以改善網路效能。
注意
當執行個體的網路流量超過上限時,AWS 會透過佇列然後捨棄網路封包來調整超過上限的流量。
Persistence
在啟用執行個體的 ENA Express 時,會累積輸出和輸入指標。如果停用 ENA Express,則指標就會停止累積,但只要執行個體仍在執行,就會持續存在。如果執行個體重新啟動或終止,或者如果網路介面已從執行個體中斷連接,就會重設指標。
適用於 ENA 的網路效能度量 (具有 DPDK 驅動程式)
ENA 驅動程式 2.2.0 版及更高版本支援網路指標報告。DPDK 20.11 包含 ENA 驅動程式 2.2.0,是第一個支援此功能的 DPDK 版本。
您可以使用範例應用程式來檢視 DPDK 統計資料。若要啟動範例應用程式的互動式版本,請執行下列命令。
./app/dpdk-testpmd -- -i
在此互動式工作階段中,您可以輸入命令來擷取連接埠的延伸統計資料。下列範例命令會擷取連接埠 0 的統計資料。
show port xstats 0
以下是包含 DPDK 範例應用程式的互動式工作階段範例。
[root@ip-192.0.2.0 build]# ./app/dpdk-testpmd -- -i EAL: Detected 4 lcore(s) EAL: Detected 1 NUMA nodes EAL: Multi-process socket /var/run/dpdk/rte/mp_socket EAL: Selected IOVA mode 'PA' EAL: Probing VFIO support... EAL: Invalid NUMA socket, default to 0 EAL: Invalid NUMA socket, default to 0 EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket 0) EAL: No legacy callbacks, legacy socket not created Interactive-mode selected Port 0: link state change event testpmd: create a new mbuf pool <mb_pool_0>: n=171456, size=2176, socket=0 testpmd: preferred mempool ops selected: ring_mp_mc Warning! port-topology=paired and odd forward ports number, the last port will pair with itself. Configuring Port 0 (socket 0) Port 0: 02:C7:17:A2:60:B1 Checking link statuses... Done Error during enabling promiscuous mode for port 0: Operation not supported - ignore testpmd> show port xstats 0 ###### NIC extended statistics for port 0 rx_good_packets: 0 tx_good_packets: 0 rx_good_bytes: 0 tx_good_bytes: 0 rx_missed_errors: 0 rx_errors: 0 tx_errors: 0 rx_mbuf_allocation_errors: 0 rx_q0_packets: 0 rx_q0_bytes: 0 rx_q0_errors: 0 tx_q0_packets: 0 tx_q0_bytes: 0 wd_expired: 0 dev_start: 1 dev_stop: 0 tx_drops: 0 bw_in_allowance_exceeded: 0 bw_out_allowance_exceeded: 0 pps_allowance_exceeded: 0 conntrack_allowance_exceeded: 0 linklocal_allowance_exceeded: 0 rx_q0_cnt: 0 rx_q0_bytes: 0 rx_q0_refill_partial: 0 rx_q0_bad_csum: 0 rx_q0_mbuf_alloc_fail: 0 rx_q0_bad_desc_num: 0 rx_q0_bad_req_id: 0 tx_q0_cnt: 0 tx_q0_bytes: 0 tx_q0_prepare_ctx_err: 0 tx_q0_linearize: 0 tx_q0_linearize_failed: 0 tx_q0_tx_poll: 0 tx_q0_doorbells: 0 tx_q0_bad_req_id: 0 tx_q0_available_desc: 1023 testpmd>
如需範例應用程式及使用它來擷取延伸統計資料的詳細資訊,請參閱 DPDK 文件中的 Testpmd 應用程式使用者指南
執行 FreeBSD 執行個體的指標
從 2.3.0 版開始,ENA FreeBSD 驅動程式支援收集執行 FreeBSD 執行個體的網路效能指標。若要啟用收集 FreeBSD 指標,請輸入下列命令,並將 Interval
(間隔) 設定為介於 1 到 3600 之間的值。這會指定收集 FreeBSD 指標的頻率 (以秒為單位)。
sysctl dev.ena.
network_interface
.eni_metrics.sample_interval=interval
例如,下列命令會將驅動程式設定為每 10 秒在網路介面 1 上收集一次 FreeBSD 指標:
sysctl dev.ena.1.eni_metrics.sample_interval=10
若要關閉收集 FreeBSD 指標,您可以執行上述命令並指定 0
作為 interval
(間隔)。
收集 FreeBSD 指標後,您可以執行下列命令來擷取最新收集的指標集。
sysctl dev.ena.
network_interface
.eni_metrics