TakTuk: Difference between revisions

From Grid5000
Jump to navigation Jump to search
No edit summary
No edit summary
Line 3: Line 3:
During the course of an experiment on G5k, one often wants to run programs or scripts on all the reserved nodes simultaneously. For instance, to send data to remote workers. This could be achieved sequentially with a loop construct in a script, but this method does not scale well. That's why a launcher for parallel commands named TakTuk has been installed on each G5k site.
During the course of an experiment on G5k, one often wants to run programs or scripts on all the reserved nodes simultaneously. For instance, to send data to remote workers. This could be achieved sequentially with a loop construct in a script, but this method does not scale well. That's why a launcher for parallel commands named TakTuk has been installed on each G5k site.


= Short Explanation about how it work =  
= Short Explanation about TakTuk mechanics =  
To speed up the execution of a command on a large number of nodes, TakTuk  
To speed up the remote execution of the same command on a large number of nodes, TakTuk both
* uses a tree to launch programs on all reserved nodes.
* uses a deployment tree to initiate connections from distinct machines at the same time
* initiates a few connections in parallel (the deployment window) and distributes the remaining deployment work to already
* initiates a few connections in parallel (the deployment window) and distributes the remaining deployment work to already
deployed peers using an adaptive work-stealing algorithm (Extract of [http://taktuk.gforge.inria.fr/Documents/TakTuk_UserGuide.pdf A guide of TakTuk use] by Guillaume Huard).
deployed peers using an adaptive work-stealing algorithm (Extract of [http://taktuk.gforge.inria.fr/Documents/TakTuk_UserGuide.pdf A guide of TakTuk use] by Guillaume Huard).

Revision as of 17:00, 29 March 2007

During the course of an experiment on G5k, one often wants to run programs or scripts on all the reserved nodes simultaneously. For instance, to send data to remote workers. This could be achieved sequentially with a loop construct in a script, but this method does not scale well. That's why a launcher for parallel commands named TakTuk has been installed on each G5k site.

Short Explanation about TakTuk mechanics

To speed up the remote execution of the same command on a large number of nodes, TakTuk both

  • uses a deployment tree to initiate connections from distinct machines at the same time
  • initiates a few connections in parallel (the deployment window) and distributes the remaining deployment work to already

deployed peers using an adaptive work-stealing algorithm (Extract of A guide of TakTuk use by Guillaume Huard).

Taktuk schema.png

Therefore, for taktuk to operate correctly, peers should be able to connect to each other. By default, TakTuk use ssh connections. So to check if Taktuk execution will work, follow instructions on this page: Test key authentication

Using TakTuk with the base environment

Prerequisites

You have a reservation:

Terminal.png users@frontale.site.grid5000.fr:
oarsub -I -l nodes=4

Therefore you're on the reserved node:

Terminal.png users@node-15.site.grid5000.fr:

Connections from this node and between nodes with your account are possible

Using Taktuk to launch scripts

To launch scripts simultaneously on each node:

Terminal.png users@node-15.site.grid5000.fr:
taktuk -f $OAR_FILE_NODES broadcast exec [/home/site/user/testScript.sh]

Note: do not forget to type the characters [ and ]

By default, Taktuk displays a lot of informations but it might not be necessary. So you can add some options on command line to modify correctly the output [c'est pas trés clair pour l'utilité des options connector et status]:

-o connector -o status -o output='"$host: $line\n"'

Example:

To know if time clock are synchronised on each node (Result formated correctly)

Terminal.png users@node-15.site.grid5000.fr:
taktuk -o connector -o status -o output='"$host: $line\n"' -f $OAR_FILE_NODES broadcast exec [date]

Output

node-101.bordeaux.grid5000.fr: Fri Mar 23 09:38:46 CET 2007
node-23.bordeaux.grid5000.fr: Fri Mar 23 09:38:46 CET 2007
node-24.bordeaux.grid5000.fr: Fri Mar 23 09:38:46 CET 2007
node-67.bordeaux.grid5000.fr: Fri Mar 23 09:38:46 CET 2007
node-97.bordeaux.grid5000.fr: Fri Mar 23 09:38:46 CET 2007

To know cpu's installed on nodes:

plemoine@node-101:$ taktuk -o connector -o status -o output='"$host: $line\n"' -f $OAR_FILE_NODES broadcast exec ["cat /proc/cpuinfo | grep 'model name'"] | uniq

Output

node-101.bordeaux.grid5000.fr: model name       :                   Intel(R) Xeon(TM) CPU 3.00GHz
node-23.bordeaux.grid5000.fr: model name        : AMD Opteron(tm) Processor 248
node-24.bordeaux.grid5000.fr: model name        : AMD Opteron(tm) Processor 248
node-67.bordeaux.grid5000.fr: model name        :                   Intel(R) Xeon(TM) CPU 3.00GHz
node-97.bordeaux.grid5000.fr: model name        :                   Intel(R) Xeon(TM) CPU 3.00GHz

Using TakTuk with your own environment and no taktuk installation on it

Prerequisites

Starting to make a reservation:

Terminal.png users@frontale.site.grid5000.fr:
oarsub -I -l nodes=4 -q deploy

Deploy environment:

Terminal.png users@frontale.site.grid5000.fr:
kadeploy -p part -f $OAR_FILE_NODES -e sid-x64-nfs-1.0

Using Taktuk to launch programs

[Ca ne me dit pas ce qu'il faut faire pour executer sans taktuk, mais seulement comment executer en tant que root : à mon avis, il manque une étape] To execute command as root for update , you have to use the following option: "-l root" as the first one used on the command line:

Terminal.png users@frontale.site.grid5000.fr:
taktuk -l root -s -o connector -o status -o output='"$host: $line\n"' -f $OAR_FILE_NODES broadcast exec ["apt-get update"]