[Pvfs2-developers] Small I/O - Write response doesn't fill in total_completed

Sam Lang slang at mcs.anl.gov
Thu Feb 23 12:12:09 EST 2006


On Feb 22, 2006, at 7:46 PM, Avery Ching wrote:

> Hi guys.  I'm sending you guys a link for a somewhat complex I/O
> benchmark I wrote for doing all kinds of noncontiguous I/O through
> MPI-IO.  It's called HPIO and does all kinds of weird tests.   
> Anyway, it
> is really overkill for this small I/O bug, but the nice thing is  
> that I
> have a verify mode which allows me check what values the writes and
> reads are against the actual buffer read/written to.
>
> Okay, there is a README in the top level directory, but basically, you
> just need to change the Makefile to point to your MPICH2 install
> (compiled against PVFS2), compile, and then run a very simple  
> mem=contig
> to file=contig test (512 bytes).
>
> Basically, you can run something like
>
> mpiexec -n 1 ./hpio-debug -t 10 -m 1 -n 1000  -v 1 -c 1 -d
> pvfs2:/mnt/pvfs2
>

I get the following when I run the above command:

#################### Experimental Settings #################
procs                            = 1
dir                              = pvfs2:/home/slang/pvfs2.mnt/
default: region count            = 1
default: region size             = 512
default: region spacing          = 16
reps                             = 1
rep maximum time (secs)          = 600.000000
average method                   = 0
test: region_count               = 0
test: region_size                = 1
test: region_spacing             = 0
(M) Contig      | (F) Contig     = 1
(M) NonContig   | (F) Contig     = 0
(M) Contig      | (F) NonContig  = 0
(M) NonContig   | (F) NonContig  = 0
posix I/O                        = 0
data sieving I/O                 = 0
two phase I/O                    = 0
list I/O                         = 0
datatype I/O                     = 1
rw: WRITE                        = 1
rw: READ                         = 0
verify                           = 1
minimum parameter value          = 0
enable fsync                     = 0
fsync method                     = posix
enable cache                     = 0
cache size (MBytes)              = 2048
settle time (secs between runs)  = 0
calculate space                  = 0
total data accessed              = 512 bytes - 0.000488 MBytes
total data extent                = 528 bytes - 0.000504 MBytes
############################################################

write | region_size | c-c | datatype
----------------time (seconds)--------------|-bandwidth (MB/s)|--- 
test type---
   open  |   io   |  sync  | close  | total  |   IO   |  IOsyn |  
region_size
   0.073 |  0.002 |  0.000 |  0.000 |  0.075 |  0.211 |  0.210 | 512
   0.038 |  0.002 |  0.000 |  0.000 |  0.040 |  0.409 |  0.408 | 1024
   0.045 |  0.002 |  0.000 |  0.000 |  0.048 |  0.809 |  0.806 | 2048

--

I assume this means it completed successfully?  How many pvfs2- 
servers do you have running?

-sam

> And it will error with
>
> count=0,elements=0
> region_count=1,region_size=512
> Which means that the status reported count=0, elements=0 from the  
> write
> operation.  If we look at the ad_pvfs2_write.c code we see that  
> this is
> set in the line
>
> MPIR_Status_set_bytes(status, datatype, (int)resp_io.total_completed);
>
> And when I further look at the resp struct, the total_completed=0,
> (instead of what it should be (512)).
>
> This seems to only happen during the small I/O case.  When it's normal
> I/O, the total_completed seems to be set correctly.  To further verify
> this, if you run the test without the -d option (use UFS instead of
> PVFS2)
>
> mpiexec -n 1 ./hpio-debug -t 10 -m 1 -n 1000  -v 1 -c 1
>
> it will complete (and verify the buffer) since the status is set
> correctly when using a UFS.
>
> Anyway, grab the benchmark from
>
> http://www.ece.northwestern.edu/~aching/hpio.0.9.tar.gz
>
> Let me know how else I can help.
>
> Avery
>
> On Wed, 2006-02-22 at 17:14 -0600, Rob Ross wrote:
>> nevermind - i'm not reading carefully. -- rob
>>
>> Robert Latham wrote:
>>> On Wed, Feb 22, 2006 at 03:22:35PM -0600, Avery Ching wrote:
>>>> Sure.  I'm actually have a single client just doing a small  
>>>> contiguous
>>>> write of 50 bytes.  But I think it occurs for pretty much any  
>>>> small I/O
>>>> operation I do.  It seems to happen with any amount of PVFS2  
>>>> servers.
>>>> Both the memory request and file request structures are contig I  
>>>> think.
>>>> The total_completed isn't filled in during the write.  I think it
>>>> happens also during the read (althought I'm not quite sure on  
>>>> that).
>>>> I'm using the HEAD CVS version, (just did an update this morning).
>>>
>>> Avery,
>>>
>>> can you send me your benchmark?  One of our nightly tests is a
>>> noncontiguous benchmark that writes small little 2k pieces out to a
>>> file exercising {noncontig,contig} in {memory,file}, and that  
>>> test has
>>> been passing for a while now (since we fixed the immediate  
>>> completion
>>> for zero-length io case).
>>>
>>> If you've found a bug, we'll have to beef up our noncontiguous and
>>> small i/o test cases.
>>>
>>> ==rob
>>>
>



More information about the Pvfs2-developers mailing list