Untuk menetapkan tolok ukur performa Hyperdisk,
gunakan Penguji 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 tolok ukur menghasilkan jumlah byte dan operasi I/O yang memadai
untuk menguji performa disk secara akurat.
Selain itu, perangkat khusus yang digunakan dengan dd
sering kali sangat lambat dan tidak
mencerminkan 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*
Menetapkan tolok ukur IOPS dan throughput untuk Hyperdisk Extreme di VM C3
Google Cloud Hyperdisk Extreme menawarkan performa yang lebih tinggi pada VM C3 dengan 176 vCPU. Untuk mencapai batas performa yang lebih tinggi, Anda harus melampirkan beberapa volume Hyperdisk Extreme ke VM.
Untuk mengukur I/O per detik (IOPS) atau throughput untuk workload yang realistis pada disk aktif di VM C3 yang berjalan tanpa kehilangan isi disk data yang ada, lakukan benchmark terhadap direktori baru di sistem file yang ada dan pasang volume Hyperdisk Extreme baru ke VM untuk tugas benchmark.
Untuk disk yang terpasang dengan antarmuka NVMe, sebaiknya distribusikan beban kerja I/O di 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 Extreme baru ke VM Anda, dan lihat Batas performa Hyperdisk untuk mendapatkan penyiapan disk yang diperlukan untuk performa target Anda.
Menghubungkan ke instance:
Instal dependensi:
sudo apt update sudo apt install -y fio
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 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 Extreme 2.500 GiB dengan perangkat bernama
nvme0n2
,nvme0n3
, dannvme0n4
.
Benchmark throughput Hyperdisk Extreme di C3
Bagian ini menunjukkan cara menjalankan benchmark throughput baca dan tulis untuk disk Hyperdisk Extreme.
Persiapan untuk pengujian
Sebelum Anda mulai menjalankan benchmark performa disk Hyperdisk Extreme 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 tingkat performa tertinggi, untuk memudahkan, lakukan RAID 0 pada semua volume Hyperdisk yang terpasang. Hal ini mempermudah data untuk didistribusikan secara merata di beberapa volume Hyperdisk.
Dalam contoh ini, RAID 0 adalah performa pada tiga volume Hyperdisk Extreme yang dilampirkan ke VM C3.
sudo mdadm --create /dev/md0 --level=0 --raid-devices=3 /dev/nvme0n2 /dev/nvme0n3 /dev/nvme0n4
Format dan pasang volume RAID
/dev/md0
.
Menguji throughput tulis
Uji throughput tulis dengan melakukan penulisan berurutan pada beberapa aliran data paralel (minimal 16), menggunakan ukuran blok I/O 1 MiB dan kedalaman I/O total 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 baca dengan melakukan pembacaan berurutan dengan beberapa aliran data paralel (minimal 16), menggunakan ukuran blok I/O 1 MiB dan kedalaman I/O total 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
Benchmark IOPS Hyperdisk Extreme di C3
Untuk menjalankan benchmark 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, menggunakan minimal 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, menggunakan minimal 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 Extreme di 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 melipatgandakannya, total IOPS tetap sama dan
latensi I/O yang dilaporkan meningkat dua kali lipat.
Anda 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 setidaknya 15 operasi I/O yang sedang beroperasi. Jika disk dan VM Anda dapat mencapai 30.000 IOPS tulis, jumlah operasi I/O yang sedang beroperasi harus minimal 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 Extreme terpasang 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 Extreme terpasang 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 Extreme terpasang 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 Extreme terpasang 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 Extreme terpasang 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 Extreme terpasang 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. Penting bahwa VM tidak 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 tercermin sebagai peningkatan buatan pada 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 berikutnya
- Pelajari Harga Hyperdisk.