Hi All,

I've implemented a new operation in pvfs2 that allows small I/O
(~16K) to be piggybacked on the initial request.  See the graph of
performance results for writes, generated with pvfs2-cp and 5 servers:

http://www-unix.mcs.anl.gov/~slang/small-io-writes.png

I noticed one of the big time-sinks on the server side is the
getattr, which takes almost a millisecond.  This was partly due to
the getattr call trying to fill in the size of the keyval db for the
datafile, which doesn't get cached since we don't actually create
keyvals for datafiles at present.  I was able to work around this by
just checking for the keyval file first, which improves things by
almost 1/2 millisec.

Another problem I noticed was that for each write the
dbpf-attr-cache entry was getting invalidated (since the bstream
size changes), and so the next write was causing another attribute
lookup in the db, instead of just getting the attr from the cache.
Rob and I talked about changing this to update the cache entry with
the correct size, but that may conflict with other concurrent
operations that get the size, and would probably require a bit more
infrastructure in the dbpf attribute cache to get it right.  It
would be nice to see what improvements that would give us though.
Any thoughts?

-sam

_______________________________________________
PVFS2-developers mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers

Reply via email to