Re: Performance problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



My code uses also rusage - second most accurate source of timing I
found on linux.
It the same as used by time command line tool.

Lukasz

On Mon, Sep 22, 2008 at 07:57, Christophe Meessen <meessen@xxxxxxxxxxxxx> wrote:
> John Fine a écrit :
>>
>> I was curious, so I tried running your benchmark.  It was too fast for
>> meaningful results, so I increased the counts int the calls to
>> simple_playout_benchmark::run and I noticed some negative and generally
>> unstable values for "clock cycles per playout".
>>
>> So your code:
>>
>>  uint64 get_cc_time () volatile {
>>   uint64 ret;
>>   __asm__ __volatile__("rdtsc" : "=A" (ret) : :);
>>   return ret;
>>  }
>>
>> gives me values that aren't even monotonic.
>
> According to http://en.wikipedia.org/wiki/RDTSC
>
> "With the advent of multi-core/hyperthreaded CPUs, systems with multiple
> CPUs, and "hibernating" operating systems
> <http://en.wikipedia.org/wiki/Operating_system>, the TSC cannot be relied on
> to provide accurate results. The issue has two components: rate of tick and
> whether all cores (processors) have identical values in their time-keeping
> registers. There is no promise that the timestamp counters of multiple CPUs
> on a single motherboard will be synchronized. In such cases, programmers can
> only get reliable results by locking their code to a single CPU. Even then,
> the CPU speed may change due to power-saving measures taken by the OS or
> BIOS <http://en.wikipedia.org/wiki/BIOS>, or the system may be hibernated
> and later resumed (resetting the time stamp counter). Reliance on the time
> stamp counter also reduces portability, as other processors my not have a
> similar feature. Recent Intel processors include a constant rate TSC
> (identified by the constant_tsc flag in Linux's /proc/cpuinfo). With these
> processors the TSC reads at the processors maximum rate regardless of the
> actual CPU running rate. While this makes time keeping more consistent, it
> can skew benchmarks, where a certain amount of spin-up time is spent at a
> lower clock rate before the OS switches the processor to the higher rate.
> This has the effect of making things seem like they require more processor
> cycles than they normally would."
>
>


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux