測試執行個體效能

本頁面將說明 Filestore 執行個體的效能測試。

總覽

如果您使用 Linux,可以使用 Flexible IO Tester (fio) 工具,針對基本、區域、區域和企業層級執行個體,對讀取總處理量、寫入總處理量、讀取 IOPS 和寫入 IOPS 進行基準測試。

您可以使用單一用戶端 VM 測試基本執行個體的效能。我們不建議使用單一用戶端 VM 來測試區域、區域或企業執行個體,因為擴展服務層級是針對多個用戶端 VM 進行效能最佳化,而單一用戶端通常無法達到叢集 IOPS 或吞吐量的上限。

詳情請參閱「單一和多個用戶端 VM 效能」。

事前準備

在所有用戶端 VM 上掛接要測試的 Filestore 檔案共用區。視服務層級而定,可能會有一個或多個用戶端 VM。如需詳細的操作說明和掛接選項,請參閱「在 Compute Engine 用戶端掛接檔案共用區」。

請務必指定 nconnect 掛接選項,以提升 NFS 效能。針對特定服務層級,我們建議您指定用戶端與伺服器之間的連線數量,如下所示:

級別 容量 連線數量
區域性 1 至 9.75 TiB nconnect=2
區域性 10 至 100 TiB nconnect=7
Enterprise - nconnect=2
高可擴充性固態硬碟 - nconnect=7

您可以調整 read_ahead_kb 參數值,藉此提升 NFS 讀取吞吐量。詳情請參閱「使用 read_ahead_kb 參數最佳化 NFS 讀取吞吐量」。

使用單一用戶端 VM 測試效能

請使用下列情境,在基本例項上執行測試。您可以直接透過指令列執行這些指令。

  • 小於 1 TiB 的基本執行個體的寫入總處理量上限:

    fio --ioengine=libaio --filesize=4G --ramp_time=2s
    --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0
    --group_reporting --directory=/mnt/nfs
    --name=write --blocksize=1m --iodepth=64 --readwrite=write
    
  • 讀取總處理量的上限:

    fio --ioengine=libaio --filesize=32G --ramp_time=2s \
    --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \
    --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \
    --name=read --blocksize=1m --iodepth=64 --readwrite=read
    
  • 寫入總處理量上限:

    fio --ioengine=libaio --filesize=32G --ramp_time=2s \
    --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \
    --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \
    --name=write --blocksize=1m --iodepth=64 --readwrite=write
    
  • 讀取 IOPS 上限:

    fio --ioengine=libaio --filesize=32G --ramp_time=2s \
    --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \
    --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \
    --name=randread --blocksize=4k --iodepth=256 --readwrite=randread
    
  • 最大寫入 IOPS:

    fio --ioengine=libaio --filesize=32G --ramp_time=2s \
    --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \
    --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \
    --name=randwrite --blocksize=4k --iodepth=256 --readwrite=randwrite
    

使用多個用戶端 VM 測試效能

如要達到區域、區域和企業執行個體的最高效能,請使用多個用戶端 VM。

對於 1 到 9.75 TiB 的執行個體,建議每 1 TiB 使用八個用戶端 VM。如果是 10 到 100 TiB 的執行個體,請每 10 TiB 使用八個用戶端 VM。

  1. 在所有用戶端 VM 上啟動 fio 伺服器。Fio 會使用通訊埠 8765 進行通訊,因此防火牆政策必須開啟這個通訊埠。

    fio --server
    
  2. 選取要用來協調 fio 執行作業的用戶端 VM。在該用戶端 VM 上建立 fio 工作檔案

    cat << EOL > /tmp/fio_job.conf
    [global]
    ioengine=libaio
    ramp_time=2s
    runtime=3m
    time_based
    direct=1
    verify=0
    randrepeat=0
    group_reporting
    buffer_compress_percentage=50
    directory=\${TMP_DIR}
    create_only=\${CREATE_ONLY}
    
    [read-throughput]
    blocksize=1048576
    numjobs=8
    readwrite=read
    filesize=100M
    
    [write-throughput]
    blocksize=1048576
    numjobs=8
    readwrite=write
    filesize=100M
    
    [read-iops]
    blocksize=4k
    iodepth=64
    readwrite=randread
    filesize=1GB
    
    [write-iops]
    blocksize=4k
    iodepth=64
    readwrite=randwrite
    filesize=1GB
    
    EOL
    
  3. 建立包含 fio 用戶端 VM 的 IP 位址或 DNS 名稱的 hosts.list 檔案:

    cat << EOL > /tmp/hosts.list
    <Client 1 IP/DNS>
    <Client 2 IP/DNS>
    ...
    <Client N IP/DNS>
    EOL
    
  4. 在建立工作檔案的用戶端 VM 上,在暫存目錄中建立下列資料集:

    export TMP_DIR=$(mktemp -d MOUNT_POINT_DIRECTORY/XXXXX)
    chmod 777 ${TMP_DIR}
    export CREATE_ONLY=1
    fio --client=/tmp/hosts.list \
    --section=read-throughput --section=read-iops /tmp/fio_job.conf
    
  5. 使用您建立工作檔案的用戶端 VM 執行基準測試:

    • 讀取總處理量上限
    export CREATE_ONLY=0
    fio --client=/tmp/hosts.list --section=read-throughput /tmp/fio_job.conf
    
    • 寫入處理量上限
    export CREATE_ONLY=0
    fio --client=/tmp/hosts.list --section=write-throughput /tmp/fio_job.conf
    
    • 最大讀取 IOPS
    export CREATE_ONLY=0
    fio --client=/tmp/hosts.list --section=read-iops /tmp/fio_job.conf
    
    • 最大寫入 IOPS
    export CREATE_ONLY=0
    fio --client=/tmp/hosts.list --section=write-iops /tmp/fio_job.conf
    
  6. 測試完成後,請停止所有用戶端 VM 上的 fio 伺服器,並刪除其暫存目錄:

    rm -rf ${TMP_DIR}