This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Proposed systemtap access to perfmon hardware


Stone, Joshua I wrote:

Maynard Johnson wrote:


William Cohen wrote:


The individual start and stop operations would be allowed.


This is not so good. Besides the fact that it may be difficult (or
impossible) to do, I don't see it being all that useful. But then,
I'm a tool developer, not a performance analyst, so I could be
missing the point.



Enabling start & stop lets you narrow the context that you want to measure. Perfmon can only give you thread level virtualization of the counters. With start & stop I can, for example, start the counters when I enter sys_open and stop when I return. Now if I want I can get a microbenchmark of IPC for the sys_open call (and its callees).

But this also opens up possibilities for more obscure "contexts" -
perhaps I want to start counting when a network packet is received and
stop when it is delivered to the thread. Any probepoint you can do
today can become a start/stop point for the counters.


Yes, I can certainly see this benefit. It gives you PAPI-level control without having to modify source code. My concern, however, was that if you have multiple counters configured, then individual control of them presents an extra level of difficulty. But, as I've been thinking about this a bit more, I think this could be done if you can guarantee that the operation is not preempted or interrupted. Then, the PMU can be disabled, reloaded with any changes, and then re-enabled. Then, any counters that had been running before the operation -- and that were not changed by the operation -- will be reloaded with their previous count and continue running from where they left off.

-Maynard


Josh





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]