В этом документе описывается способ отладки и профилирования в 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.
Во время работы вы можете отправить команду trace-set-state через сокет qmp, чтобы включить или отключить состояние трассировки. Аналогично, с помощью команды trace-get-state можно проверить успешность настройки.
Устанавливая различные функции во время компиляции, трассировка может генерировать указанный код для поддержки различных инструментов трассировки. В настоящее время StratoVirt поддерживает два вида настроек.
StratoVirt поддерживает вывод трассировки в файл журнала на уровне трассировки. Чтобы использовать его, включите функцию trace_to_logger.
Ftrace — это трассировщик, предоставляемый ядром Linux, который может помочь разработчикам Linux отлаживать или анализировать проблемы. Поскольку ftrace позволяет избежать снижения производительности, он особенно подходит для проблем с производительностью.
Его можно включить, включив функцию trace_to_ftrace во время компиляции. StratoVirt использует ftrace, записывая данные трассировки в маркер ftrace, а разработчики могут считывать записи трассировки из файла трассировки под смонтированным директором ftrace, например /sys/kernel/debug/tracing/trace.
HiTraceMeter (https://gitee.com/openharmony/hiviewdfx_hitrace) — это инструмент, используемый разработчиками для отслеживания процессов и измерения производительности. Основываясь на Ftrace, он предоставляет возможность измерять время выполнения кода приложения в пользовательском режиме. После включения функции trace_to_hitrace её можно использовать в HarmonyOS.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )