Измерване на производителността и IOPS на твърди дискове и съхранение в Windows

Една от основните показатели за оценка на работата на съществуваща или планирана система за съхранение е IOPS (вход/ Изход Операции на втори - брой операции за вход / изход). Казано по-просто, IOPS е броят блокове, които могат да бъдат прочетени или записани на медиите или файловата система за единица време. Колкото по-голям е този номер, толкова по-голяма е производителността на тази дискова подсистема (честно казано, самата стойност на IOPS трябва да се разглежда във връзка с други характеристики на системите за съхранение, като средна латентност, пропускателна способност и т.н.).

В тази статия ще разгледаме няколко начина за измерване на ефективността на системата за съхранение, използвана в IOPS под Windows (локален твърд диск, SSD устройство, SMB мрежова папка, CSV обем или LUN при съхранение в SAN).

Съдържание:

  • Броячи за производителност на подсистемата на Windows
  • Тестване на IOPS на Windows с DiskSpd
  • Как да постигнете IOPS и дисковата подсистема с помощта на PowerShell?

Броячи за производителност на подсистемата на Windows

Можете да оцените текущото натоварване на дисковата подсистема, като използвате вградените броячи на производителност на Windows от производителност монитор. За да събирате данни на тези броячи:

  1. начало Perfmon;
  2. Създайте нов набор от колекционери на данни (Комплект за събиране на данни). Изберете Създайте ръчно;
  3. Изберете опция Създаване на регистрационни файлове -> Брояч на производителността;
  4. Сега в свойствата на новия набор за събиране на данни добавете следните броячи за ефективност на обекта Физически диск (можете да изберете броячи за конкретно устройство или за всички налични локални устройства):
    • Ср. Диск Sec./Transfer
    • Ср. Дължина на опашката на диска
    • Ср. Дискови байтове / трансфер
    • Дискови байтове / сек
    • Дискови трансфери / сек
    • Разделяне на IO / сек
  5. Можете да промените други опции за събиране на данни. По подразбиране стойностите на броячите се събират на всеки 15 секунди За да се показват данни за производителността на диска в реално време, добавете посочения брояч към Perfmon в секцията Инструменти за мониторинг -> Монитор на производителността.
  6. Остава да започнете да събирате данни за брояча на ефективността (начало) и изчакайте събирането на достатъчно информация за анализ. След това щракнете върху RMB на избрания u select Стоп;
  7. За да видите събраните данни на диска, отидете на Perfmon -> Доклади -> Дефинирани от потребителя -> Data_Disk_IO -> вашия комплект. По подразбиране данните на диска се показват като графики;
  8. с Ctrl + G преминете в режим доклад.

Как да интерпретираме резултатите от производителността на диска в Perfmon? За бърз анализ на производителността на дисковата подсистема, трябва да разгледате стойностите на поне следващите 5 брояча.

Когато анализирате данните на брояча, желателно е да имате представа за конфигурацията на физическите дискове (независимо дали се използват RAID / Stripe / брой и тип дискове, наличност на кеш и т.н.).
  • диск секунда/ Прехвърляне - времето, необходимо за извършване на една операция на запис / четене на устройството за съхранение / диск - закъснение на диска. Ако закъснението е повече от 25 ms (0.25) или по-голямо, тогава дисковият масив няма време за извършване на операции. За силно натоварени системи стойността не трябва да надвишава 10 ms (0,1);
  • Дискови трансфери / сек - Броят операции за четене / запис в секунда (IOPS). Това е основният показател за интензивността на достъпа до дискове (приблизителните стойности в IOPS за различни видове дискове са представени в края на статията);
  • диск Bytes/ Сек - средна размяна на дискове (четене / запис) в секунда. Максималните стойности зависят от вида на диска (150-250 MB / секунда - за обикновен диск и 500-10000 за SSD);
  • разцепване IO/ сек - индикатор за фрагментиране на диска, когато операционната система трябва да раздели една I / O операция на няколко операции. Той може също да показва, че приложението изисква твърде големи блокове данни, които не могат да бъдат прехвърлени в една операция;
  • Ср. диск опашка дължина- дължина на опашката до диск (брой транзакции в очакване на обработка). За един диск дължината на опашката не трябва да надвишава 2. За RAID масив от 4 диска дължината на опашката до 8 ще се счита за валидна стойност..

Тестване на IOPS на Windows с DiskSpd

Microsoft препоръчва използването на помощната програма за генериране на натоварване на дисковата подсистема и измерване на нейната производителност. DiskSpd (Https://aka.ms/diskspd). Това е конзолна програма, която може да извършва I / O операции с посочената цел в няколко нишки. Аз често използвам тази помощна програма за измерване на производителността на съхранение в IOPS и получаване на максималната скорост на четене / запис от този сървър (разбира се можете да измерите и производителността от страна на съхранението, в този случай diskspd ще се използва за генериране на товара).

Помощната програма не изисква инсталация, просто изтеглете и разархивирайте архива на локален диск. За x64 битови системи използвайте версията на diskspd.exe от директорията amd64fre.

Използвам следната команда за тестване на диска:

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

Важно е. Когато използвате diskspd.exe, на дисковете и процесора на тестваната система се генерира доста голям товар. Следователно, за да не предизвикате спад в производителността за потребителите, не препоръчваме да го стартирате на продуктивни системи през пиковите часове.

  • -c50G - размер на файла 50 GB (по-добре е да използвате голям размер на файла, така че да не се побира в кеша на контролера за съхранение);
  • -D300 - продължителност на теста в секунди;
  • -R - произволно четене / запис (ако трябва да тествате последователен достъп, използвайте -и);
  • -t8 - брой нишки;
  • -W40 - съотношението операции на запис и операции за четене 40% / 60%;
  • -O32- дължина на опашката;
  • -b64K - размер на блока;
  • -Sh - Не използвайте кеширане
  • -L - измерване на латентността;
  • Д: \ diskpsdtmp.dat - път на тестов файл.

След приключване на стрес теста, средните стойности на ефективността могат да бъдат получени от получените таблици..

Например в моя тест бяха получени следните общи данни за ефективността (Total IO):

  • MiB / s - 241 (около 252 Mb / s, не е лошо)
  • IOPS - 3866.49 (отлично!)
  • Средно закъснение - 66.206 ms (малко високо!)

Можете да получите индивидуални стойности само за операции за четене (раздел Прочетете IO ) или записи (раздел Напиши IO ).

След като сте тествали няколко диска или LUN на съхранение с помощта на diskspd, можете да ги сравните или да изберете масив с желаната производителност за вашите задачи.

Как да постигнете IOPS и дисковата подсистема с помощта на PowerShell?

Наскоро попаднах на сценарий на PowerShell (автор на Microsoft MVP, Mikael Nystrom), който по същество е добавка за помощната програма SQLIO.Търсейки (набор от тестове за изчисляване на производителността на съхранение на файлове).
забележка. През декември 2015 г. Microsoft обяви прекратяването на поддръжката на помощната програма и подмяната на SQLIO с по-универсален инструмент - Diskspd, чрез изтриване на файлове за разпространение на SQLIO от вашия сайт. Ето защо ще трябва сами да търсите sqlio.exe или да изтеглите от нашия уебсайт (намира се в архива със скрипта).

И така, изтеглете архива, съдържащ 2 файла: SQLIO.Търсейки и DiskPerformance.к.с.1 (disk-perf-iops.ZIP - 73Kb) и разархивирайте архива в произволна директория.

Пример за изпълнение на скрипт PowerShell за определяне на IOPS:

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

Използвах следните аргументи в сценария:

  • -TestFileName тест.DATиме на файла, създаден от помощната програма FSUTIL;
  • -TestFileSizeInGB 1 - Rразмер на файла за тестове. Валидните опции са 1,5,10,50,100,500,1000 GB. Размерът на файла трябва да е по-голям от размера на системния кеш. В противен случай IOPS ще се измерва за данни в кеша, а не на диска;
  • -TestFilepath C: \ Темп - указва устройството, за което ще се извърши изчислението на производителността, и директорията на устройството, в която ще бъде създаден тестовият файл. Допустимо е да се посочи пътят на UNC до папката на мрежата;
  • -TestMode получавам-LargeIO - дИма две опции за измерване на натоварването., получавам-SmallIO - измерено с IOPS, получавам-LargeIO - измерена скорост на данни. Разликата между аргументите SmallIO и LargeIO, в размер на блока при измерване на скорост от 8 Kby и 512 Kbytes, и вида на достъп, съответно Random или Sequences;
  • -FastMode вярно  - в режим Fastmode всеки тест отнема 10 секунди, в противен случай 60 секунди;
  • -RemoveTestFile вярно - изтрийте тестовия файл в края на теста;
  • -изхода- от-GridView - възможен е изход на резултати от измервания към конзолата PowerShell (формат-маса) или в отделен прозорец на графичната таблица (от-гледания);

В нашия случай дисковият масив (виртуалният диск vmdk беше тестван на VMFS съхранение, разположен на дисковия рафт на HP MSA 2040 с достъп чрез SAN), показа среден IOPS от около 15000 и скорости на трансфер на данни (честотна лента) около 5 Gb / s.

Следващата таблица показва приблизителни стойности на IOPS за различни типове устройства:

типIOPS
SSD (SLC)6000
SSD (MLC)1000
15K RPM175-200
10K RPM125-150
7.2K RPM50-75
RAID5 от 6 диска с 10 000 оборота в минута900

По-долу са някои от препоръките за производителност на диска в IOPS за общи услуги:

  • Microsoft обмен 2010 - с 5000 потребители, всеки от които получава 75 и изпраща 30 писма на ден, ще изисква най-малко 3 750 IOPS
  • Microsoft SQL 2008 сървър - с 3500 SQL транзакции в секунда (TPS) - 28000 IOPS
  • Нормален сървър за приложения на Windows за 10-100 потребители - 10-40 IOPS