cpu count что это

9 команд для проверки информации о CPU в Linux

Информация об аппаратном обеспечении CPU

Информация о CPU (Central Processing Unit. Центральный процессор) включает в себя подробные сведения о процессоре, такие как архитектура, название производителя, модель, количество ядер, скорость каждого ядра и т.д.

В linux существует довольно много команд для получения подробной информации о CPU.

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

1. /proc/cpuinfo

Файл /proc/cpuinfo содержит подробную информацию об отдельных ядрах CPU.

Каждый процессор или ядро перечислены отдельно, а различные подробности о скорости, размере кэша и названии модели включены в описание.

Чтобы подсчитать количество процессоров, используйте grep с wc

Количество процессоров, показанное в /proc/cpuinfo, может не соответствовать реальному количеству ядер процессора. Например, процессор с 2 ядрами и гиперпоточностью будет показан как процессор с 4 ядрами.

Чтобы получить фактическое количество ядер, проверьте идентификатор ядра на наличие уникальных значений

Соответственно, есть 4 разных идентификатора ядра. Это указывает на то, что существует 4 реальных ядра.

3. hardinfo

Он создаст большой отчет о многих аппаратных частях, читая файлы из каталога /proc. Информация о CPU находится в начале отчета. Отчет также может быть записан в текстовый файл.

Hardinfo выполняет несколько эталонных тестов, занимающих несколько минут, прежде чем вывести отчет на экран.

4. lshw

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

Чтобы узнать больше о команде lshw, ознакомьтесь с этой статьей:

5. nproc

Команда nproc просто выводит количество доступных вычислительных блоков. Обратите внимание, что количество вычислительных блоков не всегда совпадает с количеством ядер.

6. dmidecode

Команда dmidecode отображает некоторую информацию о CPU, которая включает в себя тип сокета, наименование производителя и различные флаги.

7. cpuid

Команда cpuid собирает информацию CPUID о процессорах Intel и AMD x86.

Программа может быть установлена с помощью apt на ubuntu

А вот пример вывода

8. inxi

Вывод соответствующей информации о CPU/процессоре

Чтобы узнать больше о команде inxi и ее использовании, ознакомьтесь с этой статьей:

9. Hwinfo

Она также отображает информацию о процессоре. Вот быстрый пример:

Если не использовать опцию «—short», команда отобразит гораздо больше информации о каждом ядре CPU, например, архитектуру и характеристики процессора.

Чтобы более подробно изучить команду hwinfo, ознакомьтесь с этой статьей:

Заключение

Это были некоторые команды для проверки информации о CPU в системах на базе Linux, таких как Ubuntu, Fedora, Debian, CentOS и др.

Примеры других команд для проверки информации о CPU смотрите в этой статье:

Большинство команд обрабатываются с помощью интерфейса командной строки и выводятся в текстовом формате. Для GUI интерфейса используйте программу Hardinfo.

Она показывает подробности об аппаратном обеспечении различных компонентов в простом для использования GUI интерфейсе.

Если вы знаете какую-либо другую полезную команду, которая может отображать информацию о CPU, сообщите нам об этом в комментариях ниже

Если вы хотели бы узнать подробнее о формате обучения и программе, познакомиться с преподавателем курса — приглашаем на день открытых дверей онлайн. Регистрация здесь.

А если вам интересно развитие в этой сфере с нуля до pro, рекомендуем ознакомиться с учебной программой специализации.

Источник

Вы неверно измеряете загрузку процессора

Та метрика, которую мы называем «загрузкой процессора» на самом деле многими людьми понимается не совсем верно. Что же такое «загрузка процессора»? Это то, насколько занят наш процессор? Нет, это не так. Да-да, я говорю о той самой классической загрузке CPU, которую показывают все утилиты анализа производительности — от диспетчера задач Windows до команды top в Linux.

Вот что может означать «процессор загружен сейчас на 90%»? Возможно, вы думаете, что это выглядит как-то так:

А на самом деле это выглядит вот так:

«Работа вхолостую» означает, что процессор способен выполнить некоторые инструкции, но не делает этого, поскольку ожидает чего-то — например, ввода-вывода данных из оперативной памяти. Процентное соотношение реальной и «холостой» работы на рисунке выше — это то, что я вижу изо дня в день в работе реальных приложений на реальных серверах. Есть существенная вероятность, что и ваша программа проводит своё время примерно так же, а вы об этом и не знаете.

Что это означает для вас? Понимание того, какое количество времени процессор действительно выполняет некоторые операции, а какое — лишь ожидает данные, иногда даёт возможность изменить ваш код, уменьшив обмен данных с оперативной памятью. Это особенно актуально в нынешних реалиях облачных платформ, где политики автоматического масштабирования иногда напрямую завязаны на загрузку CPU, а значит каждый лишний такт «холостой» работы стоит нам вполне реальных денег.

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

Та метрика, которую мы называем «загрузкой процессора» на самом деле означает нечто вроде «время не-простоя»: то есть это то количество времени, которое процессор провёл во всех потоках кроме специального «Idle»-потока. Ядро вашей операционной системы (какой бы она ни была) измеряет это количество времени при переключениях контекста между потоками исполнения. Если произошло переключение потока выполнения команд на не-idle поток, который проработал 100 милисекунд, то ядро операционки считает это время, как время, потраченное CPU на выполнение реальной работы в данном потоке.

Эта метрика впервые появилась в таком виде одновременно с появлением операционных систем с разделением времени. Руководство программиста для компьютера в лунном модуле корабля «Апполон» (передовая на тот момент система с разделением времени) называла свой idle-поток специальным именем «DUMMY JOB» и инженеры сравнивали количество команд, выполняемых этим потоком с количеством команд, выполняемых рабочими потоками — это давало им понимание загрузки процессора.

Так что в этом подходе плохого?

Сегодня процессоры стали значительно быстрее, чем оперативная память, а ожидание данных стало занимать львиную долю того времени, которое мы привыкли называть «временем работы CPU». Когда вы видите высокий процент использования CPU в выводе команды top, то можете решить, что узким местом является процессор (железка на материнской плате под радиатором и кулером), хотя на самом деле это будет совсем другое устройство — банки оперативной памяти.

Ситуация даже ухудшается со временем. Долгое время производителям процессоров удавалось наращивать скорость их ядер быстрее, чем производители памяти увеличивали скорость доступа к ней и уменьшали задержки. Где-то в 2005-ом году на рынке появились процессоры с частотой 3 Гц и производители сконцентрировались на увеличении количества ядер, гипертрейдинге, много-сокетных конфигурациях — и всё это поставило ещё большие требования по скорости обмена данных! Производители процессоров попробовали как-то решить проблему увеличением размера процессорных кэшей, более быстрыми шинами и т.д. Это, конечно, немного помогло, но не переломило ситуацию кардинально. Мы уже ждём память большую часть времени «загрузки процессора» и ситуация лишь ухудшается.

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

Используя аппаратные счетчики производительности. В Linux они могут быть прочитаны с помощью perf и других аналогичных инструментов. Вот, например, замер производительности всей системы в течении 10 секунд:

Ключевая метрика здесь это «количество инструкций за такт» (insns per cycle: IPC), которое показывает, сколько инструкций в среднем выполнил процессор на каждый свой такт. Упрощённо: чем больше это число, тем лучше. В примере выше это число равно 0.78, что, на первый взгляд кажется не таким уж плохим результатом (78% времени выполнялась полезная работа?). Но нет, на этом процессоре максимально возможным значением IPC могло бы быть 4.0 (это связано со способом получения и выполнения инструкций современными процессорами). То есть наше значение IPC (равное 0.78) составляет всего 19.5% от максимально возможной скорости выполнения инструкций. А в процессорах Intel начиная со Skylake максимальное значение IPC уже равно 5.0.

В облаках

Когда вы работаете в виртуальном окружении, то можете и не иметь доступа к реальным счетчикам производительности (это зависит от используемого гипервизора и его настроек). Вот статья о том, как это работает в Amazon EC2.

Интерпретация данных и реагирование

Если у вас IPC 1.0, то ваше приложение страдает не столько от ожидания данных, сколько от чрезмерного количества выполняемых инструкций. Ищите более эффективные алгоритмы, не делайте ненужной работы, кэшируйте результаты повторяемых операций. Применение инструментов построения и анализа Flame Graphs может быть отличным способом разобраться в ситуации. С аппаратной точки зрения вы можете использовать более быстрые процессоры и увеличить количество ядер.

Как вы видите, я провёл черту по значению IPC равному 1.0. Откуда я взял это число? Я рассчитал его для своей платформы, а вы, если не доверяете моей оценке, можете рассчитать его для своей. Для этого напишите два приложения: одно должно загружать процессор на 100% потоком выполнения инструкций (без активного обращения к большим блокам оперативной памяти), а второе должно наоборот активно манипулировать данным в ОЗУ, избегая тяжелых вычислений. Замерьте IPC для каждого из них и возьмите среднее. Это и будет примерная переломная точка для вашей архитектуры.

Читайте также:  что делать если завтра экзамен а ты не готов

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

Я считаю, что каждый инструмент мониторинга производительности должен показывать значение IPC рядом с загрузкой процессора. Это сделано, например, в инструменте tiptop под Linux:

Другие причины неверной трактовки термина «загрузка процессора»

Процессор может выполнять свою работу медленнее не только из-за потерь времени на ожидание данных из ОЗУ. Другими факторами могут быть:

Источник

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

Если вам интересны счетчики производительности 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). Вот так выглядят полные списки счетчиков русской и английской версий ОС:

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

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С).

Как видно на рисунке выше, до запуска нагрузочного теста процессор большинство времени находился в состоянии 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, это повод задуматься об аппаратном отключении этих состояний, если позволяет оборудование.

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

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

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

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

На графике выше % времени 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% уже очень подозрительны.

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

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

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

Читайте также:  при каком монархе появились гусары

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

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

В таблице сверху 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:

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

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

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

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

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

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

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

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

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

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

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

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

Отображает процент от максимальной частоты процессора. На мой взгляд счетчик более актуален для ноутбуков, но не для серверных или даже десктопных систем. Дело в том, что ЦП в простое очень часто не понижает частоту, а просто отключает ненужные ядра, оставляя активным одно на 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% уже выглядит крайне подозрительным.

Читайте также:  что делает лаборант микробиолог

На графике выше изображены счетчики % 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% в среднем.

На графике выше % работы в пользовательском режиме обозначен зеленым цветом, красный и розовый — % 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.

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

Вывод

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

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

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

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

Источник

Сказочный портал