[Darshan-users] Darshan pre-release 2.2.4-pre4

Phil Carns carns at mcs.anl.gov
Tue Nov 20 12:11:58 CST 2012


On 11/20/2012 12:05 PM, Rob Latham wrote:
> On Tue, Nov 20, 2012 at 11:55:52AM -0500, Phil Carns wrote:
>> darshan-2.2.4-pre4
>> =============
>> * Disable extra stat() of newly opened files by default in order
>>    to improve performance on shared files.  Reported by Yushu Yao.
>>    - prevents Darshan from reporting SIZE_AT_OPEN, FILE_ALIGNENT, and
>>      DARSHAN_FILE_NOT_ALIGNED values
>>    - features can still be enabled via --enable-stat-at-open option
> Hi Phil.  FILE_ALIGNENT is maybe one of the most important metrics for
> understanding poor GPFS write performance.
>
> ==rob
>

Hi Rob,

Rob Ross was concerned about this too.  So on GPFS systems we should be 
able to keep using stat() like we always have and collect the file 
alignment information (I'll be doing some tests next week to confirm).  
On Lustre (and other file systems) I'm not sure what to do.  stat() is 
the only sure-fire way to detect the file alignment, but it ends up 
being very costly because to answer a stat() the kernel also has to 
calculate the file size, which in turn requires contacting all servers 
and therefore generates quite a bit of overhead if every process does it 
simultaneously.  The xstat() system call would probably solve the 
problem, but it isn't widely available.

I know of at least two possible workarounds, though neither one is great:

a) If we detect that a file is being opened collectively at the MPI-IO 
(or higher) level, then rank 0 could issue a stat() on behalf of all 
processes and broadcast the result.  We would still have to skip the 
stat in other cases though, because without seeing a collective call we 
don't have any way to know how many ranks might open the file.  Its also 
unfortunate that we would have to broadcast the stat result, since as a 
rule we've generally avoided instigating communication within Darshan 
while the application is running.  If we defer aggregating the alignment 
until shutdown then the other N-1 processes wouldn't be able to count 
the number of unaligned accesses.

b) We could use stat() information collected from the mount point when 
Darshan starts up.  The problem with that approach is that the caller 
could always change the striping parameters for a file or directory so 
that they no longer match the mount point settings.  I would be nervous 
about mis-reporting an alignment problem if the application were using 
custom file settings.  If we went this route I would at least want to 
somehow note in the log whether the alignment data is reliable or if it 
is an estimate.

-Phil


More information about the Darshan-users mailing list