Running through NGrid.Loader
This document describes how to run a NGrid distributed application through the NGrid.Loader. For a given application, NGrid provides the possibility of optimizing the application execution through various physical grid fitting various purposes. The application NGrid.Loader.exe is command-line utility that can be used to specify the physical grid to be used.
A given .Net application written against the NGrid.Core framework can be run through various physical grids. Each physical grid has its own specifities that will influence the performance of your application. Currently NGrid features three physical grids: NGrid.Zero, NGrid.Plasma and NGrid.Superfluid. The NGrid.Zero is the default physical grid (actually shipped with NGrid.Core) that is used by default when no loader is used.
Running through NGrid.Plasma
NGrid.Plasma is a grid dedicated to CPU intensive applications. NGrid.Plasma targets clusters (i.e. trusted and reliable) environnments. NGrid.Plasma is a distributed grid, in order to run an application through several machines, a NGrid.Plasma worker has to be setup at each node.
The plasma worker can be initialized with the following command-line:
$ NGridLoader plasma --port=1234
The first argument of NGrid.Loader is the name of the considered physical grid, the only option --port= concerns the port where the plasma worker can be reached.
Caution: the current implementation (NGrid.Plasma v0.2) does not feature any security, do not expose such services in untrusted environments, or restrict the port access (through a firewall) to trusted machines.
Once all workers are initialized, your program can be executed with the typical command-line:
$ NGridLoader plasma --hosts=myhostfoo:1234,myhostbar:1234 HelloWorld.exe hello world
Once again the first argument is the name of the physical grid. The only option is --hosts= that includes a comma separated list of the plasma workers (caution: do not put spaces between the host names). The name of the targeted application lies at the end of the command-line (it's HelloWorld.exe, do not forget the .exe extension), only followed by it's own argument (the command-line arguments of HelloWorld.exe).
Tips: several executions, concurrent or successive, can take place within a given worker, there is no need to re-initialize a set of workers for each execution.
The version NGrid.Plasma v0.2+ also provide an optional activation of a cyclic distributed garbage collector. This DGC is required to collected cyclic garbage. No cyclic DGC is activated by default. The activation of the DGC can be done by adding the option --dgc=veiga.
Note: collecting cyclic distributed garbage is a complicated problem. Since the implementation of NGrid.Plasma is still preliminary, the DGC is not activated by default (but will probably in future release).
Running through NGrid.Superfluid
to be completed.
Appendice A - NGridLoader.exe v0.2 manual
NGridLoader grid [options] program [program-args]
mock, plasma, superfluid
--port=1234 Local loader port.
--hosts=URI,URI,URI Loader URIs (for 'plasma').
--dgc=none|veiga Distributed GC (for 'plasma')
--memory=10000 Max memory in MBytes (for 'superfluid')
--digger=priority Priority of the digger thread (for 'superfluid')
--cache=cacheType Cache used for the GObject inhumation
BDB, FileSystem, SqlServer
Example - mock
$ NGridLoader mock MyApp.exe hello world
Example - plasma
$ NGridLoader plasma --port=1234
$ NGridLoader plasma --hosts=localhost:1234 --dgc=veiga MyApp.exe hello world
Example - superfluid
$ NGridLoader superfluid --memory=100 --digger=normal MyApp.exe Hello World