調整 gcloud CLI 區域儲存空間的效能

Google Cloud CLIRapid Bucket 的區域 Bucket 讀取物件時,會根據可用的系統資源自動套用預設的並行和切片設定。

本頁面說明這些預設設定,並說明如何使用 gcloud CLI 進一步調整並行、程序擴縮和啟用功能 (例如 NIC 隔離),以提升特定工作負載的效能。如要調整效能,將區域 bucket 掛接為檔案系統,請參閱「Rapid Bucket 的 Cloud Storage FUSE 效能」。

設定效能設定前,請務必建立區域 bucket。如果您打算將物件下載至已連結的儲存空間磁碟區 (例如 Hyperdisk 或本機 SSD),請務必在環境中格式化並掛接磁碟區。如要瞭解一般切片概念,請參閱「下載切片物件」。

預設並行和切片設定

本節中的預設設定,特別適用於使用 gcloud CLI 583.0.0 以上版本,從 Rapid Bucket 的區域 bucket 讀取物件時。如果是標準 Cloud Storage bucket,gcloud CLI 會套用自己的預設並行設定。

如果是區域值區,gcloud CLI 會根據可用的虛擬 CPU (vCPU) 核心數量,以及您是下載單一物件還是多個物件,自動設定預設並行和切片參數。下表列出這些屬性的預設值:

單一物件下載作業

下載單一物件時,gcloud CLI 會套用下列預設值:

可用的 vCPU 程序數量 執行緒數量 切片門檻 元件數量上限 元件大小
≥ 8 8 2 50 MiB 16 5 MiB
< 8 4 2 50 MiB 8 5 MiB

下載多個物件

同時下載多個物件時,gcloud CLI 會套用下列預設值:

可用的 vCPU 程序數量 執行緒數量 切片門檻 元件數量上限 元件大小
≥ 48 min(96, available_cores * 0.75) 1 10 MiB 5 5 MiB
4 to 47 16 4 10 MiB 10 5 MiB
< 4 2 10 50 MiB 10 5 MiB

調整並行和切片設定

本節說明如何使用 gcloud CLI 設定並行和切片設定,並提供常見硬體環境的建議值。

如何套用設定

如要設定及套用自訂微調設定,請完成下列步驟:

  1. 安裝或更新 Google Cloud CLI 至 583.0.0 以上版本。

  2. 在開發環境中,執行 gcloud config configurations create 指令來建立及啟用設定檔:

    gcloud config configurations create CONFIGURATION_NAME

    CONFIGURATION_NAME 替換為設定檔的名稱,例如 rapid-perf

  3. 執行 gcloud config set 指令,設定並行和切片屬性:

    gcloud config set storage/thread_count THREAD_COUNT
    gcloud config set storage/process_count PROCESS_COUNT
    gcloud config set storage/sliced_object_download_threshold THRESHOLD_SIZE
    gcloud config set storage/sliced_object_download_component_size COMPONENT_SIZE
    gcloud config set storage/sliced_object_download_max_components MAX_COMPONENTS

    將預留位置替換為適合工作負載的值:

    • THREAD_COUNT:每個 worker 程序中的執行緒數量,例如 1
    • PROCESS_COUNT:worker 程序數量,例如 64
    • THRESHOLD_SIZE:觸發切片的最小物件大小閾值,例如多位元組工作負載的 128 MiB (或較小物件的 32 MiB)。
    • COMPONENT_SIZE:每個下載片段的目標大小,例如多 GB 工作負載的 128 MiB (或較小物件的 32 MiB)。
    • MAX_COMPONENTS:每個物件的切片元件數量上限,例如 16

    如要進一步瞭解這些屬性,請參閱「微調建議」。

  4. 執行 gcloud storage cp 指令,將物件下載到本機儲存路徑:

    gcloud storage cp -r gs://BUCKET_NAME/SOURCE_PATH/ /DESTINATION_PATH/

    更改下列內容:

    • BUCKET_NAME:區域 bucket 的名稱。
    • SOURCE_PATH:值區中的來源目錄或物件路徑。
    • DESTINATION_PATH:本機目錄路徑,例如 ./data/,或是本機儲存空間磁碟區的掛接點,例如 /mnt/hyperdisk/data/

調整建議

如要為上一個步驟中的預留位置選擇適當的值,請參閱下列指南:

程序數量

設定 storage/process_count 屬性,根據可用的 CPU 核心數調整平行工作站程序。將程序數量限制在可用 CPU 核心數的 80% 以內:

storage/process_count = min(target_cores, 0.8 * available_cores)

其中:

  • target_cores:要為轉移作業分配的 CPU 核心或工作程序數量 (例如 64)。
  • available_cores:機器上可用的虛擬 CPU (vCPU) 總數 (例如在 Linux 上執行 nproc)。

舉例來說,如果目標是 64 個工作站程序,則具備 80 個以上 vCPU 的機器可將 storage/process_count 設為 64。如果機器的 vCPU 數量少於 80 個,請將 storage/process_count 設為可用核心的 80% (例如,在 64 個 vCPU 的 VM 上設為 51)。

執行緒數量

設定 storage/thread_count 屬性,即可控管每個工作站程序的執行緒數量。在具有 48 個以上 vCPU 的機器上,請將 storage/thread_count 設為 1

在高核心機器上,將每個 worker 程序限制為單一執行緒,有助於減少 Python 全域解譯器鎖定 (GIL) 和 gRPC 執行緒爭用。

切片門檻

設定 storage/sliced_object_download_threshold 屬性,指定觸發切片下載所需的最小物件大小。

建議將 storage/sliced_object_download_threshold 設為大於或等於 storage/sliced_object_download_component_size 的值。

每個物件的切片數

設定 storage/sliced_object_download_component_sizestorage/sliced_object_download_max_components 屬性,控制每個物件產生的平行切片數量。gcloud CLI 會使用下列公式計算每個物件的切片:

Slices per object = min(object_size / component_size, max_components)

如果物件夠大,以 component_size 值進行切片會超過 max_components 值,gcloud CLI 會忽略 component_size 值,並將物件平均分成 max_components 個切片。舉例來說,使用 component_size=128 MiBmax_components=16 下載 100 GiB 物件時,會產生 16 個切片,每個切片為 6.25 GiB。

系統會根據總工作站容量 (storage/process_count × storage/thread_count),平行下載每個切片。

Worker 飽和度

為確保移轉作業期間的工作站使用率維持在高檔,請調整程序計數、執行緒計數、元件大小和元件上限,讓一般移轉作業產生的切片總數足以達到或超過工作站總容量:

Total slices across all objects >= storage/process_count * storage/thread_count

舉例來說,假設您使用 64 個工作程序 (process_count=64thread_count=1) 下載四個物件:

  • 四個 2 GiB 物件:設定 component_size=128 MiB 會為每個物件產生 16 個切片 (4 × 16 = 64 個切片),充分運用所有 64 個工作程序。
  • 四個 512 MiB 物件:設定 component_size=32 MiB 會為每個物件產生 16 個切片 (4 × 16 = 64 個切片)。相較之下,對 512 MiB 物件使用 component_size=128 MiB 時,每個物件只會產生 4 個切片 (總共 16 個切片),導致 48 個工作程序閒置。

NIC 隔離

在 CPU 核心超過 16 個的 Linux 機器上,您可以將 storage/use_nic_isolation 屬性設為 True,啟用網路介面卡 (NIC) 隔離功能:

gcloud config set storage/use_nic_isolation True

啟用這項屬性後,gcloud CLI 會設定 CPU 親和性 (os.sched_setaffinity())。這項設定會將 10% 的 CPU 核心隔離,用於網路硬體中斷要求 (IRQ),並保留其餘核心用於資料處理。

後續步驟