監控EC2執行個體上ENA設定的網路效能 - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

監控EC2執行個體上ENA設定的網路效能

Elastic Network Adapter (ENA) 驅動程式會從啟用它們的執行個體發佈網路效能指標。您可以使用這些指標來進行執行個體效能的故障診對、為工作負載選擇正確的執行個體大小、主動計劃擴展活動,以及基準化分析應用程式,以判斷它們是否能夠最大化執行個體上的可用效能。

Amazon 會在執行個體層級EC2定義網路上限,以確保高品質的網路體驗,包括跨執行個體大小的一致網路效能。為每個執行個體 AWS 提供下列項目的上限:

  • 頻寬功能 – 根據EC2執行個體類型和大小,每個執行個體都有彙總傳入和傳出流量的最大頻寬。一些執行個體使用網路 I/O 額度機制,根據平均頻寬使用率來配置網路頻寬。Amazon EC2也為流量到 AWS Direct Connect 和網際網路提供最大頻寬。如需詳細資訊,請參閱Amazon EC2執行個體網路頻寬

  • Packet-per-second (PPS) 效能 – 根據EC2執行個體類型和大小,每個執行個體都有最大PPS效能。

  • 追蹤的連線 - 安全性群組會追蹤每個建立的連線,以確保傳回封包如預期般交付。每個執行個體可追蹤的連線數目上限。如需詳細資訊,請參閱 Amazon EC2安全群組連線追蹤

  • 連結本機服務存取 – Amazon 為每個PPS網路介面EC2提供流量的上限,例如 DNS 服務、執行個體中繼資料服務和 Amazon Time Sync Service。

當執行個體的網路流量超過上限時, 會透過佇列然後捨棄網路封包來 AWS 塑造超過上限的流量。您可以使用網路效能指標監控流量何時超過上限。這些指標可即時通知您網路流量的影響,以及可能的網路效能問題。

要求

Linux 執行個體
  • 安裝ENA驅動程式 2.2.10 版或更新版本。若要確認已安裝的版本,請使用 ethtool 命令。在下列範例中,版本符合最低需求。

    [ec2-user ~]$ ethtool -i eth0 | grep version version: 2.2.10

    若要升級ENA驅動程式,請參閱增強型網路

  • 若要將這些指標匯入 Amazon CloudWatch,請安裝 CloudWatch 代理程式。如需詳細資訊,請參閱 Amazon CloudWatch 使用者指南 中的收集網路效能指標

  • 若要支援conntrack_allowance_available指標,請安裝ENA驅動程式 2.8.1 版。

Windows 執行個體
  • 安裝ENA驅動程式 2.2.2 版或更新版本。若要確認已安裝的版本,請使用如下所示的 Device Manager (裝置管理員)。

    1. 執行 devmgmt.msc 以開啟 Device Manager (裝置管理員)。

    2. 展開 Network Adapters (網路介面卡)

    3. 選擇 Amazon Elastic Network Adapter (Amazon 彈性網絡介面卡)Properties (屬性)

    4. Driver (驅動程式)索引標籤上,找出 Driver Version (驅動程式版本)

    若要升級ENA驅動程式,請參閱增強型聯網。

  • 若要將這些指標匯入 Amazon CloudWatch,請安裝 CloudWatch 代理程式。如需詳細資訊,請參閱 Amazon CloudWatch 使用者指南 中的收集進階網路指標

ENA 驅動程式的指標

ENA 驅動程式會即時將下列指標交付給執行個體。它們提供自上次重設驅動程式後,每個網路介面上排入佇列或丟棄的累積封包數目。

指標 描述 支援於
bw_in_allowance_exceeded

因傳入的彙總頻寬超過執行個體的上限而排入佇列或丟棄的封包數目。

所有執行個體類型

bw_out_allowance_exceeded

因傳出的彙總頻寬超過執行個體的上限而排入佇列或丟棄的封包數目。

所有執行個體類型

conntrack_allowance_exceeded

因為連線追蹤超過執行個體的上限且無法建立新的連線,而丟棄的封包數目。這可能會導致傳送或傳回執行個體流量的封包遺失。

所有執行個體類型

conntrack_allowance_available 在達到該執行個體類型的追蹤連線限額之前,執行個體可建立的追蹤連線數目。

僅限 Nitro 型執行個體

linklocal_allowance_exceeded

由於本機代理服務的流量的 超過網路介面的上限,因此捨棄PPS的封包數量。這會影響服務DNS、執行個體中繼資料服務和 Amazon Time Sync Service 的流量。

所有執行個體類型

pps_allowance_exceeded

由於雙向PPS超過執行個體的最大值,因此佇列或捨棄的封包數量。此限制也會計算PPS每個 超過 1024 的輸出片段下降ENI。

所有執行個體類型

檢視 執行個體的網路效能指標

您使用的程序取決於執行個體的作業系統。

您可以將指標發佈至您最愛的工具,以視覺化方式呈現指標資料。例如,您可以使用 CloudWatch 代理 CloudWatch 程式將指標發佈至 Amazon。代理程式可讓您選取個別指標並控制發佈。

您也可以使用 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

您可以使用任何 Windows 效能計數器的取用者來檢視指標。資料可根據 EnaPerfCounters 資訊清單進行剖析。這是定義效能計數器提供者及其計數器集XML的檔案。

安裝資訊清單

如果您使用包含ENA驅動程式 2.2.2 或更新版本AMI的 啟動執行個體,或使用ENA驅動程式 2.2.2 的驅動程式套件中的安裝指令碼,則會已安裝資訊清單。若要手動安裝資訊清單,請使用下列步驟:

  1. 使用下列命令移除現有的資訊清單:

    unlodctr /m:EnaPerfCounters.man
  2. 將資訊清單檔案 EnaPerfCounters.man 從驅動程式安裝套件複製到 %SystemRoot%\System32\drivers

  3. 使用下列命令安裝新的資訊清單:

    lodctr /m:EnaPerfCounters.man
使用效能監視器檢視指標
  1. 開啟效能監控器。

  2. 按 Ctrl+N 以新增計數器。

  3. 從清單中選擇ENA封包形狀

  4. 選取要監控的執行個體,然後選取 Add (新增)

  5. 選擇 OK (確定)。

ENA Express 的指標

ENA Express 採用 AWS 可擴展可靠資料包 (SRD) 技術。SRD 是高效能網路傳輸通訊協定,使用動態路由來增加輸送量並將尾部延遲降至最低。如果您已針對傳送執行個體和接收執行個體上的網路介面附件啟用 ENA Express,您可以使用 ENA Express 指標來協助確保您的執行個體充分利用SRD技術提供的效能改進。例如:

  • 評估您的 資源,以確保其有足夠的容量來建立更多SRD連線。

  • 識別哪些潛在問題會阻止合格的傳出封包使用 SRD。

  • 計算SRD用於執行個體的傳出流量百分比。

  • 計算SRD用於執行個體的傳入流量百分比。

注意

若要產生指標,請使用 2.8 或更新版本的驅動程式。

若要查看針對 ENA Express 篩選的 Linux 執行個體指標清單,請針對網路介面執行下列ethtool命令 (此處顯示為 eth0)。記下ena_srd_mode指標的值。

[ec2-user ~]$ ethtool -S eth0 | grep ena_srd NIC statistics: ena_srd_mode: 1 ena_srd_tx_pkts: 0 ena_srd_eligible_tx_pkts: 0 ena_srd_rx_pkts: 0 ena_srd_resource_utilization: 0

下列指標適用於所有已啟用 ENA Express 的執行個體。

ena_srd_mode

說明啟用哪些 ENA Express 功能。相關值如下:

  • 0 = ENA 快速關閉、UDP關閉

  • 1 = ENA 快速開啟、UDP關閉

  • 2 = ENA Express off,UDP開啟

    注意

    只有在最初啟用 ENA Express 且UDP設定為使用 Express 時,才會發生這種情況。先前的值會保留供UDP流量使用。

  • 3 = ENA Express on, UDP on

ena_srd_eligible_tx_pkts

網路數量如下所示:

  • 支援傳送和接收執行個體類型。如需詳細資訊,請參閱 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連線允許的最大記憶體使用率百分比。

若要確認封包傳輸是否使用 SRD,您可以將合格封包數目 (ena_srd_eligible_tx_pkts 指標) 與指定期間內傳輸的SRD封包數目 (ena_srd_tx_pkts 指標) 進行比較。

出口流量 (傳出封包)

若要確保您的輸出流量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 已停用,指標會停止累計,但只要執行個體仍在執行,就會持續存在。如果執行個體重新啟動或終止,或者如果網路介面已從執行個體中斷連接,就會重設指標。

使用 DPDK 驅動程式的網路效能指標 ENA

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 版開始, ENAFreeBSD 驅動程式支援在執行的執行個體上收集網路效能指標 FreeBSD。 若要啟用 的集合 FreeBSD 指標,輸入下列命令並設定 interval 值介於 1 到 3600 之間。這會指定收集的頻率,以秒為單位 FreeBSD 指標。

sysctl dev.ena.network_interface.eni_metrics.sample_interval=interval

例如,下列命令會設定要收集的驅動程式 FreeBSD 網路介面 1 上的指標每 10 秒 1 次:

sysctl dev.ena.1.eni_metrics.sample_interval=10

若要關閉 的集合 FreeBSD 指標,您可以執行上述命令並指定 0 作為 interval.

啟用收集之後 FreeBSD 指標,您可以執行下列命令來擷取最新收集的指標集。

sysctl dev.ena.network_interface.eni_metrics