События наблюдения за производительностью внеядерных компонентов платформы Merrifield

Использование событий наблюдения за производительностью внеядерных компонентов платформы Merrifield

В этой статье рассматриваются события наблюдения за производительностью платформы «система на кристалле» Merrifield. Введение в наблюдение за производительностью внеядерных компонентов платформ «система на кристалле» см. в статье: Руководство по наблюдению за производительностью внеядерных компонентов платформы «система на кристалле» Silvermont

Введение в платформу Merrifield с архитектурой «система на кристалле»

Ниже на блок-схеме показано типовое устройство Merrifield. Зеленые стрелки, соединяющие каждый блок, представляют собой интерфейсы; можно отслеживать запросы в интерфейсах для вычисления пропускной способности. Серыми стрелками в южном кластере показаны интерфейсы, для которых не поддерживается отслеживание производительности внеядерных компонентов. Как видно на схеме ниже, анализ будет касаться только северного кластера.

Доступные группы

В следующей таблице описаны доступные группы для Merrifield. Имя группы означает заранее заданный набор событий, которые будут программироваться программными средствами мониторинга. В столбце событий указывается, сколько событий содержится в группе. В столбце «Тактовые импульсы» указывается, включает ли группа отсчеты источника тактовых импульсов SoC.

Таблица групп событий внеядерных компонентов платформы Merrifield

Имя группы

События

Тактовые импульсы

Описание

UNC_SOC_Memory_DDR_BW

5

Да

Подсчитывает количество запросов чтения и записи памяти в канал памяти 0 и 1. Для определения пропускной способности памяти нужно умножить количество событий на 32 байта.

UNC_SOC_DDR_Self_Refresh

5

Да

Подсчитывает количество циклов, в течение которых каналы памяти 0 и 1 находятся в состоянии самообновления.

UNC_SOC_All_Reqs

6

Да

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

UNC_SOC_Module0_BW

7

Да

Подсчитывает количество событий пропускной способности для модуля Silvermont 0. Для определения пропускной способности между модулем Silvermont 0 и памятью нужно умножить количество событий на размер запроса (32 или 64 байта).

UNC_SOC_Module0_Snoops

3

Да

Подсчитывает количество запросов и ответов отслеживания для модуля Silvermont 0.

UNC_SOC_Graphics_BW

7

Да

Подсчитывает количество событий пропускной способности для графического контроллера. Для определения пропускной способности между графическим контроллером и памятью нужно умножить количество событий на размер запроса (32 или 64 байта).

UNC_SOC_Display_BW

7

Да

Подсчитывает количество событий пропускной способности для контроллера экрана. Для определения пропускной способности между контроллером экрана и памятью нужно умножить количество событий на размер запроса (32 или 64 байта).

UNC_SOC_Imaging_BW

7

Да

Подсчитывает количество событий пропускной способности для контроллера изображений. Для определения пропускной способности между контроллером изображений и памятью нужно умножить количество событий на размер запроса (32 или 64 байта).

UNC_SOC_LowSpeedPF_BW

7

Да

Подсчитывает события пропускной способности для структуры низкоскоростной периферии. Для определения совокупной пропускной способности памяти нужно умножить количество событий на размер запроса (32 или 64 байта).

 

UNC_SOC_Memory_DDR_BW

Группа UNC_VISA_Memory_DDR_BW предоставляет счетчики для вычисления пропускной способности всей памяти с точки зрения контроллера памяти «системы на кристалле». С помощью событий можно разбить на части пропускную способность каждого канала. Эти события не предоставляют информации о том, какой агент потребляет больше памяти, но это наиболее точный способ определения фактической используемой пропускной способности памяти.

TКоличество каналов памяти на платформе Merrifield зависит от ее выпуска: может быть либо один, либо два канала. Если существует только один канал, все счетчики, связанные со вторым каналом, будут выдавать нулевые значения. Дополнительные сведения об архитектуре каналов памяти: http://en.wikipedia.org/wiki/Multi-channel_memory_architecture.

На приведенном ниже рисунке показан отслеживаемый поток трафика для этой группы.

В приведенной ниже таблице перечислены события, содержащиеся в группе UNC_VISA_Memory_DDR_BW.

Имя

Счетчик

Описание

DDR_Chan0-Read32B

0

Подсчитывает количество запросов чтения, обращенных к каналу памяти 0.

DDR_Chan0-Write32B

1

Подсчитывает количество запросов записи, обращенных к каналу памяти 0.

DDR_Chan1-Read32B

2

Подсчитывает количество запросов чтения, обращенных к каналу памяти 1.

DDR_Chan1-Write32B

3

Подсчитывает количество запросов записи, обращенных к каналу памяти 1.

Clock_Counter

4

Тактовый счетчик «системы на кристалле»

Анализ результатов

Пропускную способность в МБ/с можно вычислить для всех перечисленных выше событий следующим образом:

Формула метрики событий: количество событий / длительность выборки в секунду * 32 байта / 1000000 байт = МБ/с.

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

  • суммарная пропускная способность памяти = сумма всех событий, МБ/с
  • суммарная пропускная способность чтения = сумма всех событий чтения, МБ/с
  • пропускная способность канала 0 = сумма событий канала 0, МБ/с

Известное поведение

  1. Если платформа Merrifield не имеет двух каналов, показатели счетчика второго канала будут нулевыми.

UNC_SOC_DDR_Self_Refresh

Группа UNC_VISA_DDR_Self_Refresh содержит счетчики для аппаратных событий самообновления памяти. Самообновление представляет собой состояние пониженного потребления электроэнергии, его можно использовать для оптимизации электропитания «системы на кристалле» и приложений.

В приведенной ниже таблице перечислены события, содержащиеся в группе UNC_VISA_DDR_Self_Refresh.

Имя

Счетчик

Описание

DDR_Chan0_Deep_Self_Refresh

0

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

DDR_Chan0_Shallow_Self_Refresh

1

Подсчитывает количество циклов, течение которых канал памяти 0 находится в состоянии мелкого самообновления.

DDR_Chan1_Deep_Self_Refresh

2

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

DDR_Chan1_Shallow_Self_Refresh

3

Подсчитывает количество циклов, в течение которых канал памяти 1 находится в состоянии мелкого самообновления.

Clock_Counter

4

Тактовый счетчик «системы на кристалле»

Анализ результатов

Формула метрики событий: (количество событий * 100) / (интервал времени * базовая частота DRAM) = резидентность самообновления DDR

Известное поведение

  1. Если платформа Merrifield не имеет двух каналов, показатели счетчика второго канала будут нулевыми.
  2. Счетчики 0, 1, 2, 3 могут работать с исходной тактовой частотой, отличной от частоты счетчика 4.

UNC_SOC_All_Reqs

События счетчиков запросов на каждый агент, содержащиеся в группе UNC_VISA_All_Reqs, измеряют общее количество запросов на доступные агенты «системы на кристалле» в ходе однократной единовременной выборки. Этот показатель учитывает одновременно все агенты, поэтому это важная метрика для изучения всей нестатической, то есть пиковой нагрузки. В отличие от других событий пропускной способности, учет которых происходит по одному или по два одновременно, эта метрика получает данные от всех агентов одновременно.

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

Для точного измерения пропускной способности с разделением по чтению и записи следует использовать метрику пропускной способности по агентам для одного или двух агентов одновременно.

Имя

Счетчик

Описание

Mod0_Reqs

0

Подсчитывает количество запросов от модуля Silvermont 0.

Disp_Reqs

1

Подсчитывает количество запросов от контроллера экрана.

GFX_Reqs

2

Подсчитывает количество запросов от графического контроллера.

Imaging_Reqs

3

Подсчитывает количество запросов от контроллера изображений.

LowSpeedPF_Reqs

4

Подсчитывает совокупное количество запросов от структуры низкоскоростной периферии.

Clock_Counter

5

Тактовый счетчик «системы на кристалле»

 

Анализ результатов

Формула метрики событий:

  • количество событий / длительность выборки в секундах * 64 байта / 1000000 байт = оцениваемая пропускная способность агента, МБ/с
  • сумма всех счетчиков событий / длительность выборки в секундах * 64 байта / 1000000 байт = оцениваемая пропускная способность памяти DDR, МБ/с

Известное поведение

  1. Важно помнить, что эти события подсчитывают транзакции с любыми размерами запросов; умножение их на 64 байта для вычисления метрики в МБ/с является огрублением, результат такого вычисления может превышать фактическую пропускную способность каналов памяти.

UNC_SOC_Module0_BW

Группа UNC_VISA_Module0_BW предоставляет счетчики для вычисления пропускной способности модуля 0 процессора с точки зрения системного агента. События можно разделить по типам запросов.

На приведенном ниже рисунке показан отслеживаемый поток трафика для этой группы.

Имя

Счетчик

Описание

Mod0_ReadPartial

0

Подсчитывает все транзакции чтения модуля 0 для запросов любого размера данных. Этот счетчик событий включает частичные, 32-байтовые и 64-байтовые транзакции.

Mod0_Read32B

1

Подсчитывает количество запросов чтения размером 32 байта от модуля 0 Silvermont.

Mod0_Read64B

2

Подсчитывает количество запросов чтения размером 64 байта от модуля 0 Silvermont.

Mod0_WritePartial

3

Подсчитывает все транзакции записи модуля 0 для запросов любого размера данных. Этот счетчик событий включает частичные, 32-байтовые и 64-байтовые транзакции.

Mod0_Write32B

4

Подсчитывает количество запросов записи размером 32 байта от модуля 0 Silvermont.

Mod0_Write64B

5

Подсчитывает количество запросов записи размером 64 байта от модуля 0 Silvermont.

Clock_Counter

6

Тактовый счетчик «системы на кристалле»

 

Анализ результатов

Пропускную способность чтения и записи можно вычислить для 32- и 64-байтовых событий, но вычисление частичных событий затруднено, поскольку у частичных запросов неизвестен объем полезной нагрузки. Также следует понимать, что частичные события для этой группы представляют собой сумму 64-байтовых, 32-байтовых и частичных запросов. Это частичное событие также можно рассматривать как сумму всех запросов чтения или записи.

Формула метрики событий:

  • частичные запросы - 32-байтовые запросы - 64-байтовые запросы = фактическое количество частичных запросов
  • (счетчик Mod0_Read32B * 32 байта / длительность выборки в секундах) + (счетчик Mod0_Read64B * 64 байта / длительность выборки в секундах) = чтение, МБ/с
  • (счетчик Mod0_Write32B * 32 байта / длительность выборки в секундах) + (счетчик Mod0_Write64B * 64 байта / длительность выборки в секундах) = запись МБ/с

Известное поведение

  1. Счетчик частичных событий модулей 0 и 1 включает 32-байтовые, 64-байтовые и частичные запросы. Его можно считать суммарным счетчиком запросов.

UNC_SOC_Module0_Snoops

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

Имя

Событие

Описание

Mod0_Snoop_Replies

0

Подсчитывает количество ответов отслеживания, полученных от модуля 0.

Mod0_Snoop_Reqs

1

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

Clock_Counter

2

Тактовый счетчик «системы на кристалле»

Анализ результатов

Анализ результатов отслеживания зависит от модели использования.

Известное поведение

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

UNC_SOC_Graphics_BW

Группа UNC_VISA_Graphics_BW предоставляет счетчики для вычисления пропускной способности графического контроллера с точки зрения системного агента. События можно разделить по типам запросов.

На приведенном ниже рисунке показан поток трафика, отслеживаемый этой группой.

Имя

Счетчик

Описание

GFX_ReadPartial

0

Подсчитывает все транзакции чтения графического контроллера с запросами с частичным размером данных.

GFX_Read32B

1

Подсчитывает количество запросов чтения памяти размером 32 байта от графического контроллера.

GFX_Read64B

2

Подсчитывает количество запросов чтения памяти размером 64 байта от графического контроллера.

GFX_WritePartial

3

Подсчитывает все транзакции записи графического контроллера с запросами с частичным размером данных.

GFX_Write32B

4

Подсчитывает количество запросов записи в память размером 32 байта от графического контроллера.

GFX_Write64B

5

Подсчитывает количество запросов записи в память размером 64 байта от графического контроллера.

Clock_Counter

6

Тактовый счетчик «системы на кристалле»

Анализ результатов

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

Формула метрики событий:

  • (счетчик GFX_Read32B * 32 байта / длительность выборки в секундах) + (счетчик GFX_Read64B * 64 байта / длительность выборки в секундах) = чтение, МБ/с
  • (счетчик GFX_Write32B * 32 байта / длительность выборки в секундах) + (счетчик GFX_Write64B * 64 байта / длительность выборки в секундах) = запись МБ/с

Известное поведение

  1. Вычисление пропускной способности графики затруднено, поскольку графическая подсистема Merrifield в большинстве случаев использует частичную запись с неизвестным размером полезной нагрузки.

UNC_SOC_Display_BW

Группа UNC_VISA_Display_BW содержит события для определения пропускной способности контроллера дисплея и идентична группе UNC_VISA_Graphics_BW по конфигурации счетчиков событий и по метрике анализа. Имена событий изменены с GFX на Disp.

UNC_SOC_Imaging_BW

Группа UNC_VISA_Imaging_BW содержит события для определения пропускной способности контроллера изображений (сигнального процессора изображений) и идентична группе UNC_VISA_Graphics_BW по конфигурации счетчиков событий и по метрике анализа. Имена событий изменены с GFX на Imaging.

UNC_SOC_LowSpeedPF_BW

Группа UNC_VISA_LowSpeedPF_BW содержит события для определения пропускной способности структуры низкоскоростной периферии и представляет совокупную пропускную способность для всех подключаемых компонентов южного кластера: USB3, USB2, EMMC, сетевых адаптеров, шифрования и звукового адаптера. Эта группа идентична группе UNC_VISA_Graphics_BW по конфигурации счетчиков событий и по метрикам анализа. Имена событий изменены с GFX на LowSpeedPF.

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