本頁面說明如何對 Filestore 執行個體進行效能測試。
總覽
如果您使用 Linux,可以透過 彈性 IO 測試工具 (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選取一個用戶端 VM,用來協調 fio 執行作業。在該用戶端 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建立
hosts.list檔案,其中包含 fio 用戶端 VM 的 IP 位址或 DNS 名稱: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}