* Toggle perf stat on/off periodically and keep each sample
@ 2024-10-16 1:28 Fengkai Sun
2024-10-17 22:26 ` Namhyung Kim
0 siblings, 1 reply; 4+ messages in thread
From: Fengkai Sun @ 2024-10-16 1:28 UTC (permalink / raw)
To: linux-perf-users
Hi all,
I've been using control fd and delay=-1 to toggle perf stat on until a
certain point of the program, and it works like a charm.
Now, I want to do this periodically and keep all the results.
Specifically, I have a performance-critical network program that reads
the packets in batches and processes them, and I want to record the
hardware counters on each batch, for future comparison.
Intuitively, this requires two functionalities I have no idea how to achieve:
1. The ability to zero out all recorded counters when the current
sample is finished and
2. The ability to keep individual samples, instead of outputting a
single overall result when the process finishes.
I'm wondering if this can be achieved under current version of perf,
and if such recording makes sense (e.g., does not incur too much
overhead). Thank you!
Thanks,
Fengkai
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Toggle perf stat on/off periodically and keep each sample
2024-10-16 1:28 Toggle perf stat on/off periodically and keep each sample Fengkai Sun
@ 2024-10-17 22:26 ` Namhyung Kim
2024-10-18 14:19 ` Fengkai Sun
0 siblings, 1 reply; 4+ messages in thread
From: Namhyung Kim @ 2024-10-17 22:26 UTC (permalink / raw)
To: Fengkai Sun; +Cc: linux-perf-users
Hello,
On Wed, Oct 16, 2024 at 09:28:33AM +0800, Fengkai Sun wrote:
> Hi all,
>
> I've been using control fd and delay=-1 to toggle perf stat on until a
> certain point of the program, and it works like a charm.
>
> Now, I want to do this periodically and keep all the results.
> Specifically, I have a performance-critical network program that reads
> the packets in batches and processes them, and I want to record the
> hardware counters on each batch, for future comparison.
>
> Intuitively, this requires two functionalities I have no idea how to achieve:
>
> 1. The ability to zero out all recorded counters when the current
> sample is finished and
> 2. The ability to keep individual samples, instead of outputting a
> single overall result when the process finishes.
>
> I'm wondering if this can be achieved under current version of perf,
> and if such recording makes sense (e.g., does not incur too much
> overhead). Thank you!
I think you are looking for something like interval mode like -I 1000.
$ sudo perf stat -a -I 1000 -e cycles,instructions sleep 5
# time counts unit events
1.001064439 644,313,943 cycles
1.001064439 548,175,426 instructions # 0.85 insn per cycle
2.002682133 570,454,723 cycles
2.002682133 426,891,566 instructions # 0.75 insn per cycle
3.004412672 565,162,161 cycles
3.004412672 351,875,655 instructions # 0.62 insn per cycle
4.006131920 463,748,461 cycles
4.006131920 239,702,866 instructions # 0.52 insn per cycle
5.001878221 466,409,911 cycles
5.001878221 235,684,130 instructions # 0.51 insn per cycle
Of course it doesn't turn the events on and off. But is it something
similar to what you want?
Thanks,
Namhyung
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Toggle perf stat on/off periodically and keep each sample
2024-10-17 22:26 ` Namhyung Kim
@ 2024-10-18 14:19 ` Fengkai Sun
2024-10-18 16:08 ` Ian Rogers
0 siblings, 1 reply; 4+ messages in thread
From: Fengkai Sun @ 2024-10-18 14:19 UTC (permalink / raw)
To: Namhyung Kim; +Cc: linux-perf-users
Hello Namhyung, thank you very much for your reply!
On Fri, Oct 18, 2024 at 6:26 AM Namhyung Kim <namhyung@kernel.org> wrote:
>
> I think you are looking for something like interval mode like -I 1000.
>
> $ sudo perf stat -a -I 1000 -e cycles,instructions sleep 5
> # time counts unit events
> 1.001064439 644,313,943 cycles
> 1.001064439 548,175,426 instructions # 0.85 insn per cycle
> 2.002682133 570,454,723 cycles
> 2.002682133 426,891,566 instructions # 0.75 insn per cycle
> 3.004412672 565,162,161 cycles
> 3.004412672 351,875,655 instructions # 0.62 insn per cycle
> 4.006131920 463,748,461 cycles
> 4.006131920 239,702,866 instructions # 0.52 insn per cycle
> 5.001878221 466,409,911 cycles
> 5.001878221 235,684,130 instructions # 0.51 insn per cycle
>
> Of course it doesn't turn the events on and off. But is it something
> similar to what you want?
>
> Thanks,
> Namhyung
>
Yes, this is similar to what I want. Of course, I want the interval to
be variable and can be set from the user program. I guess this cannot
be achieved by current perf, right?
---
Thanks,
Fengkai
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Toggle perf stat on/off periodically and keep each sample
2024-10-18 14:19 ` Fengkai Sun
@ 2024-10-18 16:08 ` Ian Rogers
0 siblings, 0 replies; 4+ messages in thread
From: Ian Rogers @ 2024-10-18 16:08 UTC (permalink / raw)
To: Fengkai Sun; +Cc: Namhyung Kim, linux-perf-users
On Fri, Oct 18, 2024 at 7:19 AM Fengkai Sun <qcloud1014@gmail.com> wrote:
>
> Hello Namhyung, thank you very much for your reply!
>
> On Fri, Oct 18, 2024 at 6:26 AM Namhyung Kim <namhyung@kernel.org> wrote:
> >
> > I think you are looking for something like interval mode like -I 1000.
> >
> > $ sudo perf stat -a -I 1000 -e cycles,instructions sleep 5
> > # time counts unit events
> > 1.001064439 644,313,943 cycles
> > 1.001064439 548,175,426 instructions # 0.85 insn per cycle
> > 2.002682133 570,454,723 cycles
> > 2.002682133 426,891,566 instructions # 0.75 insn per cycle
> > 3.004412672 565,162,161 cycles
> > 3.004412672 351,875,655 instructions # 0.62 insn per cycle
> > 4.006131920 463,748,461 cycles
> > 4.006131920 239,702,866 instructions # 0.52 insn per cycle
> > 5.001878221 466,409,911 cycles
> > 5.001878221 235,684,130 instructions # 0.51 insn per cycle
> >
> > Of course it doesn't turn the events on and off. But is it something
> > similar to what you want?
> >
> > Thanks,
> > Namhyung
> >
>
> Yes, this is similar to what I want. Of course, I want the interval to
> be variable and can be set from the user program. I guess this cannot
> be achieved by current perf, right?
You could gather more data than you need and discard the ones you
don't? There's a json output to perf stat that may be useful for
scripting on top of this.
Fwiw, in the future writing python code to do this kind of thing
should be more straightforward:
https://lore.kernel.org/lkml/20241016042415.7552-17-irogers@google.com/
Thanks,
Ian
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-10-18 16:09 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-16 1:28 Toggle perf stat on/off periodically and keep each sample Fengkai Sun
2024-10-17 22:26 ` Namhyung Kim
2024-10-18 14:19 ` Fengkai Sun
2024-10-18 16:08 ` Ian Rogers
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.