A fork of Son of Grid Engine at University of Liverpool, with SOME improvement.
We have been using and maintaining this software at Michigan Neuroscience Institute, University of Michigan for over a decade. It is stable and good enough for a small HPC cluster. Here we share it on github, hoping more peoples can benefit from it.
- 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 openssl-1.1.1
- All warning are fixed on Arch 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
- Systemd support
- Version is changed to the commit version of this github repo
- CMake
$ cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/opt/sge
$ cmake --build build -j
$ sudo cmake --install build
Please check the tested building environment below in case of any compiling issue.
- Legacy SGE installation on modern Linux distributions, check the original source/README.BUILD for detail
$ make
$ sudo make install
- Legacy SGE installation on Arch Linux
$ cp PKGBUILD.in PKGBUILD
$ makepkg
$ sudo pacman -U sge-r*.pkg.tar.zst
- step 1, as root.
$ cd /opt/sge
$ yes "" | ./install_qmaster
$ yes "" | ./install_execd
$ . /opt/sge/default/common/settings.sh
$ qhost -q #you should be able to see five lines of output
$ qconf -as $(hostname -s) #add this node as submit host
please make sure there is no SGE process running with 'ps -ef |grep sge' and directory '/opt/sge/default' is removed if you want to run the commands above again
- step 2, as a regular account
$ . /opt/sge/default/common/settings.sh
$ echo hostname | qsub -cwd
$ watch qstat #check job status
$ ls STDIN.* #check job output
All SGE services are running under user 'sge' for security reason, as this is production system.
Tested with the latest Arch Linux on Oct 27, 2020, on two nodes created by daiker with command 'daiker run -PT 22 ...'
Assuming master node hostname is 'master-node', and execution node hostname is 'exec-node'. /etc/hosts on both nodes have these two entries
10.1.1.1 master-node
10.1.1.2 exec-node
- step 1, on both nodes as root
$ ping master-node
$ ping exec-node
$ pacman -Sy --needed git cmake make gcc openmotif hwloc vi inetutils
$ useradd -r -d /opt/sge sge
$ mkdir /opt/sge
$ chown sge /opt/sge
$ git clone https://github.com/daimh/sge.git
$ cd sge
$ cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/opt/sge
$ cmake --build build -j
$ cmake --install build
- step 2, on master-node as root
$ cd /opt/sge
$ yes "" | ./install_qmaster
$ . /opt/sge/default/common/settings.sh
$ qconf -ah exec-node
$ qconf -as exec-node
- step 3, on exec-node as root
$ mkdir -p /opt/sge/default
$ chown -R sge /opt/sge/default
$ scp -pr master-node:/opt/sge/default/common /opt/sge/default/common
$ cd /opt/sge
$ yes "" | ./install_execd
$ . /opt/sge/default/common/settings.sh
$ qhost -q
$ su - sge
- step 4, on exec-node as sge
# . /opt/sge/default/common/settings.sh
# echo hostname | qsub -cwd
# watch qstat
# cat STDIN.*
- Arch Linux
$ pacman -Sy --needed git cmake make gcc openmotif hwloc vi inetutils
- Debian Buster, with "standard system utilities" checked during installation, and cmake 3.18.4 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
- Ubuntu Server 20.04
$ apt install git build-essential libhwloc-dev libssl-dev libtirpc-dev libmotif-dev libxext-dev libncurses-dev libdb5.3-dev libpam0g-dev cmake
- CentOS 8.2 with SELinux set to permissive, and cmake 3.18.4 downloaded from cmake.org
$ dnf group install "Development Tools"
$ dnf --enablerepo=PowerTools install hwloc-devel openssl-devel libtirpc-devel motif-devel ncurses-devel libdb-devel pam-devel
Contributions are always welcome!
Developed by Manhong Dai
Copyright © 2020 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.
Thomas Wilson, M.D., Ph.D. Professor of Pathology, UMICH
Ruth Freedman, MPH, former administrator of MNI, UMICH
Fan Meng, Ph.D., Research Associate Professor, Psychiatry, UMICH
Huda Akil, Ph.D., Director of MNI, UMICH
Stanley J. Watson, M.D., Ph.D., Director of MNI, UMICH
Also thanks to https://arc.liv.ac.uk/trac/SGE and Sun company.
no thanks to Oracle though, :)