From: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@elte.hu>,
Peter Zijlstra <peterz@infradead.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
Steven Rostedt <rostedt@goodmis.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 4/4] perf/timer: 'perf timer' core code
Date: Thu, 17 Dec 2009 15:26:05 +0800 [thread overview]
Message-ID: <4B29DD0D.2060801@cn.fujitsu.com> (raw)
In-Reply-To: <alpine.LFD.2.00.0912161629460.2755@localhost.localdomain>
Hi Thomas,
Thomas Gleixner wrote:
>
> Nothing to be sorry about. That's why we review code.
>
Thanks.
>> Um, but not every timer has it's owner task, for example, if we start
>> a timer in interrupt handle function, this timer in not owns any tasks.
>> And itimer is started by userspace task so we can get it's owner, that
>> why i print hex address for timer/hrtimer, and print task name for itimer.
>
> Well, lot's of timers have an owner task. At least all user space
> related ones. And if the timer is rearmed in interrupt context, then
> this does not change the owner at all.
>
Sorry, i'm confused, for example, has below sequence:
Task1 running----->| (interrupt)
|------------- start timerT(start timerT in interrupt handler)
......
( After a while, schedule to another task, and interruption coming )
......
Task2 running----->| (interrupt)
|------------- start timerT again
Then, which task is the timerT owner?
Am I missed something?
>>> How should that work ?
>>>
>> We put/get timer in a rb-tree base on the specify order, for example:
>> we default use this order:
>>
>> sort_dimension__add("timer", &default_cmp);
>> sort_dimension__add("itimer-type", &default_cmp);
>>
>> if timer_info->timer is bigger, we put it to left child, littler to right
>> child, if the timer_info->timer is the same, then we compare
>> timer_info->itimer_type.
>
> Hmm, I wonder whether a hash table would be more efficient for the
> recording side.
>
Um. i'll record it address your way.
>
>> We search timer base on timer_info->timer and
>> timer_info->itimer_type(not timer_info->type), if we find the
>> timer's type is changed(for example, the timer is "ITIMER" before,
>> and change to "HRTIMER" later), is should a bug. this case is hardly
>> to happen but should catch it.
>
> No, it's not a bug at all. You _can_ have a hrtimer and a timer_list
> timer at the same address in a trace. There are two ways to make that
> happen:
>
> 1) kmalloc'ed memory contains a timer_list. timer operation is done,
> memory is kfreed. Now another kmalloc gets the just freed memory
> and has a hrtimer at the same address which was used by the
> timer_list before.
>
> 2) timer_list and hrtimer are also allocated on stack. There is no
> guarantee that they are at different addresses.
>
Yeah, my mistake.
> Simply because the macro hides the fact that this is an assignment of
> a value to a variable. That makes the code harder to read.
>
> FILLL_RAW_FIELD_VALUE(event, value_sec, data);
> vs.
> value_sec = get_value(data, event, "value_sec");
>
> The latter is fast to parse and entirely clear.
>
Yeah.
> Btw, you agreed above that the open coded call of raw_field_value()
> is clearer than the macro magic. :)
>
Sorry, i misunderstand your mean before.
Thanks,
Xiao
next prev parent reply other threads:[~2009-12-17 7:27 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-15 11:17 [PATCH 0/4] perf_event: introduce 'perf timer' to analyze timer's behavior Xiao Guangrong
2009-12-15 11:19 ` [PATCH 1/4] trace_event: record task' real_timer in itimer_state tracepoint Xiao Guangrong
2009-12-15 11:20 ` [PATCH 2/4] perf_event: fix getting point Xiao Guangrong
2009-12-15 11:21 ` [PATCH 3/4] perf/timer: add document Xiao Guangrong
2009-12-15 11:22 ` [PATCH 4/4] perf/timer: 'perf timer' core code Xiao Guangrong
2009-12-15 17:44 ` Thomas Gleixner
2009-12-16 5:56 ` Xiao Guangrong
2009-12-16 15:59 ` Thomas Gleixner
2009-12-17 7:26 ` Xiao Guangrong [this message]
2009-12-15 13:58 ` [PATCH 2/4] perf_event: fix getting point Frederic Weisbecker
2009-12-16 1:03 ` Xiao Guangrong
2009-12-16 1:22 ` Frederic Weisbecker
2009-12-16 1:32 ` Xiao Guangrong
2009-12-15 14:15 ` [PATCH 0/4] perf_event: introduce 'perf timer' to analyze timer's behavior Frederic Weisbecker
2009-12-16 1:19 ` Xiao Guangrong
2009-12-16 7:32 ` Ingo Molnar
2009-12-16 7:40 ` Xiao Guangrong
2009-12-16 7:46 ` Ingo Molnar
2009-12-15 14:23 ` Frederic Weisbecker
2009-12-22 13:00 ` [PATCH v2 0/5] " Xiao Guangrong
2009-12-22 13:01 ` [PATCH v2 1/5] perf_event: fix getting point Xiao Guangrong
2009-12-22 13:03 ` [PATCH v2 2/5]: trace_event: export HZ in timer's tracepoint format Xiao Guangrong
2009-12-22 13:20 ` Xiao Guangrong
2009-12-28 7:54 ` Ingo Molnar
2009-12-28 10:40 ` Xiao Guangrong
2009-12-29 5:20 ` [PATCH v3 0/5] perf tools: introduce 'perf timer' to analyze timer's behavior Xiao Guangrong
2009-12-29 5:21 ` [PATCH v3 1/5] perf_event: introduce 'inject' event and get HZ Xiao Guangrong
2009-12-30 9:19 ` Peter Zijlstra
2009-12-30 9:28 ` Ingo Molnar
2009-12-30 9:36 ` Peter Zijlstra
2009-12-30 9:44 ` Ingo Molnar
2009-12-30 10:06 ` Peter Zijlstra
2009-12-30 11:30 ` Ingo Molnar
2009-12-30 9:37 ` Xiao Guangrong
2009-12-30 9:45 ` Peter Zijlstra
2009-12-29 5:21 ` [PATCH v3 2/5] trace_event: record task' real_timer in itimer_state tracepoint Xiao Guangrong
2009-12-29 5:21 ` [PATCH v3 3/5] perf tools: fix getting point Xiao Guangrong
2009-12-29 5:21 ` [PATCH v3 4/5] perf timer: add document for 'perf timer' Xiao Guangrong
2009-12-29 5:22 ` [PATCH v3 5/5] perf timer: add 'perf timer' core code Xiao Guangrong
2009-12-22 13:04 ` [PATCH v2 3/5] trace_event: record task' real_timer in itimer_state tracepoint Xiao Guangrong
2009-12-22 13:06 ` [PATCH v2 4/5] perf/timer: add document for 'perf timer' Xiao Guangrong
2009-12-22 13:08 ` [PATCH v2 5/5] perf/timer: add 'perf timer' core code Xiao Guangrong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4B29DD0D.2060801@cn.fujitsu.com \
--to=xiaoguangrong@cn.fujitsu.com \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.