From: Ralf Roesch <ralf.roesch@rw-gmbh.de>
To: Wu Zhangjin <wuzhangjin@gmail.com>
Cc: Ralf Baechle <ralf@linux-mips.org>,
David Daney <ddaney@caviumnetworks.com>,
linux-mips@linux-mips.org
Subject: Re: [PATCH v3 0/3] add high resolution sched_clock() for MIPS
Date: Sat, 10 Apr 2010 12:55:09 +0200 [thread overview]
Message-ID: <4BC0590D.5080305@rw-gmbh.de> (raw)
In-Reply-To: <cover.1270881177.git.wuzhangjin@gmail.com>
I applied your patch set against tip/rt/2.6.33 (kernel.org) and it works
fine on our TX4938 based Fieldbuscontroller which uses the r4k-based
timer clocksource. Thanks!
(32bit version)
tested-by: Ralf Roesch <ralf.roesch@rw-gmbh.de>
On Sat Apr 10 2010 08:49:56 GMT+0200 (CET), Wu Zhangjin
<wuzhangjin@gmail.com> wrote:
> From: Wu Zhangjin<wuzhangjin@gmail.com>
>
> Hi, Ralf, hi David.
>
> I have tested it again in the 32bit and 64bit kernel on a Yeeloong netbook,
> both of them work well. so, it should be applicable now.
>
> BTW:
>
> to David, if the first two patches are ok for you, could you give a
> "Acked-by:"? thanks!
>
> to Ralf Rösch, does this 32bit version work for you? If yes, welcome your
> tested-by:, thanks ;)
>
> ----------------
>
> Changes:
>
> v2 -> v3:
>
> o remove the 'easy way' of 128bit arithmatic of mips_cyc2ns().
> o use 32bit type instead of 64bit for the input arguments(mult and shift) as
> the 'struct clocksource' does.
> o use a smaller scaling factor: 8, with this factor, if the clock frequency
> is 400MHz, it will overflow after about 521 days.
>
> v1 -> v2:
>
> o Adds 32bit support, using a smaller scaling factor(shift) to avoid 128bit
> arithmatic, of course, it loses some precision.
>
> o Adds the testing results of the overhead of sched_clock() in 64bit kernel
>
> Clock func/overhead(ns) Min Avg Max Jitter Std.Dev.
> ----------------------------------------------
> sched_clock(cnt32_to_63) 105 116.2 236 131 9.5
> getnstimeofday() 160 167.1 437 277 15
> ----------------------------------------------
>
> As we can see, the cnt32_to_63() based sched_clock() have lower overhead.
>
> ----------------
>
> This patchset adds a high resolution version of sched_clock() for the r4k MIPS.
>
> The generic sched_clock() is jiffies based and has very bad resolution(1ms with
> HZ set as 1000), this one is based on the r4k c0 count, the resolution reaches
> about several ns(2.5ns with 400M clock frequency).
>
> To cope with the overflow problem of the 32bit c0 count, based on the
> cnt32_to_63() method in include/linux/cnt32_to_63.h. we have converted the
> 32bit counter to a virtual 63bit counter.
>
> And to fix the overflow problem of the 64bit arithmatic(cycles * mult) in 64bit
> kernel, we use the 128bit arithmatic contributed by David, but for 32bit
> kernel, to balance the overhead of 128bit arithmatic and the precision lost, we
> choose the method used in X86(arch/x86/kernel/tsc.c) and
> ARM(arch/arm/plat-orion/time.c): just use a smaller scaling factor and do 64bit
> arithmatic, of course, it will also overflow but not that quickly.
>
> Regards,
> Wu Zhangjin
>
> Wu Zhangjin (3):
> MIPS: add a common mips_cyc2ns()
> MIPS: cavium-octeon: rewrite the sched_clock() based on mips_cyc2ns()
> MIPS: r4k: Add a high resolution sched_clock()
>
> arch/mips/Kconfig | 12 +++++
> arch/mips/cavium-octeon/csrc-octeon.c | 29 +------------
> arch/mips/include/asm/time.h | 34 +++++++++++++++
> arch/mips/kernel/csrc-r4k.c | 76 +++++++++++++++++++++++++++++++++
> arch/mips/kernel/time.c | 5 ++
> 5 files changed, 129 insertions(+), 27 deletions(-)
>
>
prev parent reply other threads:[~2010-04-10 10:55 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-10 6:49 [PATCH v3 0/3] add high resolution sched_clock() for MIPS Wu Zhangjin
2010-04-10 6:49 ` [PATCH v3 1/3] MIPS: add a common mips_cyc2ns() Wu Zhangjin
2010-04-10 6:49 ` [PATCH v3 2/3] MIPS: cavium-octeon: rewrite the sched_clock() based on mips_cyc2ns() Wu Zhangjin
2010-04-10 6:49 ` [PATCH v3 3/3] MIPS: r4k: Add a high resolution sched_clock() Wu Zhangjin
2010-04-10 10:55 ` Ralf Roesch [this message]
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=4BC0590D.5080305@rw-gmbh.de \
--to=ralf.roesch@rw-gmbh.de \
--cc=ddaney@caviumnetworks.com \
--cc=linux-mips@linux-mips.org \
--cc=ralf@linux-mips.org \
--cc=wuzhangjin@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox