1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openeuler-stratovirt

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
trace.md 5.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 5 месяцев назад 123faeb

Трассировка

В этом документе описывается способ отладки и профилирования в StratoVirt и как его использовать.

Добавление трассировки

Изменение файла конфигурации

Сначала необходимо изменить или создать файл toml в каталоге trace/trace_info, чтобы добавить новое событие или область действия для генерации функции трассировки. Например:

[[events]]
name = "virtio_receive_request"
args = "device: String, behaviour: String"
message = "{}: Запрос получен от гостя {}, готов к обработке."
enabled = true

[[scopes]]
name = "update_cursor"
args = ""
message = ""
enabled = true

В приведённой выше конфигурации «name» используется для представления единственного следа, дублирование не допускается; «message» и «args» будут отформатированы как вывод информации трассировкой; «enabled» указывает, включено ли оно во время компиляции.

Вызов функции трассировки

Просто вызовите функцию трассировки там, где это необходимо.

fn process_queue(&mut self) -> Result<()> {
    trace::virtio_receive_request("Rng".to_string(), "to IO".to_string());
    let mut queue_lock = self.queue.lock().unwrap();
    let mut need_interrupt = false;
    ......
}

fn update_cursor(&mut self, info_cursor: &VirtioGpuUpdateCursor, hdr_type: u32) -> Result<()> {
    // Трассировка начинается отсюда и заканчивается, когда она покидает эту область
    trace::trace_scope_start!(update_cursor);
    ......
}

Интерфейс управления трассировкой

Состояние трассировки в StratoVirt по умолчанию отключено. Пользователи могут контролировать, включено ли состояние трассировки через командную строку или команду qmp.

Командная строка

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

QMP

Во время работы вы можете отправить команду trace-set-state через сокет qmp, чтобы включить или отключить состояние трассировки. Аналогично, с помощью команды trace-get-state можно проверить успешность настройки.

Выбор бэкэндов трассировки

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

log

StratoVirt поддерживает вывод трассировки в файл журнала на уровне трассировки. Чтобы использовать его, включите функцию trace_to_logger.

Ftrace

Ftrace — это трассировщик, предоставляемый ядром Linux, который может помочь разработчикам Linux отлаживать или анализировать проблемы. Поскольку ftrace позволяет избежать снижения производительности, он особенно подходит для проблем с производительностью.

Его можно включить, включив функцию trace_to_ftrace во время компиляции. StratoVirt использует ftrace, записывая данные трассировки в маркер ftrace, а разработчики могут считывать записи трассировки из файла трассировки под смонтированным директором ftrace, например /sys/kernel/debug/tracing/trace.

HiTraceMeter

HiTraceMeter (https://gitee.com/openharmony/hiviewdfx_hitrace) — это инструмент, используемый разработчиками для отслеживания процессов и измерения производительности. Основываясь на Ftrace, он предоставляет возможность измерять время выполнения кода приложения в пользовательском режиме. После включения функции trace_to_hitrace её можно использовать в HarmonyOS.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/openeuler-stratovirt.git
git@gitlife.ru:oschina-mirror/openeuler-stratovirt.git
oschina-mirror
openeuler-stratovirt
openeuler-stratovirt
master