Message ID | b5bd1f1d2f39fb8fbef3fdff8447eead6bcbfb91.1659570242.git.olivier.dion@polymtl.ca |
---|---|
State | Accepted |
Headers | show |
Series | [bug#56962] gnu: Add perf-tools. | expand |
Context | Check | Description |
---|---|---|
cbaines/comparison | success | View comparision |
cbaines/git-branch | success | View Git branch |
cbaines/applying patch | success | View Laminar job |
cbaines/issue | success | View issue |
> * gnu/packages/instrumentation.scm (perf-tools): New variable.
Nice one. It looks like execsnoop is not working here, any idea why?
--8<---------------cut here---------------start------------->8---
mathieu@meije ~/guix [env]$ sudo execsnoop
Tracing exec()s. Ctrl-C to end.
ERROR: adding a kprobe for execve. Exiting.
--8<---------------cut here---------------end--------------->8---
Something missing in Guix System kernel configuration maybe?
Pushed anyway,
Thanks,
Mathieu
On Fri, 05 Aug 2022, Mathieu Othacehe <othacehe@gnu.org> wrote: >> * gnu/packages/instrumentation.scm (perf-tools): New variable. > > Nice one. It looks like execsnoop is not working here, any idea why? > > --8<---------------cut here---------------start------------->8--- > mathieu@meije ~/guix [env]$ sudo execsnoop > Tracing exec()s. Ctrl-C to end. > ERROR: adding a kprobe for execve. Exiting. > --8<---------------cut here---------------end--------------->8--- > Hmm I don't know. `sudo cat /sys/kernel/debug/kprobes/enabled' gives `1' so kprobe should work correctly. Also: --8<---------------cut here---------------start------------->8--- $ zcat /proc/config.gz | grep KPROBES CONFIG_KPROBES=y CONFIG_KPROBES_ON_FTRACE=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KPROBES_ON_FTRACE=y --8<---------------cut here---------------end--------------->8--- killsnoop also fails. It seems that the problem is here: --8<---------------cut here---------------start------------->8--- 133 ### select awk 134 # workaround for mawk fflush() 135 [[ -x /usr/bin/mawk ]] && awk="mawk" && mawk -W interactive && \ 136 [ $? -eq 0 ] && awk="mawk -W interactive" 137 # workaround for gawk strtonum() 138 [[ -x /usr/bin/gawk ]] && awk="gawk --non-decimal-data" --8<---------------cut here---------------end--------------->8--- Substituing /usr/bin/gawk seems to fix it. I'll open a new bug thread.
diff --git a/gnu/packages/instrumentation.scm b/gnu/packages/instrumentation.scm index 4e23e9bed4..f52cf11505 100644 --- a/gnu/packages/instrumentation.scm +++ b/gnu/packages/instrumentation.scm @@ -18,13 +18,17 @@ (define-module (gnu packages instrumentation) #:use-module (gnu packages base) + #:use-module (gnu packages bash) #:use-module (gnu packages bison) #:use-module (gnu packages boost) + #:use-module (gnu packages commencement) #:use-module (gnu packages datastructures) #:use-module (gnu packages documentation) #:use-module (gnu packages elf) #:use-module (gnu packages engineering) + #:use-module (gnu packages file) #:use-module (gnu packages flex) + #:use-module (gnu packages gawk) #:use-module (gnu packages glib) #:use-module (gnu packages haskell-xyz) #:use-module (gnu packages libunwind) @@ -290,6 +294,60 @@ (define-public lttng-tools @code{lttng-relayd} for network streaming.") (license (list license:gpl2 license:lgpl2.1)))) +(define-public perf-tools + (package + (name "perf-tools") + (version "1.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/brendangregg/perf-tools") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ab735idi0h62yvhzd7822jj3555vygixv4xjrfrdvi8d2hhz6qn")))) + (build-system copy-build-system) + (arguments + `(#:install-plan + ',(append + (map (cut list <> "bin/") + '("disk/bitesize" + "fs/cachestat" + "execsnoop" + "kernel/funccount" + "kernel/funcgraph" + "kernel/funcslower" + "kernel/functrace" + "iolatency" + "iosnoop" + "killsnoop" + "kernel/kprobe" + "opensnoop" + "misc/perf-stat-hist" + "tools/reset-ftrace" + "syscount" + "net/tcpretrans" + "system/tpoint" + "user/uprobe")) + '(("man/man8/" "share/man/man8"))))) + (propagated-inputs + (list + bash + coreutils ; cat + rm + gawk + gcc-toolchain ; objdump + ldconfig + file + perf + perl + procps ; sysctl + which)) + (home-page "https://github.com/brendangregg/perf-tools") + (synopsis "Performance analysis tools") + (description "Perf-tools is a collection of scripts for performance +analysis and instrumentation based on Linux perf_events (aka perf) and +ftrace.") + (license (list license:gpl2)))) + (define-public uftrace (package (name "uftrace")