All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
To: "Li, Tong N" <tong.n.li@intel.com>
Cc: Andi Kleen <andi@firstfloor.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Alexey Dobriyan <adobriyan@gmail.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [patch 10/10] *Tests* Scheduler profiling - Use immediate values
Date: Wed, 11 Jul 2007 01:02:38 -0400	[thread overview]
Message-ID: <20070711050238.GC4025@Krystal> (raw)
In-Reply-To: <5FD5754DDBA0B1499B5A0B4BB5419485015CCB91@fmsmsx411.amr.corp.intel.com>

Hi,

* Li, Tong N (tong.n.li@intel.com) wrote:
> Mathieu,
> 
> > 	cycles_per_iter = 0.0;
> > 	for (i=0; i<NR_TESTS; i++) {
> > 		time1 = get_cycles();
> > 		for (j = 0; j < NR_ITER; j++) {
> > 			testval = &array[random() % ARRAY_SIZE];
> > 		}
> > 		time2 = get_cycles();
> > 		cycles_per_iter += (time2 - time1)/(double)NR_ITER;
> > 	}
> > 	cycles_per_iter /= (double)NR_TESTS;
> > 	printf("Just getting the pointer, doing noting with it, cycles
> per
> > iteration (mean) : %g\n", cycles_per_iter);
> > 
> 
> Some comments on the code:
> 
> 1. random() is counted in cycle_per_iter, which can skew the results.
> You could pre-compute the random addresses and store them in an array.
> Then, during the actual timing, walk the array:
> 
> index = 0;
> for (i = 0; i < ARRAY_SIZE; i++)
>       index = *(int *)(array + index * CACHE_LINE_SIZE);
> 
> 2. You may want to flush the cache before the timing starts.
> 
> 3. You want to access memory at the cache-line granularity to avoid
> addresses falling into the same line (and thus unwanted hits).
> 

This is true, my test code was not perfect. Thanks for the hints.
The improvements you propose will clearly accelerate my test program
quite a bit, but I doubt that it will cause even higher memory
latencies. Although using a random() at each memory access is slow, it
should give a good enough dispersion. And since do 3 cache trashing
passes in my code, I make sure that each and every cache lines are
trashed. In fact, since I do multiple accesses to each cache line (as
you noted in point 3), it takes more time, but makes it more certain
that I hit all of them at least once.

> If you do these, I expect you'll get a higher memory latency.
> 

I will use these comments in my next tests, thanks. :) However, I still
feel confident that the numbers I got from my run still hold.

Mathieu

>   tong
> 

-- 
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68

  reply	other threads:[~2007-07-11  5:07 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-03 16:40 [patch 00/10] Immediate Values Mathieu Desnoyers
2007-07-03 16:40 ` [patch 01/10] Immediate values - Global modules list and module mutex Mathieu Desnoyers
2007-07-03 16:40 ` [patch 02/10] Immediate Value - Architecture Independent Code Mathieu Desnoyers
2007-07-03 16:40 ` [patch 03/10] Immediate Values - Non Optimized Architectures Mathieu Desnoyers
2007-07-03 16:40 ` [patch 04/10] Immediate Value - Add kconfig menus Mathieu Desnoyers
2007-07-03 16:40 ` [patch 05/10] Immediate Values - kprobe header fix Mathieu Desnoyers
2007-07-03 16:40 ` [patch 06/10] Immediate Value - i386 Optimization Mathieu Desnoyers
2007-07-03 18:45   ` H. Peter Anvin
2007-07-03 19:16     ` Mathieu Desnoyers
2007-07-03 20:18       ` H. Peter Anvin
2007-07-03 20:37         ` Chuck Ebbert
2007-07-03 21:30           ` H. Peter Anvin
2007-07-03 23:10           ` Jeremy Fitzhardinge
2007-07-03 20:43         ` Mathieu Desnoyers
2007-07-03 21:30           ` H. Peter Anvin
2007-07-03 16:40 ` [patch 07/10] Immediate Value - PowerPC Optimization Mathieu Desnoyers
2007-07-03 16:40 ` [patch 08/10] Immediate Value - Documentation Mathieu Desnoyers
2007-07-03 16:40 ` [patch 09/10] F00F bug fixup for i386 - use immediate values Mathieu Desnoyers
2007-07-04 20:43   ` Alexey Dobriyan
2007-07-03 16:40 ` [patch 10/10] Scheduler profiling - Use " Mathieu Desnoyers
2007-07-03 18:11   ` Alexey Dobriyan
2007-07-03 18:57     ` Mathieu Desnoyers
2007-07-04 14:23       ` Adrian Bunk
2007-07-04 20:31       ` Alexey Dobriyan
2007-07-05 20:21       ` Andrew Morton
2007-07-05 20:29         ` Andrew Morton
2007-07-05 20:41           ` Mathieu Desnoyers
2007-07-06 11:44         ` Andi Kleen
2007-07-06 17:50           ` Li, Tong N
2007-07-06 20:03             ` Andi Kleen
2007-07-06 20:57               ` Li, Tong N
2007-07-06 21:03                 ` Mathieu Desnoyers
2007-07-07  1:50             ` [patch 10/10] *Tests* " Mathieu Desnoyers
2007-07-07  6:08               ` Li, Tong N
2007-07-11  5:02                 ` Mathieu Desnoyers [this message]
2007-07-06 22:14           ` [patch 10/10] " Chuck Ebbert
2007-07-06 23:28             ` Adrian Bunk
2007-07-06 23:38               ` Dave Jones
2007-07-07  0:10                 ` Adrian Bunk
2007-07-07 15:45                   ` Frank Ch. Eigler
2007-07-07 17:01                     ` Adrian Bunk
2007-07-07 17:20                       ` Willy Tarreau
2007-07-07 17:59                         ` Adrian Bunk
2007-07-07 17:55                       ` Frank Ch. Eigler
2007-07-06 23:43               ` Mathieu Desnoyers
2007-07-07  2:25                 ` Adrian Bunk
2007-07-07  2:35                   ` Mathieu Desnoyers
2007-07-07  4:03                     ` Adrian Bunk
2007-07-07  5:02                       ` Willy Tarreau
2007-07-04 20:35   ` Alexey Dobriyan
2007-07-04 22:41     ` Andi Kleen

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=20070711050238.GC4025@Krystal \
    --to=mathieu.desnoyers@polymtl.ca \
    --cc=adobriyan@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tong.n.li@intel.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 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.