Re: [Gems-users] Cache Warming for Benchmarks


Date: Fri, 11 May 2007 08:32:50 -0400 (EDT)
From: Daniel Nussbaum - Sun Microsystems - Burlington United States <dan.nussbaum@xxxxxxx>
Subject: Re: [Gems-users] Cache Warming for Benchmarks
> Date: Thu, 10 May 2007 19:54:58 -0700 (PDT)
> From: James Wang <jameswang99@xxxxxxxxx>
> 
> Hi Dan:
>
>     It seems that we hit a register spill exception inside a open
>     transaction and then the processor never execute anything but
>     exceptions. I am wondering if you had similar situations or know
>     some way that we could avoid this situations.
>  
> Regards
> James
> 

I have seen similar behavior in the past, but this is a pretty common
pattern, so you'll need more information.  For example, this can
happen after you execute a system call inside an open transaction.
The question you first need to answer is what Solaris is doing to you.

Each of those exception-trace lines has a PC.  You can use "nm" to
tell you where in your program the first exception is coming from.
(This may not give you information that you don't already know.)

Exceptions can also be in dynamic library code or in kernel code.
Solaris puts the dynamic libraries in the high portion of the address
space (0xffffffffxxxxxxxx).  You can use "pmap" on a (simulated)
running process (after suspending it via ^Z) to find out where the
base addresses of each of those libraries is and then nm again to see
exactly which procedure you're in.

The kernel lives in the lower portion of the address space (starting
at 0x1000000).  Getting exact kernel addresses is difficult (since you
probably don't have the sources easily available, and even if you did,
navigating them could take months), but you can at least see the
symbolic names of the procs you're in by running (simulated) adb -k
and the '<addr>?'.  Those symbolic names contain a lot of information
-- the names themselves will tell you a lot about what's going on.

I'm telling you all this because knowing where the traps are coming
from is the first step in figuring out what's happening.  You might be
dumping core after some kind of unexpected exception, or you might
even be crashing solaris.

This whole processes is pretty laborious, but I've done it on a number
of occasions and it isn't so bad once you get used to it.

I hope this helps.

dann
[← Prev in Thread] Current Thread [Next in Thread→]