[LLVMdev] Use perf tool for more accurate time measuring on Linux

Yi Kong kongy.dev at gmail.com
Tue May 20 07:01:28 PDT 2014


I've set up a public LNT server to show the result of perf stat. There
is a huge improvement compared with timeit tool.
http://parkas16.inria.fr:8000/

Patch is updated to pin the process to a single core, the readings are
even more accurate. It's hard coded to run everything on core 0, so
don't run parallel testing with it for now. The tool now depends on
Linux perf and schedtool.

I'm running tests on ARM Cortex boards to verify the improvements.
Please also check if this works on your system.

Thanks,
Yi

On 16 May 2014 20:51, Chandler Carruth <chandlerc at google.com> wrote:
>
> On Fri, May 16, 2014 at 12:45 PM, Yi Kong <kongy.dev at gmail.com> wrote:
>>
>> On 16 May 2014 18:40, "Chandler Carruth" <chandlerc at google.com> wrote:
>> >
>> > Why not use the cycle count which perf exposes from hardware? That would
>> > seem even better to me, but data would be better. =]
>>
>> That's an interesting idea. However I'm concerned if that will miss some
>> aspects of compiler optimization. For example frequent cache misses would
>> have much smaller impact on the result if the processor goes to lower
>> frequency during the stall period. Nonetheless it's definitely worth to try
>> out.
>
> Sure, but we should disable frequency throttling on any machine from which
> we want numbers that look *remotely* stable.
>
> The other thing you might try doing while you're wrapping these tools is to
> use schedtool to pin the process to a single core. On most modern x86
> machines you can see 2-3% swing in lots of small details, and when the
> process migrates between cores this makes the numbers very hard to analyze.



More information about the llvm-dev mailing list