Building OVIS Public

This website contains archival information. For updates, see https://github.com/ovis-hpc/ovis-wiki/wiki

Status

  • OVIS version 3.0 supports multiple concurrent shepherds for the distributed database and mysql inserts on the part of the sheep (on-component data collectors). It has the qt/vtk based interface only.
  • We have a number of installs that use a single shepherd configuration. There are some features in the master git branch that are currently supported for single shepherd operation only (e.g., outlier analysis).
  • The data collection version which uses LDMS rather than the sheep is being used on some collaborative installs. This eliminates the on-node mysql inserts.

Please contact ovis-help for more information.

Directory Structure

A specific directory structure is not mandated, however we have used the following in many deployments: OVIS source is in

~ovis/Source/ovis 

and the binaries are in

~ovis/Build/ovis

and make install has been done to install to

/usr/local/ovis

with links from /usr/local/bin to the binaries there for shepherd, baron, and ovis-db and with

/etc/ld.so.conf.d/ovis.conf 

created with contents /usr/local/ovis/lib and /usr/local/ovis/lib64. (Recall to run /sbin/ldconfig -v after, and restart mysqld)

Dependencies

  • Avahi (or Bonjour) – avahi is only necessary for running OVIS with multiple databases. Avahi headers are necessary for building OVIS, even if intending a single database, but the avahi service does not need to be running for single shepherd operation. version around 0.6.27
  • qt – 4.7.4
  • qjson – 0.7.1 at least
  • boost – version 1.44 at least
  • MySQL – can use either PostgreSQL or MySQL
  • PostgreSQL – can use either PostgreSQL or MySQL
  • libevent – only if using LDMS. version 2.x
  • readline
  • CMake (if building)- version 2.8 at least

On systems such as FC16 all these dependencies can be resolved via yum (on others they may not be, or the version may not be correct). Assuming you are building everything, this would be:

      yum install \         cmake readline-devel libevent-devel \         postgresql postgresql-devel postgresql-libs postgresql-server \         mysql-devel mysql-utilities mysql mysql-libs mysql-server \         avahi avahi-glib-devel avahi-gobject avahi-libs avahi-glib avahi-devel \         avahi-ui-devel avahi-qt4-devel avahi-qt4 \         qt qt-webkit-devel qt-webkit qt-devel qt-x11 qt-mysql qjson qjson-devel \         boost boost-devel       # Required only to build baler:       yum install perl-Algorithm-Diff

Note that for some of the installation steps you may want to do (e.g., changing the rpath for programs) you may also want:

      yum install chrpath 

Otherwise you can install the packages from source and set the appropriate paths in the CMAKE Flags of OVIS.

CMAKE

OVIS uses CMAKE to build. Flags of interest include:

  • CMAKE_INSTALL_DIR – where you want to install ovis
  • any dependencypaths suchas : BOOST_INCLUDE_DIR, BOOST_LIBRARY_DIRS, QJSON_LIBRARY, QJSON_INCLUDE_DIR, any of the AVAHI flags etc
  • QT_QMAKE_EXECUTABLE
  • OVIS_USE_MYSQL or OVIS_USE_POSTGRESQL – at least one or the other must be on
  • OVIS_USE_AVAHI or OVIS_USE_BONJOUR – at least one or the other must be on
  • If you are using static libraries for your dependendencies: CMAKE_CXX_FLAGS and CMAKE_C_FLAGS -fPIC
  • OVIS_BUILD_BARON – set to yes for the install where you will run the baron (desired resolution and speed for the 3D interface requires NVIDIA card)
  • OVIS_BUILD_SHEPHERD – set to yes for the install where you will run shepherd (shepherd must be co-located with the database)

In addition:

  • BUILD_KOMONDOR = no
  • USE_SYSTEM_LIBEXEC =yes
  • anything to do with ldms currently no/off

Database

particular to FC16, from which you can extrapolate to your system:

  • Start database daemons
      # MySQL       systemctl enable mysqld.service       systemctl start mysqld.service       # Be sure to change Foob to something you will remember:       mysql -u root -e "UPDATE mysql.user SET Password=PASSWORD('Foob') WHERE User='root';FLUSH PRIVILEGES;"       # If the above doesn't work, try adding "-p".       # Drop the anonymous accounts (also verify afterward)       mysql -u root -p -e "DROP USER (single quote here)(single quote here)@'localhost'"       mysql -u root -p -e "DROP USER (single quote here)(single quote here)@'host_name_here'"       #mysql -u root -p -e "CREATE DATABASE OVIS_Cluster; GRANT ALL ON OVIS_Cluster.* TO 'ovis'@'localhost';FLUSH PRIVILEGES;"       #mysql -u root -p -e "CREATE DATABASE balerDemo;"        #mysql -u root -p -e "GRANT ALL ON balerDemo.* TO 'baler'@'localhost' IDENTIFIED BY 'Foob'; FLUSH PRIVILEGES;"       mysql -u root -p -e "GRANT ALL ON *.* TO 'ovis'@'localhost';FLUSH PRIVILEGES;"
      # PostgreSQL       postgresql-setup initdb       systemctl enable postgresql.service       systemctl start postgresql.service       su - postgres       createuser -s -R -l ovis       createdb -O ovis ovis       exit       systemctl stop postgresql.service       su - postgres       echo "# local access to ovis for all" > hba.tmp       echo "local   all             ovis                                    trust" >> hba.tmp       mv /var/lib/pgsql/data/pg_hba.conf hba2.tmp       cat hba.tmp hba2.tmp > /var/lib/pgsql/data/pg_hba.conf       rm -f hba.tmp hba2.tmp       # Turn off annoying informational messages that clutter real warning/error messages       mv /var/lib/pgsql/data/postgresql.conf conf.tmp       sed -e 's/max_connections = 100/max_connections = 500/g' \         -e 's/^#client_min_messages = notice.*/client_min_messages = warning/g' \         conf.tmp > /var/lib/pgsql/data/postgresql.conf       exit       # Turn up shared memory to 128 MiB (from 32 MiB) to allow more connections:       sysctl -w kernel.shmmax=134217728       # ... and make the change survive reboots:       echo " " >> /etc/sysctl.conf       echo "# For OVIS's use of PostgreSQL, increase shared memory size" >> /etc/sysctl.conf       echo "kernel.shmmax = 134217728" >> /etc/sysctl.conf       # Restart postgres       systemctl start postgresql.service
  • Install database triggers and create a database
      # PostgreSQL       mkdir /usr/local/ovis       chown ovis /usr/local/ovis       su - ovis       cd Build/ovis       make install       cd bin       tar cf - libvtksys* libvtkCommon* libvtkFiltering* libovTriggerPSQL.so | (cd /usr/local/ovis/lib64; tar xf - )       cd /usr/local/ovis/lib64       chrpath -r /usr/local/ovis/lib64: libvtkCommon* libvtkFiltering* libvtkInfovis* libovTriggerPSQL.so       exit       cd /usr/local/ovis/lib64       for f in libovTriggerPSQL.so libvtksys.so.5.11.0 libvtkCommon.so.5.11.0 libvtkFiltering.so.5.11.0 libvtkInfovis.so.5.11.0; do         semanage fcontext -a -t postgresql_exec_t /usr/local/ovis/lib64/$f         restorecon -v /usr/local/ovis/lib64/$f       done       semanage fcontext -a -t lib_t '/usr/local/ovis/lib64'       restorecon -v '/usr/local/ovis/lib64'       su - ovis       cd ~/Build/ovis       ./bin/ovis-db -t 16383 -x data/test.ovdb       exit
      # MySQL       cd ~ovis/Build/ovis/bin       tar cf - libovTriggerMySQL.so | (cd /usr/lib64/mysql/plugin; tar xf - )       tar cf - libvtksys* libvtkCommon* libvtkFiltering* libvtkInfovis* libovTriggerMySQL.so | (cd /usr/lib64/mysql; tar xf - )       restorecon -v /usr/lib64/mysql/libvtk*       restorecon -v /usr/lib64/mysql/plugin/libovTriggerMySQL.so       cd /usr/lib64/mysql       chrpath -r /usr/lib64/mysql: libvtkCommon* libvtkFiltering* libvtkInfovis* plugin/libovTriggerMySQL.so       su - ovis       cd ~/Build/ovis       ./bin/ovis-db -t 16383 -x data/test.ovdb -u mysql://ovis@localhost/OVIS_Cluster       exit
  • Set any additional paths you need for OVIS libraries to be found.
      echo "/usr/local/lib64" > /etc/ld.so.conf.d/ovis.conf        echo "/usr/local/lib" >> /etc/ld.so.conf.d/ovis.conf       ldconfig