lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAJNi4rNC3zNi8RywzxXiVLfxVVuCfV_x1GbAXhT+h4DJ5ZrF7A@mail.gmail.com>
Date: Wed, 7 Feb 2024 10:33:38 +0800
From: richard clark <richard.xnu.clark@...il.com>
To: Valentin Schneider <vschneid@...hat.com>
Cc: Mark Rutland <mark.rutland@....com>, Steven Rostedt <rostedt@...dmis.org>, nico@...xnic.net, 
	mhiramat@...nel.org, linux-arm-kernel@...ts.infradead.org, 
	linux-trace-kernel@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: Question about the ipi_raise filter usage and output

On Wed, Feb 7, 2024 at 10:28 AM richard clark
<richard.xnu.clark@...il.com> wrote:
>
> On Tue, Feb 6, 2024 at 5:39 PM Valentin Schneider <vschneid@...hat.com> wrote:
> >
> > You should have access to the generic fields which include the CPU from
> > which the event happens. Any of "CPU", "cpu" or "common_cpu" would match
> > this.
> >
> > So if you're on a recent enough kernel (v6.6 or above AFAICT), you should
> > be able to do something like so:
> >
> >   trace-cmd record -e 'ipi_raise' -f 'CPU & CPUS{7-42}' ./foo.sh
> >
> > If you just want to match a single CPU, or are on an older kernel, this
> > should work as well:
> >
> >   trace-cmd record -e 'ipi_raise' -f 'CPU == 42' ./foo.sh
> >
> > For example on a QEMU x86 environment:
> >
> >   # trace-cmd record -e 'call_function*' -f 'CPU & CPUS{3}' hackbench
> >   Running in process mode with 10 groups using 40 file descriptors each (== 400 tasks)
> >   Each sender will pass 100 messages of 100 bytes
> >   Time: 0.396
> >   CPU0 data recorded at offset=0x738000
> >       0 bytes in size
> >   CPU1 data recorded at offset=0x738000
> >       0 bytes in size
> >   CPU2 data recorded at offset=0x738000
> >       0 bytes in size
> >   CPU3 data recorded at offset=0x738000
> >       4096 bytes in size
> >
> >   # trace-cmd report
> >   CPU 0 is empty
> >   CPU 1 is empty
> >   CPU 2 is empty
> >   cpus=4
> >             <idle>-0     [003]    29.704387: call_function_single_entry: vector=251
> >             <idle>-0     [003]    29.704388: call_function_single_exit: vector=251
> >             <idle>-0     [003]    29.705950: call_function_single_entry: vector=251
> >             <idle>-0     [003]    29.705951: call_function_single_exit: vector=251
> >             <idle>-0     [003]    29.706462: call_function_single_entry: vector=251
> >             <idle>-0     [003]    29.706463: call_function_single_exit: vector=251
> >          hackbench-962   [003]    29.706501: call_function_single_entry: vector=251
> >          hackbench-962   [003]    29.706502: call_function_single_exit: vector=251
> >          hackbench-955   [003]    29.706521: call_function_single_entry: vector=251
> >          hackbench-955   [003]    29.706522: call_function_single_exit: vector=251
> >             <idle>-0     [003]    30.101812: call_function_single_entry: vector=251
> >             <idle>-0     [003]    30.101814: call_function_single_exit: vector=251
> >             <idle>-0     [003]    30.101897: call_function_single_entry: vector=251
> >             <idle>-0     [003]    30.101898: call_function_single_exit: vector=251
> >             <idle>-0     [003]    30.101985: call_function_single_entry: vector=251
> >             <idle>-0     [003]    30.101986: call_function_single_exit: vector=251
> >             <idle>-0     [003]    30.102072: call_function_single_entry: vector=251
> >             <idle>-0     [003]    30.102072: call_function_single_exit: vector=251
> >             <idle>-0     [003]    30.102161: call_function_single_entry: vector=251
> >             <idle>-0     [003]    30.102161: call_function_single_exit: vector=251
> >             <idle>-0     [003]    30.102250: call_function_single_entry: vector=251
> >             <idle>-0     [003]    30.102251: call_function_single_exit: vector=251
> >             <idle>-0     [003]    30.102372: call_function_single_entry: vector=251
> >             <idle>-0     [003]    30.102372: call_function_single_exit: vector=251
> >
> >
> >   CPU 0 is empty
> >   CPU 1 is empty
> >   CPU 2 is empty
> >   cpus=4
> >           <idle>-0     [003]  1067.718304: call_function_single_entry: vector=251
> >           <idle>-0     [003]  1067.718309: call_function_single_exit: vector=251
> >
> > and that behaves the same as
> >
> >   trace-cmd record -e 'call_function*' -f 'CPU == 3' hackbench
> >
> Thanks, # trace-cmd record -e 'ipi' -f 'CPU==10 || CPU==11' -f
> 'reason=="Function call interrupts"' works:
> CPU0 data recorded at offset=0x336000
>     0 bytes in size
> CPU1 data recorded at offset=0x336000
>     0 bytes in size
> CPU2 data recorded at offset=0x336000
>     0 bytes in size
> CPU3 data recorded at offset=0x336000
>     0 bytes in size
> CPU4 data recorded at offset=0x336000
>     0 bytes in size
> CPU5 data recorded at offset=0x336000
>     0 bytes in size
> CPU6 data recorded at offset=0x336000
>     0 bytes in size
> CPU7 data recorded at offset=0x336000
>     0 bytes in size
> CPU8 data recorded at offset=0x336000
>     0 bytes in size
> CPU9 data recorded at offset=0x336000
>     0 bytes in size
> CPU10 data recorded at offset=0x336000
>     4096 bytes in size
> CPU11 data recorded at offset=0x337000
>     4096 bytes in size
>
> # trace-cmd report
> CPU 0 is empty
> CPU 1 is empty
> CPU 2 is empty
> CPU 3 is empty
> CPU 4 is empty
> CPU 5 is empty
> CPU 6 is empty
> CPU 7 is empty
> CPU 8 is empty
> CPU 9 is empty
> cpus=12
>           insmod-8519  [010] 170847.580062: ipi_raise:
> target_mask=00000000,00000bff (Function call interrupts)
>           <idle>-0     [011] 170847.580070: ipi_entry:
> (Function call interrupts)
>           <idle>-0     [011] 170847.580071: ipi_exit:
> (Function call interrupts)
>           insmod-8519  [010] 170847.580078: ipi_raise:
> target_mask=00000000,00000bff (Function call interrupts)
>           <idle>-0     [011] 170847.580080: ipi_entry:
> (Function call interrupts)
>           <idle>-0     [011] 170847.580080: ipi_exit:
> (Function call interrupts)
>           insmod-8519  [010] 170847.580282: ipi_raise:
> target_mask=00000000,00000002 (Function call interrupts)
>           insmod-8519  [010] 170847.580329: ipi_raise:
> target_mask=00000000,00000800 (Function call interrupts)
>           <idle>-0     [011] 170847.580331: ipi_entry:
> (Function call interrupts)
>           <idle>-0     [011] 170847.580343: ipi_exit:
> (Function call interrupts)
>
> BTW: where does 12 come from in 'cpus=12' :-)

Hmmm, please ignore the BTW, it should be the cpu total number in the system...

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ