本頁面將說明 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。
在所有用戶端 VM 上啟動 fio 伺服器。Fio 會使用通訊埠
8765
進行通訊,因此防火牆政策必須開啟這個通訊埠。fio --server
選取要用來協調 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
建立包含 fio 用戶端 VM 的 IP 位址或 DNS 名稱的
hosts.list
檔案:cat << EOL > /tmp/hosts.list <Client 1 IP/DNS> <Client 2 IP/DNS> ... <Client N IP/DNS> EOL
在建立工作檔案的用戶端 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
使用您建立工作檔案的用戶端 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
測試完成後,請停止所有用戶端 VM 上的 fio 伺服器,並刪除其暫存目錄:
rm -rf ${TMP_DIR}