Persistent Disk memberi Anda performa yang dijelaskan dalam diagram jenis disk jika VM mendorong penggunaan yang cukup untuk mencapai batas performa. Setelah Anda mengukur volume persistent disk untuk memenuhi kebutuhan performa, beban kerja dan sistem operasi Anda mungkin perlu disesuaikan.
Bagian berikut menjelaskan karakteristik VM dan beban kerja yang memengaruhi performa disk dan membahas beberapa elemen kunci yang dapat disesuaikan untuk performa yang lebih baik. Beberapa saran dan cara menerapkan beberapa di antaranya ke jenis beban kerja tertentu.
Faktor-faktor yang memengaruhi performa disk
Bagian berikut menjelaskan faktor-faktor yang memengaruhi performa disk untuk VM.
- Batas traffic keluar jaringan untuk throughput operasi tulis
- Operasi baca dan tulis secara bersamaan
- Ukuran volume logis
- Beberapa disk terpasang ke satu instance VM
Batas traffic keluar jaringan untuk throughput operasi tulis
VM Anda memiliki batas traffic keluar jaringan yang bergantung pada jenis mesin VM.
Compute Engine menyimpan data di Persistent Disk dengan beberapa operasi tulis paralel untuk memastikan redundansi bawaan. Selain itu, setiap permintaan tulis memiliki beberapa overhead yang menggunakan bandwidth tulis tambahan.
Traffic tulis maksimum yang dapat dihasilkan instance VM adalah batas traffic keluar jaringan dibagi dengan pengganda bandwidth yang memperhitungkan replikasi dan overhead.
Batas traffic keluar jaringan tercantum di kolom Bandwidth traffic keluar maksimum (Gbps) di tabel jenis mesin untuk tujuan umum, dioptimalkan untuk komputasi, dioptimalkan untuk komputasi, dioptimalkan memori, dan dioptimalkan akselerator kelompok mesin.
Pengganda bandwidth berada di kisaran 1,16x saat penggunaan jaringan penuh, yang berarti 16% byte yang ditulis merupakan overhead. Untuk Persistent Disk regional, pengganda bandwidth berada di kisaran 2,32x untuk memperhitungkan overhead replikasi tambahan.
Jika operasi baca dan tulis Persistent Disk bersaing dengan bandwidth keluar jaringan, 60% dari bandwidth keluar jaringan maksimum, yang ditentukan oleh jenis mesin, dialokasikan ke operasi tulis Persistent Disk. 40% sisanya tersedia untuk semua traffic keluar jaringan lainnya. Lihat bandwidth keluar untuk detail tentang traffic keluar jaringan yang lain.
Contoh berikut menunjukkan cara menghitung bandwidth operasi tulis maksimum untuk sebuah Persistent Disk di instance VM N1. Alokasi bandwidth adalah bagian dari bandwidth traffic keluar jaringan yang dialokasikan ke Persistent Disk. Bandwidth tulis maksimum adalah bandwidth operasi tulis maksimum Persistent Disk yang disesuaikan untuk overhead.
Jumlah vCPU VM | Batas traffic keluar jaringan (MB/d) | Alokasi bandwidth (MB/dtk) | Bandwidth tulis maksimum (MB/dtk) | Bandwidth tulis maksimum pada penggunaan jaringan penuh (MB/dtk) |
---|---|---|---|---|
1 | 250 | 150 | 216 | 129 |
2-7 | 1.250 | 750 | 1.078 | 647 |
8-15 | 2.000 | 1.200 | 1.724 | 1.034 |
16+ | 4.000 | 2.400 | 3.448 | 2.069 |
Anda dapat menghitung bandwidth Persistent Disk maksimum menggunakan formula berikut:
VM N1 dengan 1 vCPU
Batas traffic keluar jaringannya adalah:
2 Gbps / 8 bit = 0,25 GB per detik = 250 MB per detik
Alokasi bandwidth Persistent Disk saat penggunaan jaringan penuh adalah:
250 MB per detik * 0,6 = 150 MB per detik.
Bandwidth tulis maksimum Persistent Disk tanpa pertentangan jaringan adalah:
- Disk tingkat zona: 250 MB per detik / 1,16 ~= 216 MB per detik
- Disk regional: 250 MB per detik / 2,32 ~= 108 MB per detik
Bandwidth tulis maksimum Persistent Disk pada saat penggunaan jaringan penuh adalah:
- Disk tingkat zona: 150 MB per detik / 1,16 ~= 129 MB per detik
- Disk regional: 150 MB per detik / 2,32 ~= 65 MB per detik
Batas traffic keluar jaringan memberikan batas atas performa. Faktor lain dapat membatasi performa di bawah tingkat ini. Lihat bagian berikut untuk informasi tentang batasan performa lainnya.
Operasi baca dan tulis secara bersamaan
Untuk Persistent Disk standar, operasi baca dan tulis secara bersamaan berbagi resource yang sama. Saat menggunakan lebih banyak throughput baca atau IOPS, VM Anda dapat melakukan lebih sedikit penulisan. Sebaliknya, instance yang menggunakan lebih banyak throughput tulis atau IOPS dapat melakukan lebih sedikit pembacaan.
Volume Persistent Disk tidak dapat mencapai batas throughput dan IOPS maksimumnya secara bersamaan untuk pembacaan dan penulisan.
Penghitungan untuk throughput adalah IOPS * I/O size
. Guna memanfaatkan batas throughput maksimum untuk operasi baca dan tulis secara bersamaan di Persistent Disk SSD, gunakan ukuran I/O sehingga gabungan IOPS baca dan tulis tidak melebihi batas IOPS.
Tabel berikut mencantumkan batas IOPS per VM untuk operasi baca dan tulis secara bersamaan.
Persistent disk standar | Persistent disk SSD (8 vCPU) | Persistent disk SSD (32+ vCPU) | Persistent disk SSD (64+ vCPU) | ||||
---|---|---|---|---|---|---|---|
Melihat | Menulis | Melihat | Menulis | Melihat | Menulis | Melihat | Tulis |
7.500 | 0 | 15.000 | 0 | 60.000 | 0 | 100.000 | 0 |
5.625 | 3.750 | 11.250 | 3.750 | 45.000 | 15.000 | 75.000 | 25.000 |
3.750 | 7.500 | 7.500 | 7.500 | 30.000 | 30.000 | 50.000 | 50.000 |
1875 | 11.250 | 3.750 | 11.250 | 15.000 | 45.000 | 25.000 | 75.000 |
0 | 15.000 | 0 | 15.000 | 0 | 60.000 | 0 | 100.000 |
Angka IOPS dalam tabel ini didasarkan pada ukuran I/O 8 KB. Ukuran I/O lainnya, seperti 16 KB, mungkin memiliki angka IOPS yang berbeda, tetapi mempertahankan distribusi baca/tulis yang sama.
Tabel berikut mencantumkan batas throughput (MB per detik) per VM untuk operasi baca dan tulis secara bersamaan.
Persistent disk standar | Persistent disk SSD (6-14 vCPU) | Persistent disk SSD (16+ vCPU) | |||
---|---|---|---|---|---|
Baca | Menulis | Melihat | Menulis | Melihat | Tulis |
1200 | 0 | 800* | 800* | 1.200* | 1.200* |
900 | 100 | ||||
600 | 200 | ||||
300 | 300 | ||||
0 | 400 |
Ukuran volume logis
Persistent Disk dapat berukuran hingga 64 TiB, dan Anda dapat membuat satu volume logis hingga 257 TiB menggunakan pengelolaan volume logis di dalam VM Anda. Ukuran volume yang lebih besar akan memengaruhi performa dalam hal berikut:
- Tidak semua sistem file lokal berfungsi dengan baik pada skala ini. Operasi umum, seperti pemasangan dan pemeriksaan sistem file mungkin memerlukan waktu lebih lama dari yang diperkirakan.
- Performa Persistent Disk maksimum dicapai pada ukuran yang lebih kecil. Disk membutuhkan waktu lebih lama untuk membaca atau menulis sepenuhnya dengan penyimpanan sebesar ini di satu VM. Jika aplikasi Anda mendukungnya, pertimbangkan untuk menggunakan beberapa VM untuk total throughput sistem yang lebih besar.
- Mengambil snapshot Persistent Disk dalam jumlah besar mungkin memerlukan waktu lebih lama dari yang diperkirakan, dan mungkin memberikan tampilan yang tidak konsisten dari volume logis Anda tanpa koordinasi yang cermat dengan aplikasi Anda.
Beberapa disk terpasang ke satu instance VM
Batas performa disk saat Anda memiliki beberapa disk yang terpasang ke VM bergantung pada apakah disk tersebut berjenis sama atau berbeda.
Beberapa disk dari jenis yang sama
Jika Anda memiliki beberapa disk dari jenis yang sama yang terpasang ke instance VM dalam mode yang sama (misalnya, baca/tulis), batas performanya sama dengan batas disk tunggal yang memiliki gabungan ukuran disk tersebut. Jika Anda menggunakan semua disk hingga 100%, batas performa agregat akan dibagi secara merata di antara disk, terlepas dari ukuran disk relatif.
Misalnya, Anda memiliki disk pd-standard
sebesar 200 GB dan disk pd-standard
sebesar 1.000 GB. Jika Anda tidak menggunakan disk 1.000 GB, disk
200 GB dapat mencapai batas performa disk standar sebesar 1.200 GB. Jika Anda menggunakan kedua disk tersebut hingga 100%, setiap disk akan memiliki batas performa disk pd-standard
600 GB (1.200 GB / 2 disk = 600 GB disk).
Beberapa jenis disk yang berbeda
Jika Anda memasang berbagai jenis disk ke VM, performa maksimum yang dimungkinkan adalah batas performa disk tercepat yang didukung VM. Performa kumulatif disk yang terpasang tidak akan melebihi batas performa disk tercepat yang didukung VM.
Mengoptimalkan disk Anda untuk workload yang berorientasi IOPS atau throughput
Rekomendasi performa bergantung pada apakah Anda ingin memaksimalkan IOPS atau throughput.
Workload berorientasi IOPS
Database, baik SQL maupun NoSQL, memiliki pola penggunaan akses acak ke data. Google merekomendasikan nilai berikut untuk workload berorientasi IOPS:
Nilai kedalaman antrean I/O 1 untuk setiap 400 hingga 800 IOPS, hingga batas 64 pada volume besar
Satu CPU kosong untuk setiap 2.000 IOPS operasi baca acak dan 1 CPU kosong untuk setiap 2.500 IOPS penulisan acak
Jika tersedia untuk jenis mesin VM Anda, gunakan disk Google Cloud Hyperdisk Ekstrem, yang memungkinkan Anda mengubah IOPS yang disediakan.
Nilai readahead yang lebih rendah biasanya disarankan dalam dokumen praktik terbaik untuk MongoDB, Apache Cassandra, dan aplikasi database lainnya.
Workload berorientasi throughput
Operasi streaming, seperti tugas Hadoop, mendapatkan manfaat dari pembacaan berurutan yang cepat, dan ukuran I/O yang lebih besar dapat meningkatkan performa streaming.
Gunakan ukuran I/O 256 KB atau yang lebih besar.
Jika tersedia untuk jenis mesin VM Anda, gunakan disk Throughput Hyperdisk, yang memungkinkan Anda mengubah throughput yang disediakan.
Untuk Persistent Disk standar, gunakan 8 aliran I/O berurutan paralel atau lebih jika memungkinkan. Persistent Disk Standar dirancang guna mengoptimalkan performa I/O untuk akses disk berurutan, mirip dengan hard drive HDD fisik.
Pastikan aplikasi Anda dioptimalkan untuk lokalitas data sementara yang wajar pada disk besar.
Jika aplikasi Anda mengakses data yang didistribusikan di berbagai bagian disk dalam jangka waktu singkat (ratusan GB per vCPU), Anda tidak akan dapat mencapai IOPS yang optimal. Untuk performa terbaik, optimalkan lokalitas data sementara, dengan mempertimbangkan faktor seperti fragmentasi disk dan keacakan bagian disk yang diakses.
Untuk Persistent Disk SSD, pastikan penjadwal I/O di sistem operasi dikonfigurasi untuk memenuhi kebutuhan spesifik Anda.
Pada sistem berbasis Linux, periksa apakah penjadwal I/O disetel ke
none
. Penjadwal I/O ini tidak mengurutkan ulang permintaan dan ideal untuk perangkat I/O acak yang cepat.Pada command line, pastikan jadwal I/O yang digunakan oleh mesin Linux Anda:
cat /sys/block/sda/queue/scheduler
Outputnya mirip dengan hal berikut ini:
[mq-deadline] none
Penjadwal I/O yang saat ini aktif ditampilkan dalam tanda kurung siku (
[]
).Jika penjadwal I/O tidak ditetapkan ke
none
, lakukan salah satu langkah berikut:- Untuk mengubah penjadwal I/O default ke
none
, tetapkanelevator=none
dalam entriGRUB_CMDLINE_LINUX
file konfigurasi GRUB. Biasanya file ini terletak di/etc/default/grub
, tetapi pada beberapa distribusi sebelumnya, file mungkin terletak di direktori yang berbeda.
GRUB_CMDLINE_LINUX="elevator=none vconsole.keymap=us console=ttyS0,38400n8 vconsole.font=latarcyrheb-sun16
Setelah memperbarui file konfigurasi GRUB, konfigurasikan bootloader pada sistem agar dapat melakukan booting di Compute Engine.
- Atau, Anda dapat mengubah penjadwal I/O saat runtime:
echo 'none' > sudo /sys/block/sda/queue/scheduler
Jika Anda menggunakan metode ini, sistem akan beralih kembali ke penjadwal I/O default saat memulai ulang. Jalankan perintah
cat
lagi untuk memverifikasi penjadwal I/O Anda.- Untuk mengubah penjadwal I/O default ke
Perubahan workload yang dapat meningkatkan performa disk
Perilaku beban kerja tertentu dapat meningkatkan performa operasi I/O pada disk yang terpasang.
Menggunakan antrean I/O berkedalaman lebih
Persistent Disk memiliki latensi lebih tinggi daripada disk yang terpasang secara lokal seperti disk SSD Lokal karena merupakan perangkat yang terhubung ke jaringan. API ini dapat memberikan IOPS dan throughput yang sangat tinggi, tetapi Anda harus memastikan bahwa permintaan I/O yang memadai dilakukan secara paralel. Jumlah permintaan I/O yang dilakukan secara paralel disebut sebagai kedalaman antrean I/O.
Tabel di bawah menunjukkan kedalaman antrean I/O yang direkomendasikan untuk memastikan Anda dapat mencapai tingkat performa tertentu. Perhatikan bahwa tabel di bawah ini menggunakan sedikit perkiraan latensi yang lebih tinggi untuk menampilkan rekomendasi konservatif. Contoh ini mengasumsikan bahwa Anda menggunakan ukuran I/O 16 KB.
Membuat I/O yang cukup menggunakan ukuran I/O besar
Menggunakan ukuran I/O besar
Untuk memastikan batas dan latensi IOPS tidak menghambat performa aplikasi Anda, gunakan ukuran I/O minimum 256 KB atau yang lebih tinggi.
Menggunakan ukuran stripe besar untuk aplikasi sistem file yang terdistribusi. Workload I/O acak yang menggunakan ukuran jalur besar (4 MB atau lebih besar) mencapai performa yang baik pada Persistent Disk standar karena seberapa dekat workload yang meniru beberapa akses stream disk berurutan.
Memastikan aplikasi Anda menghasilkan I/O yang cukup
Pastikan aplikasi Anda menghasilkan I/O yang cukup untuk memanfaatkan batas IOPS dan throughput disk sepenuhnya. Untuk lebih memahami pola I/O workload Anda, tinjau penggunaan persistent disk dan metrik performa di Cloud Monitoring.
Pastikan tersedia CPU yang cukup di instance yang menghasilkan I/O
Jika instance VM Anda kekurangan CPU, aplikasi tidak akan dapat mengelola IOPS yang dijelaskan sebelumnya. Sebaiknya Anda memiliki satu CPU yang tersedia untuk setiap 2.000–2.500 IOPS traffic yang diharapkan.
Membatasi pemuatan I/O berat hingga durasi maksimum
Durasi mengacu pada rentang alamat blok logis yang berdekatan pada satu disk fisik. Pemuatan I/O berat mencapai performa maksimum saat dibatasi pada durasi maksimum tertentu, yang bergantung pada jenis mesin VM tempat disk dipasang, seperti yang tercantum dalam tabel berikut.
Jenis mesin | Durasi maksimum yang direkomendasikan |
---|---|
|
25 TB |
Semua jenis mesin lainnya | 50 TB |
Durasi pada Persistent Disk terpisah yang bertambah hingga 50 TB atau kurang dapat dianggap sama dengan satu durasi 50 TB untuk tujuan performa.
Perubahan sistem operasi untuk meningkatkan performa disk
Dalam beberapa kasus, Anda dapat mengaktifkan atau menonaktifkan fitur pada tingkat sistem operasi, atau mengonfigurasi disk yang terpasang dengan cara tertentu untuk meningkatkan performa disk.
Menghindari penggunaan sistem file ext3 di Linux
Menggunakan sistem file ext3 di VM Linux dapat menghasilkan performa yang sangat buruk untuk beban tulis yang berat. Gunakan ext4 jika memungkinkan. Driver sistem file ext4 kompatibel dengan sistem lama ext3/ext2 dan mendukung pemasangan sistem file ext3. Sistem file ext4 adalah setelan default di sebagian besar sistem operasi Linux.
Jika tidak dapat bermigrasi ke ext4, sebagai solusi, Anda dapat memasang sistem file
ext3 dengan opsi pemasangan data=journal
. Hal ini meningkatkan IOPS tulis dengan mengorbankan throughput operasi tulis. Bermigrasi ke ext4 dapat menghasilkan peningkatan
hingga 7 kali lipat dalam beberapa benchmark.
Menonaktifkan inisialisasi lambat dan aktifkan perintah DISCARD
Persistent Disk mendukung operasi penghapusan atau perintah TRIM
, yang memungkinkan sistem operasi memberi tahu disk saat blok tidak lagi digunakan. Dengan penghapusan dukungan, sistem operasi dapat menandai blok
disk sebagai tidak diperlukan lagi, tanpa menimbulkan biaya untuk mengosongkan
blok.
Pada sebagian besar sistem operasi Linux, Anda mengaktifkan operasi penghapusan saat memasang Persistent Disk di VM Anda. VM Windows Server 2012 R2 akan mengaktifkan operasi penghapusan secara default saat Anda memasang Persistent Disk.
Mengaktifkan operasi penghapusan dapat meningkatkan performa runtime umum, dan juga dapat mempercepat performa disk Anda saat pertama kali dipasang. Memformat seluruh volume disk dapat menghabiskan waktu, jadi pemformatan lambat merupakan praktik yang umum. Kelemahan dari pemformatan lambat adalah biaya sering kali dibayarkan saat volume pertama kali dipasang. Dengan menonaktifkan inisialisasi lambat dan mengaktifkan operasi penghapusan, Anda bisa mendapatkan format cepat dan operasi pemasangan.
Nonaktifkan inisialisasi lambat dan aktifkan operasi penghapusan saat memformat disk dengan meneruskan parameter berikut ke mkfs.ext4:
-E lazy_itable_init=0,lazy_journal_init=0,discard
Parameter
lazy_journal_init=0
tidak berfungsi pada instance dengan image CentOS 6 atau RHEL 6. Untuk VM yang menggunakan sistem operasi tersebut, formatlah Persistent Disk tanpa parameter tersebut.-E lazy_itable_init=0,discard
Aktifkan operasi penghapusan saat memasang disk dengan meneruskan flag berikut ke perintah
mount
:-o discard
Persistent Disk akan berfungsi baik jika operasi penghapusan diaktifkan. Namun, Anda juga dapat menjalankan fstrim
sebagai tambahan atau pengganti dari menggunakan operasi penghapusan. Jika Anda tidak menggunakan operasi penghapusan, jalankan
fstrim
sebelum membuat snapshot boot disk. Dengan memangkas sistem
file, Anda dapat membuat image snapshot yang lebih kecil, sehingga mengurangi biaya
penyimpanan snapshot.
Menyesuaikan nilai readahead
Untuk meningkatkan performa I/O, sistem operasi menggunakan teknik seperti readahead. Dalam hal ini, lebih banyak file yang diminta yang akan dibaca ke dalam memori dengan asumsi bahwa operasi baca berikutnya mungkin membutuhkan data tersebut. Readahead yang lebih tinggi meningkatkan throughput dengan mengorbankan memori dan IOPS. Readahead yang lebih rendah meningkatkan IOPS dengan mengorbankan throughput.
Pada sistem Linux, Anda dapat memperoleh dan menetapkan nilai readahead dengan perintah blockdev:
$ sudo blockdev --getra /dev/DEVICE_ID
$ sudo blockdev --setra VALUE /dev/DEVICE_ID
Nilai readahead adalah <desired_readahead_bytes>
/ 512 byte.
Misalnya, untuk readahead 8 MB, 8 MB adalah 8388608 byte (8 * 1024 * 1024).
8388608 bytes / 512 bytes = 16384
Anda menyetel blockdev ke 16384
:
$ sudo blockdev --setra 16384 /dev/DEVICE_ID
Mengubah VM Anda atau membuat VM baru
Ada batasan yang terkait dengan setiap jenis mesin VM, yang dapat memengaruhi performa yang bisa Anda dapatkan dari disk yang terpasang. Batasan ini mencakup:
- Performa Persistent Disk akan meningkat seiring dengan bertambahnya jumlah vCPU yang tersedia.
- Hyperdisk tidak didukung untuk semua jenis mesin.
- Tarif traffic keluar jaringan akan meningkat seiring dengan bertambahnya jumlah vCPU yang tersedia.
Memastikan CPU Anda kosong
Pembacaan dan penulisan ke persistent disk memerlukan siklus CPU dari VM Anda. Untuk mencapai level IOPS yang sangat tinggi dan konsisten, Anda harus memiliki CPU yang kosong untuk memproses I/O.
Untuk meningkatkan jumlah vCPU yang tersedia dengan VM, Anda dapat membuat VM baru, atau mengedit jenis mesin instance VM.
Membuat VM baru untuk mendapatkan fungsi baru
Jenis disk yang lebih baru tidak didukung pada semua seri mesin atau jenis mesin. Hyperdisk menyediakan IOPS atau kecepatan throughput yang lebih tinggi untuk workload Anda, tetapi saat ini hanya tersedia dengan beberapa seri mesin, dan memerlukan setidaknya 64 vCPU.
Rangkaian mesin VM baru biasanya berjalan pada CPU yang lebih baru, yang dapat menawarkan performa yang lebih baik daripada pendahulunya. Selain itu, CPU yang lebih baru dapat mendukung fungsi tambahan untuk meningkatkan performa workload Anda, seperti Advanced Matrix Extensions (AMX) atau Intel Advanced Vector Extensions (AVX-512).
Langkah selanjutnya
- Volume Persistent Disk Benchmark yang dipasang ke VM Linux.
- Pelajari harga persistent disk.
- Pelajari cara memantau performa disk dengan meninjau metrik performa persistent disk.