Как отслеживать раздоры от конкурирующих гиперпотоков - PullRequest
0 голосов
/ 09 ноября 2018

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

Вариант использования: в среде совместно используемой инфраструктуры, такой как KubernetesЯ могу запросить, чтобы у моего процесса была «1 ЦП».Однако с гиперпоточностью в игре это не физическое ядро, а логический процессор, и пропускная способность этого ядра может изменяться в 2 раза в зависимости от того, что запланировано запустить на другом логическом процессоре, соответствующем другой гиперпотокето же физическое ядро.Существует ли какой-либо показатель, который может количественно определить, сколько времени было затрачено на ожидание другой гиперзадачи?

Другой вариант использования: в зависимости от характера рабочей нагрузки и от того, сколько она выиграет от гиперпотока, средней загрузки ЦПне может быть хорошим показателем доступной емкости.Для рабочей нагрузки, которая не получает никакой выгоды от гиперпоточности, загрузка хоста с загрузкой ЦП более 50% может вообще не увеличить пропускную способность.Какие показатели я могу использовать, чтобы определить объем доступного реального ресурса выполнения, а не только простое время логического процессора?

1 Ответ

0 голосов
/ 15 ноября 2018

Возможно, так как все в исходном коде, вы можете реализовать такой счетчик ....

Конечно, реализация зависит от того, что вы хотите контролировать,

  • счетчик на общий ресурс,
  • глобальный счетчик для функции,
  • счетчик для каждого типа операции (блокировка / разблокировка)

В любом случае, счетчик (в / де) должен быть атомарным по сути, а также должен содержаться (спин-блокировка?), Замедляя ваш код, поэтому есть несколько причин не включать их по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...