EPM engine machine setup

De Assothink Wiki
Aller à la navigation Aller à la recherche

Hardware prerequisites

Network connection : preferably 1000 Mbit/sec.

Memory requirements: if L is the number of (hybrid) links (in millions), then the memory (in Mb) needed tu run the engine is roughly:

50 L + 15

For instance, 800 000 links require 55 Mb, which easily fits into the small memory of a Raspberry pi SBC.

A list of reasonable SBC hardware is compared here.

A high end option is Parallela from Adapteva.

Software Prerequisites

  • Linux (ubuntu preferably)
  • bash
  • ssh (openssh)
  • remote desktop viewer
  • NFS client and server (sudo apt-get install nfs-common nfs-server)
  • JRE (or JDK), for instance OpenJdk 7 (only for epm Java engine, not for epm C engine)
  • gcc compiler (only for epm C engine, not for epm Java engine)

Step 1

Runs on a source machine (which is a "full Assothink machine", according to Matscape's standards (MMU (or MMV or MMM))).

Uses directory /media/server.Alex.MMU/epm/ (the 'epm reference dir', refdir)

The script is epm preinstall .

It creates several system files under directory $refdir/install/  .

This has to be done just once if many machines have to be installed.

Step 2

On the target machine:

  • set host name MMn
  • define a user (standard name and password)
  • set IP address and check network accessibility
  • NFS export $HOME directory ( /etc/exports)
  • NFS mount /media/server.Alex.MMU/
  • replicate /etc/hosts file (from refdir/install), check the hosts pingability
  • replicate /etc/fstab.matscape.local file, replicate it at the end of fstab
  • check the auto mounting of /media/server.Alex.MMU/ /media/MMU/ and /media/MMM/ at least
  • run script /media/MMU/Scripts/epm install (it replicates into target machine .bashrc, .alex, Scripts dir, assothink.epm dir...)
  • restart new bash instance
  • check clock network synchro
  • setup and check accessibility of target machine through "Remote Desktop Viewer"
  • check generic things
  • check epm java engine process (epm java engine mainly) (epm J)
  • compile C version of epm (epm gcc), check epm C engine (epm C)
  • launch epm daemon (epm d)

Step 3

On the source machine:

  • check NFS access to target machine
  • check access to remote machine using rsh
  • check access to remote machine through "Remote Desktop Viewer"
  • launch epm controller
  • check performance of new machine (java and C)

Requirements

Packages

The following packages are needed or at least useful:

sudo apt-get install vim vim-gnome openssh-server nfs-kernel-server openjdk-7-jdk (takes some time)

The following packages may be useful for various reasons

sudo apt-get install gnome gparted sysinfo (gnome is heavy)

Other packages are 'nice to have'.

Bash

These two lines should be added at the end of the ~/.bashrc file of user pge

# added by pge:
.  ~/Scripts/bashrc 

And in this file the line "force_color_prompt=yes" should be out-commented

Openssh

The openssh-server packages must have been installed (see above).

The Scripts directory should have been replicated on the target machine.

  • sshto 0 (on the target machine)
  • sshto <target machine> (on machines accessing the target machine)

Directories

The following directories are needed:

cd ; mkdir tmp/ bin/ ramDisk/ engine/ engine/src/ engine/bin/ (others are optional)

Notes for generic Ubuntu install

Since the Alex user "pge" should have the same user number on all machines (1009), and given the fact that the default user created during ubuntu install receives number 1001, it is better to first create a user named - for instance - pgx, and then to create pge with these commands:

  • sudo useradd -u 1009 -d /home/pge -s /bin/bash -m pge (create user pge)
  • sudo passwd pge (set passwd for user pge)
  • sudo adduser pge sudo (give sudo capability to pge)

The other first minimal key tasks are:

  • update packages
  • organize network import and export
  • check remote ssh access
  • test engine perfs

Notes for Raspberry Pi install

  • Setup initial screen : "expand rootfs"
  • Setup initial screen : "ssh server" ... enabled
  • Setup initial screen : Upgrade rasp config
  • Setup initial screen : Change timezone... Europe / Brussels
  • Setup initial screen : finish
  • login as pi (password : raspberry)
  • note IP address and check remote ssh access to this host
  • sudo reboot (restart the RP)
  • login remotely as user pi (using IP address as target : ssh -l pi 192.168.100.nnn)
  • sudo useradd -u 1009 -d /home/pge -m pge (create user pge)
  • sudo passwd pge (set passwd for user pge)
  • sudo passwd pi (set the same passwd for user pi)
  • sudo visudo (add a last line to allow user pge to sudo)
  • install various packages (see below)
  • sudo vi /etc/hostname (change to MMx)
  • sudo /etc/init.d/hostname.sh start
  • sudo vi /etc/hosts (1: change raspberry to MMx ; 2: add 6 standard hosts lines)
  • sudo vi /etc/fstab (add 2 lines at the end, similar to those of other machines)
  • sudo vi /etc/network/interfaces (modify 1 line, add 3 new):
    • iface eth0 inet static
    • address 192.168.100.xxx
    • netmask 255.255.255.0
    • gateway 192.168.100.2
  • sudo reboot (restart the RP)
  • remote login as pge
  • try the NFS access from installed machine to remote dirs
    • sudo mkdir -m 777 /media/xxx to create mountable dirs
    • mount /media/xxx to mount remote dirs
  • sudo vi /etc/exports (add export line : /home/pge MM*(rw,async,no_subtree_check,fsid=9) )
  • sudo reboot (restart the RP)
  • chmod 777 ~ (allow to write in home dir of pge)
  • create three directories in /home/pge (mkdir -m 777 bin epm Scripts), and copy in Scripts the whole files from MMM
  • add this line at the end of .bashrc
    • . ~/Scripts/bashrc
  • ramdisk (create local ram filesystem)
  • check the served and serving NFS connections
  • try epm gcc (engine compile)
  • try epm J T 100 (engine java version)
  • try epm C T 100 (engine C version)
  • It is also possible (dangerous?) to overclock the raspberry : this is done by 2 ways:
    • sudo vi /boot/config.txt (modify arm_freq, core_freq)
    • sudo raspi-config (select 'overclocking')