使用 Google Cloud CLI 從 Rapid Bucket 的區域值區讀取物件時,CLI 會根據可用的系統資源,自動套用預設的並行和切片設定。
本文將說明這些預設設定,並說明如何設定並行、程序擴充和選擇性功能 (例如 NIC 隔離),針對特定工作負載調整 gcloud CLI 效能。
調整效能設定前,請務必建立區域值區。如果將物件下載至附加的儲存空間磁碟區 (例如 Hyperdisk 或本機 SSD),請格式化並掛接環境中的磁碟區。如果您打算掛接區域 bucket 做為檔案系統,而非使用 gcloud CLI,請參閱「Rapid Bucket 的 Cloud Storage FUSE 效能」。如要瞭解一般切片概念,請參閱「下載切片物件」。
預設並行和切片設定
本節所述的預設設定,特別適用於使用 gcloud CLI 583.0.0 以上版本,從 Rapid Bucket 的區域 bucket 讀取物件時。如果是標準 Cloud Storage bucket,gcloud CLI 會套用自己的預設並行設定。
如果是區域值區,gcloud CLI 會根據可用的虛擬 CPU (vCPU) 核心數量,以及您下載單一或多個物件,自動設定預設並行和切片參數。這些預設值會設定下列屬性:
- 程序計數:
storage/process_count - 執行緒數量:
storage/thread_count - 切片門檻:
storage/sliced_object_download_threshold - 元件數量上限:
storage/sliced_object_download_max_components - 元件大小:
storage/sliced_object_download_component_size
以下各節列出單一物件和多個物件下載作業的預設值。
單一物件下載作業
下載單一物件時,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 |
設定並行和切片屬性
如要設定及套用自訂微調設定,請完成下列步驟:
安裝或更新 Google Cloud CLI 至 583.0.0 以上版本。
在開發環境中,執行
gcloud config configurations create指令來建立及啟用設定檔:gcloud config configurations create CONFIGURATION_NAME
將
CONFIGURATION_NAME替換為設定檔的名稱,例如rapid-perf。執行
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。
如要進一步瞭解這些屬性,請參閱「微調建議」。
如要將物件下載至本機儲存路徑,請執行
gcloud storage cp指令:gcloud storage cp -r gs://BUCKET_NAME/SOURCE_PATH LOCAL_DESTINATION_PATH
更改下列內容:
BUCKET_NAME:區域 bucket 的名稱。SOURCE_PATH:值區中的來源目錄或物件路徑。LOCAL_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)。
舉例來說,如果目標是在配備 80 個以上 vCPU 的機器上執行 64 個工作站程序,請將 storage/process_count 設為 64。在 vCPU 數量少於 80 個的機器上,將 storage/process_count 設為可用 vCPU 數量的 80% (例如,在 64 個 vCPU 的 VM 上,51 為 51)。
執行緒數量
設定 storage/thread_count 屬性,即可控管每個工作站程序的執行緒數量。在具有 48 個以上 vCPU 的機器上,請將 storage/thread_count 設為 1。
在 vCPU 數量達 48 個以上的機器上,將每個工作站程序限制為單一執行緒,可減少 Python 全域解譯器鎖定 (GIL) 和 gRPC 執行緒的爭用情形。
切片門檻
設定 storage/sliced_object_download_threshold 屬性,指定觸發切片下載所需的最小物件大小。
建議將 storage/sliced_object_download_threshold 設為大於或等於 storage/sliced_object_download_component_size 的值。
每個物件的切片數
設定 storage/sliced_object_download_component_size 和 storage/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 MiB 和 max_components=16 下載 100 GiB 物件時,會產生 16 個切片,每個切片為 6.25 GiB。
gcloud CLI 會根據總工作人員容量 (storage/process_count ×
storage/thread_count),獨立且平行下載每個切片。
Worker 飽和度
如要在整個轉移過程中維持高工作站使用率,您必須調整程序計數、執行緒計數、元件大小和元件上限。這些調整可確保一般轉移作業產生的總切片數,足以達到或超過總工作人員容量:
Total slices across all objects >= storage/process_count * storage/thread_count
舉例來說,假設您使用 64 個工作程序 (process_count=64 和 thread_count=1) 下載四個物件:
- 四個 2 GiB 物件:設定
component_size=128 MiB會為每個物件產生 16 個切片 (4 × 16 = 64 個切片),充分運用所有 64 個工作程序。 - 四個 512 MiB 物件:設定
component_size=32 MiB會為每個物件產生 16 個切片 (4 × 16 = 64 個切片),充分運用所有 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),並保留其餘核心用於資料處理。