Hi all,

I am playing around with the resiliency of APGAS. I wondered about relative high times for manage a place failure. For comparision, I wrote a simple program in X10 and APGAS. Both are attached. The results show significant difference.

Every experiment was run with 4 places. X10 and APGAS are deployed from the official git repository.

Native X10 with X10_RESILIENT_MODE=1
without crash: 0.003
with crash: 0.015


Managed X10 with Hazelcast 3.3.1 and X10_RESILIENT_MODE=1
without crash: 0.34
with crash: 0.74


APGAS with Hazelcast with Hazelcast 3.6.3 and -Dapgas.serialization=java -Dapgas.resilient=true -Dapgas.compact=false
without crash: 0.86
with crash: very varying: 8-38


APGAS with Hazelcast with Hazelcast 3.6.3 and -Dapgas.serialization=java -Dapgas.resilient=true -Dapgas.compact=true
without crash: 0.8
with crash: very varying: 8-31


APGAS with Hazelcast with Hazelcast 3.7 and -Dapgas.serialization=java -Dapgas.resilient=true -Dapgas.compact=false
without crash: 0.77
with crash: 5.7 or 11.33 (50:50)


APGAS with Hazelcast with Hazelcast 3.7 and -Dapgas.serialization=java -Dapgas.resilient=true -Dapgas.compact=true
without crash: 0.74
with crash: 5.7 or 11.33 (50:50)



Managed X10 absorbs a failure significantly better than APGAS. However, Managed X10 uses Hazelcast 3.3.1 and (official) APGAS uses Hazelcast 3.6.3. What causes the differences?

A few days ago Hazelcast was released in version 3.7. In my experiments, it performs better.

What purpose has "apgas.compact=true"? Should APGAS perform better with it?

Are there other options to improve APGAS's performance at a place failure?



Thanks and cheers

--
Jonas Posner
Universitaet Kassel
Fachbereich 16 Elektrotechnik/Informatik
Fachgebiet Programmiersprachen/-methodik
Wilhelmshoeher Allee 71-73
34121 Kassel, Germany

Phone:  +49 (0)561 804-6498
Fax:    +49 (0)561 804-6219
mailto: jonas.pos...@uni-kassel.de
www.uni-kassel.de
import apgas.Configuration;
import apgas.DeadPlacesException;
import apgas.Place;

import static apgas.Constructs.*;

public class MessCrashingTime {

    public static void main (String[] args) {
        boolean crash = false;

        try {
            crash = Boolean.parseBoolean(args[0]);
        } catch (final Exception e) {
        }

        System.out.println(places());
        Long time = System.nanoTime();

        finish(() -> {
           for (Place p : places()) {
               at(p, () -> {
                   System.out.println(here() + " works fine");
               });
            }
        });

        if (crash) {
            try {
                at(place(1), () -> {
                    System.exit(42);
                });
            } catch (DeadPlacesException e) {
            }
        }


        finish(() -> {
            for (Place p : places()) {
                at(p, () -> {
                    System.out.println(here() + " works fine");
                });
            }
        });

        time = System.nanoTime() - time;
        System.out.println("time: " + (time / 1e9));
    }
}

public class MessCrashingTime {

    public static def main(args:Rail[String]) {

        var crash:boolean = false;
        if (args.size > 0) {
                crash = Boolean.parse(args(0));
        }
        
        
        var time:Long;
        time = System.nanoTime();
        
        
        finish for (p in Place.places()) {
            at (p) async Console.OUT.println(p + " works fine");
        }
                
        if (crash) {
            try
            {
                at (Place(1))
                {
                    System.killHere();
                }
            }
            catch (val t:CheckedThrowable)
            {
                t.printStackTrace();
            }
        }

        finish for (p in Place.places()) {
            at (p) async Console.OUT.println(p + " works fine");
        }
        
        time = System.nanoTime() - time;     
        Console.OUT.println("time: " + (time / 1E9));
    }

}
------------------------------------------------------------------------------
_______________________________________________
X10-users mailing list
X10-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/x10-users

Reply via email to