Funk: Difference between revisions

From Grid5000
Jump to navigation Jump to search
mNo edit summary
 
(27 intermediate revisions by 3 users not shown)
Line 5: Line 5:
|valign="top"|  
|valign="top"|  


'''(F)ind yo(U)r (N)odes on g5(K)''' is a tool that help you to plan your experiments on Grid'5000. It is a Python script based on [http://execo.gforge.inria.fr/doc/ Execo] that:
'''(F)ind yo(U)r (N)odes on g5(K)''' is a tool that help you to plan your experiments on Grid'5000. It is a Python script based on [https://gitlab.inria.fr/mimbert/execo Execo] that:
* give you the number of nodes available at a date and for walltime
* give you the number of nodes available at a date and for walltime
* find the slots for a combination of resources and a walltime
* find the slots for a combination of resources and a walltime
* find the slot with the maximum number of nodes for a period and a walltime.
* find the slot with the maximum number of nodes for a period and a walltime.
Some basic examples can be found [[#examples|here]].
Some basic examples can be found [[#examples|here]].
|valign="top"| [[File:Funk_Slots.png|300px]]
|}


Projet source, issue and feature requests can be found [https://github.com/lpouillo/Funk here].
Projet source, issue and feature requests can be found [https://github.com/lpouillo/Funk here].
|valign="top"| [[File:Funk_Slots.png|300px]]
|}




Line 24: Line 23:


===Outside Grid'5000===
===Outside Grid'5000===
You need to install [http://execo.gforge.inria.fr/doc/tutorial.html#installation execo 2.2] and  [http://execo.gforge.inria.fr/doc/tutorial.html#more-advanced-usages configure it for Grid'5000]
You need to install [https://mimbert.gitlabpages.inria.fr/execo/userguide.html#installation execo] and  [https://mimbert.gitlabpages.inria.fr/execo/userguide.html#more-advanced-usages configure it for Grid'5000].
 
You also need [https://pypi.python.org/pypi/httplib2 python-httplib2] to make use of the request on the Grid'5000 [[API]].
If you have no admin rights, install it with :
  easy_install --user httplib2
or
  pip install --user httplib2
Once it is done, you can clone the repository with:
Once it is done, you can clone the repository with:
   git clone https://github.com/lpouillo/Funk.git
   git clone https://github.com/lpouillo/Funk.git
and run the script.
and run the script.


==<span id="examples">Usages</span>==
==<span id="examples">Usage</span>==
Number of nodes availables for 2 hours at run time, on sites nancy, reims and on clusters paradent and suno
I want to find how many nodes are currently available on sites lyon,nancy,rennes for a walltime of 3 hours
{{Term|location=frontend|cmd=<code class="command">funk</code> -m <code class="replace">date</code> -r <code class="replace">nancy,reims,paradent,suno</code> -w <code class="replace">2:00:00</code>}}
{{Term|location=frontend|cmd=<code class="command">funk</code> -m <code class="replace">date</code> -r <code class="replace">lyon,nancy,rennes</code> -w <code class="replace">3:00:00</code>}}
When 40 nodes on sagittaire and 4 nodes on taurus will be available, with deploy job type and a subnet
I have a deadline in one week and I absolutely need to run a large
{{Term|location=frontend|cmd=<code class="command">funk</code> -m <code class="replace">free</code> -r sagittaire<code class="replace">:40</code>,taurus<code class="replace">:4</code> -o <code class="replace">"-t deploy"</code> -n <code class="replace">slash_22=2</code>}}
scale experiment on the whole platform (avoiding periods under usage policy
Find the maximum number of nodes are available during 10 hours, before next week deadline, avoiding charter periods, not using helios and with classic ssh access
restrictions)
{{Term|location=frontend|cmd=<code class="command">funk</code> -m <code class="replace">max</code> -w 10:00:00 -e <code class="replace">"2013-12-31 23:59:59"</code> -c -b <code class="replace">helios</code> -o <code class="replace">"-t allow_classic_ssh"</code>}}
{{Term|location=frontend|cmd=<code class="command">funk</code> -m <code class="replace">max</code> -r <code class="replace">grid5000</code> -w <code class="replace">4:00:00</code> -e <code class="replace">"2014-02-17 16:00:00"</code> -c}}
I need specific resources combination for my experiments and I want to know when a slot will be available, with deploy job type, and reserve it automatically (-y option) :
{{Term|location=frontend|cmd=<code class="command">funk</code> -m <code class="replace">free</code> -r <code class="replace">taurus:2,nancy:100</code> -w <code class="replace">10:00:00</code> -o <code class="replace">"-t deploy"</code> -y}}
 
Please be aware of the [[Grid5000:UsagePolicy|Grid'5000 Usage Policy]] or use <code class="replace">-c</code> to avoid usage policy periods.
A walltime for a night reservation is 11:58:00 or is for a weekend 62:58:00.


==<span id="options">Options</span>==
==<span id="options">Options</span>==
===General options===
===General options===
Define mode and controls I/O.
Define mode and controls I/O.
   -h, --help            show this help message and exit
   -h, --help            show this help message and exit
  --version            show program's version number and exit
   -m MODE, --mode MODE  Setup the mode: date, free or max  
   -m MODE, --mode MODE  Setup the mode: date, free or max  
                         default = date
                         default = date
   -y, --yes            Perform the reservation automatically
   -y, --yes            Perform the reservation automatically
   -q, --quiet           Run without printing anything
   --quiet               Run without printing anything
   -v, --verbose        Run in verbose mode
   -v, --verbose        Run in verbose mode
   -p PROG, --prog PROG  The program to be run when the reservation start
   -p PROGRAM, --program PROGRAM
                        The program to be run when the reservation start
   --plots              Draw a Gantt plot and the slots
   --plots              Draw a Gantt plot and the slots
  --json                Output the computed data to standard output
  --json-file JSON_FILE
                        Output the computed data to a json file


===Reservation===
===Reservation===
{{Warning|text=[[OARGrid2]] has been discontinuited and is not maintained anymore.<br>
If you use an old version of Funk, please adapt your usage by using "--no-oargrid" option.}}
Customize your Grid'5000 reservation.
Customize your Grid'5000 reservation.
   -r RESOURCES, --resources RESOURCES
   -r RESOURCES, --resources RESOURCES
                         Comma separated list of Grid'5000 elements (grid5000, site or cluster)
                         Comma separated list of Grid'5000 elements (grid5000, site or cluster)
                         -r element1,element2 for date and max modes
                         -r element1,element2 for date and max modes
                         -r element1:n_nodes1,element2:n_nodes2 for free mode
                         -r element1:n_nodes1,element2:n_nodes2 for free mode
Line 59: Line 77:
                         Remove clusters from planning computation
                         Remove clusters from planning computation
   -R RATIO, --ratio RATIO
   -R RATIO, --ratio RATIO
                         Apply a given ratio to the resources found, works only for mode date and max
                         Apply a given ratio to the host resources
   -o SUBMISSION_OPTS, --oargridsub_opts SUBMISSION_OPTS
   -o SUBMISSION_OPTS, --submission_opts SUBMISSION_OPTS
                         Extra options to pass to the oarsub/oargridsub command line
                         Extra options to pass to the oarsub/oargridsub command line
   -k, --kavlan          Ask for a KaVLAN
   -k, --kavlan          Ask for a KaVLAN
Line 69: Line 87:
                         The job name passed to the OAR subjobs
                         The job name passed to the OAR subjobs
                         default = FUNK
                         default = FUNK
  -q QUEUE, --queue QUEUE
                        The OAR queue to use
                        default = default
  --virtual            Use only clusters with hardware virtualization
  --infiniband          Use only clusters with infiniband or myrinet interfaces
  --green              Use only clusters that have energetical power measurements
   --no-oargrid          Don't use oargridsub and perform parallel oar reservations
   --no-oargrid          Don't use oargridsub and perform parallel oar reservations
   --force-oargrid      Force the usage of oargrisub, even if there only one site involved
   --force-oargrid      Force the usage of oargrisub, even if only one site is involved


===Time===
===Time===
Line 79: Line 103:
   -s STARTDATE, --startdate STARTDATE
   -s STARTDATE, --startdate STARTDATE
                         Starting date in OAR format
                         Starting date in OAR format
                         default = 2013-12-18 11:28:32
                         default = 1443470554
   -e ENDDATE, --enddate ENDDATE
   -e ENDDATE, --enddate ENDDATE
                         End date in OAR format
                         End date in OAR format
                         default = 2014-01-08 11:28:32
                         default = 1445284954
   -c, --charter        Avoid charter periods
   -c, --charter        Avoid charter (usage policy) periods

Latest revision as of 11:15, 12 June 2024

(F)ind yo(U)r (N)odes on g5(K) is a tool that help you to plan your experiments on Grid'5000. It is a Python script based on Execo that:

  • give you the number of nodes available at a date and for walltime
  • find the slots for a combination of resources and a walltime
  • find the slot with the maximum number of nodes for a period and a walltime.

Some basic examples can be found here.

Funk Slots.png

Projet source, issue and feature requests can be found here.


Running the tool

Inside Grid'5000

Terminal.png frontend:
$ funk -h

See below for options descriptions.

Outside Grid'5000

You need to install execo and configure it for Grid'5000.

You also need python-httplib2 to make use of the request on the Grid'5000 API. If you have no admin rights, install it with :

 easy_install --user httplib2

or

 pip install --user httplib2

Once it is done, you can clone the repository with:

 git clone https://github.com/lpouillo/Funk.git

and run the script.

Usage

I want to find how many nodes are currently available on sites lyon,nancy,rennes for a walltime of 3 hours

Terminal.png frontend:
funk -m date -r lyon,nancy,rennes -w 3:00:00

I have a deadline in one week and I absolutely need to run a large scale experiment on the whole platform (avoiding periods under usage policy restrictions)

Terminal.png frontend:
funk -m max -r grid5000 -w 4:00:00 -e "2014-02-17 16:00:00" -c

I need specific resources combination for my experiments and I want to know when a slot will be available, with deploy job type, and reserve it automatically (-y option) :

Terminal.png frontend:
funk -m free -r taurus:2,nancy:100 -w 10:00:00 -o "-t deploy" -y

Please be aware of the Grid'5000 Usage Policy or use -c to avoid usage policy periods. A walltime for a night reservation is 11:58:00 or is for a weekend 62:58:00.

Options

General options

Define mode and controls I/O.

 -h, --help            show this help message and exit
 --version             show program's version number and exit
 -m MODE, --mode MODE  Setup the mode: date, free or max 
                       default = date
 -y, --yes             Perform the reservation automatically
 --quiet               Run without printing anything
 -v, --verbose         Run in verbose mode
 -p PROGRAM, --program PROGRAM
                       The program to be run when the reservation start
 --plots               Draw a Gantt plot and the slots
 --json                Output the computed data to standard output
 --json-file JSON_FILE
                       Output the computed data to a json file

Reservation

Warning.png Warning

OARGrid2 has been discontinuited and is not maintained anymore.
If you use an old version of Funk, please adapt your usage by using "--no-oargrid" option.

Customize your Grid'5000 reservation.

 -r RESOURCES, --resources RESOURCES
                       Comma separated list of Grid'5000 elements  (grid5000, site or cluster)
                       -r element1,element2 for date and max modes
                       -r element1:n_nodes1,element2:n_nodes2 for free mode
                       default = grid5000
 -b BLACKLIST, --blacklist BLACKLIST
                       Remove clusters from planning computation
 -R RATIO, --ratio RATIO
                       Apply a given ratio to the host resources
 -o SUBMISSION_OPTS, --submission_opts SUBMISSION_OPTS
                       Extra options to pass to the oarsub/oargridsub command line
 -k, --kavlan          Ask for a KaVLAN
 -n SUBNET, --subnet SUBNET
                       Ask for subnets. slash_22=1 will retrieve a /22 subnet on every site of your requests, 
                       but you can specify site1:slash_22=2,site2:slash_19=1
 -j JOB_NAME, --job_name JOB_NAME
                       The job name passed to the OAR subjobs
                       default = FUNK
 -q QUEUE, --queue QUEUE
                       The OAR queue to use
                       default = default
 --virtual             Use only clusters with hardware virtualization
 --infiniband          Use only clusters with infiniband or myrinet interfaces
 --green               Use only clusters that have energetical power measurements
 --no-oargrid          Don't use oargridsub and perform parallel oar reservations
 --force-oargrid       Force the usage of oargrisub, even if only one site is involved

Time

Define options related to date and time.

 -w WALLTIME, --walltime WALLTIME
                       Reservation walltime in OAR format
                       default = 1:00:00
 -s STARTDATE, --startdate STARTDATE
                       Starting date in OAR format
                       default = 1443470554
 -e ENDDATE, --enddate ENDDATE
                       End date in OAR format
                       default = 1445284954
 -c, --charter         Avoid charter (usage policy) periods