Sebelumnya, saya membahas dasar-dasar metrik dan pengujian subsistem penyimpanan dalam artikel saya Menganalisis Kinerja Subsistem I/O untuk SQL Server, termasuk pengenalan CrystalDiskMark 4.0. CrystalDiskMark baru-baru ini ditulis ulang untuk menggunakan Microsoft DiskSpd untuk pengujiannya, yang menjadikannya alat yang lebih berharga untuk upaya pengujian subsistem penyimpanan awal Anda. DiskSpd menyediakan fungsionalitas yang diperlukan untuk menghasilkan berbagai pola permintaan disk, yang dapat sangat membantu dalam diagnosis dan analisis masalah kinerja I/O dengan lebih banyak fleksibilitas daripada alat benchmark lama seperti SQLIO. Ini sangat berguna untuk pengujian subsistem penyimpanan sintetis saat Anda menginginkan tingkat kontrol yang lebih besar daripada yang tersedia di CrystalDiskMark.
Sekarang, kita akan menyelami sedikit lebih dalam tentang bagaimana sebenarnya menggunakan Microsoft DiskSpd untuk menguji subsistem penyimpanan Anda tanpa menggunakan CrystalDiskMark 4.0. Untuk melakukan ini, Anda harus mengunduh dan mengekstrak DiskSpd. Untuk mempermudah, saya selalu menyalin file executable diskspd.exe yang diinginkan dari folder executable yang sesuai (amd64fre, armfre atau x86fre) ke jalur pendek dan sederhana seperti C:\DiskSpd
. Dalam kebanyakan kasus, Anda akan menginginkan DiskSpd versi 64-bit dari folder amd64fre.
Setelah file executable diskspd.exe tersedia, Anda perlu membuka prompt perintah dengan hak administratif (dengan memilih “Run as Administrator”), lalu navigasikan ke direktori tempat Anda menyalin file diskspd.exe.
Berikut adalah beberapa parameter baris perintah yang ingin Anda mulai:
Parameter | Deskripsi |
-b | Ukuran blok I/O, ditetapkan sebagai (K/M/G). Misalnya –b8K berarti ukuran blok 8KB, yang relevan untuk SQL Server |
-d | Durasi pengujian dalam hitungan detik. Tes 30-60 detik biasanya cukup lama untuk mendapatkan hasil yang valid |
-o | I/Os yang luar biasa (artinya kedalaman antrean) per target, per thread pekerja |
-t | Utas pekerja per target file pengujian |
-h | Nonaktifkan caching perangkat lunak di tingkat sistem operasi dan caching penulisan perangkat keras, yang merupakan ide bagus untuk menguji SQL Server |
-r | Bendera acak atau berurutan. Jika –r digunakan, tes acak dilakukan, jika tidak, tes berurutan dilakukan |
-w | Tulis persentase. Misalnya, –w25 berarti 25% menulis, 75% membaca |
-Z | Ukuran buffer sumber tulis uji beban kerja, ditetapkan sebagai (K/M/G). Digunakan untuk menyediakan data acak untuk penulisan, yang merupakan ide bagus untuk pengujian SQL Server |
-L | Tangkap informasi latensi selama pengujian, yang merupakan ide yang sangat baik untuk menguji SQL Server |
-c | Membuat file beban kerja dengan ukuran yang ditentukan, ditetapkan sebagai (K/M/G) |
Tabel 1:Parameter baris perintah dasar untuk DiskSpd
Anda juga ingin menentukan lokasi file pengujian dan nama file untuk hasil di akhir baris. Berikut adalah contoh baris perintah:
diskspd –b8K –d30 –o4 –t8 –h –r –w25 –L –Z1G –c20G T:\iotest.dat> DiskSpeedResults.txtContoh baris perintah ini akan menjalankan uji I/O acak 30 detik menggunakan file uji 20 GB yang terletak di drive T:, dengan rasio tulis 25% dan rasio baca 75%, dengan ukuran blok 8K. Ini akan menggunakan delapan utas pekerja, masing-masing dengan empat I/O yang luar biasa dan benih nilai entropi tulis sebesar 1GB. Ini akan menyimpan hasil tes ke file teks bernama DiskSpeedResults.txt. Ini adalah kumpulan parameter yang cukup bagus untuk beban kerja OLTP SQL Server.
Gambar 1:Contoh baris perintah untuk DiskSpd
Menjalankan tes dimulai dengan waktu pemanasan default lima detik (sebelum pengukuran benar-benar dimulai), dan kemudian tes yang sebenarnya akan berjalan selama durasi yang ditentukan dalam detik dengan waktu pendinginan default nol detik. Ketika tes selesai, DiskSpd akan memberikan deskripsi tes dan hasil rinci. Secara default, ini akan menjadi ringkasan teks sederhana dalam file teks menggunakan nama file yang Anda tentukan, yang akan berada di direktori yang sama dengan diskspd yang dapat dieksekusi.
Berikut adalah tampilan hasil untuk pengujian khusus ini di workstation saya.
Gambar 2:Contoh hasil pengujian DiskSpd
Bagian pertama dari hasil memberi Anda baris perintah yang tepat yang digunakan untuk pengujian, kemudian menentukan semua parameter input yang digunakan untuk uji coba (yang mencakup nilai default yang mungkin belum ditentukan di baris perintah yang sebenarnya. ). Selanjutnya, hasil pengujian ditampilkan mulai dari waktu pengujian aktual, jumlah thread, dan jumlah prosesor logis. Bagian CPU menunjukkan penggunaan CPU untuk setiap prosesor logis, termasuk waktu pengguna dan kernel, untuk interval pengujian.
Bagian yang lebih menarik dari hasil tes datang berikutnya. Anda mendapatkan total byte, total I/Os, MB/detik, I/O per detik (IOPS), dan latensi rata-rata Anda dalam milidetik. Hasil ini dipecah untuk setiap utas (empat dalam kasus kami), dengan bagian terpisah dalam hasil untuk Total IO, Baca IO, dan Tulis IO. Hasil untuk setiap utas harus sangat mirip dalam banyak kasus. Daripada awalnya berfokus pada nilai absolut untuk setiap pengukuran, saya suka membandingkan nilai ketika saya menjalankan tes yang sama pada drive logis yang berbeda, (setelah mengubah lokasi file tes di baris perintah), yang memungkinkan Anda membandingkan kinerja untuk setiap drive logis.
Bagian terakhir dari hasil tes bahkan lebih menarik. Ini menunjukkan analisis persentil dari distribusi hasil tes latency mulai dari nilai minimum dalam milidetik naik ke nilai maksimum dalam milidetik, dipecah untuk membaca, menulis, dan total latency. "Sembilan" di kolom %-ile mengacu pada jumlah sembilan, di mana 3-sembilan berarti 99,9, 4-sembilan berarti 99,99, dll. Alasan mengapa nilai untuk baris persentil yang lebih tinggi adalah sama karena tes ini memiliki jumlah total operasi yang relatif rendah. Jika Anda ingin mengkarakterisasi persentil yang lebih tinggi secara akurat, Anda harus menjalankan pengujian durasi yang lebih lama yang menghasilkan jumlah operasi I/O terpisah yang lebih banyak.
Apa yang ingin Anda cari dalam hasil ini adalah titik di mana nilai-nilai membuat lompatan besar. Misalnya, dalam pengujian ini kita dapat melihat bahwa 99% pembacaan memiliki latensi 1,832 milidetik atau kurang.
Gambar 3:Distribusi hasil latensi
Seperti yang Anda lihat, menjalankan DiskSpd sebenarnya cukup sederhana setelah Anda memahami apa arti parameter dasar dan bagaimana mereka digunakan. Anda tidak hanya dapat menjalankan DiskSpd dari baris perintah kuno, Anda juga dapat menjalankannya menggunakan PowerShell. DiskSpd juga memberi Anda lebih banyak informasi rinci daripada yang Anda dapatkan dari SQLIO. Bagian yang lebih rumit dalam menggunakan DiskSpd adalah menganalisis dan menafsirkan hasilnya, yang akan saya bahas di artikel mendatang.