[Swift-devel] several alternatives to design the data management system for Swift on SuperComputers

Zhao Zhang zhaozhang at uchicago.edu
Mon Dec 1 16:15:54 CST 2008


Hi, All

The following alternatives is a summary from a talk between Mike and 
Zhao. We are trying
to optimize the data IO performance for swift on supercomputers, 
includes BGP, Ranger,
and possibly Jaguar. We are trying to eliminate all unnecessary data IO 
during stages of computation.

Scenario 1: Say a computation has 2 stages, the 2nd stage would take the 
output from the 1st stage
as the input data.

Data Flow in current swift system: 1st stage will write the output data 
to GPFS, where swift knows this
output data is the input for the 2nd stage. Then send the task to on 
worker on CN.

Desired Data Flow: 1st stage of computation knows the output data will 
be used as the input for the next
stage, thus the data is not copied back to GPFS, then the 2nd stage task 
arrived and consumed this data.

Key Issue: the 2nd stage task has no idea of where the 1st stage output 
data is.

Design Alternatives:
1. Data aware task scheduling:
    Both swift and falkon need to be data aware. Swift should know where 
the output of 1st stage is, which
    means, which pset, or say which falkon service.
    And the falkon service should know which CN has the data for the 2nd 
stage computation.

2. Swift patch jobs vertically
    Before sending out any jobs, swift knows those 2 stage jobs has data 
dependency, thus send out 1 batched
    job as 1 to each worker.

3. Collective IO
   Build a shared file system which could be accessed by all CN, instead 
of writing output data to GPFS, workers
   copy intermediate output data to this shared ram-disk. And retrieve 
the data from IFS.

   Several Concerns:
   a) reliability of torus network --- we need to test more about this.
   b) performance of torus network --- could this be really performing 
better than GPFS? If not, at what scale
       could torus perform better than GPFS?

4. Half-Collective IO
   All workers wirte data to IFS, and the data will be periodically 
copied back to GPFS. In this case, we only
   optimize the output phase, leave the input phase as is.

Any other ideas? Thanks so much.

best wishes
zhangzhao



More information about the Swift-devel mailing list