[Swift-devel] coaster transfer performance

Mihael Hategan hategan at mcs.anl.gov
Fri Jun 14 11:58:33 CDT 2013


I would like to point out that I have not seen a difference on stage-out
performance when adjusting the buffer size (on the worker side). I have
*not* tried a similar experiment for the stage-in buffer size, and I
believe that before we increase that permanently, we should see if it
does indeed make a difference.

Mihael

On Fri, 2013-06-14 at 08:19 -0500, Michael Wilde wrote:
> Im moving this discussion to swift-devel.
> 
> Mihael's fix to the timeout problem works very well - that problem has not recurred so far as I can tell.
> 
> We then discussed performance improvements for coaster provider staging.
> 
> Mihael suggested this:
> 
> "there should be a commented-out line in GSSChannel that says gssContext.requestConf(false); (line 85)
> uncomment that and re-compile, it will disable encryption"
> 
> ...and observed this:
> 
> > Disabling encryption makes the stage-ins go from about 6 MB/s to 70-90 MB/s.
> > 
> > However, stageouts are still slow (about 4 MB/s).
> 
> I tried that, and it speeds things up a great deal. (No measurements from the fMRI demo case yet; measurements from Mihael below.)
> 
> I also tried increasing the transfer buffer size. The current buffer is 32KB.  I tried 16X (512KB) and 4X (128KB).
> 
> At 512KB, staging-in to the app goes "very fast" (again, no measures yet) but output hangs after about 25 of 100 transfers.  At 128KB, it hasn't hung yet, and goes very fast.  I too am seeing slower stage-out times from the app back to swift than stage=in times.
> 
> I'm testing on midway's shared fs right now (GPFS?) and will test on hard disk next.
> 
> But with these two fixes, things are working with very nice reliability and performance in tests so far.
> 
> The mods for these changes are below, followed by Mihael's report on testing w/o encryption.
> 
> Yadu, please integrate your coaster-provider-staging tests into the test suite and test across a range of file sizes, durations, and endpoints. Im happy to discuss this, on this list and/or in person.
> 
> Thanks,
> 
> - Mike
> 
> mid$ cat mods
> modules/provider-coaster/src/org/globus/cog/abstraction/impl/file/coaster/buffers/Buffers.java
> modules/provider-coaster/resources/worker.pl
> modules/karajan/src/org/globus/cog/karajan/workflow/service/channels/GSSChannel.java
> mid$ svn diff
> Index: modules/provider-coaster/src/org/globus/cog/abstraction/impl/file/coaster/buffers/Buffers.java
> ===================================================================
> --- modules/provider-coaster/src/org/globus/cog/abstraction/impl/file/coaster/buffers/Buffers.java      (revision 3672)
> +++ modules/provider-coaster/src/org/globus/cog/abstraction/impl/file/coaster/buffers/Buffers.java      (working copy)
> @@ -24,7 +24,7 @@
>  public class Buffers extends Thread {
>      public static final Logger logger = Logger.getLogger(Buffers.class);
>  
> -    public static final int ENTRY_SIZE = 32768;
> +  public static final int ENTRY_SIZE = 32768 * 4;
>      public static final int ENTRIES_PER_STREAM = 8;
>      public static final int MAX_ENTRIES = 1024; // 32 MB
>      public static final int PERFORMANCE_LOGGING_INTERVAL = 10000;
> Index: modules/provider-coaster/resources/worker.pl
> ===================================================================
> --- modules/provider-coaster/resources/worker.pl        (revision 3672)
> +++ modules/provider-coaster/resources/worker.pl        (working copy)
> @@ -134,7 +134,7 @@
>  my $JOB_COUNT = 0;
>  
>  use constant BUFSZ => 2048;
> -use constant IOBUFSZ => 32768;
> +use constant IOBUFSZ => 32768 * 4;
>  use constant IOBLOCKSZ => 8;
>  
>  # If true, enable a profile result that is written to the log
> Index: modules/karajan/src/org/globus/cog/karajan/workflow/service/channels/GSSChannel.java
> ===================================================================
> --- modules/karajan/src/org/globus/cog/karajan/workflow/service/channels/GSSChannel.java        (revision 3672)
> +++ modules/karajan/src/org/globus/cog/karajan/workflow/service/channels/GSSChannel.java        (working copy)
> @@ -82,7 +82,7 @@
>  
>                                 gssContext.requestAnonymity(false);
>                                 gssContext.requestCredDeleg(false);
> -                               //gssContext.requestConf(false);
> +                               gssContext.requestConf(false); // Uncommented to disable encryption
>                                 gssContext.setOption(GSSConstants.GSS_MODE, GSIConstants.MODE_SSL);
>                                 gssContext.setOption(GSSConstants.DELEGATION_TYPE,
>                                                 GSIConstants.DELEGATION_TYPE_LIMITED);
> mid$ 
> 
> 
> 
> ----- Original Message -----
> > From: "Mihael Hategan" <hategan at mcs.anl.gov>
> > To: "Michael Wilde" <wilde at mcs.anl.gov>
> > Sent: Thursday, June 13, 2013 10:47:18 PM
> > Subject: coaster transfer performance
> > 
> > Hi,
> > 
> > This is what I'm seeing. Disabling encryption makes the stage-ins go
> > from about 6 MB/s to 70-90 MB/s.
> > 
> > However, stageouts are still slow (about 4 MB/s). It turns out that
> > this
> > is not due to the shared FS. I disabled writing to disk completely,
> > and
> > the performance is still around 6 MB/s.
> > 
> > I'll need to find out why, but probably not tonight.
> > 
> > Mihael
> > 
> > 





More information about the Swift-devel mailing list