Анализ загрузки ЦП
В этом руководстве приведены подробные методы, которые можно использовать для изучения проблем, связанных с центральными единицами обработки (ЦП), которые влияют на метрики оценки.
В разделах об отдельных метриках или проблемах в руководствах по анализу, относящихся к оценке, определяются распространенные проблемы для исследования. В этом руководстве содержатся методы и средства, которые можно использовать для изучения этих проблем.
Методы, описанные в этом руководстве, используют Анализатор производительности Windows (WPA) из набора средств производительности Windows (WPT). WPT входит в состав комплекта средств оценки и развертывания Windows (Windows ADK), и его можно скачать из программы предварительной оценки Windows. Дополнительные сведения см. в техническом справочнике по набору средств производительности Windows.
Это руководство состоит из следующих трех разделов:
В этом разделе описывается управление ресурсами ЦП в Windows 10.
В этом разделе объясняется, как просматривать и интерпретировать сведения о ЦП в наборе средств Windows ADK.
Этот раздел содержит набор методов, которые можно использовать для исследования и решения распространенных проблем, связанных с производительностью ЦП.
Историческая справка
Этот раздел содержит простые описания и базовое обсуждение производительности ЦП. Для более всестороннего изучения этой темы мы рекомендуем книгу Windows Internals, Пятое издание.
Современные компьютеры могут содержать несколько ЦП, установленных в отдельных сокетах. На каждом ЦП может размещаться несколько физических ядер процессора, каждое из которых может обрабатывать один или два отдельных потока инструкций одновременно. Эти отдельные обработчики потока инструкций управляются операционной системой Windows в качестве логических процессоров.
В этом руководстве процессор и ЦП относятся к логическому процессору, то есть аппаратному устройству, которое операционная система может использовать для выполнения программных инструкций.
Windows 10 активно управляет процессорным оборудованием двумя main способами: управление питанием, чтобы сбалансировать энергопотребление и производительность; и использование, чтобы сбалансировать требования к обработке программ и драйверов.
Управление питанием процессора
Процессоры не всегда находятся в рабочем состоянии. Если инструкции не будут готовы к выполнению, Windows переводит процессор в целевое состояние простоя (или состояние C), как определено Windows Power Manager. В зависимости от шаблонов использования ЦП целевое состояние C процессора будет корректироваться со временем.
Состояния простоя — это нумерованные состояния от C0 (активные, а не простои) до состояний с более низким энергопотреблением. К этим состояниям относятся C1 (остановлено, но часы по-прежнему включены), C2 (остановлено и часы отключены) и т. д. Реализация состояний простоя зависит от процессора. Однако большее число состояний во всех процессорах отражает более низкое энергопотребление, а также более длительное время ожидания, прежде чем процессор сможет вернуться к обработке инструкций. Время, затраченное в состоянии простоя, значительно влияет на потребление энергии и время работы батареи.
Некоторые процессоры могут работать в состояниях производительности (P-) и регулирования (T-), даже если они активно обрабатывают инструкции. P-состояния определяют частоту и уровни напряжения, поддерживаемые процессором. T-состояния напрямую не изменяют частоту часов, но могут снизить эффективную частоту, пропуская обработку некоторых тактов. Вместе текущие P- и T- состояния определяют эффективную рабочую частоту процессора. Более низкие частоты соответствуют более низкой производительности и меньшему энергопотреблению.
Windows Power Manager определяет соответствующее P- и T-состояние для каждого процессора на основе шаблонов использования ЦП и политики управления питанием системы. Время, затрачиваемое в высокопроизводительных и низкопроизводительных состояниях, значительно влияет на потребление энергии и время работы батареи.
Управление использованием процессора
Windows использует три основные абстракции для управления использованием процессора.
- Процессы
- Потоки
- Отложенные вызовы процедур (DPCs) и подпрограммы службы прерываний (ISR)
Процессы и потоки
Все программы в пользовательском режиме в Windows выполняются в контексте процесса. Процесс включает следующие атрибуты и компоненты:
- Виртуальное адресное пространство
- Класс Priority
- Загруженные программные модули
- Сведения о среде и конфигурации
- По крайней мере один поток
Хотя процессы содержат программные модули, контекст и среду, они не запланированы для выполнения непосредственно на процессоре. Вместо этого потоки, принадлежащие процессу, планируются для запуска на процессоре.
Поток хранит сведения о контексте выполнения. Почти все вычисления управляются как часть потока. Активность потока существенно влияет на показатели и производительность системы.
Так как количество процессоров в системе ограничено, все потоки не могут выполняться одновременно. Windows реализует совместное использование времени процессора, что позволяет потоку выполняться в течение определенного периода времени, прежде чем процессор переключит на другой поток. Действие переключения между потоками называется переключением контекста и выполняется компонентом Windows, который называется диспетчером. Диспетчер принимает решения о планировании потоков на основе приоритета, идеального процессора и сходства, квантовых вычислений и состояния.
Приоритет
Приоритет является ключевым фактором в выборе диспетчером потока для запуска. Приоритет потока — это целое число от 0 до 31. Если поток является исполняемым и имеет более высокий приоритет, чем текущий выполняемый поток, поток с более низким приоритетом немедленно вытесняется, а поток с более высоким приоритетом переключается на контекст.
Если поток выполняется или готов к запуску, потоки с более низким приоритетом не могут выполняться, если нет достаточного количества процессоров для одновременного выполнения обоих потоков или если поток с более высоким приоритетом не ограничен выполнением только на подмножестве доступных процессоров. Потоки имеют базовый приоритет, который может быть временно повышен до более высоких приоритетов в определенное время: например, когда процесс владеет окном переднего плана или когда завершается ввод-вывод.
Идеальный процессор и сходство
Идеальный процессор и сходство потока определяют процессоры, на которых планируется запуск данного потока. Каждый поток имеет идеальный процессор, который устанавливается либо программой, либо автоматически Windows. Windows использует методологию циклического перебора, чтобы каждому процессору было назначено примерно равное количество потоков в каждом процессе. По возможности Windows планирует выполнение потока на идеальном процессоре; однако поток может иногда выполняться на других процессорах.
Сходство процессоров потока ограничивает процессоры, на которых будет выполняться поток. Это более строгое ограничение, чем идеальный атрибут процессора потока. Программа задает сходство с помощью setThreadAffinityMask. Сходство может препятствовать запуску потоков на определенных процессорах.
Quantum
Переключения контекста являются дорогостоящими операциями. Windows обычно позволяет каждому потоку выполняться в течение периода времени, который называется квантовым , прежде чем он переключится на другой поток. Квантовая длительность предназначена для сохранения очевидной реакции системы. Это повышает пропускную способность, минимизируя затраты на переключение контекста. Длительность квантовых вычислений может отличаться для клиентов и серверов. Длительность квантовых вычислений обычно увеличивается на сервере, чтобы максимально увеличить пропускную способность за счет видимой скорости реагирования. На клиентских компьютерах Windows назначает более короткие квантовы в целом, но предоставляет более длинный квант для потока, связанного с текущим окном переднего плана.
Состояние
Каждый поток существует в определенном состоянии выполнения в любой момент времени. Windows использует три состояния, относящиеся к производительности; Это: Выполняется, Готово и Ожидание.
Потоки, которые выполняются в данный момент, находятся в состоянии Выполняется . Потоки, которые могут выполняться, но в настоящее время не выполняются, находятся в состоянии Готово . Потоки, которые не могут выполняться, так как они ожидают определенного события, находятся в состоянии Ожидание .
Переход от состояния к состоянию показан на рис. 1. Переходы состояния потока:

Рис. 1. Переходы состояния потока
На рис. 1 Переходы состояния потока описаны ниже.
- Поток в состоянии Выполняется инициирует переход в состояние Ожидание, вызывая функцию ожидания, например WaitForSingleObject или Спящий режим (> 0).
- Выполняющийся поток или операция ядра считывает поток в состоянии ожидания (например, SetEvent или истечение срока действия таймера). Если процессор бездействует или если готовый поток имеет более высокий приоритет, чем текущий выполняемый поток, готовый поток может переключиться непосредственно в состояние Выполняется. В противном случае он переводится в состояние Готово.
- Поток в состоянии Готовности планируется для обработки диспетчером, когда выполняющийся поток ожидает, возвращает (Спящий режим(0)) или достигает конца своего кванта.
- Поток в состоянии Выполняется переключается и помещается диспетчером в состояние Готово, когда он вытесняется потоком с более высоким приоритетом, возвращается (Спящий режим(0)) или когда заканчивается его квантовый.
Поток, который существует в состоянии ожидания, не обязательно указывает на проблему с производительностью. Большинство потоков проводят значительное время в состоянии ожидания, что позволяет процессорам переходить в состояние простоя и экономить энергию. Состояние потока становится важным фактором производительности только в том случае, если пользователь ожидает завершения операции потока.
DPC и ISR
Помимо обработки потоков, процессоры реагируют на уведомления с аппаратных устройств, таких как сетевые карты или таймеры. Когда аппаратному устройству требуется внимание процессора, возникает прерывание. Windows реагирует на аппаратное прерывание, приостанавливая текущий выполняемый поток и выполняя ISR, связанный с прерыванием.
Во время выполнения ISR обработчику можно запретить обработку любых других действий, включая другие прерывания. По этой причине isr должны быстро завершиться, иначе производительность системы может снизиться. Чтобы сократить время выполнения, ISR обычно планируют выполнение операций, которые должны выполняться в ответ на прерывание. Для каждого логического процессора Windows поддерживает очередь запланированных DPC. DPC берут приоритет над потоками на любом уровне приоритета. Перед тем как процессор вернется к потокам обработки, он выполняет все DPC в своей очереди.
В то время, когда процессор выполняет DCR и ISR, потоки не могут выполняться на этом процессоре. Это свойство может привести к проблемам для потоков, которые должны выполнять работу с определенной пропускной способностью или с точным временем, например поток, который воспроизводит звук или видео. Если время процессора, используемое для выполнения ЦП и ISR, не позволяет этим потокам получать достаточно времени обработки, поток может не достичь требуемой пропускной способности или завершить рабочие элементы вовремя.
Средства Windows ADK
Windows ADK записывает сведения об оборудовании и оценки в файлы результатов оценки. WPA предоставляет подробные сведения об использовании ЦП в различных графах. В этом разделе объясняется, как использовать Windows ADK и WPA для сбора, просмотра и анализа данных о производительности ЦП.
Файлы результатов оценки Windows ADK
Так как Windows поддерживает только симметричные многопроцессорные системы, все сведения в этом разделе относятся ко всем установленным ЦП и ядрам.
Подробные сведения об оборудовании ЦП доступны в EcoSysInfo разделе файлов результатов оценки в узле .
The name of the first CPU The maximum frequency of the first CPU The total number of processors The total number of cores The total number of logical processors . and so on.
Графики WPA
После загрузки трассировки в WPA сведения об оборудовании процессора можно найти в разделах Трассировка/Конфигурация системы/Общие и Трассировка/Конфигурация системы/PnP пользовательского интерфейса WPA.
Примечание Все процедуры, описанные в этом руководстве, выполняются в WPA.
Граф состояний простоя ЦП
Если данные о состоянии простоя собираются в трассировке, в пользовательском интерфейсе WPA будет отображаться граф состояния простоя питания или ЦП . Этот граф всегда содержит данные о состоянии целевого простоя для каждого процессора. Граф также будет содержать сведения о фактическом состоянии бездействия каждого процессора, если это состояние поддерживается процессором.
Каждая строка в следующей таблице описывает изменение состояния простоя для целевого или фактического состояния процессора. Для каждой строки графа доступны следующие столбцы:
Процессор, на который влияет изменение состояния.
Время, когда процессор вошел в состояние простоя.
Время выхода процессора из состояния простоя.
Время, затраченное в состоянии простоя (по умолчанию aggregation:maximum).
Время, затраченное в состоянии простоя (по умолчанию aggregation:minimum).
Состояние, в которое процессор переходит после текущего состояния.
Состояние, из которого процессор переходил до текущего состояния.
Текущее состояние простоя.
Текущее состояние простоя в виде числа (например, 0 для C0).
Время, затраченное в состоянии простоя (по умолчанию aggregation:sum).
Либо Целевой объект (для выбранного целевого состояния Power Manager для процессора), либо Фактический (для фактического состояния простоя процессора).
Профиль WPA по умолчанию предоставляет две предустановки для этого графа: состояние по типу, ЦП и диаграмма состояния по типу, ЦП.
Состояние по типу, ЦП
Целевые и Фактические состояния каждого ЦП отображаются вместе с номером состояния на оси Y в графе Состояние по типу, ЦП . Рис. 2 Состояние простоя ЦП по типу ЦП показывает фактическое состояние ЦП при колебаниях между активным и целевым состояниями простоя.

Рис. 2 Состояние простоя ЦП по типу, ЦП
Диаграмма состояния по типу, ЦП
На этой диаграмме целевые и фактические состояния каждого ЦП представлены в формате временная шкала. Каждое состояние имеет отдельную строку в временная шкала. Рис. 3. Диаграмма состояния простоя ЦП по типу, ЦП показывает те же данные, что и на рис. 2 Состояние простоя ЦП по типу, ЦП в представлении временная шкала.

Рис. 3. Диаграмма состояния простоя ЦП по типу, ЦП
Диаграмма частоты ЦП
Если данные о частоте ЦП были собраны в системе, поддерживающей несколько P- или T-состояний, граф частоты ЦП будет доступен в пользовательском интерфейсе WPA. Каждая строка в следующей таблице представляет время на определенном уровне частоты для процессора. Столбец Частота (МГц) содержит ограниченное количество частот, соответствующих P-состояниям и T-состояниям, поддерживаемым процессором. Для каждой строки графа доступны следующие столбцы:
Длительность выражается в процентах от общего времени ЦП за текущий видимый период времени.
Количество изменений частоты (всегда 1 для отдельных строк).
ЦП, на который влияет изменение частоты.
Время, когда ЦП вошел в P-состояние.
Время выхода ЦП из P-состояния.
Частота ЦП в то время, когда он находится в P-состоянии.
Время, затраченное в P-состоянии (агрегирование по умолчанию:максимум).
Время, затраченное на P-состояние (по умолчанию aggregation:minimum).
Время, затраченное в P-состоянии (агрегирование:сумма по умолчанию).
Дополнительные сведения о P-State.
Профиль по умолчанию определяет предустановку частоты по ЦП для этого графа. На рисунке 4 показана частота ЦП по ЦП при переходе между тремя P-состояниями:

Рисунок 4. Частота ЦП по ЦП
Граф использования ЦП (выборка)
Данные, отображаемые на графе Использование ЦП (выборка), представляют примеры активности ЦП, которые принимаются через регулярный интервал выборки. В большинстве трассировок это одна миллисекунда (1 мс). Каждая строка в таблице представляет одну выборку.
Вес выборки представляет значимость этой выборки относительно других выборок. Вес равен метке времени текущей выборки за вычетом метки времени предыдущей выборки. Вес не всегда точно равен интервалу выборки из-за колебаний состояния и активности системы.
На рисунке 5 выборки ЦП показано, как собираются данные:

Рисунок 5. Выборка ЦП
Все действия ЦП, происходящие между выборками, не записываются данным методом выборки. Таким образом, действия очень короткой длительности, такие как DPC и ISR, не представлены на диаграмме выборки ЦП .
Для каждой строки графа доступны следующие столбцы:
Вес выражается в процентах от общего времени ЦП, затрачиваемого за текущий видимый диапазон времени.
Адрес памяти функции, которая находится в верхней части стека.
Количество выборок, представленных строкой. Это число включает примеры, которые берутся при простое процессора. Для отдельных строк этот столбец всегда равен 1.
Количество выборок, представленных строкой, за исключением выборок, которые берутся при простое процессора. Для отдельных строк этот столбец всегда равен 1 (или 0, если ЦП находился в низком энергопотреблении).
Индекс ЦП, на основе которого был взят этот пример, на основе 0.
Отображаемое имя активного процесса.
Определяется ли в выборке регулярное использование ЦП, DPC/ISR или низкое энергопотребление.
Функция в верхней части стека.
Модуль, содержащий функцию в верхней части стека.
Приоритет выполняющегося потока.
Имя образа процесса, которому принадлежит выполняющийся код.
Полное имя (включая идентификатор процесса) процесса, которому принадлежит выполняющийся код.
Стек выполняющегося потока.
Идентификатор выполняющегося потока.
Функция запуска потока
Функция, с которой запущен выполняющийся поток.
Модуль запуска потока
Модуль, содержащий функцию запуска потока.
Время, когда выборка была взята.
Время (в миллисекундах), представленное образцом (т. е. время с момента последней выборки).
Профиль по умолчанию предоставляет следующие предустановки для этого графа:
- Использование ЦП
- Использование по приоритету
- Использование по процессам
- Использование по процессам и потокам
Использование ЦП
На диаграмме Использование ЦП по ЦП показано, как распределяется работа между процессорами. На рисунке 6 загрузка ЦП по ЦП показано это распределение для двух ЦП:

Рисунок 6. Эксплуатация ЦП по ЦП
Использование по приоритету
Использование ЦП с группировкой по приоритету потоков показывает, как высокоприоритетные потоки влияют на потоки с более низким приоритетом. На рис. 7 Загрузка ЦП (выборка) Использование по приоритету показана эта диаграмма:

Рис. 7. Использование ЦП (выборка) по приоритету
Использование по процессам
Загрузка ЦП , сгруппированная по процессам, показывает относительное использование процессов. Эта предустановка показана на рис. 8. Использование ЦП (выборка) по процессам. В этом примере диаграммы показано, что один процесс занимает больше времени ЦП, чем другие процессы.

Рис. 8. Использование ЦП (выборка) по процессам
Использование по процессам и потокам
Загрузка ЦП , которая сгруппирована по процессу, а затем сгруппирована по потоку, показывает относительное использование процессов и потоков в каждом процессе. Эта предустановка показана на рисунке 9 Загрузка ЦП (выборка) по процессам и потокам. На этом графике выбраны потоки одного процесса.

Рис. 9. Использование ЦП (выборка) по процессам и потокам
Диаграмма использования ЦП (точная)
Граф загрузка ЦП (точная) записывает сведения, связанные с событиями переключения контекста. Каждая строка представляет набор данных, связанных с одним переключением контекста; т. е. при запуске потока. Данные собираются для следующей последовательности событий:
- Новый поток выключается.
- Новый поток готов к запуску готовым потоком.
- Новый поток переключается, тем самым выключая старый поток.
- Новый поток снова выключается.
На рисунке 10 Точная схема использования ЦП время передается слева направо. Метки схемы соответствуют именам столбцов в графе Загрузка ЦП (точная). Метки для столбцов меток времени отображаются в верхней части схемы, а метки для столбцов Interval Duration — в нижней части схемы.

Рисунок 10. Точная диаграмма использования ЦП
Разрывы в временная шкала на рис. 10. Точная схема использования ЦП разделяет временная шкала на регионы, которые могут происходить одновременно на разных ЦП. Эти временные шкалы могут перекрываться до тех пор, пока порядок нумерованных событий не изменяется. Например, поток подготовки может выполняться на процессоре 2 в то же время, когда новый поток выключается, а затем снова в процессоре 1.
На временная шкала записывается информация о следующих четырех целевых объектах:
- Новый поток, который является потоком, который был включен. Это основной фокус этой строки в графе.
- Поток NewPrev, который относится к предыдущему времени переключения нового потока.
- Поток подготовки, который представляет собой поток, который подготовил новый поток для обработки.
- Старый поток— поток, который был переключен при переключении нового потока.
Данные в следующей таблице относятся к каждому целевому потоку:
Загрузка ЦП новым потоком после его переключения. Это значение выражается в процентах от общего времени ЦП за текущий видимый период времени.
Число переключений контекста, представленных строкой. Это значение всегда равно 1 для отдельных строк.
Количество ожиданий, представленных строкой. Это значение всегда равно 1 для отдельных строк, за исключением случаев, когда поток переключается в состояние простоя; в этом случае устанавливается значение 0.
ЦП, на котором произошло переключение контекста.
Загрузка ЦП новым потоком после переключения контекста. Это значение равно значению NewInSwitchTime, но отображается в миллисекундах.
Идеальный ЦП, выбранный планировщиком для нового потока.
Предыдущее время, когда новый поток был выключен.
Приоритет нового потока, который переключается.
NextSwitchOutTime(s) минус SwitchInTime(s)
Приоритет нового потока при его переключениях.
Приоритет нового потока, когда он был ранее отключен.
Состояние нового потока после его выключения.
Режим ожидания нового потока, когда он был ранее выключен.
Причина отключения нового потока.
Повышение приоритета, влияющее на поток.
Процесс нового потока.
Имя процесса нового потока, включая PID.
Состояние нового потока после его переключения.
Идентификатор нового потока.
Стек нового потока при его включении.
Функция start нового потока.
Начальный модуль нового потока.
Режим ожидания нового потока.
Причина отключения нового потока.
Время следующего переключения нового потока.
Время, когда старый поток был переключлен до его переключения.
Приоритет старого потока при его переключении.
Процесс, которому принадлежит старый поток.
Имя процесса, которому принадлежит старый поток, включая PID.
Состояние старого потока после его выключения.
Идентификатор старого потока.
Функция start старого потока.
Начальный модуль старого потока.
Режим ожидания старого потока.
Причина отключения старого потока.
Предыдущее значение CState процессора. Если это значение не равно 0 (активно), процессор находился в состоянии простоя до того, как новый поток был включен в контекст.
SwitchInTime(s) minusReadyTime (s)
Идентификатор потока подготовки.
Функция start потока подготовки.
Начальный модуль потока подготовки.
Процесс, которому принадлежит поток подготовки.
Имя процесса, которому принадлежит поток подготовки, включая PID.
Стек потока подготовки.
Время подготовки нового потока.
Время переключения нового потока.
SwitchInTime(s) минус LastSwitchOutTime (s)
ReadyTime (s) минус LastSwitchOutTime (s)
Профиль по умолчанию использует следующие предустановки для этого графа:
- Временная шкала по ЦП
- Временная шкала по процессам, потокам
- Использование по приоритету в начале переключения контекста
- Использование ЦП
- Использование по процессам, потокам
Временная шкала по ЦП
Загрузка ЦП на временная шкала показывает распределение работы между процессорами. На рис. 11 Временная шкала использования ЦП (точная) временная шкала по ЦП показывает временная шкала в восьмипроцессорной системе:

Рис. 11. Временная шкала использования ЦП (точная) по ЦП
Временная шкала по процессам, потокам
Загрузка ЦП в временная шкала для каждого процесса и потока показывает, какие процессы выполнялись в определенное время. На рисунке 12 Использование (точная временная шкала по процессам, поток) показана эта временная шкала в нескольких процессах:

Рис. 12 Использование (точная временная шкала) по процессам, поток
Использование по приоритету в начале переключения контекста
Этот график идентифицирует всплески активности потоков с высоким приоритетом на каждом уровне приоритета. На рисунке 13 Загрузка ЦП (точная) загрузка по приоритету в начале переключения контекста показано распределение приоритетов:

Рис. 13. Использование ЦП (точная) загрузка по приоритету в начале переключения контекста
Использование ЦП
На этом графике использование ЦП группируется и отображается по ЦП, чтобы показать распределение работы между процессорами. На рисунке 14 показана диаграмма использования ЦП (точная) загрузка ЦП по ЦП для системы с восемью процессорами.

Рис. 14 Использование ЦП (точная) загрузка ЦП по ЦП
Использование по процессам, потокам
На этом графике загрузка ЦП группируется сначала по процессам, а затем по потокам. В нем показано относительное использование процессов и потоков в каждом процессе Рис. 15 Загрузка ЦП (точная) загрузка ЦП по процессам. Поток показывает это распределение между несколькими процессами:

Рис. 15 Загрузка ЦП (точная) загрузка по процессам, поток
Граф DPC/ISR
Граф DPC/ISR является основным источником данных DPC/ISR в WPA. Каждая строка в графе представляет фрагмент, который представляет собой период времени, в течение которого DPC или ISR выполнялись непрерывно. Данные собираются в начале и конце фрагментов. Дополнительные данные собираются после завершения DPC/ISR. На рисунке 16 схема DPC/ISR показано, как это работает:

Рис. 16. Схема DPC/ISR
На рисунке 16 схема DPC/ISR описаны данные, собранные во время следующих действий:
- Запускается DPC/ISR-A .
- Прерывание устройства с более высоким уровнем прерывания, чем DPC/ISR-A , приводит к прерыванию ISR-BDPC/ISR A, тем самым завершая первый фрагмент DPC/ISR-A.
- ISR-B завершает и тем самым завершает фрагмент ISR-B. DPC/ISR-A возобновляет выполнение во втором фрагменте.
- DPC/ISR-A завершается, тем самым завершая второй фрагмент DPC/ISR-A.
Строка для каждого фрагмента отображается в таблице данных. Фрагменты для DPC/ISR-A используют идентичные сведения со столбцами, не являющихся фрагментами.
Столбцы графа DPC/ISR описывают сведения на уровне фрагмента или столбцы уровня DPC/ISR. Каждый фрагмент отличается от данных в столбцах уровня фрагментов и идентичных данных в столбцах DPC/ISR.
Длительность (фрагментированная), которая выражается в процентах от общего времени ЦП за текущий видимый период времени.
Процент монопольной длительности
Монопольная длительность, выраженная в процентах от общего времени ЦП за текущий видимый период времени.
Процент инклюзивной длительности
Инклюзивная длительность, выраженная в процентах от общего времени ЦП за текущий видимый период времени.
Адрес памяти функции DPC или ISR.
Число DPC/ISR, представленных этой строкой. Это значение всегда равно 1 для строк, представляющих окончательный фрагмент DPC/ISR; В противном случае это число равно 0.
Количество фрагментов, представленных строкой. Это значение всегда равно 1 для отдельных строк.
Индекс логического процессора, на котором запущен DPC или ISR.
Для DPC тип DPC — обычный или таймер. Это значение пусто для ISR.
Время ввода DPC/ISR
Время в трассировке при запуске DPC/ISR.
Время выхода DPC/ISR
Время от начала трассировки до завершения DPC/ISR.
Длительность (фрагментированная) (мс)
Время выхода фрагмента (s) минус время ввода фрагмента (s) в миллисекундах.
Монопольная длительность (мс)
Сумма фрагментированных длительности в мс для всех фрагментов этого DPC/ISR.
Если DPC/ISR этой строки содержит несколько фрагментов, это значение равно True; в противном случае — False.
Если это был не единственный фрагмент для этого DPC/ISR, это значение равно True; в противном случае — False.
Время ввода фрагмента
Время начала выполнения фрагмента.
Время выхода фрагмента (s)
Время остановки выполнения фрагмента.
Запущенная функция DPC или ISR.
Инклюзивная длительность (мс)
Время выхода DPC/ISR за вычетом DPC/ISR Enter Time (s) в миллисекундах.
Индекс прерываний для прерываний, сигнальных сообщением.
Модуль, содержащий функцию DPC или ISR.
Возвращаемое значение DPC/ISR
Тип события; это DPC или прерывание (ISR).
Значение вектора прерывания на устройстве.
Профиль по умолчанию использует следующие предустановки для этого графа:
- [DPC,ISR,DPC/ISR] Длительность по ЦП
- [DPC,ISR,DPC/ISR] Длительность по модулю, функции
- [DPC,ISR,DPC/ISR] Временная шкала по модулям, функциям
[DPC,ISR,DPC/ISR] Длительность по ЦП
События DPC/ISR агрегируются по ЦП, на котором они выполнялись, и сортируются по длительности. На этом графике показано распределение действий DPC между ЦП. На рисунке 17 DPC/ISR Duration by CPU показан этот график для системы с восемью процессорами.

Рис. 17 Длительность DPC/ISR по ЦП
[DPC,ISR,DPC/ISR] Длительность по модулю, функции
События DPC/ISR агрегируются в этом графе по модулю и функции подпрограмм DPC/ISR и сортируются по длительности. Здесь показано, какие подпрограммы DPC/ISR потребляли больше всего времени Рис. 18 Длительность DPC/ISR по модулям. Функция показывает период времени, который вызывает действие DPC/ISR в двух модулях:

Рис. 18 Длительность DPC/ISR по модулю, функция
[DPC,ISR,DPC/ISR] Временная шкала по модулям, функциям
События DPC/ISR агрегируются в этом графе модулем и функцией подпрограмм DPC/ISR. Они отображаются в виде временная шкала. На этом графике представлено подробное представление периода времени, в течение которого выполнялись ДПС/ISR. На этом графике также показано, как можно фрагментировать отдельные DPC/ISR. На рисунке 19 DPC/ISR Timeline by Module( Функция) показана временная шкала действий в трех модулях:

Рис. 19 Временная шкала DPC/ISR по модулям, функциям
Деревья стека
Деревья стека отображаются в таблицах ИСПОЛЬЗОВАНИЕ ЦП (выборка),Загрузка ЦП (точная) и DPC/ISR в WPA, а также в проблемах, о которых сообщается в отчетах об оценке. Деревья стека изображают стеки вызовов, связанные с несколькими событиями за период времени. Каждый узел в дереве представляет сегмент стека, который совместно используется подмножеством событий. Дерево создается из отдельных стеков и показано на рис. 20 Стеки из трех событий:

Рисунок 20. Стеки трех событий
На рисунке 21 показано, как определены общие последовательности для этого графа:

Рисунок 21. Идентификация общих сегментов
На рис. 22 Дерево, созданное из стеков, показано, как общие сегменты объединяются для формирования узлов дерева:

Рисунок 22. Построение дерева из стеков
Столбец Stacks в пользовательском интерфейсе WPA содержит расширитель для каждого неконечного узла. При проблемах, сообщаемых о оценке, дерево отображается вместе с совокупными весовыми коэффициентами. Некоторые ветви можно удалить из графа, если их весовые коэффициенты не соответствуют заданному порогу. В примере стека ниже показано, как события, представленные выше, отображаются в рамках проблемы, о которую сообщили об оценке.
5ms ModuleA!Function1 5ms ModuleA!Function2 5ms ModuleA!Function3 | 4ms |-ModuleA!Function4 4ms | ModuleB!Function1 | | 1ms | |-ModuleB-Function2 1ms | | ModuleB-Function3 | | 3ms | |-ModuleB!Function3 3ms | ModuleB!Function4 | 1ms |-ModuleA!Function5 1ms ModuleC!Function1 1ms ModuleC!Function2
Узел в стеке представляет время, когда сама функция находится в верхней части стека. Узел не включает время, затрачиваемое на функции, вызываемые родительской функцией. Эта длительность называется монопольным временем, затраченным на функцию.
Например, Функция1 вызывает Function2. Функция 2 потратила 2 мс в цикле с интенсивным использованием ЦП и вызвала другую функцию, которая выполнялась в течение 4 мс. Это может быть представлено следующим стеком:
6ms ModuleA!Function1 | 2ms |- 4ms |-ModuleA!Function2 4ms ModuleB!Function3 4ms ModuleB-Function4
Методы
В этом разделе описывается стандартный подход к анализу производительности. Он предоставляет методы, которые можно использовать для исследования распространенных проблем производительности, связанных с ЦП.
Анализ производительности состоит из четырех этапов:
- Определите сценарий и проблему.
- Определите задействованные компоненты и соответствующий диапазон времени.
- Создайте модель того, что должно было произойти.
- Используйте модель для выявления проблем и изучения первопричин.
Определение сценария и проблемы
Первым шагом в анализе производительности является четкое определение сценария и проблемы. Многие проблемы с производительностью влияют на сценарии, которые измеряются метриками оценки. Пример:
Сценарий 1. Физический ресурс используется не полностью. Например, сервер не может полностью использовать сетевое подключение, так как он не может достаточно быстро шифровать пакеты.
Сценарий 2. Физический ресурс используется больше, чем должно быть. Например, система использует значительные ресурсы ЦП в период простоя, который использует заряд батареи.
Сценарий 3. Действия не выполняются с требуемой скоростью. Например, кадры удаляются во время воспроизведения видео, так как они не декодируются достаточно быстро.
Сценарий 4. Действие было отложено. Например, пользователь запустил интернет-Обозреватель но открытие вкладки заняло больше времени, чем ожидалось.
Сценарии 3 и 4, связанные с ресурсами ЦП, рассматриваются в этом руководстве. Сценарии 1 и 2 не относятся к область и не охватываются. Чтобы проанализировать эти проблемы, можно начать с неоднозначного наблюдения, например «это слишком медленно», и задать дополнительные вопросы, чтобы определить сценарий и точную проблему.
Определение компонентов и периода времени
После выявления сценария и проблемы можно определить задействованные компоненты и интересующий период времени. Компоненты включают аппаратные ресурсы, процессы и потоки.
Часто вы можете найти интересующий диапазон времени, определив связанное действие в руководстве по анализу. Действие — это интервал между событием запуска и событием остановки, который можно выбрать и масштабировать в WPA. Если действие не определено, можно найти диапазон времени, выполнив поиск определенных универсальных событий, связанных со сценарием, или путем поиска изменений в использовании ресурсов, которые могут пометить начало и конец сценария. Например, если ЦП бездействует в течение двух секунд, а затем полностью используется в течение четырех секунд, а затем снова простаивает в течение двух секунд, то четыре секунды полного использования могут быть интересующей областью трассировки, которая захватывает воспроизведение видео.
Создание модели
Чтобы понять первопричины проблемы, необходимо иметь модель того, что должно было произойти. Модель начинается с проблемы или любой связанной цели для метрики; Например, «Эта операция должна быть завершена менее чем за 5 секунд».
Более полная модель содержит сведения о том, как должны работать компоненты. Например, какой обмен данными ожидается между компонентами? Какое использование ресурсов является типичным? Сколько времени обычно занимают операции?
Сведения о модели часто можно найти в руководстве по анализу оценки. Если этот ресурс недоступен, для создания модели можно создать трассировку из аналогичного оборудования и программного обеспечения, не имеющего проблем с производительностью.
Используйте модель для выявления проблем, а затем изучить первопричины
Получив модель, вы можете сравнить трассировку с моделью для выявления проблем. Например, модель для определенного действия с именем Suspend Devices может предположить, что все действие должно завершиться через три секунды, в то время как каждый экземпляр вложенного действия с именем Suspend должен занять не более 100 мс. Если два экземпляра вложенного действия Suspend каждый занимает 800 мс, следует исследовать эти экземпляры.
Каждое отклонение от модели можно проанализировать, чтобы найти первопричину. Следует изучить состояние задействованных потоков и найти распространенные первопричины. Ниже описано несколько основных причин, связанных с ЦП, для действий, которые не выполняются с требуемой скоростью или откладываются.
Прямое использование ЦП. Соответствующие потоки получили полные ресурсы ЦП, но требуемая программа не выполнялась достаточно быстро. Это может быть вызвано неисправностью программы или медленным оборудованием.
Взаимодействие потока. Поток не получил достаточно времени выполнения, так как вместо этого выполнялись другие потоки. В этом случае поток считается голодным или вытесняется.
Помехи DPC/ISR: потоки не получили достаточно времени выполнения, так как ЦП были заняты обработкой DPC или ISR.
Во многих случаях одна из этих первопричин не оказывает заметного влияния на поток, и поток проводит большую часть своего времени в состоянии ожидания. В этом случае необходимо определить и исследовать событие, для которого ожидается поток. Этот рекурсивный тип исследования называется анализом ожидания и начинается с определения критического пути.
Расширенный метод: анализ ожидания и критический путь
Действие — это сеть операций, некоторые последовательные и параллельные, которые передаются от события начала к событию end. Любая пара событий начала и окончания в трассировке может рассматриваться как действие. Самый длинный путь через эту сеть операций называется критическим путем. Уменьшение длительности любой операции на критическом пути напрямую сокращает продолжительность общей активности, хотя это также может изменить критический путь.
На рис. 23 Операции действий показаны действия трех потоков. Thread-1 отправляет событие запуска действия, а затем ожидает завершения задач Thread-2 и Thread-3. Сначала выполняется задача Thread-2, а затем Thread-3. Когда оба потока завершают свои задачи, Поток-1 будет готов и завершает событие действия.

Рисунок 23. Операции активности
В этом сценарии критический путь включает части Thread-3 и Thread-1. Они трассируются на рис. 24 Критический путь. Так как Thread-2 не находится на критическом пути, время, необходимое для выполнения задачи, не влияет на общее время действия.

Рисунок 24. Критический путь
Критический путь — это малоуровневый литеральный ответ на вопрос о том, почему действие занимает столько же времени, сколько это было. После того как ключевые сегменты критического пути будут известны, их можно проанализировать, чтобы найти проблемы, влияющие на общую задержку.
Общий подход к поиску критического пути
Первым шагом к поиску критического пути является проверка модели сценария, чтобы понять назначение и реализацию действия.
Понимание действия может помочь определить конкретные операции, процессы и потоки, которые могут находиться на критическом пути. Например, задержка в действии инициализации быстрого запуска Обозреватель может быть вызвана приложениями RunOnce и процессом инициализации Обозреватель, для которых требуется значительный объем операций ввода-вывода.
После просмотра модели сценария проверка, чтобы узнать, сообщила ли оценка о каких-либо проблемах для затронутого действия. Во многих случаях приблизительная оценка критического пути включается в проблемы с задержкой, сообщаемой о оценке. Критический путь отображается в виде последовательности ожиданий и готовых действий. Его можно считать от начала до конца как последовательность событий, при этом основной отложенный сегмент критического пути находится в середине списка. Последняя запись в списке — это действие, которое приготовили поток, завершив действие.
Если необходимо вручную найти критический путь, рекомендуется определить процесс и поток, который завершил действие, и работать в обратном направлении с момента завершения действия. Вы можете определить процесс и поток, которые запустили действие, а также процесс и поток, завершив действие, с помощью графа Действия в WPA.
Граф Действия отображается при загрузке трассировки через XML-файл результатов оценки. Чтобы определить процесс и поток, связанные с определенным действием, разверните граф до интересующего действия, а затем переключите представление в граф и таблицу. Установите режим графа в значение Таблица. Для каждого действия в таблице отображаются столбцы Start Process (Начальный процесс), Start Thread Id (Идентификатор начального процесса), Start Thread Id (Идентификатор конечного потока), End Process (Конечный процесс) и End Thread Id (Идентификатор конечного потока).
После того как вы узнаете о начальном и конечном процессах, потоке и реализации действия, критический путь можно отследить обратно. Начните с анализа потока, завершившего действие, чтобы определить, как этот поток потратил большую часть своего времени: на выполнение, готовность или ожидание.
Значительное время выполнения указывает на то, что прямое использование ЦП могло способствовать длительности критического пути. Время, затраченное в режиме готовности, указывает на то, что другие потоки влияют на длительность критического пути, препятствуя выполнению потока на критическом пути. Время, затраченное на точки ожидания ввода-вывода, таймеры или другие потоки и процессы на критическом пути, для которого ожидал текущий поток.
Каждый поток, который готов к текущему потоку, вероятно, является еще одним звеном в критическом пути, а также может быть проанализирован до тех пор, пока не будет учтена длительность критического пути.
Процедура. Поиск критического пути в WPA
В следующей процедуре предполагается, что вы определили действие на графе Действия, для которого требуется найти критический путь.
- Чтобы определить процесс, завершив действие, наведите указатель мыши на действие на диаграмме Действия .
- Добавьте граф Загрузка ЦП (точная). Увеличьте масштаб затронутого действия и примените предустановку «Использование по процессам», «Поток «.
- Щелкните правой кнопкой мыши заголовки столбцов и сделайте столбцы ReadyThreadStack и Загрузка ЦП (мс) видимыми. Удалите столбцы Ready (us) [Max] и Waits (us) [Max] .
- Разверните целевой процесс и отсортируйте его соответственно по загрузке ЦП (мс),Ready (us) [Sum] и Waits (us) [Sum].
- Найдите NewThreadIds в процессе, затрачиваемого на наибольшее количество времени в состоянии «Выполняется», «Готово» или «Ожидание». Потоки, которые тратят значительное время в состояниях Выполняется или Готово, могут представлять прямую загрузку ЦП на критическом пути. Обратите внимание на идентификаторы потоков. Потоки, которые проводят значительное время в состоянии ожидания, могут ожидать ввода-вывода, таймера или другого потока в критическом пути.
- Чтобы узнать, чего ждали потоки, разверните группу NewThreadId , чтобы отобразить ReadyThreadStack.
- Разверните [Корень].
- Стеки, начинающиеся с KiDispatchInterrupt , не связаны с другим потоком. Чтобы определить, чего ожидает поток в этих стеках, разверните узел KiDispatchInterrupt и просмотрите функции в дочернем стеке. IopfCompleteRequest указывает, что готовый поток ожидал ввода-вывода. KiTimerExpiration указывает, что готовый поток ожидал таймера.
- Разверните стеки, которые не начинаются с KiDispatchInterrupt , пока не увидите ReadyingProcess и ReadyingThread. Если процесс уже развернут, разверните NewThreadId , соответствующий параметру ReadyingThread. Повторяйте этот шаг, пока не найдете поток, который выполняется, готов, ожидает другой причины или ожидает другого процесса. Если поток ожидает другой процесс, повторите эту процедуру с помощью этого процесса.
Пример
В этом примере показана задержка в действии «Быстрый запуск возобновления Обозреватель инициализации». Поиск в области Проблемы показывает, что для этого действия сообщается о семи проблемах типа задержки. Каждую из этих проблем можно рассматривать как сегмент критического пути. Определены следующие ключевые сегменты:
- Поток 3872 TestBootStrapper.exe процесса (3024) вытесняется на 2,1 секунды.
- Поток 3872 TestBootStrapper.exe процесса (3024) использует 1 секунду времени ЦП.
- Поток 3872 TestBootStrapper.exe процесса (3024) очищает куст реестра в течение 544 миллисекунда.
- Поток 3872 TestBootStrapper.exe процесса (3024) в спящем режиме в течение 513 миллисекундах.
- Потоки 4052 и 4036 Explorer.exe считывать с диска, что приводит к задержке в 461 миллисекунда.
- Поток 3872 TestBootStrapper.exe процесса (3024) голодает в течение 187 миллисекунда.
- Поток 3872 TestBootStrapper.exe процесса записывает на диск 3,5 МБ, что приводит к задержке в 178 миллисекундах.
Проблемы показывают, что это действие было отложено на 5,2 секунды. Эти задержки составляют значительную часть деятельности общей продолжительностью 6,3 секунды. Приложение TestBootStrapper.exe в первую очередь отвечает за задержку, в первую очередь потому, что оно вытесняет другие задачи обработки.
Исследование проблем в критическом пути
- Увеличьте затронутый регион и добавьте столбцы ReadyThreadStack и Загрузка ЦП (мс).
- В этом случае Explorer.exe — это процесс, который завершает действие. Разверните процесс explorer.exe и отсортируйте его соответственно по загрузке ЦП (мс),Ready (us) [Sum] и Waits (us) [Sum], как показано на следующих рисунках:
Рис. 25. Активность по загрузке ЦП (мс)
Рис. 26. Действие от Ready (us)
Рис. 27. Действия по ожиданиям (us) - При сортировке по столбцу Загрузка ЦП (мс) отображается верхняя дочерняя строка 299 миллисекунда. При сортировке по столбцу Ready (us) [Sum] отображается верхняя дочерняя строка 46 мс. При сортировке по столбцу Waits (us) [Sum] отображается верхняя дочерняя строка 5749 миллисекунд и вторая строка 4902 миллисекунд. Так как эти строки значительно влияют на задержку, их следует исследовать дальше.
- Разверните стеки, чтобы отобразить готовые потоки, как показано на следующих рисунках:
Рис. 28. Процесс подготовки и подготовка потока для потока
Рис. 29. Процесс подготовки и подготовка потока для другого потока В этом примере первый поток тратит большую часть времени на ожидание выхода RunOnce.exe процесса. Следует выяснить, почему процесс RunOnce.exe занимает так много времени. Второй поток ожидает первого потока и, вероятно, является незначительным звеном в той же цепочке ожидания. - Повторите действия, описанные в этой процедуре, для RunOnce.exe. Основной столбец участников — Waits (us) и имеет четыре возможных участника.
- Разверните каждый участник, чтобы увидеть, что первые три участника ожидают четвертого участник. Эта ситуация делает первые три участника незначительными для цепочки ожидания. Четвертый участник ожидает другого процесса, TestBootStrapper.exe. Этот сценарий показан на рис. 30. Процесс подготовки и Подготовка потока для потока в RunOnce.exe:
Рис. 30. Процесс подготовки и Подготовка потока для потока в RunOnce.exe - Повторите действия, описанные в этой процедуре, для TestBootStrapper.exe. Результаты показаны на следующих трех рисунках:
Рис. 31. Потоки по загрузке ЦП (мс)
Рис. 32. Потоки по готовности (нас)
Рис. 33. Потоки по ожиданиям (нас) Поток 3872 провел примерно 1 секунду, 2 секунды готовности и 1,3 секунды ожидания. Поскольку этот поток также является потоком подготовки для потока 3872, время выполнения и готовности, вероятно, влияет на задержку. Оценка сообщает о следующих проблемах, время которых совпадает с задержками:
- Поток 3872 TestBootStrapper.exe процесса (3024) вытеснен на 2,1 секунду.
- Поток 3872 TestBootStrapper.exe процесса (3024) на 187 миллисекундах.
- Поток 3872 TestBootStrapper.exe процесса (3024) использует 1 секунду времени ЦП.
Чтобы найти другие проблемы, связанные с вкладом, просмотрите событие, для которого ожидал поток 3872. Разверните узел ReadyThreadStack , чтобы просмотреть участников за 1,3 секунды ожидания, как показано на рис. 34. Время ожидания участников:

Рисунок 34. Вклады во время ожидания
KiRetireDpcList обычно связан с вводом-выводом, а KiTimerExpiration — таймером. Вы можете просмотреть, как были инициированы ввод-вывод и таймер, удалив ReadyThreadStack , а затем просмотрев NewThreadStack. В этом представлении показаны три связанные функции, как показано на рисунке 35 операции ввода-вывода и таймера в NewThreadStack:

Рис. 35. Ввод-вывода и таймер в NewThreadStack
В этом представлении приводятся следующие сведения:

- Поток 3872 TestBootStrapper.exe процесса (3024) очищает куст реестра в течение 544 миллисекунда.
- Поток 3872 TestBootStrapper.exe процесса (3024) переходит в спящий режим в течение 513 миллисекундах.
- Поток 3872 TestBootStrapper.exe процесса записывает на диск 3,5 МБ, что приводит к задержке в 178 миллисекундах.
Прямое использование ЦП
Действия часто задерживаются, так как поток на критическом пути использует значительное время ЦП. Используя модель состояния потока, можно увидеть, что эта проблема характеризуется потоком на критическом пути, который тратит исключительное количество времени в состоянии Выполняется. На некотором оборудовании такая высокая загрузка ЦП может способствовать задержкам.
Идентификация проблемы
Во многих оценках используется эвристика для выявления проблем, связанных с прямым использованием ЦП. О значительной загрузке ЦП на критическом пути сообщается как о проблеме в следующей форме:
Использование ЦП процессом P задерживает затронутое действие A на x секунд
Где P — это выполняемый процесс, A — действие, а x — время в секундах.
Если эти проблемы связаны с действием, которое приводит к задержкам, причиной может быть прямое использование ЦП.
Изучение прямого использования ЦП
- Вы можете вручную определить проблему, найдите отдельные ЦП, которые потребляют 100 % ресурсов ЦП на графе Использование ЦП (выборка).
- Увеличьте область интереса на графике и выберите предустановку Использование по процессам и потокам . По умолчанию в верхней части таблицы отображаются строки с наибольшим совокупным использованием ЦП. Эти потоки также отображаются в верхней части графа Использование ЦП (выборка).Примечание В системе с несколькими процессорами поток, использующий 100 % одного процессора, будет потреблять 100/(количество логических процессоров). В системе такого типа только виртуальный бездействующий поток (PID 0, TID 0) может показывать большую загрузку процессора, чем 100/(количество логических процессоров). Если процессы и потоки, которые потребляют большую часть ЦП, соответствуют любым потокам в критическом пути, то, вероятно, фактором является прямое использование ЦП.
Пример проблемы Assessment-Reported прямого использования ЦП
Использование ЦП процессом TestUM.exe (4024) задерживает затронутое действие, процесс быстрого завершения работы TestIM.exe запуска, на 2,1 секунды. Этот пример показан на рисунке 37 Поток 3208:

Рисунок 37. Поток 3208
Исследование
После того как вы обнаружите, что прямое использование ЦП приводит к задержке на критическом пути, необходимо определить конкретные модули и функции, которые влияют на задержку.
Способ. Проверьте проблему Assessment-Reported прямого использования ЦП
Вы можете расширить проблему прямого использования ЦП, о котором сообщалось о оценке, чтобы отобразить критический путь, на который влияет прямое использование ЦП. Если развернуть узел, связанный с загрузкой ЦП, отобразятся стеки, связанные с загрузкой ЦП и связанными модулями. Это представление показано на рис. 38. Сегмент расширенного использования ЦП:

Рисунок 38. Развернутый сегмент использования ЦП
Метод. Вручную изучите стеки проблемы с прямым использованием ЦП
Если оценка не сообщает о проблеме или требуется дополнительная проверка, можно использовать диаграмму Использование ЦП (выборка) для ручного сбора сведений о модулях и функциях, связанных с проблемой использования ЦП. Для этого необходимо увеличить область интереса и просмотреть стеки, отсортированные по загрузке ЦП.
Вручную изучите стеки проблемы с прямым использованием ЦП
- В меню Трассировка выберите команду Загрузить символы.
- Увеличьте масштаб временная шкала, чтобы отобразить только ту часть критического пути, на которую влияет проблема С ЦП.
- Примените предустановку Использование по процессу и потоку .
- Добавьте столбец Stack на экран, а затем перетащите этот столбец справа от элемента Идентификатор потока (слева от панели).
- Разверните процесс и поток, чтобы отобразить деревья стека. Строки в стеке сортируются в порядке убывания по весу загрузки ЦП. Это ставит самые интересные стеки на вершине. При развертывании стеков watch столбец %Вес, чтобы сохранить фокус на строках с наибольшим использованием.
- Чтобы извлечь копию стека, выделите все строки, щелкните правой кнопкой мыши и выберите команду Копировать выделенный фрагмент.
Решение
Для решения проблем с высокой загрузкой ЦП можно применять решения как на уровне конфигурации, так и на уровне компонентов.
Прямое использование ЦП оказывает большее влияние на компьютеры с процессорами более низкого уровня. В таких случаях можно добавить дополнительную вычислительную мощность компьютера. Кроме того, вы можете удалить модули проблем из критического пути или из системы. Если вы можете изменить компоненты, рассмотрите возможность перепроектирования, чтобы достичь одного из следующих результатов:
- Удаление кода с ресурсоемким ЦП из критического пути
- Использование более эффективных алгоритмов ЦП
- Откладывать или кэшировать работу
Интерференция потока
Использование ЦП потоками, которые не находятся на критическом пути (и могут не быть связаны с действием), может привести к задержке потоков, которые находятся на критическом пути. Модель состояния потока показывает, что эта проблема характеризуется потоками на критическом пути, которые проводят необычное количество времени в состоянии Готовности.
Идентификация проблемы
Многие оценки используют эвристические методы для выявления проблем, связанных с вмешательством. Они представлены в одной из следующих двух форм:
- Процесс P голодает. Голодание приводит к задержке затронутого действия A в x мс.
- Процесс P вытесняется. Вытеснение приводит к задержке затронутого действия Ax мс .
Где P — это процесс, A — действие, а x — время в мс.
Первая форма отражает помехи от потоков на том же уровне приоритета, что и поток на критическом пути. Вторая форма отражает помехи от потоков, которые находятся на более высоком уровне приоритета, чем поток на критическом пути.
Если эти типы проблем возникают при отложенном действии, причиной может быть вмешательство потока. Для определения проблемы вручную можно использовать диаграмму Загрузка ЦП (точная ).
Выявление проблем с интерференцией потока
- Увеличьте интервал и примените предустановку Загрузка по ЦП . Использование 100 % на всех ЦП указывает на проблему с помехами.
- Примените предустановку «Использование по процессу», «Поток» и сортируйте по первому столбцу Ready (us). (Это столбец, содержащий агрегат Sum .)
- Разверните процесс затронутого действия и просмотрите время готовности для потоков на критическом пути. Это значение является максимальным временем уменьшения задержки путем устранения любой проблемы с интерференцией потока. Значение с величиной, значительной относительно исследуемой задержки, указывает на то, что существует проблема с интерференцией потока.
На рисунке 39 загрузка ЦП показана почти 100 %, а на рис. 40 — проблема с интерференцией потока.

Рисунок 39. Эксплуатация близка к 100%

Рисунок 40. Проблема интерференции потока
Исследование
После выявления проблемы необходимо определить, почему затронутый поток провел так много времени в состоянии Готовности.
Метод. Определение того, почему поток потратил время в состоянии готовности
С помощью графа Загрузка ЦП (точная) можно определить, почему поток провел время в состоянии Готовности. Сначала необходимо определить, ограничен ли поток определенными процессорами. Хотя вы не можете получить эти сведения напрямую, вы можете изучить журнал использования ЦП потока в периоды высокой загрузки ЦП. Это период, когда потоки, как правило, часто переключаются между процессорами.
Определение ограничений процессора потока

- Увеличьте масштаб затронутой области.
- Добавьте диаграмму Загрузка ЦП (точная) и примените предустановку «Использование по процессам», «Поток «.
- Используйте диалоговое окно Дополнительно , чтобы добавить столбец ЦП с режимом агрегирования Уникальное число справа от NewThreadId.
- Отфильтруйте диаграмму, чтобы отобразить только интересующие вас потоки. Значение в столбце ЦП отражает количество процессоров, на которых поток выполнялся в течение текущего интервала времени. В периоды 100 % загрузки ЦП это число приблизительно соответствует количеству процессоров, на которых разрешено запускать этот поток. Если значение меньше числа доступных процессоров, поток, вероятно, ограничен определенными ЦП. На рисунке 41 Ограниченные потоки представлен пример этого графа: Рисунок 41. Ограниченные потоки
После того как вы узнаете об ограничениях процессора потока, вы можете определить, что вытесняет поток. Для этого необходимо определить интервалы, которые поток провел в состоянии Готовности, а затем проверить, какие другие потоки или процессы выполнялись в течение этих интервалов.
Определение того, что было вытеснено или измощено потоком
- Создайте диаграмму, показывающую, когда поток находился в состоянии Готовности, и примените предустановку «Использование по процессам», «Поток «.
- Откройте редактор представлений, нажмите кнопку Дополнительно и выберите вкладку Конфигурация графа .
- Для параметра Время начала задайте значениеReadyTime (s) и задайте для параметра Duration значение Ready (us), как показано на рисунке 42 Столбцы Времени готовности. Нажмите кнопку ОК.
Рисунок 42. Столбцы времени готовности - В редакторе представлений замените столбец Загрузка ЦП (%) столбцом Ready (us) [Sum] .
- Выберите интересующий поток, чтобы создать граф, похожий на рис. 43.
Рисунок 43. График времени готовности - В этом случае поток провел значительное время в состоянии Готовности. Чтобы определить типичный приоритет, добавьте в столбец NewInPri агрегирование «Среднее«. В этом случае средний приоритет потока равен ровно 8. Это число указывает, что, вероятно, это фоновый поток, который никогда не получает повышения приоритета.
- После того как средний приоритет будет известен, просмотрите активность ЦП для ЦП, на которых разрешено запускать поток. В этом случае было определено, что поток имеет сходство только с ЦП 1.
- Добавьте еще один график использования ЦП (точная) и примените предустановку Использование ЦП по ЦП . Выберите соответствующие ЦП.
- Откройте представление Дополнительно и добавьте фильтр по приоритету, который вы нашли ранее, чтобы отфильтровать этот поток. Этот сценарий показан на рисунке 44 Фильтр потоков:
Рисунок 44. Фильтр потока На рис. 45 Загрузка ЦП, Время готовности и Другие действия потока на верхнем графике показана загрузка ЦП потоком 3548. На среднем графике показано время, когда поток был готов, а на нижнем — активность на ЦП, на которых потоку было разрешено выполняться (в данном случае Cpu1).
Рис. 45. Загрузка ЦП, время готовности и другие действия потока - Увеличьте область, в которой поток был готов, но не выполнялся в течение большей части времени в течение этого интервала.
- На диаграмме Загрузка ЦП добавьте NewInPri слева от панели и проверьте результаты. Потоки или процессы, имеющие приоритеты, равные приоритету целевого потока, показывают время нехватки потока. Потоки или процессы, имеющие более высокий приоритет, чем приоритет целевого потока, показывают время, когда поток был вытеснено. Вы можете вычислить общее время вытеснения потока, добавив время всех потоков и действий с упреждающими вытеснениями. На рисунке 46 Использование по приоритету, когда целевой поток был готов, показано, что 730 мс времени потока было вытеснено, а 300 мс времени потока были голодали. (Этот рисунок увеличен до интервала 1192 мс.)
Рис. 46 Использование по приоритету при подготовке целевого потока - Чтобы определить, какие потоки отвечают за вытеснение и нехватку этого потока, добавьте столбец NewProcess справа от столбца NewInPri и просмотрите уровни приоритета, на которых выполнялись процессы. В этом случае вытеснение и голодание в основном были вызваны другим потоком в том же процессе и TestResidentApp.exe. Можно предположить, что эти процессы получают периодическое повышение приоритета выше базового приоритета.
Решение
Вы можете устранить проблемы с вытеснением или нехваткой, изменив конфигурацию или компоненты. Рассмотрите следующие средства.
- Удалите проблемные процессы из системы.
- Настройка базового приоритета проблемных процессов.
- Изменить время запуска проблемных процессов; Например, отложить время их запуска до момента перезагрузки компьютера.
- Если проблемные компоненты можно изменить, измените их так, чтобы они были менее ресурсоемкими или запускались с более низким приоритетом.
DPC/ISR-помехи
Если выполнение DPC и ISR потребляет слишком много времени процессора, для запуска потоков может не хватать свободного времени ЦП. Такая ситуация может привести к аналогичным задержкам при помехах потока. Когда потоки должны выполнять операции с регулярной высокой частотой, например при воспроизведении видео или анимации, помехи со стороны ЦП и ISR могут вызвать проблемы с работой.
Идентификация проблемы
Во многих оценках используется эвристика для выявления проблем, связанных с DPC/ISR. Действие DPC/ISR определяется как подозрительное, если сообщается о проблеме в следующей форме:
DPC D превышает пороговое значение в м миллисекундах x раз в течение P. N экземпляров этого DPC выполняются в общей сложности в t миллисекундах.
Где D — это DPC, m — количество миллисекунд, которое задает пороговое значение, x — количество превышений порогового значения DPC, P — текущий процесс, n — количество экземпляров, запущенных DPC, а t — общее время в миллисекундах, в течение которого DPC превысил пороговое значение.
Например, оценка сообщает о следующей проблеме:
DPC sdbus.sys! SdbusWorkerDpc превышает цель в 3,0 миллисекунда 153 раза за время существования обработчика мультимедиа. 153 экземпляра этого DPC выполняются в общей сложности 864 миллисекунда
Если эта проблема связана с действием, которое проявляет события проблемы или задержки, причиной может быть действие DPC/ISR.
Определение интерференции DPC/ISR вручную
- Чтобы вручную определить помехи DPC/ISR, откройте трассировку в WPA и определите интересующие события проблемы. Это общие события, относящиеся к оценке, такие как Microsoft-Windows-Dwm-Core:SCHEDULE_GLITCH или Microsoft-Windows-MediaEngine:DroppedFrame.
- Рядом с графом событий добавьте граф длительность DPC/ISR по ЦП . Если пики в графе длительности DPC/ISR по ЦП соответствуют проблемным событиям, DPC/ISR могут быть фактором, вызывающим проблемы.
- Для получения дополнительных данных увеличьте период времени, который происходит 100 мс перед отображением нескольких проблемных событий. Если значительное действие DPC/ISR отображается на одном или нескольких процессорах в регионе 100 мс до возникновения проблемных событий, можно сделать вывод, что события проблемы были вызваны действием DPC/IRS.
- Чтобы определить, вызывает ли помехи DPC/ISR задержки, увеличьте область, в которую отображается выполняющийся поток. Запишите ЦП или ЦП, на которых выполняется этот поток.
- На графе DPC/ISR примените предустановку DPC/ISR Duration by CPU и просмотрите действие DPC/ISR на соответствующих ЦП в этом диапазоне времени.
На рисунке 47 Проблемные события и действие DPC/ISR показано, что поток 864 iexplore.exe относится к затронутой активности. Поток 864 находится в состоянии Выполняется на ЦП2 в течение 10,65 % от диапазона времени в представлении. Однако на графике DPC/ISR показано, что cpu2 был занят выполнением DPC/ISR в течение 10 % этого времени.
Примечание Большинство DPC/ISR не оказывают такого влияния, как показано в этом примере.

Рис. 47. События проблем и действие DPC/ISR
На рис. 48 DPC/ISR, не связанные с событиями проблем, DPC/ISR не связаны с проблемами производительности:

Рис. 48 DPC/ISR, не связанные с событиями проблемы
На рис. 49 Задержка, вызванная помехами DPC/ISR, DPC/ISR приводят к проблемам с производительностью:

Рис. 49 Задержка, вызванная помехами DPC/ISR
Исследование
После того как вы определите, что ДПС/ISR связаны с проблемами или задержками, необходимо определить, какие конкретные ДП/ISR задействованы и почему они происходят часто или выполняются в течение чрезмерного времени.
Способ. Ознакомьтесь с проблемой Assessment-Reported DPC/ISR
В проблемах DPC/ISR, сообщаемых о оценке, можно развернуть проблему, которая отображает основные процессы, которые вытесняются DPC или ISR. Разверните стек, чтобы просмотреть действие DPC для процесса, наиболее связанного с затронутым действием, как показано в разделе, разверните стек, чтобы понять, что делает DPC. На рисунке 50 развернутый стек DPC показан расширенный стек:

Рисунок 50. Развернутый стек DPC
Метод. Найдите самые высокие DPC/ISR и просмотрите стеки
Если оценка не сообщает, что DPC/ISR является проблемой, можно использовать диаграммы DPC/ISR и загрузка ЦП (выборка), чтобы получить сведения о стеке для наиболее релевантных DPC. Рекомендуется найти интересующий DPC/ISR, отметить его модуль и функцию, а затем найти примеры на графе Загрузка ЦП (выборка), чтобы получить полные сведения о стеке.
Найдите DPC/ISR с наибольшей длительностью и просмотрите стеки.
- Увеличьте интересующий интервал.
- На графе DPC/ISR выберите предустановленную длительность DPC/ISR по модулю и функции. При загрузке символов события DPC/ISR сортируются по общей длительности, а затем разбиваются по модулям и функциям. Верхние строки в списке содержат события DPC/ISR, которые, вероятно, вызвали проблемы с событиями. Запишите имена модулей и функций.
- На графе Использование ЦП (выборка) выберите предустановку Использование по процессам . По умолчанию эта предустановка скрывает действие DPC/ISR.
- Откройте редактор представлений и нажмите кнопку Дополнительно.
- На вкладке Фильтр измените параметр Скрыть строки, соответствующие фильтру , на Сохранить строки, соответствующие фильтру. Это позволит отображать действия DPC/ISR.
- Удалите столбец Процесс и добавьте столбец Стек для просмотра DPC/ISR, отсортированных по стеку.
- Очистка текущей строки.
- Щелкните правой кнопкой мыши ячейку в столбце Stack и выберите команду Найти в этом столбце.
- Введите модуль и функцию, которые вы записали на шаге 2 этой процедуры.
- Установите флажок Добавить к текущему выделенному фрагменту и нажмите кнопку Найти все , чтобы выбрать все экземпляры функции.
- После выбора всех строк щелкните правой кнопкой мыши и выберите пункт Бабочка/Просмотреть вызываемых.
В этом представлении показаны действия конкретной функции, отсортированные по общей длительности. Представление аналогично отображению стеков в подробном представлении проблемы, сообщаемой об оценке. Столбец Вес приблизительно соответствует инклюзивному времени, затрачиваемого каждой функцией в стеке, в миллисекундах.
Это представление показано на рис. 51 Вызываемые абоненты DPC, отсортированные по приблизительной длительности:

Рис. 51 Вызываемые абоненты DPC, отсортированные по приблизительной длительности
Метод. Проверка Long-Running DPC/ISR
Общая продолжительность ДПС/ISR имеет важное значение, однако длительные отдельные ДПС/ISR, скорее всего, вызовут задержки. В графе DPC/ISR столбец Инклюзивное время (мс) с сортировкой по убыванию отображает максимальные продолжительности отдельных DPC/ISR. Предустановленные длинные DPC/ISR , доступные в некоторых профилях оценки, позволяют отфильтровать это представление, чтобы отобразить только ДП/ISR с инклюзивной длительностью, превышающей 1 мс.
Примечание Если эта предустановка недоступна, можно открыть раздел Редактор представлений, дополнительно, чтобы добавить фильтр.
Решение
Действие DPC/ISR часто отражает проблему с оборудованием или программным обеспечением, которую необходимо исправить на уровне оборудования или компонента. На уровне конфигурации можно заменить оборудование или обновить соответствующий драйвер до фиксированной версии. На уровне компонентов оборудование и драйверы должны следовать рекомендациям для DPC/ISR от MSDN и по возможности использовать потоковые DPC. Потоковые DPC не выполняются на уровне диспетчеризации в клиентских выпусках Windows. Дополнительные сведения о рекомендациях по DPC/ISR см. в статьях Рекомендации по поведению ISR и DPC и Введение в потоковые DPC.
# факты | Как операционная система распределяет время процессора?
Какой бы ни была операционная система, перед ней стоит целый комплекс задач. И нам понадобится не раз возвращаться к этой теме, чтобы рассмотреть их все хотя бы в самых общих чертах. Темой нашего сегодняшнего повествования станет распределение операционной системой времени центрального процессора между различными задачами. Сегодня мы получим ответ на вопрос, который рано или поздно возникает у каждого любознательного пользователя: как операционная система распределяет время процессора для решения нескольких задач одновременно? Ведь под красочными обоями рабочего стола таится неутомимая труженица, способная день и ночь решать поставленные перед ней пользователем задачи. За ее плечами нелегкий груз забот, но обычно она несет его с легкостью, кроме некоторых ситуаций, когда пользователь требует от своей помощницы невозможного.


Все выполняемые операционной системой задачи можно сгруппировать по шести категориям:
- Управление процессором (Processor management)
- Управление памятью (Memory management)
- Управление устройством (Device management)
- Управление накопителем (Storage management)
- Интерфейс приложения (Application interface)
- Интерфейс пользователя (User interface)
Читатели могут отметить, что современная операционная система умеет много такого, что не вмещается ни в одну из этих шести групп. И будут правы. Разработчики операционных систем оснащают их множеством вспомогательных утилит и дополнительных функций. Но эти шесть категорий, которые нам предстоит рассмотреть, составляют саму суть того, что положено делать операционной системе.
Управление процессором

Управление процессором компьютера сводится к решению двух, теснейшим образом связанных между собою проблем:
- Обеспечение каждого программного процесса и приложения достаточным для корректного функционирования временем процессора
- Использование циклов процессора в том объеме, который реально необходим для работы
Основной единицей программного обеспечения, которой операционная система выделяет процессорное время, является процесс или поток (тред). Это зависит от конкретной операционной системы.
Можно даже сказать, что операционная система склонна воспринимать процесс в качестве приложения. Но это упрощение не описывает всей сложности взаимодействия процессов с операционной системой и аппаратным обеспечением компьютера. Процессом является любое приложение: текстовый редактор, электронная таблица или игра. Но приложение может вести к запуску дополнительных процессов, обеспечивающих взаимодействие с устройствами или другими компьютерами.
Когда операционная система работает, в ней запущено множество процессов, которые даже не дают вам знать о своем существовании. Например, в Windows XP или UNIX работают десятки фоновых процессов. В список их задач входят: обеспечение работы сети, управление памятью компьютера и его дисками, проверка системы на вирусы. Разумеется, этим круг их задач не исчерпывается.
Процессом называется программное обеспечение, выполняющее некую работу. Каждый процесс должен кем-то или чем-то контролироваться: операционной системой, другим приложением или непосредственно пользователем.
Операционная система управляет скорее процессами, чем приложениями и именно их она ставит в расписание центрального процессора. В однозадачных операционных системах это расписание линейно. Операционная система позволяет приложению запуститься, прерывая его выполнение только на те промежутки времени, которые требуются пользователю на ввод данных или другие прерывания.
Прерываниями называют специальные сигналы, исходящие от аппаратного и программного обеспечения. Они происходят тогда, когда та или иная часть компьютера неожиданно требует к себе внимания со стороны центрального процессора. Порой операционная система определяет приоритет процессов и маскирует некоторые прерывания. То есть она игнорирует прерывания от некоторых источников, позволяя процессору сначала справиться с уже выполняемой им работой.
Но некоторые прерывания крайне важны и не игнорируются. Речь идет о проблемах памяти и ошибках. Эти прерывания называют немаскируемыми и они обрабатываются немедленно, вне зависимости от того, над какими задачами в данный момент работает процессор. В качестве наиболее яркого (но, разумеется, не единственного) примера немаскируемого прерывания можно привести прерывание по прекращению подачи питания. Нетрудно понять, что такое прерывание всегда ведет к прекращению работы процессора по весьма уважительной причине.
Прерывания усложняют работу даже однозадачной операционной системы. Каждодневный труд многозадачной операционной системы еще сложнее. Сегодня операционная система должна выполнять приложения таким образом, чтобы для вас это выглядело в качестве событий, происходящих одновременно. Современные многоядерные процессоры и многопроцессорные компьютеры, разумеется, очень работоспособны, но каждое ядро процессора до сих пор может выполнять лишь одну задачу в один момент времени.
Чтобы создавалось впечатление одновременно происходящих событий, операционной системе приходится переключаться между процессами тысячи раз за одну только секунду. Теперь рассмотрим то, как все это происходит в реальности:
- Процесс занимает определенный объем в оперативной памяти (ОЗУ, RAM). Он также может использовать регистры, стеки и очереди в рамках памяти процессора и операционной системы
- Когда два процесса выполняются одновременно в многозадачном режиме, операционная система выделяет одной программе определенное количество исполнительных циклов процессора
- После выполнения этой последовательности циклов, операционная система копирует состояние всех регистров, стеков и очередей, использованных в ходе работы над выполнением процесса и отмечает точку, в которой выполнение процесса было приостановлено
- Затем загружает все регистры, стеки и очереди, используемые вторым процессом и позволяет процессору уделить ему некоторое количество циклов
- Когда все это уже произошло, она вновь копирует состояние всех регистров, стеков и очередей, использованных второй программой и в очередной раз загружает первую программу
Управляющий блок процесса

Вся информация, необходимая для отслеживания процесса, содержится в пакете данных, именуемом управляющим блоком процесса (process control block). Таким образом состояние процесса не теряется при переключении между задачами. В общем случае, управляющий блок процесса содержит:
- Номер-идентификатор (ID), идентифицирующий данный процесс
- Указатели и положения программы и ее данных на момент последней обработки процесса
- Контент регистра
- Состояния различных признаков и переключателей
- Список открытых процессом файлов
- Приоритет процесса
- Статус всех необходимых данному процессу устройств ввода и вывода
Каждый процесс характеризуется связанным с ним статусом (состоянием). Многие процессы в определенных ситуациях не требуют времени центрального процессора. К примеру, процесс может находиться в состоянии ожидания нажатия пользователем клавиши. В этом состоянии процесс называют приостановленным (suspended). Когда поступает информация о нажатии клавиши, операционная система меняет его статус. В данном конкретном примере речь идет о том, что статус ожидания сменяется статусом исполнения. Для продолжения выполнения процесса используется информация из его управляющего блока.
Подкачка процессов не требует непосредственного вмешательства пользователя. Каждый процесс получает в свое распоряжение достаточно циклов процессора, чтобы выполнить свою задачу за разумный промежуток времени. Проблемы наступают, когда пользователь начинает одновременно работать со слишком большим числом процессов. Операционная система и сама требует определенного количества циклов процессора на сохранение всех регистров и очередей и переключение между задачами. Операционная система не идеальна, и может случиться так, что она начнет использовать большую часть отведенных ей циклов процессора на переключение между процессами, а не на их запуск. Это называется пробуксовкой и обычно требует вмешательства пользователя. Ему необходимо завершить некоторые процессы и навести порядок в работе системы.
Все рассмотренное нами выше касается тех случаев, когда компьютер располагает всего одним процессором. На машинах, располагающих двумя и более процессорами, операционной системе приходится распределять между ними свою рабочую нагрузку. И при этом стараться поддержать баланс между потребностями процессов и количеством доступных циклов разных процессоров. Асимметричные операционные системы выделяют один из процессоров под свои собственные нужды, а процессы приложений распределяют между остальными. Симметричные операционные системы распределяют свои нужды между несколькими процессорами даже в тех случаях, если никаких других задач больше не запущено.
В дальнейшем нам предстоит поговорить еще о пяти категориях задач, которые постоянно «держит в уме» самая обычная операционная система любого компьютера.
Продолжение следует…
По материалам computer.howstuffworks.com
Что такое процессор (CPU)
В статье расскажем о том, что такое ЦП (центральный процессор), рассмотрим функции процессора и разберем как он работает.
Процессор – это устройство, отвечающее за обработку информации. Его называют по-разному: центральный процессор (ЦП) или центральное процессорное устройство (ЦПУ) или central processing unit (CPU), но все эти термины обозначают элемент, который является “мозгом” вычислительного устройства (смартфона, телевизора, компьютера, планшета, фотоаппарата, сервера).
Процессор представляет собой квадратную пластину со стороной около 5 сантиметров, с одной стороны которой находятся, похожие на ножки, коннекторы. С их помощью он прикрепляется к материнской плате – специальному элементу для установки дополнительных расширений.
(1).jpg)
Мощность процессора отвечает за скорость обработки команд и сказывается на продуктивности работы.
Что делает процессор
Зачем нужен процессор в устройствах? Он осуществляет управление всеми вычислительными операциями и элементами. Функции, которые выполняет ЦП:
- выполняет операции с данными оперативной памяти.
- создает команды и обрабатывает запросы от внутренних компонентов или внешних устройств.
- временное хранит данные о проделанных операциях или отданных командах.
- выполняет логические и арифметические операции с полученной информацией.
- передает итоги обработки информации внешним устройствам.
Из чего состоит процессор
Центральный процессор это не конечная деталь. Он состоит из трех составных частей:
Ядро отвечает за большую часть всех функций CPU. Оно выполняет расшифровку, чтение, отправку инструкций другим элементам или принимает инструкции от них. Одномоментно ядро способно выполнять только одну команду, происходит это за сотые доли секунд. Таким образом, наличие одного ядра говорит о том, что ПК или сервер будет выполнять все инструкции поочередно. Современное оборудование редко использует одноядерные процессоры, так как в этом случае оно работает очень медленно.
Ядро в свою очередь состоит еще из двух частей:
- Арифметико-логическое устройство (АЛУ). Оно осуществляет выполнение арифметических и логических операций.
- Устройство управления (УУ). Оно координирует работу всех частей процессора, его взаимодействие с внешним оборудованием. Происходит это с помощью электрических сигналов.
- Запоминающее устройство.
Это небольшая память процессора, в которой хранится информация о текущих командах и промежуточных результатах. Она состоит из кеша и регистров. Регистры отвечают за “запоминание” информации, а кеш хранит часто выполняемые инструкции. Обращение в кеш происходит быстрее, чем к оперативной памяти, поэтому объем кеш-память процессора влияет на скорость работы ЦПУ.
Это каналы для передачи команд внутри процессора.
Основные характеристики процессоров
- Сокет (Socket)
Это разъем для установки процессора на материнскую плату. Существует множество видов сокетов, поэтому при выборе ЦП нужно обратить внимание, чтобы его сокет подходил к материнской плате. Например, если на материнской плате разъем LGA 1151, то нужно выбирать процессор с таким же сокетом, иначе его нельзя будет установить.
- Тактовая частота
Этот параметр показывает количество обрабатываемых операций (тактов) в секунду. Измеряется в в мегагерцах (МГц) или гигагерцах (ГГц) Чем выше показатель тактовой частоты, тем выше производительность процессора.
Например, процессор с частотой 1 МГц обрабатывает 1 миллион операций в секунду, а процессор с частотой 1 ГГц – 1 миллиард операций.
(1).jpg)
Как было сказано выше, ядро – самая главная часть процессора и чем больше ядер, тем больше команд одновременно сможет обрабатывать ЦПУ. Чем больше ядер в процессоре, тем выше его производительность и скорость выполнения операций.
Показывает сколько потоков информации может обрабатывать одно ядро. Поток это технология, которая позволяет разделить производительность ядра, то есть физически ядро одно, а фактически оно может одновременно обрабатывать два процесса. На текущий момент не все процессоры обладают дополнительными потоками.
Кэш состоит из трех уровней памяти: L1, L2, L3. Чем больше памяти, тем лучше работает процессор.
Кэш первого уровня L1 — содержит те данные, которые могут потребоваться программе для выполнения инструкции,
Кэш второго уровня L2 — медленнее, в сравнении с кэшем первого уровня, но больше по размеру. Кэш L2 содержит информацию, которая может потребоваться в будущем.
Кэш третьего уровня L3 — самый большой и при этом самый медленный кэш. Его объем варьируется от 4 до 50 мегабайт.
- Разрядность процессора
Это количество бит информации, которые процессор может обрабатывать за один такт (операцию). Например, размер данных за такт равен 1 байту, процессор считает восьмиразрядным (8 bit), если размер данных 2 байта, то ЦПУ шестнадцатиразрядный (16 bit), при размере 4 байта – процессор тридцатидвухразрядный (32 bit), в случае с 8-байтовым размером данных процессор считается шестидесятичетырехразрядный (64 bit).
Чем больше размер обрабатываемых данных, тем выше производительность процессора.
Как работает процессор
ЦУ обрабатывает команды на языке двоичного кода, говоря простым языком: 0 – это “нет”, 1 – это “да”. Каждый запрос, приходящий процессору состоит из комбинаций двух чисел 0 и 1.
Все операции внутри процессора это повторяющийся цикл, который не останавливается, пока работает компьютер или сервер: взять инструкцию из памяти, прочитать и расшифровать команду, осуществить действия.
.jpg)
Рассмотрим как работает процессор компьютера более подробно:
- Блок управления процессора забирает из оперативной памяти, где находится программа, определенные данные и команды, которые требуется выполнить. Вся эта информация загружаются в кэш-память.
- Получив данные из кэша, процессор записывает их в регистры. При этом инструкции отправляются в регистры команд, а значения помещаются в регистры данных.
- После считывания инструкций и данных, арифметико-логическое устройство выполняет эти команды.
- Результаты выполнения команд записываются в регистры. Если вычисления завершены, то они записываются также в буферную память процессора. Так как число регистров небольшое, промежуточные результаты хранятся в кэш-памяти.
- Если цикл вычислений завершен, результат сохраняется в оперативной памяти компьютера, чтобы освободить место в буферной памяти ЦП для новых вычислений. Если кэш-память переполнена, то неиспользуемая информация отправляется в кэш нижнего уровня или в оперативную память.
Виды процессоров
Существуют процессоры для мелкой техники, такой как ноутбуки компьютеры, телефоны,их можно назвать настольные ЦП. Второй вид процессоров – серверные, предназначены для оборудования, работающего с огромными массивами данных.
Основные функции настольных процессоров – это выполнения функций домашних компьютеров: запуск нескольких программ, перемещение информации, работа с браузерами, запись данных на различные накопители, запуск игр, обработка фото- и видеоматериалов. Им не требуется большое число ядер, но необходима высокая тактовая частота.
Серверные процессоры могут работать с несколькими подключенными клиентами, поэтому им требуется большее число ядер, высокий объем кэш-памяти и поддержка больших объемов оперативной памяти.
Также различают типы процессоров по принципу выполнения команд:
- CISC (Complete Instruction Set Computing) – этот тип процессора с полным набором команд. Они характеризуется:
– большим количеством различных машинных команд, каждая команда выполняется за несколько тактов ЦП
– небольшим количеством регистров общего назначения
– различными форматами команд с разными длинами
– преобладанием множественной адресацией
- RICS (Restricted Instruction Set Computer) – процессор, повышение работоспособности которого происходит за счет упрощения инструкций. В ЦП с RISC-архитектурой применяется ограниченный набор быстрых команд.
Каждая команда выполняется за за один такт. В таких процессорах требуется меньшее число транзисторов, что снижает их энергопотребление и стоимость. Архитектура RISC использует наиболее простейшие команды, что упрощает процесс их выполнения. Более сложные команды обрабатываются как составные из “простых” команд.
- VLIW (Very Long Instruction Word) – процессоров, работающие через объединение простых команд в “связку”. Эти команды должны быть независимы друг от друга и осуществляться параллельно.
Архитектура VLIW известна с начала 80-х годов. Она основана на том, что задача эффективного параллельного выполнения команд возлагается на «разумный» компилятор (программу, переводящую команды в машинный код). Компилятор первоначально делает анализ всей инструкции, выбирает команды, которые могут быть выполнены одновременно. Затем объединяет такие команды в связки, которые рассматриваются как сверхдлинные команды. В результате получается несколько сверхдлинных команд, которые исполняются одновременно.
Как выбрать процессор
На рынке процессоров известны две крупные компании-производителя: AMD и Intel. Они находятся в тесной конкуренции друг с другом, хотя AMD стремится создать нишевый продукт с низкой ценой, а Intel нацелена на топовые, производительные процессоры с высокой эффективностью и низкой энергопотребляемостью.
Основные характеристики по которым необходимо выбирать процессор это: скорость работы (ГГЦ), количество ядер, объем кэш-памяти, тактовая частота (МГЦ или ГГЦ).
Прежде чем приступить к выбору CPU, необходимо определить для чего нужен процессор, какие задачи стоят перед оборудованием, на котором будет стоять ЦП.
Если вам требуется выполнения обычных задач (работа в поисковых системах, в Word и Excel, чтение почты) на ноутбуке или ПК, то вам достаточно встроенных процессоров, со стандартными параметрами.
Предположим, что вы хотите купить ноутбук для сетевых игр или для монтирования видеоматериалов. В этом случае вам потребуется более мощные характеристики оборудования. ПК для игр, обработки фото или видео лучше выбирать с процессорами у которых не менее четырех ядер.
Восьмиядерный ЦПУ потребуется для мощного персонального компьютера, например, под использование профессиональных программ (3ds Max, Adobe Lightroom Classic, SiSoftware Sandra 2020, Adobe Premiere Pro, AutoCAD) или для профессиональных геймеров.
Еще один важный показатель при выборе CPU – тактовая частота. У простых двухъядерных процессоров она 3,5 ГГц – это средний класс компьютеров. Чем выше уровень тактовой, тем быстрее работает процессор. Например, для игрового ноутбука желательно выбирать ЦП с частотой не менее 4 ГГц.
Выбор процессора для сервера это отдельная задача, которую лучше всего доверить специалисту. Кратко отметим, что стоит учитывать ряд параметров: характеристики CPU, структура и состав сервера, на какое количество пользователей он будет рассчитан, какой тип задач будет на нем выполняться (объемные вычисления, хранение данных, размещение программ с постоянным доступом к ним и т.д.). Также стоит учитывать бюджет, в рамках которого требуется приобрести оборудование.
Так как нагрузки на вычислительные системы быстро растут (появляются новые приложения и программы, которые обрабатывают больше информации), то при выборе процессора лучше сделать запас производительности примерно на 20-30% с перспективой на будущее.
Заключение
Назначение процессора – это обработка информации и выполнение различных команд. Без ЦПУ компьютер не будет работать, он выполняет абсолютно все задачи, даже самые простые. Процессор в оборудовании – как мозг внутри человека.
Мощность ПК и серверного оборудования зависит от процессора. При выборе устройств всегда отталкивайтесь от задач, которые вы планируете выполнять, также делайте запас производительности на случай увеличения нагрузки на оборудование.
Что такое центральный процессор (ЦП)?

Центральный процессор (ЦПУ) – это аппаратный компонент, который является основным вычислительным блоком сервера. Серверы и другие интеллектуальные устройства преобразуют данные в цифровые сигналы и выполняют над ними математические операции. Центральный процессор является основным компонентом, который обрабатывает сигналы и делает возможными вычисления. Он действует как мозг любого вычислительного устройства. Он извлекает инструкции из памяти, выполняет необходимые задачи и отправляет выходные данные обратно в память. Он выполняет все вычислительные задачи, необходимые для работы операционной системы и приложений.
Как развивалась технология ЦПУ с течением времени?
В самых ранних компьютерах для обработки использовались вакуумные трубки. Такие машины, как ENIAC и UNIVAC, были большими и громоздкими, потребляли много энергии и выделяли значительное количество тепла. Изобретение транзисторов в конце 1940-х годов произвело революцию в технологии ЦПУ. Транзисторы заменили вакуумные трубки, сделав компьютеры компактнее, надежнее и энергоэффективнее. В середине 1960-х годов были разработаны интегральные схемы, которые объединили несколько транзисторов и других компонентов на одном компьютерном чипе. ЦПУ стали еще меньше и быстрее, что привело к появлению микропроцессоров.
Микропроцессоры
Микропроцессоры объединили весь ЦПУ на одном микрочипе, что сделало компьютеры более доступными и привело к разработке персональных компьютеров. Первоначально ЦПУ могли обрабатывать от 16 до 32 бит данных одновременно. В начале 2000-х годов появились 64-разрядные ЦПУ, которые обеспечивали большую адресацию памяти и поддерживали более интенсивную обработку данных.
По мере увеличения плотности транзисторов повышение производительности одноядерных ЦПУ усложнилось. Вместо этого производители ЦПУ начали использовать архитектуры многоядерных процессоров для интеграции нескольких ядер в один чип.
Современные процессоры
С появлением мобильных устройств энергоэффективность стала играть решающую роль. Теперь производители ЦПУ разрабатывают маломощные и энергоэффективные ЦПУ для современных портативных устройств, таких как смартфоны и планшеты.
По мере распространения задач, связанных с искусственным интеллектом и графической обработкой, для обработки рабочих нагрузок стали использоваться специализированные ЦПУ, такие как графические процессоры и ускорители искусственного интеллекта.
Непрерывные исследования и разработки в области нанотехнологий и материаловедения проложили путь к созданию микроскопических транзисторов и более мощных ЦПУ. Квантовые вычисления и другие новые технологии могут способствовать дальнейшему развитию компьютерных процессорных технологий.
Из каких компонентов состоит ЦПУ?
ЦПУ – это сложная электронная схема, состоящая из нескольких ключевых компонентов, обрабатывающих данные и исполняющих инструкции. Ниже описаны основные компоненты ЦПУ.
Блок управления
Блок управления контролирует обработку инструкций и координирует поток данных внутри процессора и между другими компьютерными компонентами. Он содержит декодировщик команд, который интерпретирует инструкции, извлеченные из памяти, и преобразует их в микрооперации, которые может выполнить процессор. Блок управления направляет другие компоненты процессора на выполнение необходимых операций.
Регистры
Регистры – это небольшие высокоскоростные места хранения внутри процессора. Они содержат данные, с которыми работает процессор в данный момент, и обеспечивают к ним быстрый доступ. Процессоры имеют несколько типов регистров, в частности такие:
- регистры общего назначения, содержащие оперативные данные;
- регистры инструкций, содержащие текущую обрабатываемую инструкцию;
- счетчик команд, содержащий адрес памяти следующей инструкции, которую нужно извлечь.
Регистры обеспечивают более быстрый доступ к данным по сравнению с другими уровнями памяти, такими как ОЗУ или кэш-память.
ALU
Арифметико-логическое устройство (ALU) выполняет над данными основные арифметические (сложение, вычитание, умножение и деление) и логические операции (AND, OR и NOT). Оно получает данные из регистров процессора, обрабатывает их на основе инструкций блока управления и выдает результат.
Блок управления памятью
Процессор может быть оснащен отдельным интерфейсным блоком или блоком управления памятью в зависимости от его архитектуры. Эти компоненты выполняют задачи, связанные с памятью, такие как управление взаимодействием процессора и оперативной памяти. Этот компонент также управляет кэш-памятью, небольшим блоком быстрой памяти, расположенным внутри процессора, и виртуальной памятью, используемой процессором для обработки данных.
Генератор синхроимпульсов
Процессор использует тактовый сигнал для синхронизации внутренних операций. Генератор синхроимпульсов вырабатывает устойчивые импульсы с определенной частотой, и эти тактовые циклы координируют операции процессора. Тактовая частота измеряется в герцах (Гц) и определяет количество команд, которое процессор может выполнять в секунду. Современные процессоры имеют переменную тактовую частоту, которая регулируется в зависимости от рабочей нагрузки, для сбалансирования производительности и энергопотребления.
Каков принцип работы ЦПУ?
Компьютерные процессоры работают на базе других аппаратных компонентов и программного обеспечения для обработки данных и управления потоком информации в электронных устройствах. Обычно они работают циклически, при этом каждый цикл команд представляет собой три основных этапа.
Цикл базового процессора
Ниже приведены основные этапы цикла команд.
Выборка команд
ЦПУ получает команды из памяти. Команды – это двоичные коды, представляющие конкретные задачи или операции ЦПУ. Блок управления интерпретирует команду и определяет операцию, которую необходимо выполнить. При этом также определяются конкретные компоненты ЦПУ, необходимые для выполнения задачи.
Обработка команд
ЦПУ выполняет указанную операцию с полученными данными. Он выполняет математические вычисления, логические сравнения, манипуляции с данными или передачу данных между регистрами или ячейками памяти.
Хранение результатов
После выполнения команд ЦПУ может потребоваться сохранить результаты в памяти или обновить определенные регистры новыми данными. Счетчик команд обновляется и указывает адрес следующей команды, которую нужно получить. ЦПУ повторяет цикл и последовательно загружает, декодирует и выполняет команды.
Дополнительные функции процессора
ЦПУ также может обрабатывать команды потока управления, такие как переходы и ответвления, а также прерывания, сигналы, генерируемые внешними устройствами, или события, требующие немедленного внимания. При прерывании ЦПУ временно приостанавливает выполнение текущей задачи, сохраняет ее состояние и переходит к процедуре обслуживания прерываний. После обработки прерывания ЦПУ возобновляет выполнение предыдущей задачи.
Современные ЦПУ часто используют такие методы, как параллелизм и конвейерная обработка команд, для повышения производительности. Несколько команд могут одновременно находиться на разных стадиях цикла, что позволяет более эффективно использовать ресурсы ЦПУ.
Каковы расширенные функции ЦПУ?
Лучший ЦПУ отличается производительностью, эффективностью и гибкостью, что позволяет эффективно выполнять широкий спектр вычислительных задач. Далее мы опишем несколько дополнительных функций.
Ядра
Ранее одноядерный процессор был стандартным решением, однако сегодня все ЦПУ имеют несколько физических ядер. Ядро – это отдельный процессор в ЦПУ. Большее количество ядер позволяет ЦПУ обрабатывать несколько потоков (последовательностей команд) параллельно, что значительно повышает общую производительность. Приложения могут использовать преимущества многоядерной архитектуры, разделяя задачи на более мелкие подзадачи, которые можно выполнять одновременно.
Гиперпоточность
Гиперпоточность – это одновременная многопоточная реализация, разработанная Intel, которая позволяет каждому ядру ЦПУ запускать несколько потоков одновременно. Таким образом, каждое физическое ядро в операционной системе имеет вид двух виртуальных ядер. Программное обеспечение более эффективно использует доступные аппаратные ресурсы.
Расширенные наборы команд
Современные ЦПУ также оснащены расширенными наборами команд и технологиями, предназначенными для ускорения выполнения определенных задач. Эти наборы команд выходят за рамки фундаментальных арифметических и логических операций и предоставляют дополнительные возможности для более эффективной обработки сложных вычислений.
Например, ЦПУ могут включать наборы команд, специально предназначенных для описанных ниже задач.
- Мультимедийные задачи, такие как декодирование видео, кодирование звука и обработка изображений.
- Алгоритмы шифрования и дешифрования, такие как AES и SHA.
- Задачи типа SIMD, требующие одновременного выполнения ЦПУ одной и той же операции с большими наборами данных. Это такие задачи, как графический рендеринг, научное моделирование и цифровая обработка сигналов.
- Виртуализация, позволяющая виртуальным машинам (VM) работать более эффективно.
- Рабочие нагрузки ИИ, такие как операции с нейронными сетями.
Как AWS обеспечивает соответствие вашим требованиям к процессорам?
У Amazon Web Services (AWS) предлагает решения для реализации ваших требований к процессорам.
Эластичное вычислительное облако Amazon (Amazon EC2) предлагает самую масштабную и разноплановую вычислительную платформу. Она насчитывает более 600 инстансов и позволяет выбрать новейший процессор, систему хранения данных, сетевую систему, операционную систему и модель покупки, которые помогут вам наилучшим образом удовлетворить потребности вашей рабочей нагрузки. Мы первый крупный облачный провайдер, который поддерживает работу процессоров Intel, AMD и Arm, а также единственное облако с инстансами EC2 Mac по требованию.
При использовании Amazon EC2 вы мгновенно получаете следующие преимущества:
- лучшее соотношение цены и производительности машинного обучения, а также самая низкая стоимость инстансов логических выводов в облаке;
- возможность выбора оптимального сочетания ЦПУ, памяти, хранилища и сетевых ресурсов для ваших приложений;
- возможность выбора предварительно настроенного шаблона образа машины Amazon (AMI) для мгновенного начала работы.
Начните работу с пользовательскими инстансами и процессорами на AWS, создав аккаунт уже сегодня.