Я пытаюсь использовать PEBS/PMU в QEMU для выборки точного адреса операции с памятью. Я столкнулся с аналогичной проблемой, которая упоминается 3 года назад в этой ссылке, и я цитирую текстовую часть ниже.
/>
Я пытался использовать perf_event_open() для отслеживания всех инструкций магазина, чтобы получить их адрес доступа. Я обнаружил, что только когда я установил attr.precision_ip > 0, я могу получить ненулевой адрес. Но когда я запустил тот же процесс на виртуальной машине вместо хоста, появилось сообщение об ошибке «Операция не поддерживается». Я могу исправить эту проблему, установив на виртуальной машине точный_ip = 0, но теперь я получаю только кучу адресов, равных нулю. Я не понимаю, почему Precision_ip связан с примером адреса, который не указан в документе, а также я не понимаю, почему я не могу установить Precision_ip = 1 на виртуальной машине, в то время как я могу сделать это на хосте. Кто-нибудь может мне помочь??
Я провел дополнительные проверки.
Когда я запускаю QEMU с -cpu хост, в журнале ядра гостевой ОС упоминается «События производительности: события Skylake, драйвер Intel PMU», что кажется нормальным для запуска.
Однако я заметил что в хостовой ОС вывод lscpu включает в себя как флаги Arch_perfmon, так и pebs, тогда как в гостевой ОС присутствует только Arch_perfmon и pebs > отсутствует. Я не знаю, как включить эту поддержку.
Основываясь на документации Intel, я попробовал запустить cpuid | grep -A 1 Функции мониторинга производительности архитектуры (0xa/eax) и обнаружил, что идентификатор версии в хостовой ОС равен 4, а в гостевой ОС — 2. Это указывает на разные уровни поддержки. , но я не знаю, как это изменить.
Я также нашел патч, в котором упоминалось следующее:
Ошибка №2 заключается в том, что, поскольку KVM всегда устанавливает для Precision_ip ненулевое значение
для событий PEBS, perf всегда будет генерировать адаптивную запись, даже если
гость запросил базовую запись. Обратите внимание, что KVM также включит адаптивную
PEBS в отдельном счетчике, даже если адаптивная PEBS не доступна
гостю, но это безопасно, поскольку MSR_PEBS_DATA_CFG гарантированно будет равен нулю. ,
т.е. гость будет видеть только базовые записи.
Re: Три вышеперечисленные проблемы указывают на исправление в одном направлении: передать значение
EVT_SELx.Adaptive_Record[34] или FCx_Adaptive_Record vcpu в
perf/ядро и позволить помощи PEBS вступить в силу, как ожидается vPEBS. Единственное место, где это можно решить, — это снова intel_guest_get_msrs():
обновить vPMC[x].pPMC.fcctl_or_evtsel.ADAPTIVE = vPMC[x].use_adaptive
, поскольку гостевая PEBS отключена, если хостовая PEBS включена. .
В нем говорится, что ICE_LAKE должен иметь поддержку Precision_IP по умолчанию. Однако в моем случае он, похоже, не поддерживается. Может ли это быть связано с несовместимой версией KVM/QEMU (как мне обновиться? Apt указывает, что у меня уже установлена последняя версия), или это связано с тем, что модель моего процессора слишком старая или слишком старая (Intel Xeon Gold 5218)?
Надеюсь, что по этому вопросу был достигнут прогресс с тех пор, как предыдущий вопрос был поднят три года назад
Подробнее здесь: https://stackoverflow.com/questions/791 ... -operation
Использование PEBS/PMU в QEMU для выборки точного адреса операции с памятью ⇐ Linux
1730966744
Anonymous
Я пытаюсь использовать PEBS/PMU в QEMU для выборки точного адреса операции с памятью. Я столкнулся с аналогичной проблемой, которая упоминается 3 года назад в этой ссылке, и я цитирую текстовую часть ниже.
/>
Я пытался использовать perf_event_open() для отслеживания всех инструкций магазина, чтобы получить их адрес доступа. Я обнаружил, что только когда я установил attr.precision_ip > 0, я могу получить ненулевой адрес. Но когда я запустил тот же процесс на виртуальной машине вместо хоста, появилось сообщение об ошибке «Операция не поддерживается». Я могу исправить эту проблему, установив на виртуальной машине точный_ip = 0, но теперь я получаю только кучу адресов, равных нулю. Я не понимаю, почему Precision_ip связан с примером адреса, который не указан в документе, а также я не понимаю, почему я не могу установить Precision_ip = 1 на виртуальной машине, в то время как я могу сделать это на хосте. Кто-нибудь может мне помочь??
Я провел дополнительные проверки.
Когда я запускаю QEMU с -cpu хост, в журнале ядра гостевой ОС упоминается «События производительности: события Skylake, драйвер Intel PMU», что кажется нормальным для запуска.
Однако я заметил что в хостовой ОС вывод lscpu включает в себя как флаги Arch_perfmon, так и pebs, тогда как в гостевой ОС присутствует только Arch_perfmon и pebs > отсутствует. Я не знаю, как включить эту поддержку.
Основываясь на документации Intel, я попробовал запустить cpuid | grep -A 1 Функции мониторинга производительности архитектуры (0xa/eax) и обнаружил, что идентификатор версии в хостовой ОС равен 4, а в гостевой ОС — 2. Это указывает на разные уровни поддержки. , но я не знаю, как это изменить.
Я также нашел патч, в котором упоминалось следующее:
Ошибка №2 заключается в том, что, поскольку KVM всегда устанавливает для Precision_ip ненулевое значение
для событий PEBS, perf всегда будет генерировать адаптивную запись, даже если
гость запросил базовую запись. Обратите внимание, что KVM также включит адаптивную
PEBS в отдельном счетчике, даже если адаптивная PEBS не доступна
гостю, но это безопасно, поскольку MSR_PEBS_DATA_CFG гарантированно будет равен нулю. ,
т.е. гость будет видеть только базовые записи.
Re: Три вышеперечисленные проблемы указывают на исправление в одном направлении: передать значение
EVT_SELx.Adaptive_Record[34] или FCx_Adaptive_Record vcpu в
perf/ядро и позволить помощи PEBS вступить в силу, как ожидается vPEBS. Единственное место, где это можно решить, — это снова intel_guest_get_msrs():
обновить vPMC[x].pPMC.fcctl_or_evtsel.ADAPTIVE = vPMC[x].use_adaptive
, поскольку гостевая PEBS отключена, если хостовая PEBS включена. .
В нем говорится, что ICE_LAKE должен иметь поддержку Precision_IP по умолчанию. Однако в моем случае он, похоже, не поддерживается. Может ли это быть связано с несовместимой версией KVM/QEMU (как мне обновиться? Apt указывает, что у меня уже установлена последняя версия), или это связано с тем, что модель моего процессора слишком старая или слишком старая (Intel Xeon Gold 5218)?
Надеюсь, что по этому вопросу был достигнут прогресс с тех пор, как предыдущий вопрос был поднят три года назад
Подробнее здесь: [url]https://stackoverflow.com/questions/79165505/using-pebs-pmu-in-qemu-to-sample-exact-addr-of-memory-operation[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия