Что означает метка времени в perf? - PullRequest
1 голос
/ 25 апреля 2020

Я бы хотел использовать «perf» для измерения реального времени выполнения функции. Команда «perf script» дает метку времени при вызове функции.

Xorg  1523 [001] 25712.423702:    probe:sock_write_iter: (ffffffff95cd8b80)

Формат поля метки времени - X.Y. Как я могу понять эту ценность? Это XY секунд?

Ответы [ 2 ]

1 голос
/ 25 апреля 2020

X.Y - это отметка времени в единицах seconds.microseconds.

Как отображается это значение, можно посмотреть здесь . Вы можете передать переключатель --ns на perf script для отображения меток времени в формате seconds.nanoseconds.

Чтобы понять это значение, вам необходимо понять, как модуль perf вычисляет временные метки. Вы можете связать каждое событие с другой функцией часов, чтобы вычислить метки времени. По умолчанию perf использует функцию sched_clock для вычисления временных отметок для события, подробности здесь .

event->clock = &local_clock;

Но вы можете использовать переключатель -k вместе с командой perf record, чтобы связать событие с различными часами.

-k, --clockid
           Sets the clock id to use for the various time fields in the
           perf_event_type records. See clock_gettime(). In particular
           CLOCK_MONOTONIC and CLOCK_MONOTONIC_RAW are supported, some
           events might also allow CLOCK_BOOTTIME, CLOCK_REALTIME and
           CLOCK_TAI.

Добавление переключателя -k в * 1026 Команда * активирует различные функции часов в зависимости от того, какой тактовый генератор вы используете, как видно здесь .

sched_clock Функция должна возвращать количество наносекунд с момента запуска системы. Конкретная архитектура может обеспечивать или не обеспечивать реализацию sched_clock() сама по себе. Счетчик системного отклонения будет использоваться как sched_clock(), если локальная реализация не предусмотрена.

Обратите внимание, что все приведенные выше фрагменты кода предназначены для Linux для ядра 5.6.7 .

0 голосов
/ 25 апреля 2020

XY - это необработанный формат даты. Функция времени perf, которая работает в наносекундах, должна быть преобразована в удобочитаемый формат. Используйте этот веб-сайт, чтобы преобразовать его в дату, http://www.timestamp.fr/ или используя bash

date -d @25712
...