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
