Pour mesurer les IOPS et le débit d'un disque utilisé sur une instance en cours d'exécution, effectuez l'analyse du système de fichiers avec la configuration souhaitée. Utilisez cette option pour tester une charge de travail réaliste sans perdre le contenu de votre disque existant.
Notez que lorsque vous comparez le système de fichiers sur un disque existant, de nombreux facteurs propres à votre environnement de développement peuvent affecter les résultats du benchmarking. Vous risquez donc de ne pas atteindre les limites de performances des disques.
Pour mesurer les performances brutes d'un disque persistant, évaluez directement le périphérique en mode bloc. Utilisez cette option pour comparer les performances brutes des disques avec les limites de performances des disques.
Sur les VM C4, Windows accepte une profondeur maximale de 1 024 par file d'attente d'envoi d'appareil. Lorsqu'une file d'attente est pleine, Windows cesse d'envoyer des E/S jusqu'à ce qu'elle soit partiellement vidée, ce qui réduit considérablement les performances. Pour éviter de déclencher cette condition, nous vous recommandons de limiter vos charges de travail de benchmarking à une profondeur de file d'attente globale de 1 024 par volume associé.
Configurer le logiciel de benchmarking
Pour comparer les performances des disques persistants sur des VM Windows, utilisez DISKSPD.
Effectuer l'analyse comparative des IOPS et du débit d'un disque sur une instance de VM en cours d'exécution
Si vous souhaitez mesurer les IOPS et le débit pour une charge de travail réaliste sur un disque actif sur une instance de VM en cours d'exécution sans perdre le contenu de votre disque, effectuez l'analyse comparative sur un nouveau répertoire sur le système de fichiers existant.
Dans les étapes suivantes, nous partons du principe que le disque à tester est installé en tant que D: et que les commandes sont exécutées dans une fenêtre Invite de commande (cmd.exe) disposant des droits d'administrateur :
Créez un fichier de 10 Go nommé DISKTEST.DAT sur le disque:
set TESTFILE=D:\DISKTEST.DAT
diskspd -d0 -c10G %TESTFILE%
Testez le débit en écriture à l'aide d'écritures séquentielles comportant plusieurs flux parallèles (16 ou plus). Prévoyez une taille de bloc d'E/S de 1 Mo et une profondeur d'E/S d'au moins 64 :
Testez les IOPS en écriture à l'aide d'écritures aléatoires. Prévoyez une taille de bloc d'E/S de 4 ko et une profondeur d'E/S d'au moins 256 :
diskspd -d300 -b4K -o256 -Sh -w100 -r %TESTFILE%
Testez le débit en lecture à l'aide de lectures séquentielles comportant plusieurs flux parallèles (16 ou plus). Prévoyez une taille de bloc d'E/S de 1 Mo et une profondeur d'E/S d'au moins 64 :
diskspd -d300 -b1M -o64 -Sh -t16 -si %TESTFILE%
Testez les IOPS en lecture à l'aide de lectures aléatoires. Prévoyez une taille de bloc d'E/S de 4 ko et une profondeur d'E/S d'au moins 256 :
diskspd -d300 -b4K -o256 -Sh -r %TESTFILE%
Effectuer un nettoyage :
del %TESTFILE%
Benchmarking des performances brutes des disques persistants
Pour mesurer les performances des volumes Persistent Disk uniquement en dehors de votre environnement de développement, testez les performances de lecture et d'écriture pour un périphérique en mode bloc sur un disque persistant et une VM non critiques.
Vérifiez qu'il n'existe aucune partition non réservée sur le disque. Saisissez diskpart dans une fenêtre Invite de commande avec élévation de privilèges.
diskpart
Répertoriez les disques associés à la VM:
DISKPART> list disk
Le résultat affiche le disque de 1 To que vous venez de créer, qui correspond au disque 1 dans l'exemple de résultat suivant:
Disk ### Status Size Free Dyn Gpt
-------- ------------- ------- ------- --- ---
Disk 0 Online 120 GB 1024 KB *
Disk 1 Online 1024 GB 1023 GB *
Sélectionnez le disque que vous souhaitez analyser.
DISKPART> select disk 1
Répertoriez les partitions sur le disque sélectionné.
Les étapes précédentes doivent être répétées si le disque que vous souhaitez comparer possède d'autres partitions en dehors de la partition réservée. Lorsque seule la partition réservée reste disponible, passez aux étapes suivantes:
Après avoir identifié le disque et vérifié qu'il n'y a pas de partition, définissez la variable d'environnement TESTDRIVE sur "#" suivie du numéro du disque à tester.
C:/> set TESTDRIVE=#1
Testez le débit en écriture à l'aide d'écritures séquentielles comportant plusieurs flux parallèles (16 ou plus). Prévoyez une taille de bloc d'E/S de 1 Mo et une profondeur d'E/S d'au moins 64 :
Testez les IOPS en écriture à l'aide d'écritures aléatoires. Prévoyez une taille de bloc d'E/S de 4 ko et une profondeur d'E/S d'au moins 256 :
diskspd -d300 -b4K -o256 -Sh -r -w0 %TESTDRIVE%
Testez la latence en écriture. Lors du test de la latence par E/S, la VM ne doit pas atteindre la limite de bande passante ou d'IOPS, sinon la latence observée ne reflétera pas la latence réelle des E/S du disque persistant.
diskspd -d300 -b4K -o4 -Sh -r -w0 -L %TESTDRIVE%
Testez le débit en lecture à l'aide de lectures séquentielles comportant plusieurs flux parallèles (16 ou plus). Prévoyez une taille de bloc d'E/S de 1 Mo et une profondeur d'E/S d'au moins 64 :
diskspd -d300 -b1M -o64 -Sh -t16 -si %TESTDRIVE%
Testez les IOPS en lecture à l'aide de lectures aléatoires. Prévoyez une taille de bloc d'E/S de 4 ko et une profondeur d'E/S d'au moins 256 :
diskspd -d300 -b4K -o256 -Sh -r %TESTDRIVE%
Pour tester la latence en lecture, il est important de remplir le disque avec des données afin d'obtenir une mesure de latence réaliste. La VM ne doit pas atteindre les limites d'IOPS ni de débit lors de ce test : une fois qu'un disque persistant atteint sa limite de saturation, il repousse toute opération entrante d'E/S, ce qui se traduit par une augmentation artificielle de Latence des E/S.
diskspd -d300 -b4K -o4 -Sh -r -L %TESTDRIVE%
Testez la bande passante en lecture séquentielle.
diskspd -d300 -b1M -o64 -Sh -t4 -si %TESTDRIVE%
Testez la bande passante en écriture séquentielle.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/04 (UTC)."],[[["\u003cp\u003eThis document guides users on how to benchmark Persistent Disk performance on Windows virtual machines (VMs) using the \u003ccode\u003eDISKSPD\u003c/code\u003e tool.\u003c/p\u003e\n"],["\u003cp\u003eYou can measure IOPS and throughput on an existing disk, allowing you to assess performance under real-world conditions without data loss.\u003c/p\u003e\n"],["\u003cp\u003eBenchmarking raw disk performance involves testing a block device directly on a throwaway disk and VM, providing a way to compare raw performance against disk limits.\u003c/p\u003e\n"],["\u003cp\u003eOn C4 VMs, it is recommended to limit benchmarking workloads to an aggregate queue depth of 1024 per attached volume to avoid performance reduction.\u003c/p\u003e\n"],["\u003cp\u003eThe document includes detailed instructions for testing various aspects of disk performance, including read/write throughput, IOPS, and latency, for both existing and raw disks.\u003c/p\u003e\n"]]],[],null,["# Benchmark Persistent Disk performance on a Windows VM\n\nWindows\n\n*** ** * ** ***\n\nThis document describes how to benchmark\n[Persistent Disk performance](/compute/docs/disks/performance)\non Windows virtual machine (VM) instances. For Linux VMs, see\n[benchmark Persistent Disk performance on a Linux VM](/compute/docs/disks/benchmarking-pd-performance-linux).\n\nTo [measure IOPS and throughput of a disk in use on a running instance](#existing-disk),\nbenchmark the file system with its intended configuration. Use this option to\ntest a realistic workload without losing the contents of your existing disk.\nNote that when you benchmark the file system on an existing disk, there are many\nfactors specific to your development environment that may affect benchmarking\nresults, and you may not reach the\n[disk performance limits](/compute/docs/disks/performance#machine-type-disk-limits).\n\nTo [measure the raw performance of a Persistent Disk](#raw-disk), benchmark the\nblock device directly. Use this option to compare raw disk performance to disk\nperformance limits.\n\nOn [C4 VMs](/compute/docs/general-purpose-machines#c4_series), Windows supports\na maximum depth of 1024 per device submission queue. When a queue fills, Windows\nstops submitting I/O until the queue has partially drained, which significantly\nreduces performance. To avoid triggering this condition, we recommend\nlimiting your benchmarking workloads to an aggregate queue depth of 1024 per\nattached volume.\n\n### Configure benchmarking software\n\nTo benchmark Persistent Disk performance on Windows VMs, use [`DISKSPD`](https://github.com/microsoft/diskspd).\n\n1. [Connect to your VM instance](/compute/docs/instances/connecting-to-windows).\n\n2. Open Powershell and download the `DISKSPD` tool using the following command:\n\n ```\n $client = New-Object System.Net.WebClient\n $client.DownloadFile(\"https://github.com/Microsoft/diskspd/releases/latest/download/DiskSpd.zip\",\"$env:temp\\DiskSpd-download.zip\")\n Expand-Archive -LiteralPath \"$env:temp\\DiskSpd-download.zip\" C:\\DISKSPD\n Get-ChildItem C:\\DISKSPD\n ```\n | **Note:** You can also download the latest version of the `DISKSPD` tool directly from [GitHub](https://github.com/Microsoft/diskspd/releases/latest/download/DiskSpd.zip) and extract it manually.\n\n### Benchmark IOPS and throughput of a disk on a running VM instance\n\nTo measure IOPS and throughput for a realistic workload on an active\ndisk on a running VM instance without losing the contents of your disk, benchmark\nagainst a new directory on the existing file system.\n\nIn the following steps assume the disk to test is mounted as `D:` and the\ncommands are executed in a **Command Prompt** (cmd.exe) window that has\nadministrator privileges:\n\n1. [Connect to your VM](/compute/docs/instances/connecting-to-windows).\n\n2. Verify `DISKSPD` [software configuration](#software-config) and change\n directory to the 64-bit binary:\n\n **Note:** The following command assumes `DISKSPD` was installed at `C:\\DISKSPD`. \n\n ```\n cd C:\\DISKSPD\\amd64\n ```\n3. Create a new 10 GB file named `DISKTEST.DAT` on the disk:\n\n ```\n set TESTFILE=D:\\DISKTEST.DAT\n diskspd -d0 -c10G %TESTFILE%\n ```\n4. Test write throughput by performing sequential writes with multiple\n parallel streams (16 or more), using an I/O block size of 1 MB and an I/O depth\n of at least 64:\n\n ```\n diskspd -d300 -b1M -o64 -Sh -w100 -t16 -si %TESTFILE%\n ```\n5. Test write IOPS by performing random writes, using an I/O block size of\n 4 KB and an I/O depth of at least 256:\n\n ```\n diskspd -d300 -b4K -o256 -Sh -w100 -r %TESTFILE%\n ```\n6. Test read throughput by performing sequential reads with multiple parallel\n streams (16 or more), using an I/O block size of 1 MB and an I/O depth of at\n least 64:\n\n ```\n diskspd -d300 -b1M -o64 -Sh -t16 -si %TESTFILE%\n ```\n7. Test read IOPS by performing random reads, using an I/O block size of\n 4 KB and an I/O depth of at least 256:\n\n ```\n diskspd -d300 -b4K -o256 -Sh -r %TESTFILE%\n ```\n8. Clean up:\n\n ```\n del %TESTFILE%\n ```\n\n### Benchmarking raw Persistent Disk performance\n\nTo measure the performance of Persistent Disk volumes alone outside of\nyour development environment, test read and write performance for a block\ndevice on a throwaway Persistent Disk and VM.\n| **Warning:** The commands in this section overwrite the contents of your disk. **We strongly recommend using a throwaway VM and disk**.\n\n1. [Create and start a VM instance](/compute/docs/instances/create-start-instance).\n\n2. [Add a Persistent Disk to the VM instance](/compute/docs/disks/add-persistent-disk)\n that you intend to benchmark.\n\n3. [Connect to your VM instance](/compute/docs/instances/connecting-to-windows).\n\n4. Verify `DISKSPD` [software configuration](#software-config) and change\n directory to the 64-bit binary:\n\n **Note:** The following command assumes DISKSPD was installed at C:\\\\DISKSPD. \n\n ```\n cd C:\\DISKSPD\\amd64\n ```\n5. Verify that there are no non-reserved partitions on the disk. Enter\n `diskpart` into an elevated **Command Prompt** window.\n\n ```\n diskpart\n ```\n6. List the disks attached to the VM:\n\n ```\n DISKPART\u003e list disk\n ```\n\n The output shows the newly created 1 TB disk which is Disk 1 in the\n following example output: \n\n ```\n Disk ### Status Size Free Dyn Gpt\n -------- ------------- ------- ------- --- ---\n Disk 0 Online 120 GB 1024 KB *\n Disk 1 Online 1024 GB 1023 GB *\n ```\n7. Select the disk that you intend to benchmark.\n\n ```\n DISKPART\u003e select disk 1\n ```\n8. List the partitions on the selected disk.\n\n ```\n DISKPART\u003e list partition\n ``` \n\n Partition ### Type Size Offset\n ------------- ---------------- -------- -------\n Partition 1 Reserved 15 MB 17 KB\n Partition 2 Primary 1024 GB 16 MB\n\n9. Select the primary partition 2:\n\n ```\n DISKPART\u003e select partition 2\n ```\n10. Delete the selected partition:\n\n ```\n DISKPART\u003e delete partition\n ```\n | **Warning:** This step will cause permanent loss of data.\n11. Exit diskpart\n\n ```\n DISKPART\u003e exit\n ```\n\nThe preceding steps should be repeated if the disk you intend to benchmark\nhas any other partitions apart from the Reserved partition. When only the\nReserved partition remains, continue with the following steps:\n\n1. After you've identified the disk and verified that there are no partitions,\n set the `TESTDRIVE` environment variable to '#' followed by the number of the\n disk to test.\n\n ```\n C:/\u003e set TESTDRIVE=#1\n ```\n2. Test write throughput by performing sequential writes with multiple\n parallel streams (16 or more), using an I/O block size of 1 MB and\n an I/O depth of at least 64:\n\n ```\n diskspd -d300 -b1M -o64 -Sh -t16 -si -w0 %TESTDRIVE%\n ```\n3. Test write IOPS by performing random writes, using an I/O block size of\n 4 KB and an I/O depth of at least 256:\n\n ```\n diskspd -d300 -b4K -o256 -Sh -r -w0 %TESTDRIVE%\n ```\n4. Test write latency. While testing I/O latency, the VM must not reach\n maximum bandwidth or IOPS; otherwise, the observed latency won't reflect\n the actual Persistent Disk I/O latency.\n\n ```\n diskspd -d300 -b4K -o4 -Sh -r -w0 -L %TESTDRIVE%\n ```\n5. Test read throughput by performing sequential reads with multiple parallel\n streams (16 or more), using an I/O block size of 1 MB and an I/O depth\n of at least 64:\n\n ```\n diskspd -d300 -b1M -o64 -Sh -t16 -si %TESTDRIVE%\n ```\n6. Test read IOPS by performing random reads, using an I/O block size of\n 4 KB and an I/O depth of at least 256:\n\n ```\n diskspd -d300 -b4K -o256 -Sh -r %TESTDRIVE%\n ```\n7. To test read latency, it's important to fill the disk with data to get a\n realistic latency measurement. The VM must not reach IOPS\n or throughput limits during this test because after the Persistent Disk\n reaches its saturation limit, it pushes back on incoming I/O operations,\n and this is reflected as an artificial increase in I/O latency.\n\n ```\n diskspd -d300 -b4K -o4 -Sh -r -L %TESTDRIVE%\n ```\n8. Test sequential read bandwidth.\n\n ```\n diskspd -d300 -b1M -o64 -Sh -t4 -si %TESTDRIVE%\n ```\n9. Test sequential write bandwidth.\n\n ```\n diskspd -d300 -b1M -o64 -Sh -t4 -si -w100 %TESTDRIVE%\n ```\n10. Clean up the throwaway Persistent Disk and VM:\n\n 1. [Delete the disk](/compute/docs/samples/compute-disk-delete) used for benchmarking performance.\n 2. [Delete the VM](/compute/docs/instances/deleting-instance) created for benchmarking performance.\n\nWhat's next\n-----------\n\n- Learn how to monitor your disk performance by [reviewing persistent disk performance metrics](/compute/docs/disks/review-disk-metrics).\n- Learn about [Persistent Disk pricing](/compute/disks-image-pricing#persistentdisk).\n- Learn how to [optimize Persistent Disk performance](/compute/docs/disks/optimizing-pd-performance)."]]