Public bug reported:
[Impact]
perf trace can work with BPF code and is able to use clang to build C code to
do it. Currently, it won't be able to build them as it requires some include
files that it looks at /usr/lib/perf/include/bpf/.
As this path is not dependent on the kernel version, shipping the latest
code would make sense as long as headers are backwards compatible.
Example code could be packaged on a versioned directory in a versioned
package.
[Test case]
$ sudo perf trace -e
open,openat,/usr/lib/perf/examples/bpf/augmented_raw_syscalls.c cat /etc/passwd
> /dev/null
0.000 ( 0.027 ms): cat/2256 openat(dfd: CWD, filename: "/etc/ld.so.cache",
flags: RDONLY|CLOEXEC) = 3
0.058 ( 0.009 ms): cat/2256 openat(dfd: CWD, filename:
"/lib/s390x-linux-gnu/libc.so.6", flags: RDONLY|CLOEXEC) = 3
0.307 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/locale-archive", flags: RDONLY|CLOEXEC) = 3
0.326 ( 0.007 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/share/locale/locale.alias", flags: RDONLY|CLOEXEC) = 3
0.361 ( 0.005 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_IDENTIFICATION", flags: RDONLY|CLOEXEC) = 3
0.373 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/s390x-linux-gnu/gconv/gconv-modules.cache") = 3
0.389 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_MEASUREMENT", flags: RDONLY|CLOEXEC) = 3
0.403 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_TELEPHONE", flags: RDONLY|CLOEXEC) = 3
0.415 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_ADDRESS", flags: RDONLY|CLOEXEC) = 3
0.428 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_NAME", flags: RDONLY|CLOEXEC) = 3
0.440 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_PAPER", flags: RDONLY|CLOEXEC) = 3
0.456 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_MESSAGES", flags: RDONLY|CLOEXEC) = 3
0.464 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_MESSAGES/SYS_LC_MESSAGES", flags: RDONLY|CLOEXEC) =
3
0.475 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_MONETARY", flags: RDONLY|CLOEXEC) = 3
0.489 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_COLLATE", flags: RDONLY|CLOEXEC) = 3
0.511 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_TIME", flags: RDONLY|CLOEXEC) = 3
0.525 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_NUMERIC", flags: RDONLY|CLOEXEC) = 3
0.536 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_CTYPE", flags: RDONLY|CLOEXEC) = 3
0.565 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename: "/etc/passwd")
= 3
[Potential regression]
We might ship incompatible code with the running kernel. It might break
building such examples.
Or we might break the old contens of the packages we are adding files to.
** Affects: linux (Ubuntu)
Importance: Low
Assignee: Thadeu Lima de Souza Cascardo (cascardo)
Status: In Progress
** Affects: linux (Ubuntu Focal)
Importance: Undecided
Status: New
** Affects: linux (Ubuntu Groovy)
Importance: Low
Assignee: Thadeu Lima de Souza Cascardo (cascardo)
Status: In Progress
** Also affects: linux (Ubuntu Groovy)
Importance: Undecided
Status: New
** Also affects: linux (Ubuntu Focal)
Importance: Undecided
Status: New
** Changed in: linux (Ubuntu Groovy)
Status: New => In Progress
** Changed in: linux (Ubuntu Groovy)
Assignee: (unassigned) => Thadeu Lima de Souza Cascardo (cascardo)
** Changed in: linux (Ubuntu Groovy)
Importance: Undecided => Low
--
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1892411
Title:
Package perf-trace examples and include files
Status in linux package in Ubuntu:
In Progress
Status in linux source package in Focal:
New
Status in linux source package in Groovy:
In Progress
Bug description:
[Impact]
perf trace can work with BPF code and is able to use clang to build C code to
do it. Currently, it won't be able to build them as it requires some include
files that it looks at /usr/lib/perf/include/bpf/.
As this path is not dependent on the kernel version, shipping the
latest code would make sense as long as headers are backwards
compatible. Example code could be packaged on a versioned directory in
a versioned package.
[Test case]
$ sudo perf trace -e
open,openat,/usr/lib/perf/examples/bpf/augmented_raw_syscalls.c cat /etc/passwd
> /dev/null
0.000 ( 0.027 ms): cat/2256 openat(dfd: CWD, filename:
"/etc/ld.so.cache", flags: RDONLY|CLOEXEC) = 3
0.058 ( 0.009 ms): cat/2256 openat(dfd: CWD, filename:
"/lib/s390x-linux-gnu/libc.so.6", flags: RDONLY|CLOEXEC) = 3
0.307 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/locale-archive", flags: RDONLY|CLOEXEC) = 3
0.326 ( 0.007 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/share/locale/locale.alias", flags: RDONLY|CLOEXEC) = 3
0.361 ( 0.005 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_IDENTIFICATION", flags: RDONLY|CLOEXEC) = 3
0.373 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/s390x-linux-gnu/gconv/gconv-modules.cache") = 3
0.389 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_MEASUREMENT", flags: RDONLY|CLOEXEC) = 3
0.403 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_TELEPHONE", flags: RDONLY|CLOEXEC) = 3
0.415 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_ADDRESS", flags: RDONLY|CLOEXEC) = 3
0.428 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_NAME", flags: RDONLY|CLOEXEC) = 3
0.440 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_PAPER", flags: RDONLY|CLOEXEC) = 3
0.456 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_MESSAGES", flags: RDONLY|CLOEXEC) = 3
0.464 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_MESSAGES/SYS_LC_MESSAGES", flags: RDONLY|CLOEXEC) =
3
0.475 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_MONETARY", flags: RDONLY|CLOEXEC) = 3
0.489 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_COLLATE", flags: RDONLY|CLOEXEC) = 3
0.511 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_TIME", flags: RDONLY|CLOEXEC) = 3
0.525 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_NUMERIC", flags: RDONLY|CLOEXEC) = 3
0.536 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename:
"/usr/lib/locale/C.UTF-8/LC_CTYPE", flags: RDONLY|CLOEXEC) = 3
0.565 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename: "/etc/passwd")
= 3
[Potential regression]
We might ship incompatible code with the running kernel. It might break
building such examples.
Or we might break the old contens of the packages we are adding files to.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1892411/+subscriptions
--
Mailing list: https://launchpad.net/~kernel-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help : https://help.launchpad.net/ListHelp