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

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

事前準備

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

查看成效指標

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

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

    前往「VM instances」(VM 執行個體) 頁面

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

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

    1. 按一下要查看效能指標的執行個體名稱。執行個體的「詳細資料」頁面隨即開啟。

    2. 按一下「可觀測性」分頁標籤,開啟「可觀測性」「總覽」頁面。

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

  3. 探索執行個體的成效指標。查看「總覽」、「CPU」、「記憶體」、「網路」和「磁碟」部分,瞭解各主題的詳細指標。以下是可指出執行個體效能的主要指標:

    • 在「總覽」頁面中:

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

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

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

      • 連至 VM/外部/Google 的新連線數。一分鐘內的不同 TCP/UDP 資料流數量估計值,並依對等互連類型分組。

      • 磁碟總處理量。磁碟讀寫作業的平均位元組速率。

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

    • 在「網路摘要」頁面中:

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

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

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

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

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

    • 在「Disks Performance」(磁碟效能) 頁面中:

      • 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 具有固定的虛擬對實體核心對應,並向客體 OS 公開 NUMA 單元架構。
  • 即使訪客環境只顯示基本頻率的公告資訊,大部分的 VM 也會獲得CPU 平台上列出的所有核心 Turbo 頻率。
  • 共用核心機型會透過環境切換,在 vCPU 之間共用實體核心,以利多工處理。此外,這些 VM 也提供爆發功能,可讓 VM 的 CPU 使用率超過 100%。詳情請參閱共用核心機器類型

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

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

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

網路效能

硬體詳細資料

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

  • 每種機型都有特定的輸出頻寬上限。如要找出執行個體機型的輸出頻寬上限,請前往執行個體機型對應的頁面。
  • 為 VM 新增額外網路介面,或為每個網路介面新增額外 IP 位址,都不會增加 VM 的輸入或輸出網路頻寬,但您可以設定部分機器類型,以提高頻寬。詳情請參閱「設定頻寬較高的 VM」。

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

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

如果網路輸出流量持續偏高,可能表示需要變更 VM 的機器類型,改用輸出頻寬上限較高的機器類型。

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

前往「防火牆深入分析」頁面

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

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

裸機執行個體

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

  • 如要在「裸機執行個體」上停用休眠狀態,而不需重新啟動執行個體,請使用下列指令碼:

    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 KiB 之間;如果工作負載涉及循序或大型寫入大小,I/O 大小預期會介於 256 KiB 到 1 MiB 之間。如果 I/O 大小超出這些範圍,表示磁碟效能有問題。

佇列長度 (也稱為佇列深度) 是輸送量和 IOPS 的因素。 磁碟效能良好時,佇列長度應與建議的 I/O 佇列深度圖表所列,為達到特定總處理量或 IOPS 級別而建議的佇列長度大致相同。

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

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

  • 請參閱「最佳化永久磁碟效能」或「最佳化 Hyperdisk 效能」,並採用建議的最佳做法來提升效能。
  • 新增 Hyperdisk 磁碟區新增永久磁碟至執行個體,即可提高磁碟效能限制。磁碟效能取決於附加至執行個體的儲存空間總量。這個選項最不會造成中斷,因為不需要卸載檔案系統、重新啟動或關閉執行個體。
  • 修改 Hyperdisk,提高每個磁碟的 IOPS 和總處理量上限。如果是永久磁碟,您必須增加磁碟大小,才能提高每個磁碟的 IOPS 和總處理量上限。磁碟不會保留任何無法使用的容量,因此您可以充分利用磁碟空間,不會造成效能下降。
  • 變更磁碟類型 為效能較高的磁碟類型。