GoGPT Best VPN GoSearch

Значок OnWorks

trace-cmd-record - Онлайн в облаке

Запустите trace-cmd-record в провайдере бесплатного хостинга OnWorks через Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

Это команда trace-cmd-record, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

ПРОГРАММА:

ИМЯ


trace-cmd-record - записать след от внутреннего трассировщика Ftrace Linux

СИНТАКСИС


трассировка-cmd запись [ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ] [команду]

ОПИСАНИЕ


The трассировка-cmd(1) команда записи настроит трассировщик ядра Ftrace Linux для записи
указанные плагины или события, которые происходят во время команду выполняет. Если нет команды
задано, то он будет записывать, пока пользователь не нажмет Ctrl-C.

Команда записи trace-cmd настроит трассировщик Ftrace для начала отслеживания различных
события или плагины, указанные в командной строке. Затем он создаст ряд
процессы трассировки (по одному на ЦП), которые начнут запись из кольцевого буфера ядра
прямо во временные файлы. Когда команда завершена (или нажата Ctrl-C), все
файлы будут объединены в файл trace.dat, который впоследствии можно будет прочитать (см.
трассировка-cmd-отчет(1 г.)).

ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ


-p плагин
Укажите плагин трассировки. Плагины - это специальные трассировщики Ftrace, которые обычно делают больше, чем
просто отследите событие. Общие плагины функция, function_graph, вытеснение,
irqsoff, упреждение и вставай. Плагин должен поддерживаться работающим ядром. К
см. список доступных плагинов, см. трассировка-cmd-список(1).

-e мероприятие
Укажите событие для отслеживания. В Linux добавлены различные статические точки трассировки.
ядро. Они сгруппированы по подсистемам, в которых вы можете включить все события данного
подсистемы или укажите конкретные события, которые нужно включить. В мероприятие имеет формат
«подсистема: имя-события». Вы также можете просто указать подсистему без
:название события или имя-события без «подсистемы:». Использование "-e sched_switch" приведет к
включить событие «sched_switch», где «-e sched» включит все события под
подсистема "расписания".

«Событие» также может содержать глобальные выражения. То есть "* stat *" будет
выберите все события (или подсистемы), в которых есть символы "stat"
имена.

Ключевое слово «все» можно использовать для включения всех событий.

-a
Каждое записываемое событие имеет файл выходного формата, сохраненный в выходном файле.
чтобы иметь возможность отобразить его позже. Но если в трассировке включены другие события без
trace-cmd, форматы этих событий не будут записаны, а trace-cmd
отчет не сможет их отобразить. В этом случае укажите -a
опция и формат для всех событий в системе будут сохранены.

-T
Включите трассировку стека для каждого события. Например:

-0 [003] 58549.289091: sched_switch: kworker / 0: 1: 0 [120] R ==> trace-cmd: 2603 [120]
-0 [003] 58549.289092: kernel_stack:
=> расписание (ffffffff814b260e)
=> cpu_idle (ffffffff8100a38c)
=> начальная_вторичная (ffffffff814ab828)

--func-стек
Включите трассировку стека для всех функций. Обратите внимание, это применимо только для «функции»
плагин трассировщик, и вступит в силу только в том случае, если параметр -l используется и выполняется успешно.
ограничивающие функции. Если трассировщик функций не фильтруется, а трассировка стека
включен, вы можете заблокировать машину в реальном времени.

-f фильтр
Задайте фильтр для предыдущего события. Это должно произойти после -e. Это отфильтрует
какие события записываются в зависимости от содержания события. Фильтрация передается в
ядро напрямую, поэтому разрешенная фильтрация может зависеть от версии ядра.
у вас есть. По сути, это позволит вам использовать нотацию C, чтобы проверить, должно ли событие быть
обработано или нет.

==,> =, <=,>, <, &, |, && и ||

Вышеуказанное обычно безопасно использовать для сравнения полей.

-R вызвать
Укажите триггер для предыдущего события. Это должно произойти после -e. Это добавит
данный триггер для данного события. Чтобы активировать только триггер, а не само событие,
затем поместите событие после -v опцию.

См. Documentation / trace / events.txt в исходном коде ядра Linux для получения дополнительной информации.
информация о триггерах.

-v
Это приведет к тому, что все события, указанные после него в командной строке, не будут отслеживаться.
Это полезно для выбора подсистемы для отслеживания, но для исключения различных событий.
Например: "-e sched -v -e" * stat \ * "" включит все события в подсистеме sched.
кроме тех, в названии которых есть "stat".

Примечание: опция * -v * была взята из пути GREP(1) инвертирует следующее
Матчи.

-F
Это отфильтрует только исполняемый файл, указанный в командной строке. Если нет команды
задан, тогда он будет фильтровать себя (довольно бессмысленно). С использованием -F позволит вам проследить
только события, вызванные данной командой.

-P ПИД-регулятор
Похожий на что -F но позволяет указать идентификатор процесса для отслеживания.

-c
Используется с -F отслеживать детей процесса тоже.

-C Часы
Установите часы трассировки на «часы».

Используйте трассировка-cmd(1) list -C, чтобы увидеть, какие часы доступны.

-o выходной файл
По умолчанию в отчете trace-cmd создается трассировка.дата файл. Вы можете указать другой
файл для записи с -o опцию.

-l имя-функции
Это ограничит функция и function_graph трассеры только отслеживать данные
имя функции. Больше одного -l можно указать в командной строке, чтобы отслеживать больше
чем одна функция. Также разрешено ограниченное использование глобальных выражений. Эти
соответствие* фильтровать только функции, начинающиеся с совпадение. *соответствие только фильтровать
функции, заканчивающиеся на совпадение. *соответствие\* фильтровать только функции, содержащие
совпадение.

-g имя-функции
Эта опция предназначена для плагина function_graph. Он построит график данной функции. Что
есть, он будет отслеживать только функцию и все функции, которые она вызывает. Вы можете иметь больше
чем один -g в командной строке.

-n имя-функции
Это имеет противоположный эффект -l. Функция, заданная с помощью -n вариант не будет
прослеживается. Это имеет приоритет, то есть если вы включите одну и ту же функцию для обоих -n
и -l, это не будет отслеживаться.

-d
Некоторые плагины трассировщика включают трассировщик функций по умолчанию. Как и трассеры задержки.
Эта опция предотвращает включение трассировщика функций при запуске.

-D
Опция -d попытается использовать параметр трассировки функций, чтобы отключить трассировщик функций
(если доступно), в противном случае по умолчанию используется файл proc:
/ proc / sys / kernel / ftrace_enabled, но не будет его трогать, если опция трассировки функции
имеется в наличии. -D опция отключит как файл ftrace_enabled proc, так и
опция трассировки функции, если она существует.

Обратите внимание: это отключит отслеживание функций для всех пользователей, включая пользователей
вне трассировщиков ftrace (stack_tracer, perf и т. д.).

-O вариант
Ftrace имеет различные параметры, которые можно включить или отключить. Это позволяет вам установить
их. Добавление текста нет опции отключает его. Например: «-O nograph-time».
отключит опцию Ftrace "время графика".

-s интервал
Процессы, которые trace-cmd создает для записи из кольцевого буфера, должны просыпаться, чтобы
сделать запись. Установка интервал до нуля вызовет пробуждение процессов
каждый раз, когда в буфер записываются новые данные. Но поскольку Ftrace записывает ядро
активности, действие этого процесса, возвращающегося в спящий режим, может вызвать новые события в
кольцевой буфер, который снова разбудит процесс. Это приведет к ненужному добавлению дополнительных данных
в кольцевой буфер.

Метрика «интервала» - микросекунды. По умолчанию установлено 1000 (1 мс).
Это время, когда каждый процесс записи засыпает перед тем, как проснуться.
записывать любые новые данные, которые были записаны в кольцевой буфер.

-r приоритет
Приоритет для запуска потоков захвата. В загруженной системе сбор трассировки
потоки могут быть заблокированы, а события могут быть потеряны. Это увеличивает приоритет тех
потоков с приоритетом реального времени (FIFO). Но используйте эту опцию осторожно, она также может
изменить поведение отслеживаемой системы.

-b размер
Это устанавливает размер кольцевого буфера равным размер килобайты. Поскольку кольцевой буфер Ftrace
на ЦП, этот размер - размер каждого кольцевого буфера ЦП внутри ядра. С использованием
"-b 10000" на машине с 4 ЦП даст Ftrace общий размер буфера 40
Мэг.

-B имя-буфера
Если ядро ​​поддерживает несколько буферов, это добавит буфер с заданным именем.
Если имя буфера уже существует, этот буфер просто сбрасывается и не будет удален.
в конце выполнения записи. Если буфер создан, он будет удален в
конец исполнения (если -k установлен, или Начало использовалась команда).

После указания имени буфера все события, добавленные после этого, будут
связанный с этим буфером. Если буфер не указан, или событие
указывается перед именем буфера, он будет связан с
основной (верхний уровень) буфер.

trace-cmd запись -e sched -B блок -e блок -B время -e таймер сна 1

Вышеупомянутое будет разрешить все запланированные события в основном буфере. Так и будет
затем создайте экземпляр буфера «блока» и включите все события блока в пределах
этот буфер. Создается экземпляр временного буфера, и все события таймера
будет включен для этого события.

-m размер
Максимальный размер в килобайтах буфера на процессор. Обратите внимание, из-за округления до
размер страницы, число может быть не совсем правильным. Также это выполняется переключением
между двумя буферами, размер которых вдвое меньше заданного, поэтому результат может не соответствовать
учитывая размер, даже если было написано намного больше.

Используйте это, чтобы предотвратить нехватку места на диске при длительной работе.

-M cpumask
Установите cpumask для трассировки. Это влияет только на последний заданный экземпляр буфера. Если
предоставляется перед любым экземпляром буфера, тогда он влияет на основной буфер. Значение
должно быть шестнадцатеричным числом.

trace-cmd запись -p функция -M c -B events13 -e все -M 5

Если опустить -M, маска останется прежней. Чтобы включить все
ЦП передайте значение "-1".

-k
По умолчанию, когда trace-cmd завершает трассировку, он сбрасывает буферы и отключает
вся трассировка, которую он включил. Эта опция не позволяет trace-cmd отключать трассировщик.
и сброс буфера. Эта опция полезна для отладки trace-cmd.

Примечание: обычно trace-cmd устанавливает для файла "tracing_on" то, что он
было до того, как он был вызван. Эта опция оставит этот файл равным нулю.

-i
По умолчанию, если в списке указано событие, которое trace-cmd не может найти, оно завершится с
ошибка. Эта опция просто игнорирует события, перечисленные в командной строке, но
не найден в системе.

-N хост: порт
Если на другом компьютере выполняется "trace-cmd listen", этот параметр используется для получения данных
отправлено на эту машину с UDP-пакетами. Вместо записи в выходной файл данные
отправляется в удаленный ящик. Это идеально подходит для встраиваемых машин с небольшим объемом памяти,
или иметь одну машину, которая будет хранить все данные в едином репозитории.

Примечание. Эта опция не поддерживается плагинами трассировки задержки:
wakeup, wakeup_rt, irqsoff, preemptoff и preemptirqsoff

-t
Эта опция используется с -N, когда есть необходимость отправить живые данные с помощью TCP
пакеты вместо UDP. Хотя TCP не так быстр, как отправка пакетов UDP,
но это может потребоваться, если сеть не так надежна, объем данных не
это интенсивно, и необходима гарантия, что вся отслеживаемая информация передается
успешно.

--свидание
Достаточно воспользоваться ИИ-ассистентом презентера --свидание опция "trace-cmd" будет записывать временные метки в буфер трассировки после
он закончил запись. Затем он сопоставит метку времени с gettimeofday, что будет
разрешить вывод времени стены из меток времени чтения созданных трассировка.дата .

--профиль
Достаточно воспользоваться ИИ-ассистентом презентера --профиль опция "trace-cmd" включит трассировку, которую можно использовать с
трассировка-cmd-отчет(1) - вариант профиля. Если трассирующий -p не задан, а график функции
глубина поддерживается ядром, тогда трассировщик function_graph будет включен с
глубина, равная единице (показывает только то, где пользовательское пространство входит в ядро). Это также позволит
различные точки трассировки с трассировкой стека, чтобы отчет мог показать, где задачи
заблокирован дольше всех.

Посмотреть трассировка-cmd-профиль(1) для получения дополнительных сведений и примеров.

-H крючки для мероприятий
Добавьте настраиваемое сопоставление событий, чтобы связать любые два события вместе. Когда не используется с
--профиль, он сохранит параметр, и он будет использоваться в отчете trace-cmd
- профиль тоже. То есть:

trace-cmd record -H hrtimer_expire_entry, hrtimer / hrtimer_expire_exit, hrtimer, sp
отчет trace-cmd --profile

Будет профилировать hrtimer_expire_entry и hrtimer_expire_ext раз.

Посмотреть трассировка-cmd-профиль(1) для формата.

--stderr
Выходные данные идут на stderr вместо stdout, но результат выполнения команды
не будет изменен. Это полезно, если вы хотите отслеживать вывод команды
выполняется, но не видит вывод trace-cmd.

ПРИМЕРЫ


Базовый способ отслеживать все события:

# trace-cmd record -e all ls> / dev / null
# отчет trace-cmd
trace-cmd-13541 [003] 106260.693809: filemap_fault: адрес = 0x128122 смещение = 0xce
trace-cmd-13543 [001] 106260.693809: kmalloc: call_site = 81128dd4 ptr = 0xffff88003dd83800 bytes_req = 768 bytes_alloc = 1024 gfp_flags = GFP_KERNEL | GFP_ZERO
ls-13545 [002] 106260.693809: kfree: call_site = 810a7abb ptr = 0x0
ls-13545 [002] 106260.693818: sys_exit_write: 0x1

Чтобы использовать трассировщик функций с отслеживанием переключателя расписания:

# trace-cmd record -p function -e sched_switch ls> / dev / null
# отчет trace-cmd
ls-13587 [002] 106467.860310: функция: hrtick_start_fair <- pick_next_task_fair
ls-13587 [002] 106467.860313: sched_switch: prev_comm = trace-cmd prev_pid = 13587 prev_prio = 120 prev_state = R ==> next_comm = trace-cmd next_pid = 13583 next_prio = 120
trace-cmd-13585 [001] 106467.860314: функция: native_set_pte_at <- __do_fault
trace-cmd-13586 [003] 106467.860314: функция: up_read <- do_page_fault
ls-13587 [002] 106467.860317: function: __phys_addr <- расписание
trace-cmd-13585 [001] 106467.860318: функция: _raw_spin_unlock <- __do_fault
ls-13587 [002] 106467.860320: функция: native_load_sp0 <- __switch_to
trace-cmd-13586 [003] 106467.860322: функция: down_read_trylock <- do_page_fault

Вот хороший способ узнать, какие прерывания имеют наибольшую задержку:

# запись trace-cmd -p function_graph -e irq_handler_entry -l do_IRQ sleep 10
# отчет trace-cmd
-0 [000] 157412.933969: funcgraph_entry: | do_IRQ () {
-0 [000] 157412.933974: irq_handler_entry: irq = 48 name = eth0
-0 [000] 157412.934004: funcgraph_exit: + 36.358 us | }
-0 [000] 157413.895004: funcgraph_entry: | do_IRQ () {
-0 [000] 157413.895011: irq_handler_entry: irq = 48 name = eth0
-0 [000] 157413.895026: funcgraph_exit: + 24.014 us | }
-0 [000] 157415.891762: funcgraph_entry: | do_IRQ () {
-0 [000] 157415.891769: irq_handler_entry: irq = 48 name = eth0
-0 [000] 157415.891784: funcgraph_exit: + 22.928 us | }
-0 [000] 157415.934869: funcgraph_entry: | do_IRQ () {
-0 [000] 157415.934874: irq_handler_entry: irq = 48 name = eth0
-0 [000] 157415.934906: funcgraph_exit: + 37.512 us | }
-0 [000] 157417.888373: funcgraph_entry: | do_IRQ () {
-0 [000] 157417.888381: irq_handler_entry: irq = 48 name = eth0
-0 [000] 157417.888398: funcgraph_exit: + 25.943 us | }

Пример профиля:

# запись trace-cmd --profile sleep 1
# отчет trace-cmd --profile --comm sleep
задача: сон-21611
Событие: sched_switch: R (1) Всего: 99442 Среднее: 99442 Макс .: 99442 Мин .: 99442
1 всего: 99442 мин: 99442 макс: 99442 средн = 99442
=> ftrace_raw_event_sched_switch (0xffffffff8105f812)
=> __schedule (0xffffffff8150810a)
=> preempt_schedule (0xffffffff8150842e)
=> ___preempt_schedule (0xffffffff81273354)
=> cpu_stop_queue_work (0xffffffff810b03c5)
=> stop_one_cpu (0xffffffff810b063b)
=> sched_exec (0xffffffff8106136d)
=> do_execve_common.isra.27 (0xffffffff81148c89)
=> do_execve (0xffffffff811490b0)
=> SyS_execve (0xffffffff811492c4)
=> return_to_handler (0xffffffff8150e3c8)
=> stub_execve (0xffffffff8150c699)
Событие: sched_switch: S (1) Всего: 1000506680 Среднее: 1000506680 Макс .: 1000506680 Мин .: 1000506680
1 всего: 1000506680 мин: 1000506680 макс: 1000506680 средн = 1000506680
=> ftrace_raw_event_sched_switch (0xffffffff8105f812)
=> __schedule (0xffffffff8150810a)
=> расписание (0xffffffff815084b8)
=> do_nanosleep (0xffffffff8150b22c)
=> hrtimer_nanosleep (0xffffffff8108d647)
=> SyS_nanosleep (0xffffffff8108d72c)
=> return_to_handler (0xffffffff8150e3c8)
=> tracesys_phase2 (0xffffffff8150c304)
Событие: sched_wakeup: 21611 (1) Всего: 30326 Среднее: 30326 Макс .: 30326 Мин .: 30326
1 всего: 30326 мин: 30326 макс: 30326 средн = 30326
=> ftrace_raw_event_sched_wakeup_template (0xffffffff8105f653)
=> ttwu_do_wakeup (0xffffffff810606eb)
=> ttwu_do_activate.constprop.124 (0xffffffff810607c8)
=> try_to_wake_up (0xffffffff8106340a)

Используйте trace-cmd-record онлайн с помощью сервисов onworks.net


Бесплатные серверы и рабочие станции

Скачать приложения для Windows и Linux

Команды Linux

Ad




×
Реклама
❤️Совершайте покупки, бронируйте или заказывайте здесь — никаких затрат, что помогает поддерживать бесплатность услуг.