Ini adalah perintah trace-cmd-record yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS
PROGRAM:
NAMA
trace-cmd-record - merekam jejak dari pelacak internal Ftrace Linux
RINGKASAN
jejak-cmd catatan [PILIHAN] [Command]
DESKRIPSI
The jejak-cmd(1) perintah record akan mengatur pelacak kernel Ftrace Linux untuk merekam
plugin atau peristiwa tertentu yang terjadi saat Command mengeksekusi. Jika tidak ada perintah adalah
diberikan, maka akan merekam sampai pengguna menekan Ctrl-C.
Perintah record dari trace-cmd akan mengatur pelacak Ftrace untuk mulai melacak berbagai
acara atau plugin yang diberikan pada baris perintah. Ini kemudian akan membuat sejumlah
proses pelacakan (satu per CPU) yang akan mulai merekam dari buffer ring kernel
langsung ke file-file sementara. Ketika perintah selesai (atau Ctrl-C dipukul) semua
file akan digabungkan menjadi file trace.dat yang nantinya dapat dibaca (lihat
jejak-cmd-laporan(1)).
PILIHAN
-p Plugin
Tentukan plugin pelacakan. Plugin adalah pelacak Ftrace khusus yang biasanya melakukan lebih dari
hanya melacak suatu peristiwa. Plugin umum adalah fungsi, fungsi_grafik, preemptirqsoff,
irqsoff, mendahului, dan bangun. Sebuah plugin harus didukung oleh kernel yang sedang berjalan. Ke
lihat daftar plugin yang tersedia, lihat jejak-cmd-daftar(1).
-e peristiwa
Tentukan peristiwa yang akan dilacak. Berbagai titik jejak statis telah ditambahkan ke Linux
inti. Mereka dikelompokkan berdasarkan subsistem di mana Anda dapat mengaktifkan semua acara tertentu
subsistem atau menentukan peristiwa tertentu yang akan diaktifkan. NS peristiwa adalah formatnya
"subsistem: nama-acara". Anda juga dapat menentukan subsistem tanpa
:nama-acara atau nama peristiwa tanpa "subsistem:". Menggunakan "-e sched_switch" akan
aktifkan acara "sched_switch" di mana, "-e sched" akan mengaktifkan semua acara di bawah
subsistem "terjadwal".
'Acara' juga dapat berisi ekspresi glob. Artinya, "*stat*" akan
pilih semua peristiwa (atau subsistem) yang memiliki karakter "stat" di dalamnya
nama.
Kata kunci 'semua' dapat digunakan untuk mengaktifkan semua acara.
-a
Setiap peristiwa yang sedang direkam memiliki file format output yang disimpan dalam file output
untuk dapat menampilkannya nanti. Tetapi jika acara lain diaktifkan di jejak tanpa
sepengetahuan trace-cmd, format acara tersebut tidak akan direkam dan trace-cmd
laporan tidak akan dapat menampilkannya. Jika ini masalahnya, tentukan -a
opsi dan format untuk semua acara dalam sistem akan disimpan.
-T
Aktifkan stacktrace pada setiap acara. Sebagai contoh:
-0 [003] 58549.289091: sched_switch: kworker/0:1:0 [120] R ==> trace-cmd:2603 [120]
-0 [003] 58549.289092: kernel_stack:
=> jadwal (ffffffff814b260e)
=> cpu_idle (ffffffff8100a38c)
=> start_secondary (ffffffff814ab828)
--fungsi-tumpukan
Aktifkan pelacakan tumpukan pada semua fungsi. Catatan ini hanya berlaku untuk "fungsi"
pelacak plugin, dan hanya akan berlaku jika opsi -l digunakan dan berhasil
membatasi fungsi. Jika pelacak fungsi tidak difilter, dan pelacakan tumpukan adalah
diaktifkan, Anda dapat tinggal mengunci mesin.
-f menyaring
Tentukan filter untuk acara sebelumnya. Ini harus datang setelah -e. Ini akan menyaring
peristiwa apa yang direkam berdasarkan konten acara. Penyaringan diteruskan ke
kernel secara langsung jadi pemfilteran apa yang diizinkan mungkin bergantung pada versi kernel apa
kamu punya. Pada dasarnya, ini akan memungkinkan Anda menggunakan notasi C untuk memeriksa apakah suatu peristiwa seharusnya
diproses atau tidak.
==, >=, <=, >, <, &, |, && dan ||
Di atas biasanya aman digunakan untuk membandingkan bidang.
-R memicu
Tentukan pemicu untuk peristiwa sebelumnya. Ini harus datang setelah -e. Ini akan menambahkan
pemicu yang diberikan untuk peristiwa yang diberikan. Untuk hanya mengaktifkan pemicu dan bukan peristiwa itu sendiri,
kemudian tempatkan acara setelah -v .
Lihat Documentation/trace/events.txt di sumber kernel Linux untuk lebih lanjut
informasi tentang pemicu.
-v
Ini akan menyebabkan semua peristiwa yang ditentukan setelahnya di baris perintah tidak dapat dilacak.
Ini berguna untuk memilih subsistem yang akan dilacak tetapi untuk mengabaikan berbagai peristiwa.
Misalnya: "-e sched -v -e "*stat\*"" akan mengaktifkan semua peristiwa di subsistem sched
kecuali mereka yang memiliki "stat" di namanya.
Catatan: opsi *-v* diambil dari jalan grep(1) membalikkan yang berikut ini
pertandingan.
-F
Ini akan menyaring hanya executable yang diberikan pada baris perintah. Jika tidak ada perintah
diberikan, maka itu akan menyaring sendiri (tidak ada gunanya). Menggunakan -F akan membiarkan Anda melacak
hanya peristiwa yang disebabkan oleh perintah yang diberikan.
-P pid
Mirip dengan -F tetapi memungkinkan Anda menentukan ID proses untuk dilacak.
-c
Digunakan dengan baik -F untuk melacak anak-anak proses juga.
-C jam
Atur jam jejak ke "jam".
penggunaan jejak-cmd(1) daftar -C untuk melihat jam apa yang tersedia.
-o berkas keluaran
Secara default, laporan trace-cmd akan membuat jejak.dat mengajukan. Anda dapat menentukan yang berbeda
file untuk menulis dengan -o .
-l nama-fungsi
Ini akan membatasi fungsi dan fungsi_grafik pelacak untuk hanya melacak yang diberikan
nama fungsi. Lebih dari satu -l dapat ditentukan pada baris perintah untuk melacak lebih banyak
dari satu fungsi. Penggunaan ekspresi glob secara terbatas juga diperbolehkan. Ini adalah
cocok* untuk hanya memfilter fungsi yang dimulai dengan pertandingan. *cocok hanya menyaring
fungsi yang diakhiri dengan pertandingan. *cocok\* untuk hanya memfilter pada fungsi yang mengandung
pertandingan.
-g nama-fungsi
Opsi ini untuk plugin function_graph. Ini akan membuat grafik dari fungsi yang diberikan. Itu
adalah, itu hanya akan melacak fungsi dan semua fungsi yang dipanggilnya. Anda dapat memiliki lebih banyak
daripada satu -g di baris perintah.
-n nama-fungsi
Ini memiliki efek kebalikan dari -l. Fungsi yang diberikan dengan -n pilihan tidak akan
dilacak. Ini diutamakan, yaitu, jika Anda menyertakan fungsi yang sama untuk keduanya -n
dan -l, itu tidak akan dilacak.
-d
Beberapa plugin pelacak mengaktifkan pelacak fungsi secara default. Seperti pelacak latensi.
Opsi ini mencegah pelacak fungsi diaktifkan saat memulai.
-D
Pilihan -d akan mencoba menggunakan opsi pelacakan fungsi untuk menonaktifkan pelacak fungsi
(jika tersedia), jika tidak, default ke file proc:
/proc/sys/kernel/ftrace_enabled, tetapi tidak akan menyentuhnya jika opsi pelacakan fungsi adalah
tersedia. Itu -D opsi akan menonaktifkan file proc ftrace_enabled serta
opsi function-trace jika ada.
Catatan, ini menonaktifkan pelacakan fungsi untuk semua pengguna, termasuk pengguna
di luar pelacak ftrace (stack_tracer, perf, dll).
-O Option
Ftrace memiliki berbagai opsi yang dapat diaktifkan atau dinonaktifkan. Ini memungkinkan Anda untuk mengatur
mereka. Menambahkan teks tidak ke opsi menonaktifkannya. Misalnya: "-O nograph-waktu"
akan menonaktifkan opsi Ftrace "grafik-waktu".
-s selang
Proses yang dibuat trace-cmd untuk merekam dari buffer cincin perlu dibangunkan untuk
melakukan perekaman. Mengatur selang ke nol akan menyebabkan proses untuk bangun
setiap kali data baru ditulis ke dalam buffer. Tapi karena Ftrace merekam kernel
aktivitas, tindakan proses ini kembali tidur dapat menyebabkan peristiwa baru ke dalam
ring buffer yang akan membangunkan proses kembali. Ini tidak akan menambah data tambahan
ke dalam penyangga cincin.
Metrik 'interval' adalah mikrodetik. Default diatur ke 1000 (1 ms).
Ini adalah waktu setiap proses perekaman akan tidur sebelum bangun untuk
merekam data baru yang ditulis ke buffer cincin.
-r prioritas
Prioritas untuk menjalankan utas tangkapan di. Dalam sistem yang sibuk, perekaman jejak
utas dapat dihentikan dan acara dapat hilang. Ini meningkatkan prioritas mereka
utas ke prioritas waktu nyata (FIFO). Tetapi gunakan opsi ini dengan hati-hati, itu juga bisa
mengubah perilaku sistem yang dilacak.
-b ukuran
Ini mengatur ukuran buffer cincin ke ukuran kilobyte. Karena penyangga cincin Ftrace adalah
per CPU, ukuran ini adalah ukuran masing-masing buffer cincin per CPU di dalam kernel. Menggunakan
"-b 10000" pada mesin dengan 4 CPU akan membuat Ftrace memiliki ukuran buffer total 40
Mega.
-B nama penyangga
Jika kernel mendukung banyak buffer, ini akan menambahkan buffer dengan nama yang diberikan.
Jika nama buffer sudah ada, buffer itu hanya direset dan tidak akan dihapus
pada akhir eksekusi record. Jika buffer dibuat, itu akan dihapus di
akhir eksekusi (kecuali -k diatur, atau awal perintah yang digunakan).
Setelah nama buffer disebutkan, semua event yang ditambahkan setelah itu akan menjadi
terkait dengan penyangga itu. Jika tidak ada buffer yang ditentukan, atau event
ditentukan sebelum nama buffer, itu akan dikaitkan dengan
penyangga utama (tingkat atas).
trace-cmd record -e sched -B blok -e blok -B waktu -e timer tidur 1
Di atas akan mengaktifkan semua acara terjadwal di buffer utama. Itu akan
kemudian buat instance buffer 'blok' dan aktifkan semua acara blok di dalamnya
penyangga itu. Instance buffer 'waktu' dibuat dan semua acara pengatur waktu
akan diaktifkan untuk acara itu.
-m ukuran
Ukuran maksimal dalam kilobyte yang seharusnya menjadi buffer per cpu. Catatan, karena pembulatan ke
ukuran halaman, jumlahnya mungkin tidak sepenuhnya benar. Juga, ini dilakukan dengan beralih
antara dua buffer yang setengah dari ukuran yang diberikan sehingga output mungkin tidak
diberikan ukuran bahkan jika lebih banyak ditulis.
Gunakan ini untuk mencegah kehabisan ruang disk untuk waktu yang lama.
-M topeng cpu
Atur cpumask untuk dilacak. Itu hanya mempengaruhi contoh buffer terakhir yang diberikan. Jika
diberikan sebelum instance buffer apa pun, maka itu memengaruhi buffer utama. Nilai
diberikan harus berupa angka heksa.
jejak-cmd rekam -p fungsi -M c -B acara13 -e semua -M 5
Jika -M ditinggalkan, maka topengnya tetap sama. Untuk mengaktifkan semua
CPU, berikan nilai '-1'.
-k
Secara default, ketika trace-cmd selesai melacak, itu akan mengatur ulang buffer dan menonaktifkan
semua pelacakan yang diaktifkan. Opsi ini mencegah trace-cmd menonaktifkan pelacak
dan mengatur ulang buffer. Opsi ini berguna untuk men-debug trace-cmd.
Catatan: biasanya trace-cmd akan mengatur file "tracing_on" kembali seperti semula
ada sebelum dipanggil. Opsi ini akan membuat file tersebut disetel ke nol.
-i
Secara default, jika sebuah acara terdaftar yang tidak ditemukan trace-cmd, itu akan keluar dengan
kesalahan. Opsi ini hanya akan mengabaikan peristiwa yang terdaftar pada baris perintah tetapi
tidak ditemukan pada sistem.
-N tuan rumah: pelabuhan
Jika mesin lain menjalankan "trace-cmd listen", opsi ini digunakan untuk memiliki data
dikirim ke mesin itu dengan paket UDP. Alih-alih menulis ke file output, data
dikirim ke kotak remote. Ini sangat ideal untuk mesin tertanam dengan sedikit penyimpanan,
atau memiliki satu mesin yang akan menyimpan semua data dalam satu repositori.
Catatan: Opsi ini tidak didukung dengan plugin pelacak latensi:
wakeup, wakeup_rt, irqsoff, preemptoff, dan preemptirqsoff
-t
Opsi ini digunakan dengan -N, ketika ada kebutuhan untuk mengirim data langsung dengan TCP
paket bukan UDP. Meskipun TCP tidak secepat mengirim paket UDP,
tetapi mungkin diperlukan jika jaringannya tidak dapat diandalkan, jumlah datanya tidak
yang intensif, dan diperlukan jaminan bahwa semua informasi yang dilacak ditransfer
berhasil.
--tanggal
Dengan --tanggal opsi, "trace-cmd" akan menulis cap waktu ke buffer jejak setelah
sudah selesai merekam. Kemudian akan memetakan stempel waktu ke gettimeofday yang akan
izinkan keluaran waktu dinding dari stempel waktu yang membaca yang dibuat jejak.dat file.
--Profil
Dengan --Profil opsi, "trace-cmd" akan mengaktifkan pelacakan yang dapat digunakan dengan
jejak-cmd-laporan(1) --profil pilihan. Jika pelacak -p tidak diatur, dan grafik fungsi
kedalaman didukung oleh kernel, maka pelacak function_graph akan diaktifkan dengan
kedalaman satu (hanya menunjukkan di mana ruang pengguna masuk ke dalam kernel). Ini juga akan memungkinkan
berbagai tracepoints dengan pelacakan tumpukan sehingga laporan dapat menunjukkan di mana tugas-tugas telah
telah diblokir untuk waktu yang lama.
Lihat jejak-cmd-profil(1) untuk lebih jelasnya dan contoh.
-H acara-kait
Tambahkan pencocokan acara khusus untuk menghubungkan dua acara bersama-sama. Bila tidak digunakan dengan
--Profil, itu akan menyimpan parameter dan ini akan digunakan oleh laporan trace-cmd
--profil juga. Itu adalah:
rekaman jejak-cmd -H hrtimer_expire_entry,hrtimer/hrtimer_expire_exit,hrtimer,sp
laporan trace-cmd --profile
Akan membuat profil hrtimer_expire_entry dan hrtimer_expire_ext kali.
Lihat jejak-cmd-profil(1) untuk format.
--stderr
Minta output ke stderr alih-alih stdout, tetapi output dari perintah dieksekusi
tidak akan diubah. Ini berguna jika Anda ingin memantau output dari perintah
sedang dieksekusi, tetapi tidak melihat output dari trace-cmd.
CONTOH
Cara dasar untuk melacak semua peristiwa:
# trace-cmd record -e all ls > /dev/null
# laporan jejak-cmd
trace-cmd-13541 [003] 106260.693809: filemap_fault: alamat=0x128122 offset=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
Untuk menggunakan pelacak fungsi dengan pelacakan sakelar sched:
# trace-cmd record -p function -e sched_switch ls > /dev/null
# laporan jejak-cmd
ls-13587 [002] 106467.860310: fungsi: 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: fungsi: native_set_pte_at <-- __do_fault
trace-cmd-13586 [003] 106467.860314: fungsi: up_read <-- do_page_fault
ls-13587 [002] 106467.860317: fungsi: __phys_addr <-- jadwal
trace-cmd-13585 [001] 106467.860318: fungsi: _raw_spin_unlock <-- __do_fault
ls-13587 [002] 106467.860320: fungsi: native_load_sp0 <-- __switch_to
trace-cmd-13586 [003] 106467.860322: fungsi: down_read_trylock <-- do_page_fault
Berikut adalah cara yang bagus untuk menemukan interupsi apa yang memiliki latensi tertinggi:
# trace-cmd record -p function_graph -e irq_handler_entry -l do_IRQ tidur 10
# laporan jejak-cmd
-0 [000] 157412.933969: funcgraph_entry: | lakukan_IRQ() {
-0 [000] 157412.933974: irq_handler_entry: irq=48 nama=eth0
-0 [000] 157412.934004: funcgraph_exit: + 36.358 us | }
-0 [000] 157413.895004: funcgraph_entry: | lakukan_IRQ() {
-0 [000] 157413.895011: irq_handler_entry: irq=48 nama=eth0
-0 [000] 157413.895026: funcgraph_exit: + 24.014 us | }
-0 [000] 157415.891762: funcgraph_entry: | lakukan_IRQ() {
-0 [000] 157415.891769: irq_handler_entry: irq=48 nama=eth0
-0 [000] 157415.891784: funcgraph_exit: + 22.928 us | }
-0 [000] 157415.934869: funcgraph_entry: | lakukan_IRQ() {
-0 [000] 157415.934874: irq_handler_entry: irq=48 nama=eth0
-0 [000] 157415.934906: funcgraph_exit: + 37.512 us | }
-0 [000] 157417.888373: funcgraph_entry: | lakukan_IRQ() {
-0 [000] 157417.888381: irq_handler_entry: irq=48 nama=eth0
-0 [000] 157417.888398: funcgraph_exit: + 25.943 us | }
Contoh profilnya:
# rekam jejak-cmd --profil tidur 1
# laporan trace-cmd --profile --comm sleep
tugas: tidur-21611
Peristiwa: sched_switch:R (1) Total: 99442 Rata-rata: 99442 Maks: 99442 Min:99442
1 total: 99442 mnt: 99442 maks: 99442 rata-rata = 99442
=> ftrace_raw_event_sched_switch (0xffffffff8105f812)
=> __jadwal (0xffffffff8150810a)
=> jadwal_preempt (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)
Peristiwa: sched_switch:S (1) Total: 1000506680 Rata-rata: 1000506680 Maks: 1000506680 Min:1000506680
1 total: 1000506680 mnt: 1000506680 maks: 1000506680 rata-rata = 1000506680
=> ftrace_raw_event_sched_switch (0xffffffff8105f812)
=> __jadwal (0xffffffff8150810a)
=> jadwal (0xffffffff815084b8)
=> do_nanosleep (0xffffffff8150b22c)
=> hrtimer_nanosleep (0xffffffff8108d647)
=> SyS_nanosleep (0xffffffff8108d72c)
=> return_to_handler (0xffffffff8150e3c8)
=> tracesys_phase2 (0xffffffff8150c304)
Peristiwa: sched_wakeup:21611 (1) Total: 30326 Rata-rata: 30326 Maks: 30326 Min:30326
1 total: 30326 mnt: 30326 maks: 30326 rata-rata = 30326
=> ftrace_raw_event_sched_wakeup_template (0xffffffff8105f653)
=> ttwu_do_wakeup (0xffffffff810606eb)
=> ttwu_do_activate.constprop.124 (0xffffffff810607c8)
=> try_to_wake_up (0xffffffff8106340a)
Gunakan trace-cmd-record online menggunakan layanan onworks.net