排解運算執行個體效能問題


本文件說明如何診斷及緩解 Compute Engine 虛擬機器 (VM) 和裸機執行個體的 CPU、記憶體和儲存空間效能問題。

事前準備

  • 安裝 Ops Agent,查看完整的執行個體效能指標,例如記憶體和磁碟空間使用率

查看成效指標

如要查看運算執行個體的效能指標,請使用 Google Cloud 控制台提供的 Cloud Monitoring 觀測指標。

  1. 前往 Google Cloud 控制台的「VM Instances」(VM 執行個體) 頁面

    前往「VM Instances」(VM 執行個體)

  2. 您可以查看個別執行個體或消耗最多資源的五個執行個體的指標。

    如要查看個別執行個體的指標,請按照下列步驟操作:

    1. 按一下要查看成效指標的執行個體名稱。執行個體「Details」頁面隨即開啟。

    2. 按一下「Observability」分頁標籤,開啟「Observability」總覽頁面。

    如要查看消耗最多資源的五個執行個體的指標,請按一下「VM instances」頁面中的「Observability」分頁標籤。

  3. 探索執行個體的成效指標。查看「總覽」、「CPU」、「記憶體」、「網路」和「磁碟」等專區,瞭解各主題的詳細指標。以下是用來表示執行個體效能的關鍵指標:

    • 在「總覽」頁面中:

      • CPU 使用率:執行個體使用的 CPU 百分比。

      • 記憶體使用率:執行個體使用的記憶體百分比 (不含磁碟快取)。對於使用 Linux OS 的執行個體,這項指標也會排除核心記憶體。

      • 網路流量:1 分鐘內傳送及接收位元組的平均速率。

      • 連至 VM/外部/Google 的新連線數。一分鐘內的不同 TCP/UDP 流量預估數量,按對等端類型分組。

      • 磁碟總處理量寫入及讀取磁碟的平均位元組速率。

      • 磁碟 IOPS。磁碟 I/O 讀寫作業的平均速率。

    • 在「Network Summary」頁面中,執行下列操作:

      • 傳送至 VM/外部/Google。傳送至 Google 服務、執行個體和外部目的地的網路流量速率,以封包樣本為依據。這項指標會經過等比例調整,讓加總值與已傳送的網路總流量相符。

      • 從 VM/外部/Google 收到的流量。根據封包樣本,從 Google 服務、執行個體和外部來源收到的網路流量速率。指標會經過等比例調整,讓加總值與已接收的網路總流量相符。

      • 網路封包總數。1 分鐘內傳送和接收封包的總速率。

      • 封包平均大小。1 分鐘內傳送及接收的封包平均大小 (以位元組為單位)。

      • 防火牆連入封包遭拒。傳送至執行個體的連入網路封包遭防火牆規則拒絕 (導致執行個體未成功接收相關封包) 的頻率。

    • 在「磁碟效能」頁面中:

      • I/O 大小平均值:磁碟的 I/O 讀寫作業平均大小。小型 (4 至 16 KiB) 隨機 I/O 通常會受限於 IOPS,序列或大型 (256 KiB 至 1 MiB) I/O 則會受限於處理量。

      • 平均佇列長度:前 5 名裝置已排入佇列和執行中的磁碟 I/O 作業數,也稱為「佇列深度」。如要達到磁碟的效能上限,請使用高 I/O 佇列深度。Persistent Disk 和 Google Cloud Hyperdisk 是透過網路連結的儲存空間,與實體磁碟或本機 SSD 磁碟相比,延遲時間通常較長。

      • I/O 延遲時間平均值:在已連接至執行個體的所有磁碟作業中,匯總 I/O 讀取和寫入作業的平均延遲時間,由 Ops Agent 評估。這個值包括作業系統和檔案系統處理延遲時間,並取決於佇列長度和 I/O 大小。

瞭解成效指標

執行個體效能會受到執行個體執行的硬體、執行個體上執行的工作負載,以及執行個體的機器類型影響。如果硬體無法支援執行個體的工作負載或網路流量,執行個體的效能可能會受到影響。

CPU 和記憶體效能

硬體詳細資料

CPU 和記憶體效能會受到下列硬體限制的影響:

  • 每個虛擬 CPU (vCPU) 都會在 CPU 處理器上,以單一硬體多執行緒的形式實作。
  • Intel Xeon CPU 處理器支援在單一處理器核心上執行多個應用程式執行緒。
  • 使用 C2 機器類型的 VM 會固定虛擬核心與實體核心的對應關係,並將 NUMA 單元架構公開給訪客作業系統。
  • 即使訪客環境只顯示基本頻率的公告資訊,大部分的 VM 也會獲得CPU 平台上列出的所有核心 Turbo 頻率
  • 共用核心機器類型會使用環境切換,在 vCPU 之間共用實體核心,以利多工處理。這些機器類型也提供爆發功能,可讓 VM 的 CPU 使用率超過 100%。詳情請參閱「共用核心機器類型」。

如要瞭解執行個體的 CPU 和記憶體效能,請查看效能指標,瞭解CPU 使用率記憶體使用率。此外,您也可以使用程序指標查看執行中的程序、將資源使用量異常歸因於特定程序,或找出執行個體最耗費資源的使用者。

如果 CPU 或記憶體使用率持續偏高,表示您需要擴充 VM 大小。如果 VM 持續使用超過 90% 的 CPU 或記憶體,請變更 VM 的機器類型,改為提供更多 vCPU 或記憶體的機器類型。

如果 CPU 使用率異常偏高或偏低,可能表示 VM 正在發生 CPU 軟體鎖定。詳情請參閱「排解 vCPU 軟體鎖定問題」。

網路效能

硬體詳細資料

網路效能會受到下列硬體限制的影響:

  • 每個機器類型都有特定的傳出頻寬上限。如要查看執行個體機器類型的最大傳出頻寬,請前往對應於您執行個體機器家族的頁面。
  • 將額外的網路介面或額外 IP 位址新增至 VM 並不會增加 VM 的輸入或輸出網路頻寬,但您可以設定某些機器類型以提高頻寬。詳情請參閱「設定頻寬較高的 VM」。

如要瞭解執行個體的網路效能,請查看效能指標,包括網路封包總數封包平均大小連至 VM/外部/Google 的新連線數傳送至 VM/外部/Google 的封包數從 VM/外部/Google 接收的封包數防火牆封鎖的傳入封包數

檢查「網路封包總數」、「封包平均大小」和「連至 VM/外部/Google 的新連線數」是否為工作負載的常態。舉例來說,網站伺服器可能會經歷許多連線和小型封包,而資料庫可能會經歷少數連線和大型封包。

如果持續有大量的傳出網路流量,表示您可能需要變更 VM 的機器類型,改為具有較高輸出頻寬限制的機器類型。

如果您發現防火牆拒絕大量連入封包,請前往 Google Cloud 控制台的網路智慧防火牆深入分析頁面,進一步瞭解遭拒絕封包的來源。

前往「防火牆洞察」頁面

如果您認為防火牆誤拒自己的流量,可以建立並執行連線測試

如果執行個體會向不同區域或地區的執行個體傳送及接收大量流量,建議您修改工作負載,讓更多資料保留在區域或地區內,以提高延遲並降低成本。詳情請參閱「Google Cloud 內部 VM 之間的資料移轉定價 Google Cloud」。如果執行個體向同一個區域中的其他執行個體傳送大量流量,建議採用密集配置方式政策,以便縮短網路延遲時間。

裸機執行個體

與 VM 執行個體不同,在 Bare Metal 執行個體中,C6 和 C1E 休眠狀態不會停用。這可能會導致閒置核心進入休眠狀態,進而導致裸機執行個體的網路效能降低。如果您需要完整的網路頻寬效能,可以在作業系統中停用這些休眠狀態。

  • 您可以使用下列指令碼,在 C3 裸機執行個體上停用休眠狀態,而無須重新啟動執行個體:

    for cpu in {0..191}; do
    echo "1" | sudo tee /sys/devices/system/cpu/cpu$cpu/cpuidle/state3/disable
    echo "1" | sudo tee /sys/devices/system/cpu/cpu$cpu/cpuidle/state2/disable
    done
    
  • 或者,您也可以更新 GRUB 設定檔,讓變更在重新啟動執行個體後保留不變。

    # add intel_idle.max_cstate=1 processor.max_cstate=1 to GRUB_CMDLINE_LINUX
    sudo vim /etc/default/grub
    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    sudo reboot
  • 重新啟動後,請確認已停用 C6 和 C1E 睡眠狀態:

    ls /sys/devices/system/cpu/cpu0/cpuidle/
    state0  state1
    
    cat /sys/devices/system/cpu/cpu0/cpuidle/state*/name
    POLL
    C1

輸入輸出記憶體管理單元 (IOMMU) 是 CPU 功能,可為 PCI 裝置提供位址虛擬化。如果 I/O translation lookaside buffer (IOTLB) 遺漏次數過多,IOMMU 可能會對網路效能造成負面影響。

  • 使用較小的網頁時,較有可能發生遺漏。
  • 為獲得最佳效能,建議您使用大型頁面 (大小介於 2 MB 到 1 GB 之間)。

儲存空間效能

硬體詳細資料

儲存空間會受到下列硬體限制的影響:

  • 所有永久磁碟的總大小加上 vCPU 數量,會決定總儲存空間效能。如果 VM 連接不同類型的永久磁碟,VM 上的所有磁碟都會共用 SSD 永久磁碟效能限制。詳情請參閱「區塊儲存空間效能」。
  • 當永久磁碟和 Hyperdisk 與外寄資料傳輸流量競爭時,60% 的最大外寄網路頻寬會用於永久磁碟和 Hyperdisk,而剩下的 40% 則可用於外寄網路資料傳輸。詳情請參閱「影響效能的其他因素」。
  • I/O 大小和佇列深度效能取決於工作負載。部分工作負載可能不夠大,無法使用完整的 I/O 大小和佇列深度效能限制。
  • VM 的機器類型會影響儲存空間效能。詳情請參閱機器類型和 vCPU 數量

如要瞭解 VM 的儲存空間效能,請查看效能指標,包括總處理量作業 (IOPS)I/O 大小I/O 延遲佇列長度

磁碟總處理量和 IOPS 可用來判斷 VM 工作負載是否正常運作。如果總處理量或 IOPS 低於磁碟類型圖表中列出的預期最大值,則可能出現 I/O 大小、佇列長度或 I/O 延遲效能問題。

對於需要高 IOPS 和低延遲的工作負載,I/O 大小可能介於 4 至 16 KB 之間,而對於涉及序列或大型寫入大小的工作負載,I/O 大小可能介於 256 KB 至 1 MB 之間。若 I/O 大小超出這些範圍,表示磁碟效能有問題。

佇列長度 (也稱為佇列深度) 是吞吐量和 IOPS 的因素。磁碟效能良好時,其佇列長度應與建議的 I/O 佇列深度圖表中列出的佇列長度大致相同,以便達到特定的總處理量或 IOPS 等級。

I/O 延遲時間取決於佇列長度和 I/O 大小。如果磁碟的佇列長度或 I/O 大小很長,延遲時間也會很長。

如果任何儲存空間效能指標顯示磁碟效能問題,請執行下列一或多項操作:

  • 詳閱「最佳化永久磁碟效能」或「最佳化 Hyperdisk 效能」,並導入建議的最佳做法來改善效能。
  • 新增 Hyperdisk 磁碟區新增 Persistent Disk 至執行個體,以提高磁碟效能限制。磁碟效能取決於連接至執行個體的儲存空間總量。這個選項的干擾程度最低,因為您不需要卸載檔案系統、重新啟動或關閉執行個體。
  • 修改 Hyperdisk 來提高每個磁碟的 IOPS 和總處理量限制。針對永久磁碟,您必須增加磁碟的大小,才能提高每個磁碟的 IOPS 和總處理量限制。磁碟不會保留任何無法使用的容量,因此您可以使用整個磁碟,不會影響效能。
  • 變更磁碟類型,改為效能較高的磁碟類型。