GithubHelp home page GithubHelp logo

derkuci / sge Goto Github PK

View Code? Open in Web Editor NEW

This project forked from daimh/sge

0.0 1.0 0.0 16.62 MB

Some Grid Engine/Son of Grid Engine/Sun Grid Engine

CMake 0.12% Shell 1.46% Roff 0.09% Makefile 1.68% HTML 1.20% C 66.47% C++ 6.26% Java 20.90% M4 0.01% Lex 0.05% Yacc 0.03% Perl 0.57% SWIG 0.15% TeX 0.55% Rich Text Format 0.24% JavaScript 0.03% Prolog 0.04% XSLT 0.02% Ruby 0.07% DTrace 0.03%

sge's Introduction

Some Grid Engine/Son of Grid Engine/Sun Grid Engine

Table of contents
  1. About SGE
  2. Requirements
  3. Three different installation methods
  4. Quick test on one machine
  5. Installation
  6. Contribute
  7. License
  8. Acknowledgments

About SGE

Some Grid Engine is a fork of Son of Grid Engine at University of Liverpool, with SOME improvement.

We have been using, maintaining this famous software at Michigan Neuroscience Institute, University of Michigan for over a decade. We also test it weekly with the latest version of all major Linux distros. It is stable and good enough for a small HPC cluster. Here share it on GitHub, hoping more peoples can benefit from it.

Improvements

  • Compatible with musl libc with ported glibc rresvport, tested with Void Linux musl and Alpine Linux.
  • Support for submitting jobs via SystemD which also allows to enforce memory/cpu limitations via kernel cgroups. Many thanks to fretn and ondrejv2!
  • CMake compiling support. This paved the way for easier maintenance in future. It took 38 seconds to compile in parallel and install on an 8-core old machine, while it took 302 seconds with the legacy SGE way, and 377 seconds with makepkg.
  • Fixed a permission error introduced since systemd 241 in 2019 during installation, if SGE is installed as non-root on production system
  • Compatible with the latest version of openssl
  • All C compling warning are fixed on Arch Linux and Void Linux. Most of them were caused by 'smarter' gcc, new SSL, new GLIBC, obsolete function such 'sigignore', depreciated function such as 'readdir_r', etc.
  • Underscore in port service name 'sge_qmaster/sge_execd' is changed to hyphen in all C files and shell scripts, saving us from modifying /etc/services each time
  • Supports both runit on Void Linux and systemd on other distros
  • Version is changed to the commit version of this github repo
  • 5 keystrokes to setup a demo cluster on any Linux machine without root privilege
  • Automated weekly tests for a lot of Linux distros

Requirements

tested with all the Linux distributions below, patched up to the specified date

  • Arch Linux, 2023-09-30
pacman -Sy --needed cmake db gcc git hwloc inetutils m4 make man openmotif pkgconf vi
  • Debian Bookworm/Bullseye, 2023-09-30
apt install build-essential cmake git libdb5.3-dev libhwloc-dev libmotif-dev libncurses-dev libpam0g-dev libssl-dev libsystemd-dev libtirpc-dev libxext-dev pkgconf rsync
  • Ubuntu Server 23.04, 22.04, 20.04, 2023-09-30
apt-get install build-essential cmake git libdb5.3-dev libhwloc-dev libmotif-dev libncurses-dev libpam0g-dev libssl-dev libsystemd-dev libtirpc-dev libxext-dev pkgconf

  • Void Linux, 2023-09-30, x86_64, glibc/musl
xbps-install cmake gcc git hwloc libhwloc-devel libtirpc-devel m4 make motif-devel ncurses-devel openssl-devel pam-devel
  • Alpine Linux, 2023-09-30, x86_64, Edge
apk add cmake db-dev g++ gcc git hwloc-dev libtirpc-dev libxt-dev linux-pam-dev m4 make motif-dev ncurses-dev openssl-dev procps
#Due to the conflict with usr/include/libintl.h owned by both gettext-dev and musl-libintl
apk fetch musl-libintl
tar -C / -xf musl-libintl*.apk usr/include/libintl.h
  • AlmaLinux 9.2, 2023-09-30, with SELinux set to permissive
dnf group install "Development Tools"
dnf install cmake hwloc-devel libdb-devel motif-devel ncurses-devel openssl-devel pam-devel rsync systemd-devel wget
dnf install https://repo.almalinux.org/almalinux/9/CRB/x86_64/os/Packages/libtirpc-devel-1.3.3-1.el9.x86_64.rpm
  • AlmaLinux 8.8 and Rocky 8.8, 2023-09-30, with SELinux set to permissive
dnf group install "Development Tools"
dnf --enablerepo=powertools install cmake hwloc-devel libdb-devel libtirpc-devel motif-devel ncurses-devel openssl-devel pam-devel rsync systemd-devel wget
  • CentOS 7.9.2009, 2023-09-30, with SELinux set to permissive
yum groupinstall 'Development Tools'
yum install hwloc-devel libdb-devel libtirpc-devel motif-devel ncurses-devel openssl-devel pam-devel rsync systemd-devel wget
wget https://github.com/Kitware/CMake/releases/download/v3.23.0/cmake-3.23.0-linux-x86_64.tar.gz
tar xvfz cmake-3.23.0-linux-x86_64.tar.gz
export PATH=$(realpath cmake-3.23.0-linux-x86_64)/bin:$PATH
  • openSUSE Leap, 2023-09-30
zypper -n addrepo http://download.opensuse.org/distribution/leap/15.5/repo/oss/ oss
zypper -n install cmake gcc gcc-c++ git hwloc-devel libdb-4_8-devel libtirpc-devel libXext-devel motif-devel ncurses-devel openssl-devel pam-devel pkgconf rsync systemd-devel wget
  • openSUSE Tumbleweed, 2022-10-09
zypper -n addrepo http://download.opensuse.org/tumbleweed/repo/oss/ oss
zypper -n install cmake gcc gcc-c++ git hwloc-devel libdb-4_8-devel libtirpc-devel libXext-devel motif-devel ncurses-devel openssl-devel pam-devel pkgconf rsync systemd-devel wget

Last test date for EOL Linux distributions

  • Rocky 9.1, 2023-05-06, with SELinux set to permissive
dnf group install "Development Tools"
dnf install cmake hwloc-devel libdb-devel motif-devel ncurses-devel openssl-devel pam-devel rsync systemd-devel wget
dnf install https://dl.rockylinux.org/pub/rocky/9/CRB/x86_64/os/Packages/l/libtirpc-devel-1.3.3-0.el9.x86_64.rpm
  • Debian Buster, 2021-10-19, cmake 3.21.3 downloaded from cmake.org
apt install git build-essential libhwloc-dev libssl-dev libtirpc-dev libmotif-dev libxext-dev libncurses-dev libdb5.3-dev libpam0g-dev pkgconf libsystemd-dev

Three different installation methods

  1. CMake, recommended
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/opt/sge
cmake --build build -j
sudo cmake --install build

Please check the tested environment below in case of any compiling issue.

  1. Legacy SGE installation on modern Linux distributions
make
sudo make install

Please check the original source/README.BUILD for detail

  1. Legacy SGE installation on Arch Linux
cp PKGBUILD.in PKGBUILD
makepkg
sudo pacman -U sge-r*.pkg.tar.zst

Quick test on one machine

  • step 1, as root.

First of all, change option admin_user in bootstrapfile

useradd -r -d /opt/sge sge
chown -R sge /opt/sge
cd /opt/sge
yes "" | ./install_qmaster
yes "" | ./install_execd
source /opt/sge/default/common/settings.sh
qhost -q #you should be able to see five lines of output
qconf -as $HOSTNAME #add this node as submit host
  • step 2, as a regular account
source /opt/sge/default/common/settings.sh
echo hostname | qsub -cwd
watch qstat #check job status
ls STDIN.* #check job output

Installation

All SGE services are running under user sge for security reason, as this is production system.

Assuming master node hostname is master, and execution nodes hostnames is node-XX. /etc/hosts on master and all nodes shoud be like it:

10.1.1.1	 master
10.1.1.11	 node-01
10.1.1.12	 node-02
...
10.1.1.1N	 node-0N

All IP addresses are as an example.

The first - on all nodes as root

ping master
ping node-XX
useradd -u <UID> -r -d /opt/sge sge

sge UID should be equal on all machines.

The second - on master as root

First of all, change option admin_user in bootstrapfile

chown -R sge /opt/sge
cd /opt/sge
yes "" | ./install_qmaster
source /opt/sge/default/common/settings.sh
qconf -as master

Next commands it's necessary to run for each nodes in cluster:

qconf -ah node-01
qconf -ah node-02
...
qconf -ah node-0N

The third - on all nodes as root

mkdir -p /opt/sge/default
chown -R sge /opt/sge/default
scp -pr master:/opt/sge/default/common /opt/sge/default/common
cd /opt/sge
yes "" | ./install_execd
source /opt/sge/default/common/settings.sh
qhost -q

The fourth - on master as any non-root user

source /opt/sge/default/common/settings.sh
echo hostname | qsub -cwd
watch qstat
cat STDIN.*

Contribute

Contributions are always welcome!

License

Written by Manhong Dai
Copyright © 2002 University of Michigan.
License SISSL
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Acknowledgments

https://arc.liv.ac.uk/trac/SGE, Sun, and Oracle
fretn
ondrejv2
Ruth Freedman, MPH, former administrator of MNI, UMICH
Thomas Wilson, M.D., Ph.D. Professor of Pathology, UMICH
Huda Akil, Ph.D., Director of MNI, UMICH
Stanley J. Watson, M.D., Ph.D., Director of MNI, UMICH
Fan Meng, Ph.D., Research Associate Professor, Psychiatry, UMICH

sge's People

Contributors

daimh avatar mperov avatar ondrejv2 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.