2004-03-10 11:19:22

by Ashwin Rao

[permalink] [raw]
Subject: inconsistent do_gettimeofday for copy_page

For calculating the time required to copy_page i tried
the do_gettimeofday for 1000 pages in a loop. But as
the number of pages changes the time required varies
non-linearly.
I also tried reading xtime and using monotonic_clock
but they didnt help either. For do_gettimeof day for a
single invocation of copy_page on a pentium 4 gave me
10 microsecs but when invoked for a 1000 pages the
time required was 750ns per page.
Is there some way of finding out the exact time
required for copying a page.

Ashwin

__________________________________
Do you Yahoo!?
Yahoo! Search - Find what you?re looking for faster
http://search.yahoo.com


2004-03-10 11:39:15

by Benjamin Herrenschmidt

[permalink] [raw]
Subject: Re: inconsistent do_gettimeofday for copy_page

On Wed, 2004-03-10 at 22:19, Ashwin Rao wrote:
> For calculating the time required to copy_page i tried
> the do_gettimeofday for 1000 pages in a loop. But as
> the number of pages changes the time required varies
> non-linearly.

That's expected, unless you have no cache ;) Then you also
have the TLB misses..

> I also tried reading xtime and using monotonic_clock
> but they didnt help either. For do_gettimeof day for a
> single invocation of copy_page on a pentium 4 gave me
> 10 microsecs but when invoked for a 1000 pages the
> time required was 750ns per page.
> Is there some way of finding out the exact time
> required for copying a page.

No. It depends mostly on cache effects and bus usage, though
you can probably get good approximation for both the cases
where everything is in the cache on both sides of the copy,
and when you are in the worst case scenario of cold cache
or larger copy than the cache.

Ben.


2004-03-10 12:20:32

by Richard B. Johnson

[permalink] [raw]
Subject: Re: inconsistent do_gettimeofday for copy_page

On Wed, 10 Mar 2004, Ashwin Rao wrote:

> For calculating the time required to copy_page i tried
> the do_gettimeofday for 1000 pages in a loop. But as
> the number of pages changes the time required varies
> non-linearly.
> I also tried reading xtime and using monotonic_clock
> but they didnt help either. For do_gettimeof day for a
> single invocation of copy_page on a pentium 4 gave me
> 10 microsecs but when invoked for a 1000 pages the
> time required was 750ns per page.
> Is there some way of finding out the exact time
> required for copying a page.
>
> Ashwin
>

`rdtsc` on Intel. Gets total CPU clocks. Of course, you will
get jitter unless you disable interrupts during the procedure
you are measuring.


Cheers,
Dick Johnson
Penguin : Linux version 2.4.24 on an i686 machine (797.90 BogoMips).
Note 96.31% of all statistics are fiction.