Batas performa SSD Lokal yang diberikan di bagian Pilih opsi penyimpanan tercapai dengan menggunakan setelan tertentu pada instance SSD Lokal. Jika instance virtual machine (VM) Anda kesulitan mencapai batas performa ini dan Anda telah mengonfigurasi instance menggunakan setelan SSD lokal yang direkomendasikan, Anda dapat membandingkan batas performa Anda terhadap batas yang dipublikasikan dengan mereplikasi setelan yang digunakan oleh tim Compute Engine.
Petunjuk ini mengasumsikan bahwa Anda menggunakan sistem operasi Linux dengan
pengelola paket apt
yang sudah terinstal.
Membuat VM dengan satu perangkat SSD Lokal
Jumlah SSD Lokal yang dapat dimiliki VM didasarkan pada jenis mesin yang Anda gunakan untuk membuat VM. Untuk mengetahui detailnya, lihat Memilih jumlah SSD Lokal yang valid.
Buat instance SSD Lokal yang memiliki empat atau delapan vCPU untuk setiap perangkat, bergantung pada beban kerja Anda.
Misalnya, perintah berikut akan membuat VM C3 dengan 4 vCPU dan 1 SSD Lokal.
gcloud compute instances create c3-ssd-test-instance \ --machine-type "c3-standard-4-lssd"
Untuk jenis mesin generasi kedua dan sebelumnya, tentukan jumlah SSD Lokal yang akan dipasang ke VM menggunakan flag
--local-ssd
. Perintah berikut membuat VM N2 dengan 8 vCPU dan 1 SSD Lokal yang menggunakan antarmuka disk NVMe:gcloud compute instances create ssd-test-instance \ --machine-type "n2-standard-8" \ --local-ssd interface=nvme
Jalankan skrip berikut di VM Anda. Skrip ini mereplikasi setelan yang digunakan untuk mencapai angka performa SSD yang diberikan di bagian performa. Perhatikan bahwa parameter
--bs
menentukan ukuran blok, yang memengaruhi hasil untuk berbagai jenis operasi baca dan tulis.# install tools sudo apt-get -y update sudo apt-get install -y fio util-linux # discard Local SSD sectors sudo blkdiscard /dev/disk/by-id/google-local-nvme-ssd-0 # full write pass - measures write bandwidth with 1M blocksize sudo fio --name=writefile \ --filename=/dev/disk/by-id/google-local-nvme-ssd-0 --bs=1M --nrfiles=1 \ --direct=1 --sync=0 --randrepeat=0 --rw=write --end_fsync=1 \ --iodepth=128 --ioengine=libaio # rand read - measures max read IOPS with 4k blocks sudo fio --time_based --name=readbenchmark --runtime=30 --ioengine=libaio \ --filename=/dev/disk/by-id/google-local-nvme-ssd-0 --randrepeat=0 \ --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \ --numjobs=4 --rw=randread --blocksize=4k --group_reporting # rand write - measures max write IOPS with 4k blocks sudo fio --time_based --name=writebenchmark --runtime=30 --ioengine=libaio \ --filename=/dev/disk/by-id/google-local-nvme-ssd-0 --randrepeat=0 \ --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \ --numjobs=4 --rw=randwrite --blocksize=4k --group_reporting
Membuat VM dengan jumlah maksimum SSD Lokal
Jika Anda ingin memasang 24 perangkat SSD Lokal atau lebih ke instance, gunakan jenis mesin dengan 32 vCPU atau lebih.
Perintah berikut membuat VM dengan jumlah maksimum disk SSD Lokal yang diizinkan menggunakan antarmuka NVMe:
Memasang SSD Lokal ke VM
gcloud compute instances create ssd-test-instance \ --machine-type "n1-standard-32" \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme
Menggunakan jenis mesin -lssd
Seri mesin yang lebih baru menawarkan jenis mesin
-lssd
yang dilengkapi dengan jumlah disk SSD Lokal yang telah ditentukan. Misalnya, untuk mengukur performa VM dengan 32 SSD Lokal (kapasitas 12 TiB), gunakan perintah berikut:gcloud compute instances create ssd-test-instance \ --machine-type "c3-standard-176-lssd"
Instal alat
mdadm
. Proses penginstalan untukmdadm
menyertakan perintah pengguna yang menghentikan skrip, jadi jalankan proses secara manual:Debian dan Ubuntu
sudo apt update && sudo apt install mdadm --no-install-recommends
CentOS dan RHEL
sudo yum install mdadm -y
SLES dan openSUSE
sudo zypper install -y mdadm
Gunakan perintah
find
untuk mengidentifikasi semua SSD Lokal yang ingin Anda pasang bersama:find /dev/ | grep google-local-nvme-ssd
Outputnya terlihat mirip dengan yang berikut ini:
/dev/disk/by-id/google-local-nvme-ssd-23 /dev/disk/by-id/google-local-nvme-ssd-22 /dev/disk/by-id/google-local-nvme-ssd-21 /dev/disk/by-id/google-local-nvme-ssd-20 /dev/disk/by-id/google-local-nvme-ssd-19 /dev/disk/by-id/google-local-nvme-ssd-18 /dev/disk/by-id/google-local-nvme-ssd-17 /dev/disk/by-id/google-local-nvme-ssd-16 /dev/disk/by-id/google-local-nvme-ssd-15 /dev/disk/by-id/google-local-nvme-ssd-14 /dev/disk/by-id/google-local-nvme-ssd-13 /dev/disk/by-id/google-local-nvme-ssd-12 /dev/disk/by-id/google-local-nvme-ssd-11 /dev/disk/by-id/google-local-nvme-ssd-10 /dev/disk/by-id/google-local-nvme-ssd-9 /dev/disk/by-id/google-local-nvme-ssd-8 /dev/disk/by-id/google-local-nvme-ssd-7 /dev/disk/by-id/google-local-nvme-ssd-6 /dev/disk/by-id/google-local-nvme-ssd-5 /dev/disk/by-id/google-local-nvme-ssd-4 /dev/disk/by-id/google-local-nvme-ssd-3 /dev/disk/by-id/google-local-nvme-ssd-2 /dev/disk/by-id/google-local-nvme-ssd-1 /dev/disk/by-id/google-local-nvme-ssd-0
find
tidak menjamin pengurutan. Tidak masalah jika perangkat dicantumkan dalam urutan yang berbeda selama jumlah baris output sesuai dengan jumlah partisi SSD yang diharapkan.Jika menggunakan perangkat SCSI, gunakan perintah
find
berikut:find /dev/ | grep google-local-ssd
Semua perangkat NVMe harus dalam format
google-local-nvme-ssd-#
dan perangkat SCSI harus dalam formatgoogle-local-ssd-#
.Gunakan alat
mdadm
untuk menggabungkan beberapa perangkat SSD Lokal ke dalam satu array bernama/dev/md0
. Contoh berikut menggabungkan dua puluh empat perangkat SSD Lokal yang menggunakan antarmuka NVMe. Untuk perangkat SSD Lokal yang menggunakan SCSI, gunakan nama perangkat yang ditampilkan dari perintahfind
di langkah 3.sudo mdadm --create /dev/md0 --level=0 --raid-devices=24 \ /dev/disk/by-id/google-local-nvme-ssd-0 \ /dev/disk/by-id/google-local-nvme-ssd-1 \ /dev/disk/by-id/google-local-nvme-ssd-2 \ /dev/disk/by-id/google-local-nvme-ssd-3 \ /dev/disk/by-id/google-local-nvme-ssd-4 \ /dev/disk/by-id/google-local-nvme-ssd-5 \ /dev/disk/by-id/google-local-nvme-ssd-6 \ /dev/disk/by-id/google-local-nvme-ssd-7 \ /dev/disk/by-id/google-local-nvme-ssd-8 \ /dev/disk/by-id/google-local-nvme-ssd-9 \ /dev/disk/by-id/google-local-nvme-ssd-10 \ /dev/disk/by-id/google-local-nvme-ssd-11 \ /dev/disk/by-id/google-local-nvme-ssd-12 \ /dev/disk/by-id/google-local-nvme-ssd-13 \ /dev/disk/by-id/google-local-nvme-ssd-14 \ /dev/disk/by-id/google-local-nvme-ssd-15 \ /dev/disk/by-id/google-local-nvme-ssd-16 \ /dev/disk/by-id/google-local-nvme-ssd-17 \ /dev/disk/by-id/google-local-nvme-ssd-18 \ /dev/disk/by-id/google-local-nvme-ssd-19 \ /dev/disk/by-id/google-local-nvme-ssd-20 \ /dev/disk/by-id/google-local-nvme-ssd-21 \ /dev/disk/by-id/google-local-nvme-ssd-22 \ /dev/disk/by-id/google-local-nvme-ssd-23
Responsnya mirip dengan hal berikut ini:
mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.
Anda dapat mengonfirmasi detail array dengan
mdadm --detail
. Menambahkan flag--prefer=by-id
akan mencantumkan perangkat yang menggunakan jalur/dev/disk/by-id
.sudo mdadm --detail --prefer=by-id /dev/md0
Output akan terlihat seperti berikut untuk setiap perangkat dalam array.
... Number Major Minor RaidDevice State 0 259 0 0 active sync /dev/disk/by-id/google-local-nvme-ssd-0 ...
Jalankan skrip berikut di VM Anda. Skrip ini mereplikasi setelan yang digunakan untuk mencapai angka performa SSD yang diberikan di bagian performa. parameter
--bs
menentukan ukuran blok, yang memengaruhi hasil untuk berbagai jenis operasi baca dan tulis.# install tools sudo apt-get -y update sudo apt-get install -y fio util-linux # full write pass - measures write bandwidth with 1M blocksize sudo fio --name=writefile \ --filename=/dev/md0 --bs=1M --nrfiles=1 \ --direct=1 --sync=0 --randrepeat=0 --rw=write --end_fsync=1 \ --iodepth=128 --ioengine=libaio # rand read - measures max read IOPS with 4k blocks sudo fio --time_based --name=benchmark --runtime=30 \ --filename=/dev/md0 --ioengine=libaio --randrepeat=0 \ --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \ --numjobs=32 --rw=randread --blocksize=4k --group_reporting --norandommap # rand write - measures max write IOPS with 4k blocks sudo fio --time_based --name=benchmark --runtime=30 \ --filename=/dev/md0 --ioengine=libaio --randrepeat=0 \ --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \ --numjobs=32 --rw=randwrite --blocksize=4k --group_reporting --norandommap
Melakukan benchmark pada VM yang Dioptimalkan untuk Penyimpanan
VM yang Dioptimalkan untuk Penyimpanan (seperti Keluarga Z3) harus diukur langsung terhadap partisi perangkat. Anda bisa mendapatkan nama partisi dengan
lsblk
lsblk -o name,size -lpn | grep 2.9T | awk '{print $1}'
Outputnya terlihat mirip dengan yang berikut ini:
/dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 /dev/nvme4n1 /dev/nvme5n1 /dev/nvme6n1 /dev/nvme7n1 /dev/nvme8n1 /dev/nvme9n1 /dev/nvme10n1 /dev/nvme11n1 /dev/nvme12n1
Jalankan benchmark secara langsung terhadap partisi SSD Lokal dengan memisahkannya dengan pemisah titik dua.
# install benchmarking tools sudo apt-get -y update sudo apt-get install -y fio util-linux # Full Write Pass. # SOVM achieves max read performance on previously written/discarded ranges. sudo fio --readwrite=write --blocksize=1m --iodepth=4 --ioengine=libaio \ --direct=1 --group_reporting \ --name=job1 --filename=/dev/nvme1n1 --name=job2 --filename=/dev/nvme2n1 \ --name=job3 --filename=/dev/nvme3n1 --name=job4 --filename=/dev/nvme4n1 \ --name=job5 --filename=/dev/nvme5n1 --name=job6 --filename=/dev/nvme6n1 \ --name=job7 --filename=/dev/nvme7n1 --name=job8 --filename=/dev/nvme8n1 \ --name=job9 --filename=/dev/nvme9n1 --name=job10 --filename=/dev/nvme10n1 \ --name=job11 --filename=/dev/nvme11n1 --name=job12 --filename=/dev/nvme12n1 # rand read - measures max read IOPS with 4k blocks sudo fio --readwrite=randread --blocksize=4k --iodepth=128 \ --numjobs=4 --direct=1 --runtime=30 --group_reporting --ioengine=libaio \ --name=job1 --filename=/dev/nvme1n1 --name=job2 --filename=/dev/nvme2n1 \ --name=job3 --filename=/dev/nvme3n1 --name=job4 --filename=/dev/nvme4n1 \ --name=job5 --filename=/dev/nvme5n1 --name=job6 --filename=/dev/nvme6n1 \ --name=job7 --filename=/dev/nvme7n1 --name=job8 --filename=/dev/nvme8n1 \ --name=job9 --filename=/dev/nvme9n1 --name=job10 --filename=/dev/nvme10n1 \ --name=job11 --filename=/dev/nvme11n1 --name=job12 --filename=/dev/nvme12n1 # rand write - measures max write IOPS with 4k blocks sudo fio --readwrite=randwrite --blocksize=4k --iodepth=128 \ --numjobs=4 --direct=1 --runtime=30 --group_reporting --ioengine=libaio \ --name=job1 --filename=/dev/nvme1n1 --name=job2 --filename=/dev/nvme2n1 \ --name=job3 --filename=/dev/nvme3n1 --name=job4 --filename=/dev/nvme4n1 \ --name=job5 --filename=/dev/nvme5n1 --name=job6 --filename=/dev/nvme6n1 \ --name=job7 --filename=/dev/nvme7n1 --name=job8 --filename=/dev/nvme8n1 \ --name=job9 --filename=/dev/nvme9n1 --name=job10 --filename=/dev/nvme10n1 \ --name=job11 --filename=/dev/nvme11n1 --name=job12 --filename=/dev/nvme12n1
Langkah selanjutnya
- Pelajari Harga SSD lokal.