To get access to PlanetLab, you must do the following:
-
Go to the site https://planet-lab.eu/ and choose <Create an account> Note: the URL ends in .eu, not .org.
-
Fill in the important fields and choose "University of Copenhagen, DIKU" as site. THIS IS IMPORTANT!
-
You have to wait for verification of your account before it can be used. If the verification takes more than a few days, try prodding ericbj@ifi.uio.no ;-)
When everything is ok and your account has been verified, you can check out User's Guide: https://www.planet-lab.org/doc/guides/user
Working with PlanetLab means connecting to various servers using SSH. This requires you to do the following:
- Create an RSA SSH key (if you don't already have one) and add it to your account.
The key MUST be an RSA key, and we recommend a 4096-bit, password-protected key. You can use the following command to generate a 4096-bit RSA key interactively from your shell:
ssh-keygen -t rsa -b 4096
- You will find an upload form under <Keys> under <My Account> on PlanetLab. Upload your public key (i.e., the .pub file). Please note, it may take some time for your key to propagate to all the machines in your slice.
Slices and Users
Roughly, a "slice" is a set of virtual machines (nodes) distributed across the PlanetLab network. A slice exists for a fixed period of time, and the virtual machines are shut down after this expiration date. Our slice is called diku_IN5570, and at the time of writing, it has 553 nodes. However, not all of those are alive and well. See below for a list of nodes we know work (at the time of writing).
Everyone with a user, created as specified above, logs in with the same user, diku_IN5570, and can execute code on these machines.
To login on a node, type in the following command:
ssh -i <private-key> -l <slicename> <hostname>
For example,
ssh -i ~/.ssh/id_rsa -l diku_IN5570
planetlab2.fct.ualg.pt
Good Nodes (anno 2020)
These are the nodes reachable from UiO within a 5-second timeout.
See the current list here.
Prepared Nodes (anno 2020)
We have pre-installed the Emerald compiler and runtime as ec32
and emx32
, respectively, on the following machines (as of 2020-02-13):
- ple1.cesnet.cz
Prepared Nodes (anno 2019)
We have pre-installed the Emerald compiler and runtime as ec32
and emx32
, respectively, on the following machines (as of 2019-02-19):
- cse-white.cse.chalmers.se (Gothenberg, Sweden)
- cse-yellow.cse.chalmers.se (Gothenberg, Sweden)
- mars.planetlab.haw-hamburg.de (Nack, Germany)
- merkur.planetlab.haw-hamburg.de (Nack, Germany)
- pl1.uni-rostock.de (Rostock, Germany)
- pl2.prakinf.tu-ilmenau.de (Ilmenau, Germany)
- planetlab1.xeno.cl.cam.ac.uk (Cambridge, United Kingdom)
- planetlab2.xeno.cl.cam.ac.uk (Cambridge, United Kingdom)
- ple3.planet-lab.eu (Paris, France)
- ple4.planet-lab.eu (Paris, France)
- ple43.planet-lab.eu (Paris, France)
- ple44.planet-lab.eu (Paris, France)
You should be able to install Emerald, and conduct your experiments on all of these machines. The given location is the location of the IP behind the URL according to the GeoLite Country dataset from MAXMIND. For further documentation on how we gauged PlanetLab status, see https://github.com/emerald/inf5510v18/tree/master/planet-lab.
Installing Emerald on a new node
If you have to install the Emerald compiler on another node, follow this guide:
Login at nodename:
$ ssh -l diku_IN5570 nodename
To install an Emerald compiler at that node:
$ wget http://www.uio.no/studier/emner/matnat/ifi/INF5510/v15/emerald-0.99-linux.tar.gz $ tar xvf emerald-0.99-linux.tar.gz $ mv emerald-0.99-linux emerald $ sudo dnf install glibc.i686
Copy this 32-bit bind_public.so to the home directory on the node.
Copy the following to the .profile file in the home directory:
[ -f /etc/planetlab.profile ] && source /etc/planetlab.profile export EMERALDROOT=/home/diku_IN5570/emerald/ export EMERALDARCH='i686mt' export PATH="$EMERALDROOT/bin:$PATH" export TERM=xterm-256color alias emx32="LD_PRELOAD=~/bind_public.so emx" alias ec32="LD_PRELOAD=~/bind_public.so ec"
Note how ec32
and emx32
overload the system LD_PRELOAD. This is because the one bind_public.so provisioned on PlanetLab only works for 64-bit binaries, while our Emerald compiler is mere 32-bit software.