Аналіз продуктивності Windows з використанням можливостей ОС і утиліти PAL

Автор статті — Михайло Комаров, MVP — Cloud and Datacenter Management
У даній статті будуть розглянуті:
  • механізм роботи з лічильниками продуктивності;
  • налаштування збирачів даних як за допомогою графічного інтерфейсу, так і за допомогою командного рядка;
  • створення чорного ящика для запису даних.
Також розглянемо і обговоримо роботу з утилітою PAL та її застосування для збору та аналізу даних, включаючи типові проблеми локалізованих систем.

У загальному вигляді задачу про продуктивність можна представити у вигляді трьох частин: збір даних, аналіз отриманих даних і створення чорного ящика для попереджувального моніторингу проблемної системи.

Збір даних
Почнемо з усім давно відомого Performance Monitor. Це стандартна утиліта, яка входить у всі сучасні редакції Windows. Викликається або через меню, або з командного рядка або рядка пошуку в Windows 8/10 введенням команди perfmon. Після запуску утиліти ми бачимо стандартну панель, в якій можемо додати і видалити лічильники, змінити уявлення і масштабувати графіки з даними.



Також є збирачі даних, з допомогою яких здійснюється збір даних про продуктивність системи. При певних навичках і вправності операції додавання лічильників та налаштування параметрів збору даних можна виробляти з графічного інтерфейсу. Але коли виникає завдання налаштування збору даних з декількох серверів, розумніше використовувати утиліти командного рядка. Ось цими утилітами ми і займемося.

Перша утиліта — це Typeperf, яка може виводити дані з лічильників продуктивності на екран або у файл, а також дозволяє отримати список лічильників, встановлених у системі. Приклади використання.

Виводить на екран завантаження процесора з інтервалом 1 сек.:

typeperf "\Processor(_Total)\% Processor Time"




Виводить файл назви лічильників продуктивності, пов'язані з об'єктом PhysicalDisk:

typeperf -qx PhysicalDisk -o counters.txt


В нашому випадку ми можемо використовувати утиліту Typeperf, щоб створити файл з потрібними нам лічильниками, який у подальшому будемо використовувати як шаблон для імпорту лічильників у складальник даних.

Наступна утиліта Logman. Дана утиліта дозволяє створювати, редагувати і управляти різними складальниками даних. Ми будемо створювати збирач даних для лічильників продуктивності. Ось, наприклад, коротка довідка по команді Logman, яка відноситься до лічильників продуктивності і управлінню збирачем даних.




Розберемо кілька прикладів, які нам знадобляться в подальшому.

Створимо збирач даних з іменем DataCollector_test, імпортувавши лічильники продуктивності з файлу test.xml:
logman import DataCollector_test -xml C:\PerfTest\test.xml


Створення файлу для збору даних продуктивності з включеним циркулярним режимом і заданим розміром:

logman update DataCollector_test -f bincirc -max 600


Зміна шляху файлу з даними продуктивності за замовчуванням:

logman update DataCollector_test -o C:\PerfTest\Test_log.blg


Запуск колектора даних DataCollector_test:

logman start DataCollector_test


Зупинка колектора даних DataCollector_test:

logman stop DataCollector_test


Відзначимо, що всі ці дії можна проводити з віддаленим комп'ютером.

Розглянемо ще одну утиліту Relog, яка дозволяє проводити маніпуляції з файлом даних після роботи збирача даних. Ось її опис:



Нижче кілька сценаріїв застосування цієї утиліти.

Витяг даних лічильників продуктивності з файлу logfile.blg з застосуванням фільтра зі списком лічильників counters.txt і записом результату в бінарний формат:

relog logfile.blg -cf counters.txt -f bin


Витяг списку лічильників продуктивності з logfile.blg в текстовий файл counters.txt:

relog logfile.blg -q -o counters.txt


Безпосередньо працювати з цією утилітою ми не будемо, але інформація про неї в подальшому допоможе у випадку виникнення проблем у файлі PowerShell, який генерує утиліта PAL.

Відзначимо ще один момент, деякі системи аналізу вимагають дані з найменуваннями лічильників продуктивності англійською мовою. Якщо інтерфейс нашої системи російською мовою, то нам необхідно виконати наступні маніпуляції: завести локального користувача, дати йому права на збір даних (зазвичай дають права локального адміністратора), увійти в систему під ним і у властивостях системи змінити мову інтерфейсу.



Обов'язково вийти та зайти вдруге під цим користувачем для ініціалізації англійського інтерфейсу і вийти з системи. Далі вказати в збирача даних, що збір даних буде здійснюватися від імені цього користувача.



Після цього імена лічильників і файлів будуть на англійській мові.

Також відзначимо можливість збору даних для SQL Server за допомогою утиліти з складу продукту. Це SQLDIAG, яка обробляє журнали продуктивності Windows, журнали подій Windows, трасування SQL Profiler, відомості про блокування SQL Server і відомості про конфігурації SQL Server. Вказати, які типи дані треба збирати за допомогою програми SQLdiag, можна у файлі конфігурації SQLDiag.xml.



Для конфігурування файлу SQLDiag.xml можна використовувати інструмент PSSDIAG codeplex.com.



Ось так виглядає вікно цього інструменту.



В результаті, процес збору даних для SQL може виглядати так. За допомогою PSSDIAG ми формуємо xml-файл. Далі надсилаємо цей файл клієнту, який запускає SQLDIAG c нашим xml-файла на віддаленому сервері і надсилає нам для аналізу результат роботи у вигляді blg-файлу, який ми будемо аналізувати в наступній частині.

Аналіз даних за допомогою утиліти PAL
Дана утиліта написана Clint Huffman, який є PFE-інженером Microsoft і займається аналізом продуктивності систем. Також він є одним із авторів авторизованого курсу Vital Sign, який читається в Microsoft і доступний для корпоративних замовників, у тому числі в Росії російською мовою. Утиліта поширюється вільно, посилання на неї я наведу нижче.

Ось так виглядає стартове вікно утиліти.



На вкладці Counter Log задається шлях до файлу даних з лічильниками продуктивності, зібраними раніше. Також ми можемо задати інтервал, за який буде проводитися аналіз.



На вкладці Threshold File знаходиться список шаблонів, які можна експортувати у формат xml і використовувати як список лічильників для збирача даних. Зверніть увагу на великий вибір шаблонів для аналізу продуктивності для різних систем. Приклад завантаження з командного рядка був показаний вище. Найцінніше, що в цих заздалегідь підготовлених шаблонів встановлені граничні значення цих параметрів, які будуть використані в подальшому для аналізу зібраних даних!!!




Ось так, наприклад, виглядають граничні значення для лічильників продуктивності дискової:



Ми можемо створювати свої шаблони з використанням потрібних лічильників, які будуть підлаштовані під потреби нашої організації.

Діємо за таким алгоритмом: на робочій станції запускаємо утиліту PAL, переходимо на вкладку Threshold File і експортуємо шаблон у вигляді xml-файлу. На підставі цього файлу на сервері створюємо збирач даних і запускаємо збирання інформації.
Після збору даних копіюємо отриманий файл на робочу станцію, щоб аналізом не навантажувати сервер, повертаємося на вкладку Counter Log, вказуємо шлях до файлу. Знову переходимо на Threshold File і вибираємо той самий шаблон, який експортували для збирача даних.

Перемикаємося на вкладку Question і вказуємо об'єм оперативної пам'яті на сервері, на якому був здійснений збір даних. У разі 32-бітної системи заповнимо UserVa.



Переходимо до вкладки Output Options, на якій визначаємо інтервал розбиття для аналізу. Значення за замовчуванням AUTO ділить інтервал на 30 рівних частин.



Вкладка File Output виглядає досить звичайно, вказуємо на ній шлях до файлів підсумкових звітів у форматі HTML або XML.



Вкладка Queue показує підсумковий скрипт на PowerShell. В загальному можна сказати, що утиліта збирає параметри, які вона підставляє скрипт PAL.PS1.



Підсумкова вкладка задає параметри виконання. Можна одночасно запустити декілька скриптів і вказати число потоків на процесорі. Хотілося б акцентувати увагу, що обробку blg робить не утиліта, а скрипт PowerShell, і це відкриває можливості для повної автоматизації аналізу логів. Наприклад, кожні добу перезапускається збирач даних, в результаті звільняється поточний blg-файл і створюється новий. Старий файл копіюється на спеціальний сервер, де буде запускатися скрипт, що обробляє цей файл. Після цього готовий HTML або XML-файл з результатами переміщається в певну директорію або надсилається на поштову скриньку.



Зверніть увагу, що утиліта повинна працювати тільки в англійській локалізації. Інакше отримаємо повідомлення про помилку.



Також файл з даними повинен бути з назвами лічильників англійською. Вище я вказував, як це зробити. Після натискання Finish запускається скрипт PowerShell, час роботи якого залежить від обсягу даних і швидкодії робочої станції.

Підсумком роботи утиліти буде звіт у вибраному форматі, в якому є графіки і числові дані, що дозволяють зрозуміти, що відбувалося в системі за заданий період з урахуванням граничних значень алертів в шаблоні на вкладці Threshold File. Загалом, аналіз HTML-файлу дозволить на початковому етапі визначити проблемні місця в системі і зрозуміти, куди рухатися далі, як в плані більш тонкого моніторингу, так і в плані модернізації або зміни конфігурації системи. В блозі Clint Huffman є скрипт, яким можна конвертувати файл шаблону з граничними умовами у більш зрозумілий формат.





Чорний ящик
Іноді виникає необхідність в превентивному моніторингу проблемної системи. Для цього ми створимо «чорний ящик», в який будемо записувати дані продуктивності. Повернемося до скриптів, описаним раніше.

Створимо збирач даних з іменем BlackBox, імпортувавши лічильники продуктивності з файлу SystemOverview.xml, який вивантажили з утиліти PAL або створили самостійно:

logman import BlackBox -xml C:\ BlackBox\SystemOverview.xml


Створення файлу для збору даних продуктивності з включеним циркулярним режимом і заданим розміром 600 МБ (близько 2 діб при стандартному наборі лічильників):

logman update BlackBox -f bincirc -max 600


Зміна шляху файлу з даними продуктивності за замовчуванням:

logman update BlackBox -o C:\ BlackBox \ BlackBox _log.blg


Запуск колектора даних BlackBox:

logman start BlackBox


Даний скрипт створює завдання перезапуску збирача даних у разі перезапуску системи:

schtasks /create /tn pal /sc onstart /tr "logman start BlackBox " /ru system


На всякий випадок виправимо властивості диспетчера даних, щоб заповнити місце на диску, так як після перезапуску збирача даних створюється новий файл з лімітом 600 МБ.



Зазначимо, що скопіювати файл з даними можна тільки при зупиненому збирача даних. Зупинити ж останній можна скриптом або за допомогою графічного інтерфейсу.

Зупинка колектора даних BlackBox:

logman stop BlackBox


На цьому закінчимо частину, присвячену збору і первинного аналізу продуктивності.

Ресурси
Performance Monitor
https://technet.microsoft.com/en-us/library/cc749154.aspx

Утиліта PAL
https://pal.codeplex.com/

Блог Clint Huffman
http://blogs.technet.com/b/clinth/

Книга Clint Huffman
Windows Performance Analysis Field Guide
http://www.amazon.com/dp/0124167012/ref=wl...=I2TOVTYHI6HDHC

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.