Mengukur kinerja dan IOPS hard drive dan penyimpanan di Windows

Salah satu metrik utama untuk mengevaluasi kinerja sistem penyimpanan yang ada atau yang direncanakan adalah IOPS (Masukan/ Keluaran Operasi Per Kedua - jumlah operasi input / output). Secara sederhana, IOPS adalah jumlah blok yang dapat dibaca atau ditulis ke media atau sistem file per unit waktu. Semakin tinggi angka ini, semakin besar kinerja subsistem disk ini (terus terang, nilai IOPS itu sendiri harus dipertimbangkan bersama dengan karakteristik lain dari sistem penyimpanan, seperti latensi rata-rata, throughput, dll.).

Pada artikel ini, kita akan melihat beberapa cara untuk mengukur kinerja sistem penyimpanan yang digunakan dalam IOPS di Windows (hard drive lokal, drive SSD, folder jaringan SMB, volume CSV atau LUN pada penyimpanan di SAN).

Konten:

  • Penghitung Kinerja Subsistem Disk Windows
  • Menguji IOPS di Windows dengan DiskSpd
  • Cara mendapatkan IOPS dan kinerja subsistem disk menggunakan PowerShell?

Penghitung Kinerja Subsistem Disk Windows

Anda dapat mengevaluasi beban saat ini pada subsistem disk menggunakan penghitung kinerja Windows bawaan dari Performa Monitor. Untuk mengumpulkan data tentang penghitung ini:

  1. Lari Perfmon;
  2. Buat kumpulan pengumpul data baru (Kumpulan pengumpul data) Pilih Buat secara manual;
  3. Pilih satu opsi Buat log data -> Penghitung kinerja;
  4. Sekarang di properti kumpulan data baru, tambahkan penghitung kinerja berikut untuk objek Disk fisik (Anda dapat memilih penghitung untuk drive tertentu atau untuk semua drive lokal yang tersedia):
    • Rata-rata Disk Dt. / Transfer
    • Rata-rata Panjang antrian disk
    • Rata-rata Disk Bytes / Transfer
    • Disk byte / detik
    • Transfer disk / dtk
    • Pisahkan IO / dtk
  5. Anda dapat mengubah opsi pengumpulan data lainnya. Secara default, nilai penghitung dikumpulkan setiap 15 detik. Untuk menampilkan data kinerja disk waktu nyata, Anda perlu menambahkan penghitung yang ditentukan ke Perfmon di Alat Pemantau -> bagian Monitor Kinerja.
  6. Tetap mulai mengumpulkan data penghitung kinerja (Mulai) dan tunggu pengumpulan informasi yang cukup untuk analisis. Setelah itu, klik RMB pada set u pilih Berhenti;
  7. Untuk melihat data disk yang dikumpulkan, buka Perfmon -> Laporan -> Ditetapkan Pengguna -> Data_Disk_IO -> set Anda. Secara default, data disk ditampilkan sebagai grafik;
  8. Menggunakan Ctrl + G beralih ke mode Laporkan.

Bagaimana menafsirkan hasil kinerja disk di Perfmon? Untuk analisis cepat kinerja subsistem disk, Anda harus melihat nilai setidaknya 5 penghitung berikut.

Ketika menganalisis data penghitung, diinginkan untuk memiliki gagasan tentang konfigurasi disk fisik (apakah RAID / Stripe / nomor dan jenis disk yang digunakan, ketersediaan cache, dll.).
  • Disk detik/ Transfer - waktu yang diperlukan untuk melakukan satu operasi tulis / baca pada perangkat penyimpanan / disk - latensi disk. Jika penundaan lebih dari 25 ms (0,25) atau lebih tinggi, maka array disk tidak punya waktu untuk melakukan operasi. Untuk sistem yang sangat dimuat, nilainya tidak boleh lebih dari 10 ms (0,1);
  • Transfer disk / dtk - Jumlah operasi baca / tulis per detik (IOPS). Ini adalah indikator utama dari intensitas akses ke disk (nilai perkiraan dalam IOPS untuk berbagai jenis disk disajikan di akhir artikel);
  • Disk Bytes/ Dtk - pertukaran disk rata-rata (baca / tulis) per detik. Nilai maksimum tergantung pada jenis disk (150-250 MB / detik - untuk disk biasa dan 500-10000 untuk SSD);
  • Berpisah IO/ dtk - indikator fragmentasi disk ketika sistem operasi harus membagi satu operasi I / O menjadi beberapa operasi. Ini juga dapat menunjukkan bahwa aplikasi meminta blok data terlalu besar yang tidak dapat ditransfer dalam satu operasi;
  • Rata-rata. Disk Antrian Panjangnya- panjang antrian ke disk (jumlah transaksi sedang diproses). Untuk disk tunggal, panjang antrian tidak boleh lebih dari 2. Untuk array RAID 4 disk, panjang antrian hingga 8 akan dianggap sebagai nilai yang valid..

Menguji IOPS di Windows dengan DiskSpd

Microsoft merekomendasikan penggunaan utilitas untuk menghasilkan beban pada subsistem disk dan mengukur kinerjanya. Diskspd (https://aka.ms/diskspd). Ini adalah utilitas konsol yang dapat melakukan operasi I / O dengan target yang ditentukan dalam beberapa utas. Saya cukup sering menggunakan utilitas ini untuk mengukur kinerja penyimpanan di IOPS dan mendapatkan kecepatan baca / tulis maksimum dari server ini (Anda tentu saja dapat mengukur kinerja dari sisi penyimpanan juga, dalam hal ini diskspd akan digunakan untuk menghasilkan beban).

Utilitas tidak memerlukan instalasi, cukup unduh dan unzip arsip ke disk lokal. Untuk sistem x64 bit, gunakan versi diskspd.exe dari direktori amd64fre.

Saya menggunakan perintah berikut untuk menguji disk:

diskspd.exe -c50G -d300 -r -w40 -t8 -o32 -b64K -Sh -L E: \ diskpsdtmp.dat> DiskSpeedResults.txt

Itu penting. Saat menggunakan diskspd.exe, beban yang agak besar dihasilkan pada disk dan CPU dari sistem yang sedang diuji. Karena itu, agar tidak menyebabkan penurunan produktivitas bagi pengguna, kami tidak menganjurkan menjalankannya pada sistem produktif selama jam sibuk.

  • -c50G - ukuran file 50 GB (lebih baik menggunakan ukuran file yang besar sehingga tidak muat di cache pengontrol penyimpanan);
  • -d300 - durasi pengujian dalam detik;
  • -r - baca / tulis acak (jika Anda perlu menguji akses sekuensial, gunakan -s);
  • -t8 - jumlah utas;
  • -w40 - rasio operasi tulis untuk membaca operasi 40% / 60%;
  • -o32- panjang antrian;
  • -b64K - ukuran blok;
  • -Sh - Jangan gunakan caching
  • -L. - mengukur latensi;
  • E: \ diskpsdtmp.dat - jalur file uji.

Setelah stress test selesai, nilai kinerja rata-rata dapat diperoleh dari tabel yang diperoleh..

Misalnya, dalam pengujian saya, data kinerja umum berikut (Total IO) diperoleh:

  • MiB / s - 241 (sekitar 252 Mb / s, tidak buruk)
  • IOPS - 3866.49 (sangat baik!)
  • Rata-rata keterlambatan - 66,206 ms (agak tinggi!)

Anda bisa mendapatkan nilai individual hanya untuk operasi baca (bagian Baca IO ) atau catatan (bagian Menulis IO ).

Setelah menguji beberapa disk atau LUN pada penyimpanan menggunakan diskspd, Anda dapat membandingkannya atau memilih array dengan kinerja yang diinginkan untuk tugas Anda.

Cara mendapatkan IOPS dan kinerja subsistem disk menggunakan PowerShell?

Baru-baru ini saya menemukan skrip PowerShell (penulis Microsoft MVP, Mikael Nystrom), yang pada dasarnya merupakan add-on untuk utilitas SQLIO.exe (satu set tes untuk menghitung kinerja penyimpanan file).
Catatan. Pada Desember 2015, Microsoft mengumumkan penghentian dukungan untuk utilitas dan penggantian SQLIO dengan alat yang lebih universal - Diskspd, dengan menghapus file distribusi SQLIO dari situs Anda. Oleh karena itu, Anda harus mencari sendiri sqlio.exe, atau unduh dari situs web kami (terdapat di arsip dengan skrip).

Jadi, unduh arsip yang berisi 2 file: SQLIO.exe dan Kinerja disk.ps1 (disk-perf-iops.ZIP - 73Kb) dan unzip arsip ke direktori sewenang-wenang.

Contoh menjalankan skrip PowerShell untuk menentukan IOPS:

.\ DiskPerformance.ps1 -TestFileName test.dat -TestFileSizeInGB 1 -TestFilepath C: \ temp -TestMode Get-LargeIO -FastMode True -RemoveTestFile True -OutputFormat Out-GridView

Saya menggunakan argumen berikut dalam skrip:

  • -Testfilename tes.datnama file yang dibuat oleh utilitas FSUTIL;
  • -TestFileSizeInGB 1 - halukuran file untuk tes. Opsi yang valid adalah 1,5,10,50,100,500,1000 GB. Ukuran file harus lebih besar dari ukuran cache sistem. Jika tidak, IOPS akan diukur untuk data dalam cache, bukan pada disk;
  • -Testfilepath C: \ Temp - menunjukkan drive yang perhitungan kinerja akan dilakukan dan direktori pada drive di mana file tes akan dibuat. Diijinkan untuk menentukan jalur UNC ke folder jaringan;
  • -Testmode Dapatkan-LargeIO - eAda dua opsi pengukuran beban., Dapatkan-SmallIO - diukur dengan IOPS, Dapatkan-LargeIO - kecepatan data yang diukur. Perbedaan antara argumen SmallIO dan LargeIO, dalam ukuran blok ketika mengukur kecepatan 8 Kbytes dan 512 Kbytes, dan jenis akses Random atau Sequential, masing-masing;
  • -Fastmode Benar  - dalam mode Fastmode, setiap pengujian membutuhkan waktu 10 detik, jika tidak 60 detik;
  • -RemoveTestFile Benar - hapus file tes di akhir tes;
  • -Format output Keluar-Gridview - output hasil pengukuran ke konsol PowerShell dimungkinkan (Format-Meja) atau di jendela terpisah dari tabel grafik (Keluar-Gridview);

Dalam kasus kami, array disk (disk vmdk virtual diuji pada penyimpanan VMFS yang terletak di rak disk HP MSA 2040 dengan akses melalui SAN) menunjukkan rata-rata IOPS sekitar 15.000 dan kecepatan transfer data (bandwidth) tentang 5 Gb / s.

Tabel berikut menunjukkan perkiraan nilai IOPS untuk berbagai jenis drive:

JenisIOPS
SSD (SLC)6000
SSD (MLC)1000
15K RPM175-200
10K RPM125-150
7.2K RPM50-75
RAID5 dari 6 drive dengan 10.000 RPM900

Berikut ini adalah beberapa rekomendasi untuk kinerja disk di IOPS untuk layanan umum:

  • Microsoft Tukar 2010 - dengan 5.000 pengguna, yang masing-masing menerima 75 dan mengirim 30 surat per hari, akan membutuhkan setidaknya 3.750 IOPS
  • Microsoft SQL Server 2008 - dengan 3500 transaksi SQL per detik (TPS) - 28000 IOPS
  • Server Aplikasi Windows Normal untuk pengguna 10-100 - 10-40 IOPS