Wednesday Exercise 3

From AIMSWiki

Table of contents

Overview

BOINC projects have to provide project specific server components to validate, assimilate, and generate workunits.

Objective

Understand the function of the malariacontrol.net server components and setup a malariacontrol.net test server.

Procedure

  • Open the src/Makefile.am file to see which source files we need to build the server side components.
  • Build the daemons and tasks.
  • Update your config.xml to run daemons and tasks.
  • Add your application and application version.
  • Initialize the backend database
  • Install all necessary templates and datafile
  • Load a simulation run to create work
  • Attach your clients
  • Monitor your server using server_status.php, the admin website, and the log files.

Prerequisites and Hints

Copy the mcdnServer sources to your workspace dir.

Create a project root directory and a malariacontrol project

$sudo mkdir -p /malaria/malaria
$sudo chown -R boincadm:boincadm /malaria
$tools/make_project --project_root /malaria/malaria --delete_prev_inst 
    --drop_db_first malariacontrol 'malaria control.net test'

Build the daemons and tasks in mcdn/mcdnServer. Follow the procedure of the client build.

Add assimilator,generator,parameterizer,validator to the PROJECT_ROOT/bin directory.

Update the PROJECT_ROOT/config.xml:

 <task>
   <cmd>
     generator -db_name malariaModel -template_name ../templates/generator_template.xml -d 3 
   </cmd>
   <period>
     1 min
   </period>
  </task>
  <task>
    <cmd>
      parameterizer -app malariacontrol -db_name malariaModel -min_results_ready 9 -template_name ../templates/generator_template.xml -d 3 
    </cmd>
    <period>
      1 min
    </period>
  </task>
   <daemon>
       <cmd>
         assimilator -d 2 -app malariacontrol -db_name malariaModel -template_name ../templates/generator_template.xml -min_results_ready 14 
       </cmd>
   </daemon>
   <daemon>
       <cmd>
               validator -d 3  -app malariacontrol
       </cmd>
   </daemon>

Update project.xml

   <app>
       <name>malariacontrol</name>
       <user_friendly_name>malcont</user_friendly_name>
   </app>
$bin/xadd

Create the app dir and add the science application

$mkdir -p apps/malariacontrol/malariacontrol_5.01_i686-pc-linux-gnu

Now it's time to copy and sign the science application.

Compile the malaria science app in mcdn/malariaModel/cpp/malaria to the application dir. Note: the application name must be the same as the directory name.

cp /home/boincadm/mcdn/malariaModel/test/sandbox/malaria /malaria/malaria/apps/malariacontrol/malariacontrol_5.01_i686-pc-linux-gnu/malariacontrol_5.01_i686-pc-linux-gnu
crypt_prog -sign /malaria/malaria/apps/malariacontrol/malariacontrol_5.01_i686-pc-linux-gnu/malariacontrol_5.01_i686-pc-linux-gnu /malaria/malaria/keys/code_sign_private > /malaria/malaria/apps/malariacontrol/malariacontrol_5.01_i686-pc-linux-gnu/malariacontrol_5.01_i686-pc-linux-gnu.sig
crypt_prog -verify /malaria/malaria/apps/malariacontrol/malariacontrol_5.01_i686-pc-linux-gnu/malariacontrol_5.01_i686-pc-linux-gnu /malaria/malaria/apps/malariacontrol/malariacontrol_5.01_i686-pc-linux-gnu/malariacontrol_5.01_i686-pc-linux-gnu.sig /malaria/malaria/keys/code_sign_public 

Update your application version

$bin/update_versions

Initialize the backend db:

Create a database named malariaModel, then

$mysql -p malariaModel<~/mcdnServer/templates/mmDBInit.sql

Copy template files

cp /home/boincadm/mcdn/mcdnServer/templates/*xml /malaria/malaria/templates/

Copy datafiles:

mkdir /malaria/malaria/files
cp /home/boincadm/mcdn/mcdnServer/data/densities.csv /malaria/malaria/files/
cp /home/boincadm/mcdn/mcdnServer/data/lossWeightVector.txt /malaria/malaria/tmp_HOSTNAME
cp /home/boincadm/mcdn/mcdnServer/data/fieldData.txt /malaria/malaria/tmp_HOSTNAME

Then you need to restart the BOINC server:

bin/stop
bin/start

Add run1

$mysql -p malariaModel <~/mcdnServer/data/run1.sql

Note that you have to go all the necessary steps again to make this project accessible from clients (copy apache.conf, etc, consult your notes of yesterday)

For example, make your web dirs and the scheduler visible:

$sudo cp /malaria/malaria/malariacontrol.httpd.conf /etc/apache2/sites-available/
$sudo ln -s /etc/apache2/sites-available/malariacontrol.httpd.conf /etc/apache2/sites-enabled/malariacontrol.httpd.conf
$sudo /etc/init.d/apache2 restart

We now need to fix the crontab file. To do this, copy information from yesterdays crontab file which can be edited using

$crontab -e

to the contents of PROJECT_ROOT/malariacontrol.cronjob which should look something like

# m h  dom mon dow   command
*/5 * * * * /malaria/malaria/bin/start --cron

afterwards.

Phew...