[Swift-user] ram disk with swift

Glen Hocky hockyg at gmail.com
Fri Jun 8 15:01:54 CDT 2012


Mike, Lorenzo,
Probably David will have something that will work but in case this helps,
this is the (a) routine you and I developed together for BGP some years ago
(July 08 apparently). Before running a few variables have to be set up so I
also included the setupvars script we had for reference...

function loadfile
{
        cd $rootdir
        local ARCHIVE=$1
        local ARCHIVE_NAME=`basename $ARCHIVE`
        local START_LOCK=$ARCHIVE_NAME-oops-cache-lock-started
        local END_LOCK=$ARCHIVE_NAME-oops-cache-lock-finished
        if [ ! -d ${START_LOCK} ];then
                mkdir ${START_LOCK}
                EXITCODE=$?
                if [ "${EXITCODE}" -ne "0" ];then
                    echo "waiting for data to be copied"
                    while [ ! -d ${END_LOCK} ];do
                        sleep 1
                    done
                else
                        echo "Copying $ARCHIVE to $rootdir"
                        cp -v $ARCHIVE $rootdir
                        tar xzvf $ARCHIVE_NAME
                        rm $ARCHIVE_NAME
                        mkdir ${END_LOCK}
                fi
        else
                while [ ! -d ${END_LOCK} ];do
                        sleep 1
                done
        fi
        return 0
}

function setupvars
{
        export PATH=/fuse/bin:/fuse/usr/bin:$PATH
        rootdir=/dev/shm
        data_location=$1
        protein=$2
        round=$3
        jobid=$4
        killtime=$5

        loadseed=1

        usagestring="$0 DATA_LOCATION PROTEIN ROUND JOBID KILLTIME"
        if [ -z $5 ];then
                echo $usagestring
                echo "Example: $0 /home/hockyg/glOOPS/bgprt 1ubq 1 1 30"
                exit 27
        fi

        oops_pack=$data_location/rt-base.tar.gz
        rtbasedir=$rootdir/rt-base
        input_pack=$data_location/input-$protein.tar.gz
        inputdir=$rootdir/input-$protein
        starttime=`date +%s`
        protid=$protein-$round-$jobid
        protdir=$rootdir/$protid
        timeshift=$(( $jobid % 60 ))

        mkdir -p $protdir/output

        returndir=$data_location/output/$protein/$round
        outdir=$protdir/output
        runoopslog=$protdir/output/$protid.runoopslog
        oopsreturnfile=$rootdir/$protid-done

        if [ ! -e $returndir ];then
                mkdir -p $returndir
        fi

        if [ ! -z $loadseed ];then
                seedfile=$protdir/output/$protid.random
                let seed=`expr $round*10000+$jobid`
                #echo "Writing seed $seed to $seedfile"
                echo $seed > $seedfile
        fi
}



On Fri, Jun 8, 2012 at 3:53 PM, Michael Wilde <wilde at mcs.anl.gov> wrote:

>
> > We were talking about putting the input files for Taka's calculations
> > (the X.mat files), which are rather small ~ 60Kb or so, in ram disk
> > and try to use them for all the apps (that use the same file). giving
> > the size, we could even load up all of them for each node
> > (7*3*60=1.2MB, that is zero) to reduce traffic towards /lustre and
> > thus avoid the meta-data slow downs that Beagle seems to have.
> >
> > If we copy files in /tmp (as far as I understand it would be ramdisk)
> > on the each node through swift, would it be there for all the apps?
>
> One way to do this, which has worked well for us is this:
>
> - in the app wrapper script, create a function that loads the constant
> input data
>
> - in this function, using directory-based locking logic to:
>
>  -- create a data dir under /tmp
>  -- fill the dir from a tarball
>
> - in the app wrapper logic, if the /tmp/data dir is there, use it
>  else call the function to create it.
>
> This logic uses the fact that directory creation is atomic, so you can use
> that to prevent races where two apps running on the same node would each
> try to create the dir.
>
> David, can you post the logic you developed for the above?
>
> Thanks,
>
> - Mike
> _______________________________________________
> Swift-user mailing list
> Swift-user at ci.uchicago.edu
> https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/swift-user/attachments/20120608/d25bc512/attachment.html>


More information about the Swift-user mailing list