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

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

監控 EC2 執行個體的網路效能

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

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

  • 頻寬能力 - 每個 EC2 執行個體都具有最大頻寬,用於彙總傳入和傳出流量 (根據執行個體類型和大小)。一些執行個體使用網路 I/O 額度機制,根據平均頻寬使用率來配置網路頻寬。Amazon EC2 還具有進入和互聯網流量 AWS Direct Connect 的最大帶寬。如需詳細資訊,請參閱 Amazon EC2 執行個體網路頻寬

  • P acket-per-second (PPS) 效能 — 根據執行個體類型和大小,每個 EC2 執行個體都有最高的 PPS 效能。

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

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

當執行個體的網路流量超過上限時,會排入佇列,然後卸除網路封包,以 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 在達到該執行個體類型的追蹤連線限額之前,執行個體可建立的追蹤連線數目。

僅在 AWS Nitro 系統上建置的執行個體

linklocal_allowance_exceeded

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

所有執行個體類型

pps_allowance_exceeded

因雙向 PPS 超過執行個體的上限而排入佇列或丟棄的封包數目。

所有執行個體類型

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

您使用的程序視執行個體的作業系統而定。

您可以將指標發佈至您最愛的工具,以視覺化方式呈現指標資料。例如,您可以 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 Packets Shaping (ENA 封包成形)

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

  5. 選擇 OK (確定)。

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_srd NIC 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