Untuk menetapkan tolok ukur performa Hyperdisk,
gunakanPenguji I/O fleksibel (FIO)
dan bukan alat tolok ukur disk lainnya seperti dd
.
Secara default, dd
menggunakan kedalaman antrean I/O yang sangat rendah, sehingga sulit untuk memastikan
bahwa benchmark menghasilkan jumlah byte dan operasi I/O yang cukup
untuk menguji performa disk secara akurat.
Selain itu, perangkat khusus yang digunakan dengan dd
sering kali sangat lambat dan tidak
menunjukkan performa disk secara akurat. Secara umum, hindari penggunaan perangkat
khusus seperti /dev/urandom
, /dev/random
, dan /dev/zero
dalam
tolok ukur performa Hyperdisk Anda.
Untuk mengukur IOPS dan throughput disk yang digunakan pada instance yang berjalan, tetapkan tolok ukur sistem file dengan konfigurasi yang dimaksudkan. Gunakan opsi ini untuk menguji workload yang realistis tanpa kehilangan isi disk yang sudah ada. Perhatikan bahwa saat Anda menetapkan tolok ukur sistem file pada disk yang sudah ada, ada banyak faktor khusus untuk lingkungan pengembangan Anda yang dapat memengaruhi hasil tolok ukur, dan Anda mungkin tidak mencapai batas performa disk.
Untuk mengukur performa mentah Hyperdisk, tetapkan tolok ukur perangkat blok secara langsung. Gunakan opsi ini untuk membandingkan performa disk mentah dengan batas performa disk.
Perintah berikut berfungsi dengan sistem operasi Debian atau Ubuntu dengan
pengelola paket apt
.
Menetapkan tolok ukur IOPS dan throughput disk pada instance yang sedang berjalan
Jika Anda ingin mengukur IOPS dan throughput untuk workload yang realistis pada disk aktif pada instance VM yang berjalan tanpa kehilangan isi disk Anda, tetapkan tolok ukur terhadap direktori baru pada sistem file yang ada.
Menyiapkan pengujian
Instal dependensi:
sudo apt update sudo apt install -y fio
Jika Hyperdisk Anda belum diformat, format dan pasang disk.
Di terminal, cantumkan disk yang terpasang ke VM Anda dan temukan disk yang ingin diuji.
sudo lsblk
Perintah sebelumnya menghasilkan output yang mirip dengan berikut ini:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme0n1 259:0 0 10G 0 disk ├─nvme0n1p1 259:1 0 9.9G 0 part / ├─nvme0n1p14 259:2 0 4M 0 part └─nvme0n1p15 259:3 0 106M 0 part /boot/efi nvme0n2 259:4 0 3.4T 0 disk
Dalam contoh ini, kami menguji volume Hyperdisk Extreme 3.500 GiB dengan nama perangkat
nvme0n2
.Buat direktori baru,
fiotest
, di disk. Dalam contoh ini, disk dipasang di/mnt/disks/mnt_dir
:TEST_DIR=/mnt/disks/mnt_dir/fiotest sudo mkdir -p $TEST_DIR
Jika VM menggunakan antarmuka disk NVMe untuk lampiran Hyperdisk (jika nama disk mentah diawali dengan
nvme
), lakukan langkah-langkah berikut untuk mendapatkan jumlah node NUMA yang tersedia untuk VM.Strategi tolok ukur untuk disk NVMe berbeda untuk VM yang hanya memiliki satu node NUMA dan VM yang memiliki lebih dari satu node NUMA. Saat menguji performa Hyperdisk menggunakan antarmuka disk NVMe, hanya 256 ukuran antrean NVMe yang dialokasikan per antrean. Karena terbatasnya ukuran antrean NVMe yang tersedia dan potensi pertentangan yang berasal dari disk lain yang terpasang ke VM yang sama, pengujian tolok ukur ini menggunakan dua antrean disk NVMe untuk mempertahankan ukuran antrean gabungan yang mampu menangani iodepth 256.
Dapatkan jumlah node NUMA.
lscpu | grep -i 'numa node(s)' | awk '{print $NF}'
Jika VM hanya memiliki 1 node NUMA, dapatkan pemetaan antrean CPU-ke-NVMe. Anda akan menggunakan informasi ini nanti untuk parameter
--cpus-allowed
.QUEUE_1_CPUS=$(cat /sys/class/block/nvme0n2/mq/*/cpu_list | sed -n 1p | tr -d " \t") QUEUE_2_CPUS=$(cat /sys/class/block/nvme0n2/mq/*/cpu_list | sed -n 2p | tr -d " \t")
Menguji throughput tulis
Uji throughput tulis dengan melakukan penulisan berurutan pada beberapa aliran data paralel (16+), menggunakan ukuran blok I/O 1 MB dan kedalaman I/O minimal 64.
Jika Hyperdisk menggunakan antarmuka SCSI:
sudo fio --directory=$TEST_DIR \ --numjobs=16 --size=10G --time_based \ --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=1M --iodepth=64 --rw=write \ --iodepth_batch_submit=64 --iodepth_batch_complete_max=64 \ --name=write_throughput
Jika Hyperdisk menggunakan antarmuka NVMe:
Jika VM hanya memiliki satu node NUMA, gunakan perintah berikut:
sudo fio --directory=$TEST_DIR --numjobs=8 \ --size=10G --time_based --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=1M --iodepth=64 --rw=write \ --iodepth_batch_submit=64 --iodepth_batch_complete_max=64 \ --cpus_allowed_policy=split \ --group_reporting \ --name=write_throughput --cpus_allowed=$QUEUE_1_CPUS \ --name=write_throughput_2 --cpus_allowed=$QUEUE_2_CPUS
Jika VM memiliki lebih dari satu node NUMA, gunakan perintah berikut:
sudo fio --directory=$TEST_DIR --numjobs=8 \ --size=10G --time_based --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=1M --iodepth=64 --rw=write \ --iodepth_batch_submit=64 --iodepth_batch_complete_max=64 \ --group_reporting \ --name=write_throughput --numa_cpu_nodes=0 \ --name=write_throughput_2 --numa_cpu_nodes=1
Menguji IOPS tulis
Uji IOPS penulisan dengan melakukan penulisan acak, menggunakan ukuran blok I/O 4 KB dan kedalaman I/O minimal 256.
Jika Hyperdisk dipasang menggunakan antarmuka SCSI:
sudo fio --directory=$TEST_DIR \ --numjobs=16 --size=10G -time_based \ --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=4K --iodepth=256 --rw=randwrite \ --iodepth_batch_submit=256 --iodepth_batch_complete_max=256 \ --name=write_iops
Jika Hyperdisk menggunakan antarmuka NVMe:
Jika VM hanya memiliki satu node NUMA, gunakan perintah berikut:
sudo fio --directory=$TEST_DIR --numjobs=8 \ --size=10G --time_based --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=4K --iodepth=256 --rw=randwrite \ --iodepth_batch_submit=256 --iodepth_batch_complete_max=256 \ --cpus_allowed_policy=split \ --group_reporting \ --name=write_iops --cpus_allowed=$QUEUE_1_CPUS \ --name=write_iops_2 --cpus_allowed=$QUEUE_2_CPUS
Jika VM memiliki lebih dari satu node NUMA, gunakan perintah berikut:
sudo fio --directory=$TEST_DIR --numjobs=8 --size=10G \ --time_based --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=4K --iodepth=256 --rw=randwrite \ --iodepth_batch_submit=256 --iodepth_batch_complete_max=256 \ --group_reporting \ --name=write_iops --numa_cpu_nodes=0 \ --name=write_iops_2 --numa_cpu_nodes=1
Menguji throughput baca
Uji throughput baca dengan melakukan pembacaan berurutan dengan beberapa aliran data paralel (16+), menggunakan ukuran blok I/O 1 MB, dan kedalaman I/O minimal 64.
Jika Hyperdisk menggunakan antarmuka SCSI:
sudo fio --directory=$TEST_DIR \ --numjobs=16 --size=10G --time_based \ --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=1M --iodepth=64 --rw=read \ --iodepth_batch_submit=64 --iodepth_batch_complete_max=64 \ --name=read_throughput
Jika Hyperdisk menggunakan antarmuka NVMe:
Jika VM hanya memiliki satu node NUMA, gunakan perintah berikut:
sudo fio --directory=$TEST_DIR --numjobs=8 --size=10G \ --time_based --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=1M --iodepth=64 --rw=read \ --iodepth_batch_submit=64 --iodepth_batch_complete_max=64 \ --cpus_allowed_policy=split \ --group_reporting \ --name=read_throughput --cpus_allowed=$QUEUE_1_CPUS \ --name=read_throughput_2 --cpus_allowed=$QUEUE_2_CPUS
Jika VM memiliki lebih dari satu node NUMA, gunakan perintah berikut:
sudo fio --directory=$TEST_DIR --numjobs=8 --size=10G \ --time_based --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=1M --iodepth=64 --rw=read \ --iodepth_batch_submit=64 --iodepth_batch_complete_max=64 \ --group_reporting \ --name=read_throughput --numa_cpu_nodes=0 \ --name=read_throughput_2 --numa_cpu_nodes=1
Menguji IOPS baca
Uji IOPS baca dengan melakukan pembacaan acak, menggunakan ukuran blok I/O 4 KB dan kedalaman I/O minimal 256.
Jika Hyperdisk menggunakan antarmuka SCSI:
sudo fio --directory=$TEST_DIR \ --numjobs=16 --size=10G --time_based \ --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=4K --iodepth=256 --rw=randread \ --iodepth_batch_submit=256 --iodepth_batch_complete_max=256 \ --name=read_iops
Jika Hyperdisk menggunakan antarmuka NVMe:
Jika VM hanya memiliki satu node NUMA, gunakan perintah berikut:
sudo fio --directory=$TEST_DIR --numjobs=8 --size=10G \ --time_based --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=4K --iodepth=256 --rw=randread \ --iodepth_batch_submit=256 --iodepth_batch_complete_max=256 \ --cpus_allowed_policy=split \ --group_reporting \ --name=read_iops --cpus_allowed=$QUEUE_1_CPUS \ --name=read_iops_2 --cpus_allowed=$QUEUE_2_CPUS
Jika VM memiliki lebih dari satu node NUMA, gunakan perintah berikut:
sudo fio --directory=$TEST_DIR --numjobs=8 --size=10G \ --time_based --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=4K --iodepth=256 --rw=randread \ --iodepth_batch_submit=256 --iodepth_batch_complete_max=256 \ --group_reporting \ --name=read_iops --numa_cpu_nodes=0 \ --name=read_iops_2 --numa_cpu_nodes=1
Pembersihan
Hapus direktori pengujian.
sudo rm $TEST_DIR/write* $TEST_DIR/read*
Benchmark IOPS dan throughput untuk Hyperdisk Ekstrem pada VM C3
Google Cloud Hyperdisk Ekstrem menawarkan performa yang lebih tinggi pada VM C3 dengan 176 vCPU. Untuk mencapai batas performa yang lebih tinggi, Anda harus melampirkan beberapa volume Hyperdisk Ekstrem ke VM.
Guna mengukur I/O per detik (IOPS) atau throughput untuk workload yang realistis pada disk aktif pada VM C3 yang berjalan tanpa kehilangan konten disk data yang ada, lakukan tolok ukur terhadap direktori baru pada sistem file yang ada dan tambahkan volume Hyperdisk Ekstrem baru ke VM untuk tugas tolok ukur.
Untuk disk yang terpasang dengan antarmuka NVMe, sebaiknya mendistribusikan beban kerja I/O ke semua antrean NVMe yang tersedia untuk VM. Hal ini akan memaksimalkan performa Hyperdisk. Pada VM C3 dengan 176 vCPU, ada empat node NUMA yang dipetakan 1-ke-1 ke empat antrean NVMe. Pemetaan ini diasumsikan untuk pengujian benchmark di bagian ini.
Menyiapkan pengujian
Tambahkan disk Hyperdisk Ekstrem baru ke VM Anda, dan lihat Batas performa Hyperdisk untuk mendapatkan penyiapan disk yang diperlukan untuk performa target Anda.
Hubungkan ke instance Anda:
Instal dependensi:
sudo apt update sudo apt install -y fio
Buat daftar disk yang terpasang ke VM Anda dan temukan disk yang ingin diuji.
sudo lsblk
Perintah sebelumnya menghasilkan output yang mirip dengan berikut ini:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme0n1 259:0 0 10G 0 disk ├─nvme0n1p1 259:1 0 9.9G 0 part / ├─nvme0n1p14 259:2 0 4M 0 part └─nvme0n1p15 259:3 0 106M 0 part /boot/efi nvme0n2 259:4 0 2.5T 0 disk nvme0n3 259:5 0 2.5T 0 disk nvme0n4 259:6 0 2.5T 0 disk
Dalam contoh ini, kami menguji performa Google Cloud Hyperdisk di tiga volume Hyperdisk Ekstrem 2.500 GiB dengan perangkat bernama
nvme0n2
,nvme0n3
, dannvme0n4
.
Throughput benchmark Hyperdisk Ekstrem pada C3
Bagian ini menunjukkan cara mengukur throughput baca dan tulis untuk disk Hyperdisk Ekstrem.
Persiapan untuk pengujian
Sebelum memulai benchmark performa disk Hyperdisk Ekstrem yang terpasang ke VM C3 dengan 176 vCPU, selesaikan langkah-langkah berikut.
Buat direktori baru,
fiotest
, di sistem operasi Anda. Dalam contoh ini, direktori utama adalah/mnt/disks/mnt_dir
:TEST_DIR=/mnt/disks/mnt_dir/fiotest sudo mkdir -p $TEST_DIR
Karena VM memerlukan lebih dari satu disk untuk mencapai level performa tertinggi, jalankan RAID 0 pada semua volume Hyperdisk yang terpasang. Hal ini memudahkan data untuk didistribusikan secara merata ke beberapa volume Hyperdisk.
Dalam contoh ini, RAID 0 adalah performa pada tiga volume Hyperdisk Ekstrem yang terpasang ke VM C3.
sudo mdadm --create /dev/md0 --level=0 --raid-devices=3 /dev/nvme0n2 /dev/nvme0n3 /dev/nvme0n4
Memformat dan memasang volume RAID
/dev/md0
.
Menguji throughput tulis
Uji throughput tulis dengan melakukan penulisan berurutan pada beberapa streaming paralel (minimal 16), menggunakan blok I/O ukuran 1 MiB dan total kedalaman I/O minimal 32 per antrean NVMe.
# Running this command causes data loss on the targeted file on the device. # We strongly recommend using a throwaway disk. sudo fio --name=global --group_reporting=1 --filesize=1024G \ --filename=$TEST_DIR/fiotestfile --numjobs=4 --size=64G \ --offset_increment=64G --time_based --runtime=5m \ --ramp_time=10s --ioengine=libaio --direct=1 --verify=0 \ --bs=1M --iodepth=8 --rw=write \ --name=write_throughput --numa_cpu_nodes=0 \ --name=write_throughput_1 --numa_cpu_nodes=1 \ --name=write_throughput_2 --numa_cpu_nodes=2 \ --name=write_throughput_3 --numa_cpu_nodes=3
Menguji throughput baca
Uji throughput operasi baca dengan melakukan operasi baca berurutan pada beberapa stream paralel (minimal 16), menggunakan blok I/O ukuran 1 MiB dan total kedalaman I/O minimal 32 per antrean NVMe.
sudo fio --name=global --group_reporting=1 --filesize=1024G \ --filename=$TEST_DIR/fiotestfile --numjobs=4 --size=64G \ --offset_increment=64G --time_based --runtime=5m \ --ramp_time=10s --ioengine=libaio --direct=1 \ --verify=0 --bs=1M --iodepth=8 --rw=read \ --name=read_throughput --numa_cpu_nodes=0 \ --name=read_throughput_1 --numa_cpu_nodes=1 \ --name=read_throughput_2 --numa_cpu_nodes=2 \ --name=read_throughput_3 --numa_cpu_nodes=3
Tolok Ukur IOPS Hyperdisk Ekstrem pada C3
Untuk mengukur performa I/O per detik (IOPS), sebaiknya lakukan operasi I/O kecil paralel langsung ke atau dari disk mentah (tanpa RAID).
Menguji IOPS tulis
Uji IOPS penulisan dengan melakukan penulisan acak, menggunakan ukuran blok I/O 4 KiB dan kedalaman I/O minimal 256, yang memanfaatkan setidaknya 2 antrean NVMe.
# Running this command causes data loss on the targeted device. # We strongly recommend using a throwaway disk. sudo fio --name=global --group_reporting=1 \ --directory=/ --bs=4K --direct=1 \ --filesize=512G --iodepth=256 \ --iodepth_batch_complete_max=256 --iodepth_batch_submit=256 \ --ioengine=libaio --numjobs=5 --ramp_time=10s \ --randrepeat=0 --runtime=5m --rw=randwrite \ --time_based=1 --verify=0 \ --name=write_iops_test --filename=/dev/nvme0n2 --numa_cpu_nodes=0 \ --name=write_iops_test_1 --filename=/dev/nvme0n3 --numa_cpu_nodes=1 \ --name=write_iops_test_2 --filename=/dev/nvme0n4 --numa_cpu_nodes=2
Menguji IOPS baca
Uji IOPS baca dengan melakukan pembacaan acak, menggunakan ukuran blok I/O 4 KiB dan kedalaman I/O minimal 256, yang menggunakan setidaknya 2 antrean NVMe.
sudo fio --name=global --group_reporting=1 --directory=/ \ --bs=4K --direct=1 --filesize=512G --iodepth=256 \ --iodepth_batch_complete_max=256 --iodepth_batch_submit=256 \ --ioengine=libaio --numjobs=5 --ramp_time=10s \ --randrepeat=0 --runtime=5m --rw=randread \ --time_based=1 --verify=0 \ --name=read_iops_test --filename=/dev/nvme0n2 --numa_cpu_nodes=0 \ --name=read_iops_test_1 --filename=/dev/nvme0n3 --numa_cpu_nodes=1 \ --name=read_iops_test_2 --filename=/dev/nvme0n4 --numa_cpu_nodes=2
Latensi benchmark Hyperdisk Ekstrem pada C3
Saat menguji latensi I/O, VM tidak boleh mencapai bandwidth atau IOPS maksimum. Jika ya, latensi yang diamati tidak akan mencerminkan latensi I/O Hyperdisk yang sebenarnya.
Misalnya, jika VM mencapai batas IOPS pada kedalaman I/O 30 dan
perintah fio
telah menggandakannya, total IOPS tetap sama dan
latensi I/O yang dilaporkan berlipat ganda.
Cukup menargetkan satu perangkat disk mentah secara langsung untuk mendapatkan latensi I/O yang realistis.
Menguji latensi tulis
Uji latensi tulis dengan melakukan penulisan acak, menggunakan ukuran blok I/O 4 KiB dan kedalaman I/O 4.
# Running this command causes data loss on the targeted device. # We strongly recommend using a throwaway disk. sudo fio --filename=/dev/nvme0n2 \ --filesize=512G --time_based \ --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=4K --iodepth=4 --rw=randwrite \ --iodepth_batch_submit=4 --iodepth_batch_complete_max=4 \ --name=write_latency
Menguji latensi baca
Uji latensi baca dengan melakukan pembacaan acak, menggunakan ukuran blok I/O 4 KiB dan kedalaman I/O 4.
sudo fio --filename=/dev/nvme0n2 \ --filesize=512G --time_based \ --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=4K --iodepth=4 --rw=randread \ --iodepth_batch_submit=4 --iodepth_batch_complete_max=4 \ --name=read_latency
Pembersihan
Hapus file pengujian.
sudo rm -rf $TEST_DIR/*
Lepaskan dan hentikan volume RAID.
sudo umount /dev/md0 sudo mdadm --stop /dev/md0
Lepaskan dan hapus volume Hyperdisk yang terpasang. Lihat perintah
gcloud compute instances detach-disk
dangcloud compute disks delete
.
Menetapkan tolok ukur performa Hyperdisk mentah
Jika ingin mengukur performa volume Hyperdisk saja, di luar lingkungan pengembangan, Anda dapat menguji performa baca dan tulis untuk perangkat blok pada disk dan VM sekali pakai.
Perintah berikut mengasumsikan volume Hyperdisk Extreme sebesar 3.500 GiB
yang terpasang ke VM Anda. Ukuran disk ini diperlukan untuk mencapai
batas throughput VM 32 vCPU. Jika ukuran perangkat Anda berbeda,
ubah nilai argumen --filesize
dalam perintah berikut.
Untuk mengetahui informasi selengkapnya tentang batas performa jenis mesin VM, lihat
Dukungan jenis mesin.
Menyiapkan pengujian
Instal dependensi:
sudo apt-get update sudo apt-get install -y fio
Dapatkan jalur ke disk mentah. Simpan jalur dalam variabel. Contoh berikut menggunakan
/dev/nvme0n2
sebagai jalur disk mentah:TEST_DIR=/dev/nvme0n2
Isi disk dengan data yang bukan nol. Pembacaan Hyperdisk dari blok kosong memiliki profil latensi yang berbeda dari blok yang berisi data. Sebaiknya isi disk sebelum menjalankan tolok ukur latensi baca.
# Running this command causes data loss on the second device. # We strongly recommend using a throwaway VM and disk. sudo fio --name=fill_disk \ --filename=$TEST_DIR --filesize=2500G \ --ioengine=libaio --direct=1 --verify=0 --randrepeat=0 \ --bs=128K --iodepth=64 --rw=randwrite \ --iodepth_batch_submit=64 --iodepth_batch_complete_max=64
Jika VM menggunakan antarmuka disk NVMe untuk lampiran Hyperdisk (jika nama disk mentah diawali dengan
nvme
), lakukan langkah-langkah berikut untuk mendapatkan jumlah node NUMA yang tersedia untuk VM.Strategi tolok ukur untuk disk NVMe berbeda untuk VM yang hanya memiliki satu node NUMA dan VM yang memiliki lebih dari satu node NUMA. Saat menguji performa Hyperdisk menggunakan antarmuka disk NVMe, hanya 256 ukuran antrean NVMe yang dialokasikan per antrean. Karena terbatasnya ukuran antrean NVMe yang tersedia dan potensi pertentangan yang berasal dari disk lain yang terpasang ke VM yang sama, pengujian tolok ukur ini menggunakan dua antrean disk NVMe untuk mempertahankan ukuran antrean gabungan yang mampu menangani iodepth 256.
Dapatkan jumlah node NUMA.
lscpu | grep -i 'numa node(s)' | awk '{print $NF}'
Jika VM hanya memiliki 1 node NUMA, dapatkan pemetaan antrean CPU-ke-NVMe. Anda akan menggunakan informasi ini nanti untuk parameter
--cpus-allowed
.QUEUE_1_CPUS=$(cat /sys/class/block/nvme0n2/mq/*/cpu_list | sed -n 1p | tr -d " \t") QUEUE_2_CPUS=$(cat /sys/class/block/nvme0n2/mq/*/cpu_list | sed -n 2p | tr -d " \t")
Menguji throughput tulis
Uji throughput tulis dengan melakukan penulisan berurutan pada beberapa aliran data paralel (16+), menggunakan ukuran I/O 1 MB dan kedalaman I/O sebesar 64 atau lebih besar.
Jika Hyperdisk dipasang menggunakan antarmuka SCSI:
# Running this command causes data loss on the second device. # We strongly recommend using a throwaway VM and disk. sudo fio --filename=$TEST_DIR \ --numjobs=16 --size=500G --time_based \ --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=1M --iodepth=64 --rw=write \ --iodepth_batch_submit=64 --iodepth_batch_complete_max=64 \ --offset_increment=20G \ --name=write_throughput
Jika Hyperdisk menggunakan antarmuka NVMe:
Jika VM hanya memiliki satu node NUMA, gunakan perintah berikut:
# Running this command causes data loss on the second device. # We strongly recommend using a throwaway VM and disk. sudo fio --filename=$TEST_DIR --numjobs=8 --size=500G \ --time_based --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=1M --iodepth=64 --rw=write \ --iodepth_batch_submit=64 --iodepth_batch_complete_max=64 \ --cpus_allowed_policy=split \ --offset_increment=20G --group_reporting \ --name=write_throughput --cpus_allowed=$QUEUE_1_CPUS \ --name=write_throughput_2 --cpus_allowed=$QUEUE_2_CPUS
Jika VM memiliki lebih dari satu node NUMA, gunakan perintah berikut:
# Running this command causes data loss on the second device. # We strongly recommend using a throwaway VM and disk. sudo fio --filename=$TEST_DIR --numjobs=8 --size=500G \ --time_based --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=1M --iodepth=64 --rw=write \ --iodepth_batch_submit=64 --iodepth_batch_complete_max=64 \ --offset_increment=20G --group_reporting \ --name=write_throughput --numa_cpu_nodes=0 \ --name=write_throughput_2 --numa_cpu_nodes=1
Menguji IOPS tulis
Untuk mencapai IOPS Hyperdisk maksimum, Anda harus mempertahankan antrean I/O yang dalam. Jika, misalnya, latensi tulis adalah 1 milidetik, VM dapat mencapai maksimal 1.000 IOPS untuk setiap I/O yang sedang beroperasi. Untuk mencapai 15.000 IOPS tulis, VM harus mempertahankan minimal 15 operasi I/O selama beroperasi. Jika disk dan VM Anda dapat mencapai 30.000 IOPS tulis, jumlah operasi I/O dalam penerbangan minimal harus 30. Jika ukuran I/O lebih besar dari 4 KB, VM mungkin mencapai batas bandwidth sebelum mencapai batas IOPS.
Uji IOPS penulisan dengan melakukan penulisan acak, menggunakan ukuran blok I/O 4 KB dan kedalaman I/O minimal 256.
Jika volume Hyperdisk Ekstrem dipasang menggunakan antarmuka SCSI:
# Running this command causes data loss on the second device. # We strongly recommend using a throwaway VM and disk. sudo fio --filename=$TEST_DIR \ --numjobs=16 --size=500G -time_based \ --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=4K --iodepth=256 --rw=randwrite \ --iodepth_batch_submit=256 --iodepth_batch_complete_max=256 \ --name=write_iops
Jika volume Hyperdisk Ekstrem dipasang menggunakan antarmuka NVMe:
Jika VM hanya memiliki satu node NUMA, gunakan perintah berikut:
# Running this command causes data loss on the second device. # We strongly recommend using a throwaway VM and disk. sudo fio --filename=$TEST_DIR --numjobs=8 --size=500G \ --time_based --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=4K --iodepth=256 --rw=randwrite \ --iodepth_batch_submit=256 --iodepth_batch_complete_max=256 \ --cpus_allowed_policy=split \ --group_reporting \ --name=write_write_iops --cpus_allowed=$QUEUE_1_CPUS \ --name=write_write_iops_2 --cpus_allowed=$QUEUE_2_CPUS
Jika VM memiliki lebih dari satu node NUMA, gunakan perintah berikut:
# Running this command causes data loss on the second device. # We strongly recommend using a throwaway VM and disk. sudo fio --filename=$TEST_DIR --numjobs=8 --size=500G \ --time_based --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=4K --iodepth=256 --rw=randwrite \ --iodepth_batch_submit=256 --iodepth_batch_complete_max=256 \ --group_reporting \ --name=write_iops --numa_cpu_nodes=0 \ --name=write_iops_2 --numa_cpu_nodes=1
Menguji latensi tulis
Saat menguji latensi I/O, VM tidak boleh mencapai bandwidth atau IOPS maksimum.
Jika tidak, latensi yang diamati tidak akan mencerminkan latensi I/O Hyperdisk yang sebenarnya. Misalnya, jika batas IOPS tercapai pada kedalaman I/O 30 dan
perintah fio
telah melipatgandakannya, total IOPS tetap sama dan
latensi I/O yang dilaporkan meningkat dua kali lipat.
# Running this command causes data loss on the second device. # We strongly recommend using a throwaway VM and disk. sudo fio --filename=$TEST_DIR \ --filesize=500G --time_based \ --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=4K --iodepth=4 --rw=randwrite \ --iodepth_batch_submit=4 --iodepth_batch_complete_max=4 \ --name=write_latency
Menguji bandwidth baca
Uji bandwidth baca dengan melakukan pembacaan berurutan dengan beberapa aliran data paralel (16+), menggunakan ukuran I/O 1 MB dan kedalaman I/O minimal 64.
Jika volume Hyperdisk Ekstrem dipasang menggunakan antarmuka SCSI:
sudo fio --filename=$TEST_DIR \ --numjobs=16 --size=500G --time_based \ --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=1M --iodepth=64 --rw=read \ --iodepth_batch_submit=64 --iodepth_batch_complete_max=64 \ --offset_increment=20G --name=read_bandwidth
Jika volume Hyperdisk Ekstrem dipasang menggunakan antarmuka NVMe:
Jika VM hanya memiliki satu node NUMA, gunakan perintah berikut:
sudo fio --filename=$TEST_DIR --numjobs=8 --size=500G \ --time_based --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=1M --iodepth=64 --rw=read \ --iodepth_batch_submit=64 --iodepth_batch_complete_max=64 \ --cpus_allowed_policy=split \ --offset_increment=20G --group_reporting \ --name=read_bandwidth --cpus_allowed=$QUEUE_1_CPUS \ --name=read_bandwidth_2 --cpus_allowed=$QUEUE_2_CPUS
Jika VM memiliki lebih dari satu node NUMA, gunakan perintah berikut:
sudo fio --filename=$TEST_DIR --numjobs=8 --size=500G \ --time_based --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=1M --iodepth=64 --rw=read \ --iodepth_batch_submit=64 --iodepth_batch_complete_max=64 \ --offset_increment=20G --group_reporting \ --name=read_bandwidth --numa_cpu_nodes=0 \ --name=read_bandwidth_2 --numa_cpu_nodes=1
Menguji IOPS baca
Untuk mencapai IOPS Hyperdisk maksimum, Anda harus mempertahankan antrean I/O yang dalam.
Misalnya, jika ukuran I/O lebih besar dari 4 KB, VM mungkin mencapai
batas bandwidth sebelum mencapai batas IOPS. Guna mencapai IOPS
baca maksimum yang tersedia untuk sebuah jenis mesin, tentukan --iodepth=256
untuk pengujian ini.
Jika volume Hyperdisk Ekstrem dipasang menggunakan antarmuka SCSI:
sudo fio --filename=$TEST_DIR \ --numjobs=16 --size=500G --time_based \ --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=4K --iodepth=256 --rw=randread \ --iodepth_batch_submit=256 --iodepth_batch_complete_max=256 \ --name=read_iops
Jika volume Hyperdisk Ekstrem dipasang menggunakan antarmuka NVMe:
Jika VM hanya memiliki satu node NUMA, gunakan perintah berikut:
sudo fio --filename=$TEST_DIR --numjobs=8 --size=500G \ --time_based --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=4K --iodepth=256 --rw=randread \ --iodepth_batch_submit=256 --iodepth_batch_complete_max=256 \ --cpus_allowed_policy=split \ --group_reporting \ --name=read_iops --cpus_allowed=$QUEUE_1_CPUS \ --name=read_iops_2 --cpus_allowed=$QUEUE_2_CPUS
Jika VM memiliki lebih dari satu node NUMA, gunakan perintah berikut:
sudo fio --filename=$TEST_DIR --numjobs=8 --size=500G \ --time_based --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=4K --iodepth=256 --rw=randread \ --iodepth_batch_submit=256 --iodepth_batch_complete_max=256 \ --group_reporting \ --name=read_iops --numa_cpu_nodes=0 \ --name=read_iops_2 --numa_cpu_nodes=1
Menguji latensi baca
Penting untuk mengisi disk dengan data guna mendapatkan pengukuran latensi yang realistis. VM tidak boleh mencapai IOPS atau batas throughput selama pengujian ini karena setelah volume Hyperdisk mencapai batas saturasinya, VM akan mendorong kembali operasi I/O yang masuk. Penolakan ini dicerminkan sebagai peningkatan buatan dalam latensi I/O.
sudo fio --filename=$TEST_DIR \ --filesize=500G --time_based \ --runtime=5m --ramp_time=10s --ioengine=libaio \ --direct=1 --verify=0 --bs=4K --iodepth=4 --rw=randread \ --iodepth_batch_submit=4 --iodepth_batch_complete_max=4 \ --name=read_latency
Pembersihan
Jika menggunakan disk dan VM sekali pakai seperti yang direkomendasikan, setelah menyelesaikan pengujian tolok ukur, Anda dapat:
- Melepaskan dan menghapus disk.
- Menghapus VM.
Langkah selanjutnya
- Pelajari Harga Hyperdisk.