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

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

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

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

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

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

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

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

Имя группыСобытияТактовые импульсыОписание
UNC_SOC_Memory_DDR_BW8НетПодсчитывает количество запросов размером 32 и 64 байта к памяти для каналов памяти 0 и 1. Для определения пропускной способности памяти нужно умножить количество событий на размер запроса (32 или 64 байта).
UNC_SOC_Memory_DDR0_BW5ДаПодсчитывает количество запросов размером 32 и 64 байта к памяти для канала памяти 0. Для определения пропускной способности памяти нужно умножить количество событий на размер запроса (32 или 64 байта).
UNC_SOC_Memory_DDR1_BW5ДаПодсчитывает количество запросов размером 32 байта и 64 байта к памяти для канала памяти 1. Для определения пропускной способности памяти нужно умножить количество событий на размер запроса (32 или 64 байта).
UNC_SOC_DDR_Self_Refresh3ДаПодсчитывает количество циклов, в течение которых каналы памяти 0 и 1 находятся в состоянии самообновления.
UNC_SOC_All_Reqs7ДаПодсчитывает количество запросов на каждый агент памяти. С помощью счетчиков можно определять ресурсоемкие агенты или оценивать пропускную способность для агента, умножив количество запросов на 64 байта.
UNC_SOC_Module0_BW7ДаПодсчитывает количество событий пропускной способности для модуля Silvermont 0. Для определения пропускной способности между модулем Silvermont 0 и памятью нужно умножить количество событий на размер запроса (32 или 64 байта).
UNC_SOC_Module1_BW7ДаПодсчитывает количество событий пропускной способности для модуля Silvermont 1. Для определения пропускной способности между модулем Silvermont 1 и памятью нужно умножить количество событий на размер запроса (32 или 64 байта).
UNC_SOC_Module2_BW7ДаПодсчитывает количество событий пропускной способности для модуля Silvermont 2. Для определения пропускной способности между модулем Silvermont 2 и памятью нужно умножить количество событий на размер запроса (32 или 64 байта).
UNC_SOC_Module3_BW7ДаПодсчитывает количество событий пропускной способности для модуля Silvermont 3. Для определения пропускной способности между модулем Silvermont 3 и памятью нужно умножить количество событий на размер запроса (32 или 64 байта).
UNC_SOC_Module0_1_BW8НетПодсчитывает количество событий пропускной способности для модулей Silvermont 0 и 1. Для определения пропускной способности между модулями Silvermont 0, 1 и памятью нужно умножить количество событий на размер запроса (32 или 64 байта).
UNC_SOC_Module2_3_BW8НетПодсчитывает количество событий пропускной способности для модулей Silvermont 2 и 3. Для определения пропускной способности между модулями Silvermont 2, 3 и памятью нужно умножить количество событий на размер запроса (32 или 64 байта).
UNC_SOC_Module0_1_Snoops5ДаПодсчитывает количество запросов и ответов отслеживания для модулей Silvermont 0 и 1.
UNC_SOC_Module2_3_Snoops5ДаПодсчитывает количество запросов и ответов отслеживания для модулей Silvermont 2 и 3.
UNC_SOC_Module0_1_2_3_Snoops8НетПодсчитывает количество запросов и ответов отслеживания для модулей Silvermont 0, 1, 2 и 3.
UNC_SOC_LowSpeedPF_BW7ДаПодсчитывает совокупную пропускную способность событий для структуры низкоскоростной периферии. Для определения совокупной пропускной способности памяти нужно умножить количество событий на размер запроса (32 или 64 байта).
UNC_SOC_HighSpeedPF_BW  

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

UNC_SOC_Memory_DDR_BW

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

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

Группы UNC_VISA_MEMORY_DDR0_BW и UNC_VISA_MEMORY_DDR1_BW являются подмножествами этой группы, они собирают данные только для каналов памяти 0 и 1.

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

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

UNC_SOC_Memory_DDR_BW
ИмяСчетчикОписание
DDR_Chan0_Read32B0Подсчитывает количество запросов чтения размером 32 байта к каналу памяти 0.
DDR_Chan0_Read64B1Подсчитывает количество запросов чтения размером 64 байта к каналу памяти 0.
DDR_Chan0_Write32B2Подсчитывает количество запросов записи размером 32 байта к каналу памяти 0.
DDR_Chan0_Write64B3Подсчитывает количество запросов записи размером 64 байта к каналу памяти 0.
DDR_Chan1_Read32B4Подсчитывает количество запросов чтения размером 32 байта к каналу памяти 1.
DDR_Chan1_Read64B5Подсчитывает количество запросов чтения размером 64 байта к каналу памяти 1.
DDR_Chan1_Write32B6Подсчитывает количество запросов записи размером 32 байта к каналу памяти 1.
DDR_Chan1_Write64B7Подсчитывает количество запросов записи размером 64 байта к каналу памяти 1.

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

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

Формула метрики событий: количество_событий/отрезок_в_секундах*64 байт/1000000 байт = МБ/с

Для 32-байтовых событий замените 64 байта на 32:

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

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

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

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

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

UNC_SOC_DDR_Self_Refresh

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

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

ИмяСчетчикОписание
DDR_Chan0_Self_Refresh0Подсчитывает количество циклов, в течение которых канал памяти 0 находится в состоянии самообновления.
DDR_Chan1_Self_Refresh1Подсчитывает количество циклов, в течение которых канал памяти 1 находится в состоянии самообновления.
Clock_Counter2Тактовый счетчик «системы на кристалле».

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

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

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

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

UNC_SOC_All_Reqs

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

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

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

ИмяСчетчикОписание
Mod0_Reqs0Подсчитывает количество запросов от модуля Silvermont 0.
Mod1_Reqs1Подсчитывает количество запросов от модуля Silvermont 1.
Mod2_Reqs2Подсчитывает количество запросов от модуля Silvermont 2.
Mod3_Reqs3Подсчитывает количество запросов от модуля Silvermont 3.
HighSpeedPF_Reqs4Подсчитывает совокупное количество запросов от структуры высокоскоростной периферии.
LowSpeedPF_Reqs5Подсчитывает совокупное количество запросов от структуры низкоскоростной периферии.
Clock_Counter6Тактовый счетчик «системы на кристалле».

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

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

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

 

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

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

UNC_SOC_Module0_BW

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

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

ИмяСчетчикОписание
Mod0_ReadPartial0Подсчитывает все транзакции чтения модуля 0 для запросов любого размера данных. Этот счетчик событий включает частичные, 32-байтовые и 64-байтовые транзакции.
Mod0_Read32B1Подсчитывает количество запросов чтения размером 32 байта от модуля 0 Silvermont.
Mod0_Read64B2Подсчитывает количество запросов чтения размером 64 байта от модуля 0 Silvermont.
Mod0_WritePartial3Подсчитывает все транзакции записи модуля 0 для запросов любого размера данных. Этот счетчик событий включает частичные, 32-байтовые и 64-байтовые транзакции.
Mod0_Write32B4Подсчитывает количество запросов записи размером 32 байта от модуля 0 Silvermont.
 Mod0_Write64B5Подсчитывает количество запросов записи размером 64 байта от модуля 0 Silvermont.
Clock_Counter6Тактовый счетчик «системы на кристалле».

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

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

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

  • частичные_запросы - 32_байтные_запросы - 64_байтные_запросы = фактическое количество частичных запросов
  • (Mod0_Read32B_количество * 32_байта / отрезок_в_секундах) + (Mod0_Read64B_количество * 64_байта / отрезок_в_секундах) = чтение, МБ/с
  • (Mod0_Write32B_количество * 32_байта / отрезок_в_секундах) + (Mod0_Write64B_количество * 64_байта / отрезок_в_секундах) = запись, МБ/с

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

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

UNC_SOC_ModuleX_BW,

Группы UNC_VISA_Module1_BW, UNC_VISA_Module2_BW и UNC_VISA_Module3_BW идентичны группе UNC_VISA_Module0_BW с тем лишь исключением, что они подсчитывают события в соответствующих модулях процессора (модули 1, 2 и 3).

UNC_SOC_Module0_1_BW

Ресурсов счетчиков недостаточно для измерения пропускной способности всех модулей процессора одновременно, но группы UNC_VISA_Module0_1_BW и UNC_VISA_Module2_3_BW предоставляют счетчики для одновременного вычисления пропускной способности двух модулей процессора. Частичные события опущены, чтобы добиться параллельного измерения.

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

ИмяСчетчикОписание
Mod0_Read32B0Подсчитывает количество запросов чтения размером 32 байта от модуля 0 Silvermont.
Mod0_Read64B1Подсчитывает количество запросов чтения размером 64 байта от модуля 0 Silvermont.
Mod0_Write32B2Подсчитывает количество запросов записи размером 32 байта от модуля 0 Silvermont.
Mod0_Write64B3Подсчитывает количество запросов записи размером 64 байта от модуля 0 Silvermont.
Mod1_Read32B4Подсчитывает количество запросов чтения размером 32 байта от модуля 1 Silvermont.
Mod1_Read64B5Подсчитывает количество запросов чтения размером 64 байта от модуля 1 Silvermont.
Mod1_Write32B6Подсчитывает количество запросов записи размером 32 байта от модуля 1 Silvermont.
Mod1_Write64B7Подсчитывает количество запросов записи размером 64 байта от модуля 1 Silvermont.

UNC_SOC_Module0_1_Snoops

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

ИмяСобытиеОписание
Mod0_Snoop_Replies0Подсчитывает количество ответов отслеживания, полученных от модуля 0.
Mod0_Snoop_Reqs1Подсчитывает количество запросов отслеживания, отправленных в модуль 0.
Mod1_Snoop_Replies2Подсчитывает количество ответов отслеживания, полученных от модуля 1.
Mod1_Snoop_Reqs3Подсчитывает количество запросов отслеживания, отправленных в модуль 1.
Clock_Counter4

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

UNC_VISA_Module2_3_Snoops идентичен счетчику UNC_VISA_Module0_1, но подсчи-тывает количество запросов и ответов отслеживания для модулей процессора 2 и 3. UNC_VISA_Module0_1_2_3_Snoops собирает данные отслеживания одновременно для всех четырех модулей процессора, но не включает тактовый счетчик «системы на кристалле».

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

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

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

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

UNC_SOC_LowSpeedPF_BW

Группа UNC_VISA_LowSpeedPF_BW содержит события для определения пропускной способности структуры низкоскоростной периферии и представляет совокупную пропускную способность для всех подключаемых компонентов южного кластера: USB, SATA и Ethernet.

ИмяСчетчикОписание
LowSpeedPF_ReadPartial0Подсчитывает все транзакции чтения структуры низкоскоростной периферии с запросами с частичным размером данных.
LowSpeedPF_Read32B1Подсчитывает количество запросов чтения размером 32 байта в структуре низкоскоростной периферии.
LowSpeedPF_Read64B2Подсчитывает количество запросов чтения размером 64 байта в структуре низкоскоростной периферии.
LowSpeedPF_WritePartial3Подсчитывает все транзакции записи структуры низкоскоростной периферии с запросами с частичным размером данных.
LowSpeedPF_Write32B4Подсчитывает количество запросов записи размером 32 байта в структуре низкоскоростной периферии.
LowSpeedPF_Write64B5Подсчитывает количество запросов записи размером 64 байта в структуре низкоскоростной периферии.
Clock_Counter6Тактовый счетчик «системы на кристалле».

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

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

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

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

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

  1. Нет.

UNC_SOC_HighSpeedPF_BW

Группа UNC_VISA_HighSpeedPF_BW содержит события для определения пропускной способности структуры высокоскоростной периферии и представляет совокупную пропускную способность для всех подключаемых высокоскоростных компонентов. Эта группа идентична группе UNC_VISA_LowSpeed_BW по конфигурации счетчиков событий и по метрикам анализа. Имена событий изменены с LowSpeedPF на HighSpeedPF.

 

 

Para obtener información más completa sobre las optimizaciones del compilador, consulte nuestro Aviso de optimización.