Cpu idle time что это
Перейти к содержимому

Cpu idle time что это

  • автор:

Значительный CPU idle time при высоком LA

Load average 75-100, при этом local io практически отсутствует, и никто не застрял в uninterruptible sleep, при всем при этом довольно значительный idle time в vmstat.

Проверим, что количество runnable потоков примерно соответствует load average:

$ ps Hh -eo stat,pid,command |egrep '^R' |wc -l 109 

В разные моменты выдает разные значения понятное дело, но всегда в интервале 60-120

вывод mpstat -P ALL 1 (поймал момент, когда idle минимальный, обычно 10-13):

12:20:23 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 12:20:24 all 89.38 0.00 2.12 0.00 0.95 0.00 0.00 0.00 7.55 12:20:24 0 78.79 0.00 4.04 0.00 10.10 0.00 0.00 0.00 7.07 12:20:24 1 98.99 0.00 0.00 0.00 0.00 0.00 0.00 0.00 1.01 12:20:24 2 88.12 0.00 1.98 0.00 0.99 0.00 0.00 0.00 8.91 12:20:24 3 94.00 0.00 2.00 0.00 0.00 0.00 0.00 0.00 4.00 12:20:24 4 89.90 0.00 1.01 0.00 0.00 0.00 0.00 0.00 9.09 12:20:24 5 91.09 0.00 3.96 0.00 0.99 0.00 0.00 0.00 3.96 12:20:24 6 99.01 0.00 0.99 0.00 0.00 0.00 0.00 0.00 0.00 12:20:24 7 97.03 0.00 0.99 0.00 0.00 0.00 0.00 0.00 1.98 12:20:24 8 98.02 0.00 0.99 0.00 0.99 0.00 0.00 0.00 0.00 12:20:24 9 97.03 0.00 0.99 0.00 0.00 0.00 0.00 0.00 1.98 12:20:24 10 90.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 9.00 12:20:24 11 94.00 0.00 3.00 0.00 0.00 0.00 0.00 0.00 3.00 12:20:24 12 86.00 0.00 2.00 0.00 0.00 0.00 0.00 0.00 12.00 12:20:24 13 97.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 2.00 12:20:24 14 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:20:24 15 95.96 0.00 1.01 0.00 0.00 0.00 0.00 0.00 3.03 12:20:24 16 98.00 0.00 2.00 0.00 0.00 0.00 0.00 0.00 0.00 12:20:24 17 91.92 0.00 5.05 0.00 0.00 0.00 0.00 0.00 3.03 12:20:24 18 94.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 5.00 12:20:24 19 97.00 0.00 2.00 0.00 0.00 0.00 0.00 0.00 1.00 12:20:24 20 83.00 0.00 3.00 0.00 10.00 0.00 0.00 0.00 4.00 12:20:24 21 82.83 0.00 4.04 0.00 7.07 0.00 0.00 0.00 6.06 12:20:24 22 98.99 0.00 0.00 0.00 0.00 0.00 0.00 0.00 1.01 12:20:24 23 88.00 0.00 2.00 0.00 9.00 0.00 0.00 0.00 1.00 12:20:24 24 94.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 2.00 12:20:24 25 77.23 0.00 2.97 0.00 0.00 0.00 0.00 0.00 19.80 12:20:24 26 77.23 0.00 3.96 0.00 0.00 0.00 0.00 0.00 18.81 12:20:24 27 63.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 36.00 12:20:24 28 91.92 0.00 1.01 0.00 0.00 0.00 0.00 0.00 7.07 12:20:24 29 83.00 0.00 2.00 0.00 0.00 0.00 0.00 0.00 15.00 12:20:24 30 84.85 0.00 1.01 0.00 0.00 0.00 0.00 0.00 14.14 12:20:24 31 95.00 0.00 3.00 0.00 0.00 0.00 0.00 0.00 2.00 12:20:24 32 88.00 0.00 3.00 0.00 0.00 0.00 0.00 0.00 9.00 12:20:24 33 97.98 0.00 2.02 0.00 0.00 0.00 0.00 0.00 0.00 12:20:24 34 76.00 0.00 2.00 0.00 0.00 0.00 0.00 0.00 22.00 12:20:24 35 83.17 0.00 2.97 0.00 0.00 0.00 0.00 0.00 13.86 12:20:24 36 73.00 0.00 3.00 0.00 1.00 0.00 0.00 0.00 23.00 12:20:24 37 86.00 0.00 5.00 0.00 0.00 0.00 0.00 0.00 9.00 12:20:24 38 83.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 16.00 12:20:24 39 92.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 4.0 

что это может быть? грешу на scheduler, но непонятно как его крутить, чтобы он успевал занимать CPU под задачи. Не очень приято терять 10% CPU на задаче, которая как раз очень жадная до этого CPU.

Метрика загруженности процессора (CPU utiliztion) — это не то что вы думаете

Всем привет. Предлагаю вашему вниманию свой перевод поста “CPU Utilization is Wrong” из блога Брендана Грегга. Метрика загруженности процессора (CPU utiliztion), которую все мы привыкли использовать, обычно понимается неправильно. Что такое загруженность процессора? То насколько процессор сейчас занят работой? Нет, это не так, и да, я говорю о метрике %CPU , которая используется всегда и везде, в каждой утилите мониторинга производительности, например в top(1) . Как вы думаете, что значит нагрузка на процессор 90% на картинке ниже? Вот что это значит на самом деле: Stalled, то есть “приостановлено” значит, что в данный момент процессор не обрабатывает инструкции, обычно это означает, что он ожидает завершения операций ввода/вывода связанных с памятью (здесь и далее речь о RAM, а не дисковом вводе/выводе). Соотношение между “занято” и “приостановлено” (busy/stalled), которое я привел выше, это то что я обычно вижу в продакшене. Вероятно, что ваш процессор тоже большую часть времени находится в stalled состоянии, но вы об этом и не догадываетесь. Что это значит для вас? Понимание того насколько много ваш процессор находится в приостановленном состоянии может помочь вам понять куда направить усилия по оптимизации производительности приложения: на ускорение кода или уменьшение числа операций ввода/вывода связанных с памятью. Всем кто заинтересован в оптимизации нагрузки на процессор, в особенности в облаках с настроенным автомасштабированием на основе нагрузки на CPU, будет полезно знать насколько долго процессор находится в приостановленном состоянии.

Что такое нагрузка на процессор на самом деле?

Метрика, которую мы называем нагрузкой на процессор (CPU utilization) на самом деле это “не-idle время”, то есть время, которое процессор не выполняет idle-тред. Ядро вашей операционной системы (какую бы ОС вы не использовали) обычно следит за этим во время переключения контекста. Если не-idle тред запустился, а затем спустя 100 милисекунд остановился, то ядро посчитает, что процессор был использован в течение всего этого времени. Эта метрика так же стара как и системы совместного использования времени (time sharing systems). В бортовом компьютере лунного модуля Apollo (это пионер среди систем совместного использования времени) idle-тред назывался “DUMMY JOB” и инженеры мониторили циклы выполняющие его в сравнении с реальными задачами, это было важной метрикой измерения нагрузки. (Я писал об этом ранее). Что же с этой метрикой не так? В наши дни процессоры работают значительно быстрее памяти, поэтому время ожидания памяти доминирует в метрике “нагрузка на процессор”. Когда вы видите большие значение %CPU в top(1) , вы, должно быть, думаете, что процессор является бутылочным горлышком, когда на самом деле проблема в DRAM. Со временем все становится только хуже. Долгое время производители процессоров увеличивали тактовые частоты своих процессоров быстрее чем производители памяти уменьшали задержки доступа к памяти (CPU DRAM gap). Примерно в 2005 году процессоры достигли частот в 3 GHz и с тех пор мощность процессоров растет не за счет увеличения тактовой частоты, а за счет большего числа ядер, гипертрединга и многопроцессорных конфигураций. Все это предъявляет еще больше требований к памяти. Производители процессоров пытались снизить задержки связанные с памятью за счет больших по размеру и более умных CPU-кешей, более быстрых шин и соединений. Но проблема со stalled-состоянием все еще не решена.

Как понять, что процессор на самом деле делает

Сделать это можно используя Performance Monitoring Counters (PMC-счетчики): хардверные счетчики, которые могут быть прочитаны с помощью Linux pref (пакет linux-tools-generic в Линуксе) и других утилит. Для примера понаблюдаем за всей системой в течение 10 секунд:

# perf stat -a -- sleep 10 Performance counter stats for 'system wide': 641398.723351 task-clock (msec) # 64.116 CPUs utilized (100.00%) 379,651 context-switches # 0.592 K/sec (100.00%) 51,546 cpu-migrations # 0.080 K/sec (100.00%) 13,423,039 page-faults # 0.021 M/sec 1,433,972,173,374 cycles # 2.236 GHz (75.02%) stalled-cycles-frontend stalled-cycles-backend 1,118,336,816,068 instructions # 0.78 insns per cycle (75.01%) 249,644,142,804 branches # 389.218 M/sec (75.01%) 7,791,449,769 branch-misses # 3.12% of all branches (75.01%) 10.003794539 seconds time elapsed 

Ключевая метрика здесь instructions per cycle (insns per cycle: IPC, число инструкций за один цикл), которая показывает сколько в среднем инструкций было выполнено за каждый такт. Чем больше, тем лучше. В примере выше значение 0.78 кажется очень неплохим (нагрузка 78%?) до тех пор пока вы не узнаете, что максимальная скорость процессора это IPC 4.0. Такие процессоры называют 4-wide, это название пошло от особенностей пути извлечения/декодирования инструкций в процессоре (подробнее об этом в Википедии). Это означает, что процессор может выполнить 4 операции за каждый такт, поэтому значение 0.78 для 4-wide системы означает, что процессор работает на 19,5% от своих возможностей. Новый процессор Skylake от Intel — это 5-wide процессор. Существуют сотни PMC-счетчиков, которые позволяют детальнее разобраться с производительностью системы, например, посчитать число приостановленных циклов по типам.

В облаках

Если вы работаете в виртуальном окружении, то вероятно у вас нет доступа к PMC-счетчикам, это зависит от поддержки этой фичи гипервизором. Я недавно писал о том, что PMC-счетчики теперь доступны в AWS EC2 в виртуальных машинах базирующихся на Xen.

Как интерпретировать и что делать

Если ваш IPC < 1.0 , то вероятнее всего, процессор приостановлен из-за медленной памяти, поэтому нужно оптимизировать софт так, чтобы он требовал меньше операций с памятью, совершенствовать кеширование в процессоре и локальность памяти, особенно в NUMA системах. Оптимизация железа в таком случае подразумевает использование процессоров с большим объемом кешей, более быстрой памятью, шинами и соединениями. Если ваш IPC > 1.0 , то вероятно, вы ограничены числом инструкций, которые может выполнять процессор. Попробуйте найти способ уменьшить число выполняемых инструкций: уменьшить число ненужной работы, кешировать операции и т.п. CPU flame графы — отличная утилита для этих целей. С точки зрения тюнинга железа, попробуйте использовать процессор с большей тактовой частотой и большим числом ядер и гипертредов. Для моих правил выше я выбрал значение IPC 1.0, почему именно его? Я пришел к нему из своего опыта работы с PMC-счетчиками. Вы можете выбрать для себя другое значение. Сделайте два тестовых приложения, одно упирающееся по производительности в процессор, другое — в память. Посчитайте IPC для них и возьмите среднее значение.

Что инструменты мониторинга производительности должны сообщать вам?

Каждая такая утилита должны показывать IPC вместе с нагрузкой на процессор. Или разделять нагрузку на процессор на instruction-retired и циклы stalled циклы, то есть, %INS и %STL . Кроме утилиты top(1) для Линукса есть утилита tiptop(1) , которая показывает IPC для каждого процесса:

tiptop - [root] Tasks: 96 total, 3 displayed screen 0: default PID [ %CPU] %SYS P Mcycle Minstr IPC %MISS %BMIS %BUS COMMAND 3897 35.3 28.5 4 274.06 178.23 0.65 0.06 0.00 0.0 java 1319+ 5.5 2.6 6 87.32 125.55 1.44 0.34 0.26 0.0 nm-applet 900 0.9 0.0 6 25.91 55.55 2.14 0.12 0.21 0.0 dbus-daemo 

Другие причины почему CPU utilization вводит в заблуждение

  • изменение температуры может влиять на приостановленность процессора,
  • турбобуст может менять тактовую частоту процессора,
  • ядро варьирует частоту процессора с определенным шагом,
  • проблема с усреднением: 80% нагрузки в течение минуты скроет кратковременный всплеск до 100%,
  • спинлоки: процессор нагружен, имеет высокий IPC, но приложение ничего не делает.

Заключение

Нагрузка на процессор (CPU utilization) это обычно неправильно интерпретируемая метрика, так как она включает циклы, потраченные на ожидание ответа от основной памяти, которые могут доминировать в современных нагрузках. Вы можете понять что на самом деле стоит за %CPU используя дополнительные метрики, включая число инструкций за цикл (IPC). Если IPC < 1.0 , то вероятно вы упираетесь в память, если IPC >1.0 , то в скорость процессора. Я писал про IPC в своем предыдущем посте, в том числе написал и о использовании PMC-счетчиках, необходимых для измерения IPC.

Инструменты мониторинга производительности, которые показывают %CPU должны показывать PMC-счетчики, чтобы не вводить пользователей в заблуждение. Например, они могут показывать %CPU с IPC и/или число instruction-retired и stalled циклов. Вооруженные этими метриками разработчики и админы могут решить как правильнее тюнинговать их приложения и системы.

System Idle Process

Бездействие системы (System Idle Process) — процесс ядра операционной системы семейства Windows, представляющий собой отдельный поток (или несколько потоков на многоядерных системах), работающий тогда, когда процессор не выполняет других потоков. Например, в системе может не быть работающих потоков, либо все они могут выполнятся на другом процессоре.

Бездействие системы используется Windows для понижения энергопотребления процессора. Конкретная схема пониженного энергопотребления определяется аппаратным обеспечением и возможностями микропрограммы системы. Например, на доисторических x86 процессорах, этот процесс будет выполнять в цикле инструкцию HLT, которая указывает процессору отключить некоторые внутренние компоненты и ждать аппаратного прерывания. На процессорах с поддержкой пониженного энергопотребления этот процесс переключит процессор в более экономный режим, например при помощи Intel Speedstep.

См. также

Aero • ClearType • Desktop Window Manager • DirectX • Проводник (Explorer) • Панель задач («Пуск» • трей) • Shell (namespace • Special Folders • File associations) • Search (Saved search • iFilters) • Graphics Device Interface • WIM • Next Generation TCP/IP stack (Server Message Block) • .NET Framework • Audio • Printing (XML Paper Specification) • Active Scripting (WSH • VBScript • JScript) • COM (OLE • OLE Automation • DCOM • ActiveX • ActiveX Document • Structured storage • Transaction Server) • Previous Versions • WDDM • UAA • Win32 console

Backup and Restore Center • COMMAND.COM • cmd.exe • Easy Transfer • Event Viewer • Installer • Netsh • PowerShell • Problem Reports and Solutions • Sysprep • Настройка системы (msconfig) • System File Checker • WinSAT • Windows Update • Восстановление системы • Дефрагментация диска • Диспетчер задач • Диспетчер устройств • Консоль управления • Очистка диска • Панель управления (функции)

Актуальные: Contacts • DVD Maker • Fax and Scan • Internet Explorer • Journal • Magnifier • Media Center • Media Player • Meeting Space • Mobile Device Center • Mobility Center • Narrator • Paint • Private Character Editor • Remote Assistance • Speech Recognition • WordPad • Блокнот • Боковая панель • Звукозапись • Календарь • Калькулятор • Ножницы • Почта • Таблица символов

Chess Titans • Hold ‘Em • InkBall • Mahjong Titans • Purble Place • Пасьянс «Косынка» • Пасьянс «Паук» • Сапёр • Пасьянс «Свободная ячейка» • Пинбол • Червы

Ntoskrnl.exe • hal.dll • System Idle Process • Svchost.exe • Registry (реестр) • Windows service • Service Control Manager • DLL • EXE • NTLDR • Boot Manager • Winlogon • Recovery Console • I/O • WinRE • WinPE • Kernel Patch Protection

Autorun • BITS • CLFS Error Reporting • Multimedia Class Scheduler • Shadow Copy • Task Scheduler • Wireless Zero Configuration •

Active Directory • Deployment Services • DFS Replication • DNS • Domains • Folder redirection • Hyper-V • IIS • Media Services • MSMQ • Network Access Protection • Print Services for UNIX • Remote Differential Compression • Remote Installation Services • Rights Management Services • Roaming user profiles • SharePoint Services • System Resource Manager • Terminal Services • WSUS • Групповая политика • Координатор распределённых транзакций

Обзор • Object Manager • I/O request packets • Kernel Transaction Manager • Logical Disk Manager • Security Accounts Manager • Windows Resource Protection • LSASS • CSRSS • SMSS • Диспетчер печати • Запуск (Vista)

Unix subsystem (Interix) • Virtual DOS Machine • Windows on Windows • WOW64

Wikimedia Foundation . 2010 .

Полезное

Смотреть что такое «System Idle Process» в других словарях:

  • System Idle Process — Infobox Windows component name = System Idle Process type = Kernel included with = Windows NTIn Windows NT operating systems, the System Idle Process is a kernel thread which runs when no other runnable thread can be scheduled on a CPU. For… … Wikipedia
  • Idle (CPU) — A computer processor is described as idle when it is not being used by any program.Programs which make use of CPU Idle Time mean that they run at a low priority so as not to impact programs which run at normal priority. Many programs that use CPU … Wikipedia
  • System Restore — Окно восстановления системы в Windows XP‎ Восстановление системы (англ. System restore) компонент операционной системы Windows (процесс rstrui.exe), предназначенный для восстановления работоспособности ОС путем отката (восстановления предыдущего… … Википедия
  • System tray — Область уведомлений в Windows NT Область уведомлений (англ. notification area) или системный трей (англ. system tray, от англ. tray «поднос, поддон») элемент панели инструментов среды рабочего стола («панель задач» в Windows), используемый для… … Википедия
  • Windows NT startup process — The Windows NT startup process is the process by which Windows NT 4.0, Windows 2000, Windows XP and Windows Server 2003 operating systems initialize. In Windows Vista and later, this process has changed slightly; see Windows Vista startup process … Wikipedia
  • System Architecture Evolution — (aka SAE) is the core network architecture of 3GPP s LTE wireless communication standard. SAE is the evolution of the GPRS Core Network, with some differences: simplified architecture all IP Network (AIPN) support for higher throughput and lower… … Wikipedia
  • Encrypting File System — The Encrypting File System (EFS) on Microsoft Windows is a feature introduced in version 3.0 of NTFS[1] that provides filesystem level encryption. The technology enables files to be transparently encrypted to protect confidential data from… … Wikipedia
  • Windows Logon Process — Winlogon компонент операционной системы Microsoft Windows, отвечающий за вход в систему. и т.д. Содержание 1 Краткий обзор 2 Критичность процесса Winlogon 3 Функции Winlogon … Википедия
  • Common Log File System — (CLFS) is a general purpose logging subsystem that is accessible to both kernel mode as well as user mode applications for building high performance transaction logs. It was introduced with Windows Server 2003 R2 and included in later Windows OSs … Wikipedia
  • Distributed File System (Microsoft) — This article is about Microsoft s implementation of DFS. For general discussion of the concept and other implementations, see Distributed file system. Distributed File System (DFS) is a set of client and server services that allow an organization … Wikipedia
  • Обратная связь: Техподдержка, Реклама на сайте
  • �� Путешествия

Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.

  • Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
  • Искать во всех словарях
  • Искать в переводах
  • Искать в ИнтернетеИскать в этой же категории

Счетчики производительности процессора

blog.bissquit.com

windows server 2012 r2

Счетчики производительности процессора являются продвинутым инструментом поиска проблем ЦП , анализа необходимых вычислительных мощностей, диагностики процессора как узкого места производительности. В статье я постараюсь дать описания всем известным мне счетчикам, а также пролить свет на нюансы анализа производительности.

Если вам интересны счетчики производительности Windows, рекомендую обратиться к основной статье тематики – Счетчики производительности.

Счетчики производительности процессора – Описание

На среднестатистической операционной системе вы найдете две группы счетчиков производительности (не считая отдельно наборов счетчиков для Hyper-V), отвечающих за отслеживание метрик процессора. Это группы Процессор (Processor) и Сведения о процессоре (Processor Information). На первый взгляд группы очень похожи и вторая из них отличается лишь по количеству доступных счетчиков, которых там значительно больше. Отличие этих групп состоит в том, что вторая создана несколько позднее и рассчитана на поддержку значительно большего количества процессоров 1 :

In order to maintain compatibility for software accessing the performance counters as those were introduced more than a decade ago, the Windows development team decided to leave the old performance counters untouched and have those available with the old restriction of 64 processors and instead introduce a new collection of performance counters which will support more than 64 processors. The new collection shows up in Performance Monitor under ‘Processor Information’.

Таким образом, если у вас многопроцессорные системы, для вас есть смысл пользоваться именно группой Сведения о процессоре (Processor Information). Вот так выглядят полные списки счетчиков русской и английской версий ОС:

Счетчики производительности процессора 03

Рассмотрим их более подробно.

UPD: 05.08.2016

В каждом разделе в виде цитаты будет даваться описание счетчика, доступное в самой ОС. Может быть кому-то оно покажется более понятным и полезным.

% C1 Time, % C2 Time, % C3 Time – % времени C1, % времени C2, % времени C3

Эти счетчики отображают % времени, которое процессор находится в том или ином состоянии (C-State). Эти состояния характеризуются пониженным энергопотреблением, а также разным временем перехода в обычный рабочий режим (например 10нс для С1, 100нс для С2 и 50мкс для С3 2 ). Для высоконагруженных систем может быть плохим показателем, если процессор часто пытается перейти в состояния ниже С1, ведь для выхода из них нужен приличный временной интервал. Некоторыми состояниями можно управлять прямо из BIOS и если у вас нет цели максимально сильно сократить энергопотребление, есть вариант отключить саму возможность перехода (особенно это касается состояния C1E, которое рекомендуют отключать, например, на серверах 1С).

Счетчики производительности процессора 01

Как видно на рисунке выше, до запуска нагрузочного теста процессор большинство времени находился в состоянии C2 и в момент запуска нагрузки (загрузка ЦП на графике пошла резко вверх) % состояния С2 опустился фактически до 0 и ЦП максимум переходил в состояние С1, но не глубже.

‘% времени С1/С2/С3’ – доля времени, в течение которого процессор находится в ‘спящем режиме’ по питанию, называемом С1/С2/С3. ‘% времени С1/С2/С3’ – это часть общего времени простоя процессора. Это состояние позволяет процессору полностью сохранять весь контекст работы и быстро вернуться в режим полноценного функционирования. Не все компьютеры поддерживают режим С1/С2/С3.

Вывод: постоянное использование этих счетчиков для отслеживания работы ЦП будет излишним. Тем не менее на них нужно обратить внимание, если ваш процессор не обеспечивает требуемой производительности при небольшой нагрузке.

C1 Transitions/sec, C2 Transitions/sec, C3 Transitions/sec – C1-переходов/сек, C2-переходов/сек, C3-переходов/сек

Счетчики показывают количество событий перехода в указанное состояние в течение одной секунды. Время перехода в состояния глубже C1 сопряжено с увеличенными временными затратами на выход из этого состояния и если ваш ЦП при высокой (>50%) нагрузке часто бывает в режимах C2 или C3, это повод задуматься об аппаратном отключении этих состояний, если позволяет оборудование.

Счетчики производительности процессора 08

На скриншоте отображены абсолютные значения переходов в указанные состояния. Для наглядности был запущен стресс-тест, во время выполнения которого ЦП переходил только в состояние C1, но не глубже.

‘С1-переходов/сек/С2-переходов/сек/С3-переходов/сек’ – это скорость, с которой процессор переходит в ‘спящий’ режим по питанию С1/С2/С3. Процессор переходит в режим С1/С2/С3 тогда, когда он находится в режиме простоя и выходит из него по первому прерыванию. Этот параметр отображает разницу между значениями, наблюдавшимися между двумя последними выборками, поделенное на длительность интервала выборки.

Вывод: в норме даже на слабо загруженном сервере переходов в C3 быть не должно вообще, по крайней мере об этом говорят мои наблюдения. Поскольку значение этих счетчиков представляет из себя абсолютную величину, оно может значительно отличаться на разном оборудовании . Реально есть лишь небольшой смысл анализа данных о количестве переходов в режимы пониженного энергопотребления, вполне достаточно информации дают счетчики %C1/2/3 Time.

% DPC Time – % времени DPC

Счетчик показывает % времени, которое процессор затратил на прием и обслуживание отложенного вызова процедур (Deferred Procedure Call – DPC). Поскольку вызовы DPC выполняются в привилегированном режиме (хоть и с меньшим приоритетом, чем обычные прерывания), показания этого счетчика являются частью общего % времени работы в привилегированном режиме. В любом случае значение счетчика % времени DPC не должно быть большим, в противном случае процессор является узким местом или существуют проблемы с ПО.

Счетчики производительности процессора 02

На графике выше % времени DPC обозначен красной линией и среднее значение составляет десятые доли процента, это вполне нормальный показатель.

% времени DPC – это доля времени, которое процессор был занят обработкой вызовов отложенных процедур (DPC – Deferred Procedure Call). Прерывания DPC имеют более низкий приоритет, чем обычные прерывания. % времени DPC является компонентом “% времени в привилегированном режиме”, поскольку прерывания DPC выполняются в привилегированном режиме. Прерывания DPC подсчитываются отдельно от обычных прерываний и не входят в счетчики обычных прерываний. Этот счетчик отображает средний процент занятого времени во время интервала измерения.

Вывод: постоянное использование этого счетчика для отслеживания работы ЦП будет излишним, да и его ненормальное поведение у меня на практике не встречалось, даже при высокой общей нагрузке ЦП.

DPCs Queued/sec – Поставлено в очередь DPC/сек

Из названия видно, что этот счетчик отражает среднее количество прерываний DPC, поставленных в очередь в секунду. Фактически это можно назвать средней скоростью добавления в очередь. Об этом счетчике вы найдете достаточно мало информации. Данных об анализе его значений ещё меньше. Мне кажется, что показания счетчика исключительно субъективны и на процессорах разных поколений или даже эпох “нормальными” значениями могут быть величины, отличающиеся на порядки (или ещё больше).

“Поставлено в очередь DPC/сек” — это скорость, с которой отложенные вызовы процедур устанавливаются в очередь DPC для данного процессора. DPC — это прерывания, которые имеют более низкий приоритет, чем стандартные прерывания. Каждый процессор имеет свою собственную очередь DPC. Этот параметр измеряет скорость, с которой вызовы DPC помещаются в очередь, а не количество вызовов в очереди. Поэтому эта величина показывает разницу между значениями последних двух выборок, поделенную на длительность интервала выборки.

Вывод: малопригодный для обособленного анализа счетчик. Лучшим вариантом будет сравнение вместе с % DPC Time, при этом большие значения при небольшом % не должны вас пугать.

DPC Rate – Скорость DPC

Как и DPCs Queued/sec счетчик DPC Rate отражает скорость постановки прерываний DPC, только в этом случае принимается во внимание последнее взятое значение, а не усредненное. Нормальными также могут считаться совершенно разные показатели. Например где-то указывают на критический уровень в 20 3 , в то время как даже на несильно нагруженной системе у меня значений меньше 50 не бывает.

“Скорость DPC” — это скорость, с которой отложенные вызовы процедур помещаются в очередь процессора между прерываниями системного таймера. DPC — это прерывания, которые имеют более низкий приоритет, чем стандартные прерывания. Каждый процессор имеет свою собственную очередь DPC. Этот параметр измеряет скорость, с которой вызовы DPC помещаются в очередь, а не количество вызовов в очереди. Счетчик отображает последнюю измеренную величину, а не среднее значение.

Вывод: аналогично DPCs Queued/sec – малопригодный для обособленного анализа счетчик. Лучшим вариантом будет сравнение вместе с % DPC Time, при этом большие абсолютные значения при небольшом % не должны вас пугать.

% Interrupt Time – % времени прерываний

Счетчик отображает процент времени, которое процессор тратит на обработку прерываний от устройств, поскольку в этом режиме могут быть запущены только подпрограммы обслуживания прерываний (ISR, которые являются функциями драйверов устройств 4 ). Большие значения счетчика могут говорить о проблемах с оборудованием. В норме показания не должны выходить за 5% даже при значительной (>50%) нагрузке на ЦП. Значения в 20% уже очень подозрительны.

Счетчики производительности процессора 11

На графике выше % Processor Time (красная линия) сервера Exchange 2013. При этом значения счетчика % Interrupt Time составляют сотые доли процента от общей нагрузки процессора.

% времени прерываний – это доля времени выборочного интервала, которую процессор тратит на обработку аппаратных прерываний; эта величина является косвенным показателем активности устройств, формирующих аппаратные прерывания. Эта величина равна сумме значений ‘Процессор: % времени прерываний’ для всех процессоров на компьютере, деленная на число процессоров. DPC подсчитываются отдельно и не входят в состав общего счетчика прерываний. Эта величина является косвенным показателем активности устройств, формирующих аппаратные прерывания, таких как системного таймера, мыши, драйверов дисков, линий передачи данных, сетевых адаптеров и других периферийных устройств.

Вывод: важный показатель. При комплексном анализе производительности ЦП необходимо обязательно его учитывать.

Interrupts/sec – Прерываний/сек

В отличии от % Interrupt Time, счетчик показывает абсолютное значение, то есть количество прерываний в секунду. Поскольку прерывания принимаются от оборудования, высокие значения косвенно могут свидетельствовать о проблемах с устройствами или с их драйверами. Особенно актуальны показания счетчика после физического добавления нового устройства на сервер. Счетчик не учитывает прерывания DPC. В “голом” виде параметр анализировать смысла большого нет.

Счетчики производительности процессора 09

В таблице сверху 0,2% загрузки ЦП соответствует примерно два десятка тысяч прерываний в секунду. Замеры проведены на Core i7-4770 при средней загрузке (% Processor Time) ЦП 10%.

‘Прерываний/сек’ – средняя скорость, в событиях в секунду, с которой процессор получает и обслуживает аппаратные прерывания. Эта величина не включает отложенные вызовы процедур, которые подсчитываются отдельно. Эта величина является косвенным показателем активности устройств, формирующих аппаратные прерывания, таких как системного таймера, мыши, драйверов дисков, линий передачи данных, сетевых адаптеров и других периферийных устройств. Эти устройства обычно прерывают работу процессора при завершении своей работы или при возникновении необходимости обработки запроса. При этом обычное выполнение потока команд приостанавливается. Системный таймер обычно прерывает работу процессора каждые 10 миллисекунд, создавая ‘фон’ аппаратных прерываний. Поэтому эта величина отображает разницу между значениями последних двух выборок, поделенную на длительность интервала выборки.

Вывод: показания счетчика нужно анализировать вместе с % Interrupt Time и при большом значении последнего делать вывод о существовании каких-либо проблем. Если хотите привязать наблюдения именно к счетчику Interrupts/sec, то для начала нужно собрать историю показаний на отслеживаемом оборудовании и после этого эмпирически выставить пороговые значения, которые по вашему мнению будут свидетельствовать о проблемах. При этом на разном оборудовании пороговые значения должны быть разными, это ведь абсолютные значения, а не относительные. Радикально сократить количество прерываний можно с помощью параметра Win32PrioritySeparation 5 . Начните с максимального значения в 3F (в 16-ричной системе счисления) и понижайте при необходимости.

% Processor Time – % загруженности процессора

Процент времени, в которое ЦП выполняет инструкции, то есть занят какими-либо задачами. Счетчик включает в себя процессорное время, затрачиваемое на обработку аппаратных прерываний 6 :

Shows the percentage of elapsed time that this thread used the processor to execute instructions. An instruction is the basic unit of execution in a processor, and a thread is the object that executes instructions. Code executed to handle some hardware interrupts and trap conditions is included in this count.

Пример показаний счетчиков % Processor Time и % Idle Time:

Счетчики производительности процессора 04

На графике выше сумма показаний счетчиков составляет 100% процессорного времени, хорошо виден момент запуска нагрузочного теста.

% загруженности процессора – это процент времени, затраченного процессором на выполнение любого потока, кроме потока бездействия. Для вычисления этого значения измеряется процент времени, затраченного процессором на выполнение потока бездействия, а затем полученное значение вычитается из 100%. (У каждого процессора есть поток бездействия, на который расходуется время, если отсутствуют другие потоки, готовые к выполнению). Этот счетчик является основным индикатором активности процессора и показывает средний процент времени занятости за определенное время. Следует отметить, что учет использования ресурсов процессором выполняется через внутренние интервалы, равные тактам системных часов. По этой причине в современных быстрых процессорах % загруженности процессора может быть занижен, так как процессор может затрачивать много времени на обработку потоков между соседними тактами системных часов. Приложения таймера на основе рабочей нагрузки представляют один из примеров приложений, для которых наиболее вероятно неточное измерение занятости по причине того, что таймер получает сигнал сразу после обработки выбранного интервала.

Вывод: хоть это и самый элементарный для понимания счетчик, но все же он является самым главным. Начинать анализировать работу ЦП нужно именно с него. При небольших показаниях (менее 40% в среднем) % Processor Time браться за анализ других счетчиков ЦП не имеет никакого смысла. ЦП в данном случае бутылочным горлышком являться не будет.

% Idle Time – Процент времени бездействия

Название счетчика говорит само за себя и отражает он процент времени, в которое ЦП не выполнял никаких задач, попросту бездействовал.

“% времени бездействия” — доля времени, когда процессор простаивает в течение интервала выборки

Вывод: счетчик полезно использовать вместе с % Processor Time для исключения ошибок в показаниях последнего. При этом показания счетчика % Processor Time = 100 – % Idle Time и наоборот, что вполне логично. Ведь загрузка процессора на 80% фактически говорит о том, что все же 20% времени ЦП бездействует.

Average Idle Time – Среднее время простоя

Счетчик отображает усредненное за определенный промежуток время простоя ЦП в абсолютных значениях. О счетчике практически нет информации в интернете, также я не встречал, чтобы им вообще кто-то пользовался, поскольку всегда больше интересуют именно относительные значения.

Среднее время простоя — средняя продолжительность (в единицах по 100 нс) простоя между двумя последними снятиями показаний.

Вывод: вероятнее всего использовать счетчик есть смысл в каких-то узкоспециализированных задачах, пример которых мне, к сожалению, неизвестен.

% of Maximum Frequency – % от максимальной частоты

Отображает процент от максимальной частоты процессора. На мой взгляд счетчик более актуален для ноутбуков, но не для серверных или даже десктопных систем. Дело в том, что ЦП в простое очень часто не понижает частоту, а просто отключает ненужные ядра, оставляя активным одно на 100% частоте. По крайне мере я не видел, чтобы на сервере со средней (<30%) нагрузкой ЦП понижалась частота, а вот ядра отключаются регулярно:

Счетчики производительности процессора 05

В примере выше скрины до и после запуска нагрузочного теста. В обоих случаях частота была одинакова (разница в 0,1Мгц не учитывается), но количество активных ядер ЦП различалось.

% от максимальной частоты текущего процессора.

Вывод: малопригодный для анализа проблем счетчик. Подозрительной может стать ситуация, когда загрузка ЦП близится к 100%, в то время как % от максимальной частоты ниже 100. Кстати, счетчик может принимать значения больше 100%.

Processor Frequency – Частота процессора

Отображает абсолютное значение текущей частоты процессора. Разумеется можно измерять частоту как процессора, так и каждого из его ядер. Лично мне это представляется бессмысленной затеей. Знать текущую частоту процессора полезно разве что так, для сведения.

Частота текущего процессора в мегагерцах.

Вывод: какой-либо явной потребности в показаниях счетчика Processor Frequency как мне кажется нет. Если все же хотите снимать его показания, рекомендую производить их анализ совместно со счетчиком % of Maximum Frequency.

% Performance Limit – % ограничения производительности

Информацию об этом счетчике в открытых источниках найти не удалось. Тем не менее мне кажется, что этот счетчик как-то связан с текущей частотой процессора или с % от рабочей частоты. На нескольких моих подопытных серверах показания этого счетчика были стабильно под 100% и никак не менялись в зависимости от работы ЦП на холостом ходу или же под стресс-тестом.

% ограничения производительности — это гарантированная производительность процессора в процентах от его номинальной производительности. Производительность может ограничиваться политикой питания Windows или платформой из-за бюджета питания, перегрева или других проблем с оборудованием.

Вывод: назначение счетчика до конца неизвестно. Если у кого-то есть данные о нем, буду рад информации.

% Processor Performance – % Производительность процессора

Ситуация аналогична счетчику % Performance Limit – данные мне найти не удалось. Видимо этот счетчик также как и % ограничения производительности отображает текущие значения по производительности.

% ограничения производительности — это гарантированная производительность процессора в процентах от его номинальной производительности. Производительность может ограничиваться политикой питания Windows или платформой из-за бюджета питания, перегрева или других проблем с оборудованием.

Вывод: назначение счетчика до конца неизвестно. Если у кого-то есть данные о нем, буду рад информации.

% Priority Time – % приоритетной загруженности

Счетчик отображает процент времени, которое затрачивается на обработку процессов, имеющих не низкий приоритет. На официальных ресурсах пишут следующее: значение счетчика вычисляется путем вычитания из 100% доли времени, которое процессор выполняет потоки с низким приоритетом или бездействующие потоки 7 :

This counter displays the average percentage of busy time observed during the sample interval excluding low priority background work. It should be noted that the accounting calculation of whether the processor is idle is performed at an internal sampling interval of the system clock tick.

Учитывая порядок вычисления значений этого счетчика, можно предположить, что его показания будут примерно равны или меньше значений счетчика % Processor Time.

% приоритетной загруженности – это процент времени, затраченного процессором на выполнение потоков, приоритет которых отличен от низкого. Для вычисления этого значения измеряется процент времени, затраченного процессором на выполнение потоков с низким приоритетом либо потока бездействия, а затем полученное значение вычитается из 100%. (У каждого процессора есть поток бездействия, на который расходуется время, если отсутствуют другие потоки, готовые к выполнению). Этот счетчик показывает средний процент времени занятости за определенное время за исключением обработки потоков с низким приоритетом в фоновом режиме. Следует отметить, что учет использования ресурсов процессором выполняется через внутренние интервалы, равные тактам системных часов. По этой причине % приоритетной загруженности может быть занижен, так как процессор может затрачивать много времени на обработку потоков между соседними тактами системных часов. Приложения таймера на основе рабочей нагрузки представляют один из примеров приложений, для которых наиболее вероятно неточное измерение занятости по причине того, что таймер получает сигнал сразу после обработки выбранного интервала.

Вывод: счетчик имеет второстепенную важность для общего анализа производительности ЦП, тем не менее может быть полезен в случае выяснения обстоятельств ненормального поведения процессора. Использовать в одиночку смысла большого нет, нужно анализировать данные обязательно в связке с % Processor Time.

% Privileged Time – % работы в привилегированном режиме

Счетчик отображает процент времени, которое процессор затрачивает на обработку запросов ядра, то есть выполняет код в привилегированном режиме. Все функции ОС работают именно в этом режиме. Теоретически не должно быть ситуации, когда работа в привилегированном режиме сжирает двухзначные доли процессорного времени. Если значение этого счетчика переваливает за 10% – это повод поискать где могут быть проблемы; значение в 20% уже выглядит крайне подозрительным.

Счетчики производительности процессора 06

На графике выше изображены счетчики % Processor Time (красный) и % Privileged Time (розовый) реального сервера 1С. % работы в привилегированном режиме даже на пиковых значениях не поднимается выше 10%.

‘% работы в привилегированном режиме’ – это доля времени, которое поток команд процессора потратил на исполнение кода в привилегированном режиме. При вызове системных служб Windows они часто исполняются в привилегированном режиме для того, чтобы получить доступ к критическим системным данным. Такие данные защищены от доступа потоков команд, исполняемых в пользовательском режиме. Вызовы к системе могут быть явными или неявными, например при ошибках вызова страниц памяти или обработке прерываний. В отличие от операционных систем предыдущих поколений, в дополнение к обычным способам защиты системы путем разделения пользовательских и привилегированных режимов работы, Windows использует границы процессов для защиты подсистем. При этом результаты работы Windows по обработке приложений может появляться в процессах других подсистем в дополнение к привилегированному времени процессов.

Вывод: достаточно информативный счетчик. При значениях выше 20% есть большой смысл начать копать глубже и проанализировать показания счетчиков % User Time, % Interrupt Time, % DPC Time. Повышенное внимание должна вызвать ситуация, когда показания счетчика начинают стабильно резко превышать среднестатистические значения, наблюдаемые ранее.

% User Time – % работы в пользовательском режиме

Если % Privileged Time говорит о времени, которое тратится на работу ОС и оборудования, то % User Time – это как раз та полезная нагрузка, для выполнения которой и куплен ваш сервер. Логично предположить, что % Processor Time как минимум является суммой работы ЦП в пользовательском и привилегированном режиме. В норме значения % User Time не должны выходить за 60% в среднем.

Счетчики производительности процессора 07

На графике выше % работы в пользовательском режиме обозначен зеленым цветом, красный и розовый – % Processor Time и % Privileged Time соответственно.

% работы в пользовательском режиме – это процент времени работы процессора, которое он находился в пользовательском режиме. (Пользовательский режим является ограниченным режимом работы процессора. В пользовательском режиме работают приложения, подсистемы обеспечения среды (например, Win32, POSIX) и интегрируемые подсистемы. Наоборот, привилегированный режим разработан для компонентов операционной системы и позволяет напрямую обращаться к аппаратуре и всей памяти. Операционная система переключает потоки приложений в привилегированный режим для доступа к службам операционной системы.) Этот счетчик отображает средний процент времени занятости процессора по отношению ко всему времени образца.

Вывод: анализировать счетчик необходимо как минимум совместно с % Privileged Time и бить тревогу, если разница между % User Time и % Processor Time составляет более трети в пользу последнего.

% Privileged Utility – % привилегированной полезной загрузки

Как минимум для меня малоизвестный счетчик, который, к тому же, встречается далеко не на каждой системе. Например в Windows Server 2008 R2 его нет, но в 2012/8 он присутствует. Судя по всему, счетчик отображает % полезной работы, выполненной в привилегированном режиме.

Привилегированная полезная загрузка — это объем работы, выполняемой процессором в привилегированном режиме, в процентах от объема работы, которую процессор выполнил бы, если бы функционировал с номинальной производительностью и никогда не простаивал. У некоторых процессоров этот показатель может превышать 100%.

Вывод: назначение счетчика до конца неизвестно. Если у кого-то есть данные о нем, поделитесь, пожалуйста.

% Processor Utility – % полезной загрузки процессора

Также один из “недавних” счетчиков, о принципе работы которого мне ничего не известно. Если смотреть на графики на разных системах, то показания этого счетчика практически всегда бывают больше % Processor Time. Поскольку значение счетчика больше реальной загрузки процессора, то вполне вероятно, что сам счетчик отображает чисто гипотетические значения и призван показать насколько эффективно используется ваш ЦП. То есть можно сделать вывод, что чем больше разница между % Processor Utility и % Processor Time, тем менее эффективно используется ваш процессор.

Полезная загрузка процессора — это объем выполняемой процессором работы в процентах от объема работы, которую процессор выполнил бы, если бы функционировал с номинальной производительностью и никогда не простаивал. У некоторых процессоров этот показатель может превышать 100%.

Вывод: назначение счетчика до конца неизвестно. Если у кого-то есть данные о нем, поделитесь, пожалуйста.

Clock Interrupts/sec – прерываний тактового генератора/с

Название говорит само за себя – счетчик отображает количество прерываний тактового генератора в секунду. Величина абсолютная, поэтому непонятно к чему привязать наблюдения. Счетчик встречается не на всех ОС.

Прерываний тактового генератора/с — средняя скорость в событиях в секунду, с которой процессор получает и обслуживает прерывания тактового генератора. Этот счетчик показывает разницу значений между двумя последними снятиями показаний, деленную на длительность интервала выборки.

Вывод: до конца непонятно какую пользу может принести счетчик в поиске проблем с ЦП.

Idle Break Events/sec – Событий прерываний простоя/с

Счетчик отображает количество событий в секунду, когда процессор выходил из состояния простоя. Насколько я понимаю, показания счетчика нужно анализировать совместно с % Idle Time и другими. На сайте Intel есть интересная статья 8 про анализ потребляемой ЦП мощности, в которой также упоминаются счетчики Idle Break Events/sec, Clock Interrupts/sec. Но эта статья была написана для мобильных платформ.

Событий прерываний простоя/с — средняя скорость в событиях в секунду, с которой процессор выходит из состояния простоя. Этот счетчик показывает разницу значений между двумя последними снятиями показаний, деленную на длительность интервала выборки.

Вывод: малопригодный для анализа производительности ЦП счетчик. На мой взгляд более информативными данными будут показания счетчиков C-State.

Parking Status – Состояние приостановки

Счетчик сигнализирует о состоянии простоя ЦП/ядра. На мой взгляд более разумно привязать этот счетчик к каждому ядру и отслеживать их состояние. Хотя для многопроцессорных систем вполне логично отслеживать состояния каждого процессора. Что интересно, на десктопных и серверных системах процессорные ядра по моим наблюдениям в состояние парковки не переходят вообще.

Состояние приостановки определяет, выполнена или нет приостановка процессора.

Вывод: данные счетчика в большинстве случаев можно принять только к сведению. Чего-то большего из счетчика выжимать смысла нет.

Performance Limit Flags – Флаги ограничения производительности

Флаги ограничения производительности процессора говорят о причине снижения этой самой производительности. Интересный счетчик, жаль не удалось найти о нем какой-либо информации. Счетчик доступен с Windows 2012/8, в более ранних версиях системы его нет.

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

Вывод: к сожалению, информации о счетчике найти не удалось.

Processor State Flags – Флаги состояния процессора

Также информации найти не удалось. Счетчик доступен в том числе и на win2k8.

Вывод: флаги состояния процессора, как и флаги ограничения производительности, могут дать информацию о причинах неполадок.

Вывод

Из всего множество счетчиков производительности процессора полезными могут быть далеко не все, ниже вы найдете список счетчиков, сгруппированных по их значимости для анализа возможных проблем с ЦП. Представление исключительно субъективное и основано на моей собственной оценке и моем опыте.

Счетчики первого порядка, на которые стоит обращать внимание в первую очередь:

  • \Processor Information(_Total)\% C1 Time
  • \Processor Information(_Total)\% C2 Time
  • \Processor Information(_Total)\% C3 Time
  • \Processor Information(_Total)\% Interrupt Time
  • \Processor Information(_Total)\% Processor Time
  • \Processor Information(_Total)\% Idle Time
  • \Processor Information(_Total)\% Privileged Time
  • \Processor Information(_Total)\% User Time

Счетчики, которые необходимо анализировать во вторую очередь и уже после того, как были обнаружены проблемы в показаниях счетчиков первой группы:

  • \Processor Information(_Total)\% DPC Time
  • \Processor Information(_Total)\C1 Transitions/sec
  • \Processor Information(_Total)\C2 Transitions/sec
  • \Processor Information(_Total)\C3 Transitions/sec
  • \Processor Information(_Total)\Interrupts/sec

Надеюсь статья была вам полезна. Оставляйте свои комментарии.

  1. Windows 2008 R2 Performance Monitor – Processor Information Counters have replaced Processor Counters↩
  2. Технологии энергосбережения процессоров: C-States и P-States↩
  3. Практическое руководство системного администратора, 2 изд↩
  4. % Interrupt Time Counter (счётчик процента времени прерываний)↩
  5. Win32PrioritySeparation↩
  6. Processor Object↩
  7. Comparing Linux/Unix and Windows Performance Counters on Microsoft Azure↩
  8. Using Performance Monitor in Analyzing Application Power Consumption↩

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *