Table of contents
Some Grid Engine is a fork of Son of Grid Engine from the University of Liverpool, with several improvements.
Many thanks to the Wikipedia editor who included this repository in the Comparison of cluster software.
We have been using and maintaining this software at the Michigan Neuroscience Institute, University of Michigan for over a decade.  We also have been testing it weekly against the latest versions of all major Linux distributions.
It has proven to be stable and well-suited for small HPC clusters.
We are sharing it here on GitHub in the hope that more people can benefit from it.
- 
musl libc compatibility 
 Portedglibc rresvportto work with musl libc.
 Tested on Void Linux (musl) and Alpine Linux.
- 
SystemD job submission support 
 Jobs can now be submitted via SystemD, allowing enforcement of memory and CPU limits via kernel cgroups.
 Thanks to fretn and ondrejv2!
- 
CMake build support 
 Added CMake for easier long-term maintenance.
 On an 15-year old 8-core machine:- 38 seconds with CMake (parallel compile & install)
- 302 seconds with legacy SGE build
- 377 seconds with makepkg
 
- 
Systemd installation fix 
 Fixed a permission error (introduced with systemd 241 in 2019) when installing SGE as a non-root user.
- 
OpenSSL compatibility 
 Updated for the latest OpenSSL versions.
- 
Compiler warnings resolved 
 All C compilation warnings fixed on Arch Linux and Void Linux.
 Issues were caused by stricter GCC, new SSL/GLIBC, and obsolete/deprecated functions (sigignore,readdir_r, etc.).
- 
Service name cleanup 
 Changed underscores to hyphens in service names (sge_qmaster/sge_execd→sge-qmaster/sge-execd).
 This avoids modifying/etc/servicesmanually.
- 
Init system support 
 Supports bothrunit(Void Linux) andsystemd(other distros).
- 
Versioning 
 Version numbers now correspond to the commit hash of this GitHub repository.
- 
5 keystrokes to setup a demo cluster on any Linux machine without root privilege 
- Arch Linux, 2025-08-30
pacman -Sy --needed cmake db gcc git hwloc inetutils m4 make man pkgconf vi
- Void Linux, 2025-08-30, x86_64, glibc/musl
xbps-install cmake gcc git hwloc libhwloc-devel libtirpc-devel m4 make ncurses-devel openssl-devel pam-devel
- Alpine Linux, 2025-08-30, x86_64, Edge
apk add cmake db-dev g++ gcc git hwloc-dev libtirpc-dev libxt-dev linux-pam-dev m4 make 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 10.0, 2025-08-30, with SELinux set to permissive
dnf group install "Development Tools"
dnf install cmake hwloc-devel ncurses-devel openssl-devel pam-devel rsync systemd-devel wget
dnf install https://dl.fedoraproject.org/pub/epel/10/Everything/x86_64/Packages/l/libdb-5.3.28-64.el10_0.x86_64.rpm
dnf install https://dl.fedoraproject.org/pub/epel/10/Everything/x86_64/Packages/l/libdb-devel-5.3.28-64.el10_0.x86_64.rpm
dnf install https://repo.almalinux.org/almalinux/10/CRB/x86_64/os/Packages/libtirpc-devel-1.3.5-1.el10.x86_64.rpm
- Rocky 10.0, 2025-08-30, with SELinux set to permissive
dnf group install "Development Tools"
dnf install cmake hwloc-devel ncurses-devel openssl-devel pam-devel rsync systemd-devel wget
dnf install https://dl.fedoraproject.org/pub/epel/10/Everything/x86_64/Packages/l/libdb-5.3.28-64.el10_0.x86_64.rpm
dnf install https://dl.fedoraproject.org/pub/epel/10/Everything/x86_64/Packages/l/libdb-devel-5.3.28-64.el10_0.x86_64.rpm
dnf install https://dl.rockylinux.org/pub/rocky/10/CRB/x86_64/os/Packages/l/libtirpc-devel-1.3.5-1.el10.x86_64.rpm
- AlmaLinux 9.6, 2025-08-30, with SELinux set to permissive
dnf group install "Development Tools"
dnf install cmake hwloc-devel libdb-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-9.el9.x86_64.rpm
- Rocky 9.6, 2025-08-30, with SELinux set to permissive
dnf group install "Development Tools"
dnf install cmake hwloc-devel libdb-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-9.el9.x86_64.rpm
- AlmaLinux 8.10 and Rocky 8.10, 2025-08-30, with SELinux set to permissive
dnf group install "Development Tools"
dnf --enablerepo=powertools install cmake hwloc-devel libdb-devel libtirpc-devel ncurses-devel openssl-devel pam-devel rsync systemd-devel wget
- Debian Trixie/Bookworm/Bullseye, 2025-08-30
apt install build-essential cmake git libdb5.3-dev libhwloc-dev libncurses-dev libpam0g-dev libssl-dev libsystemd-dev libtirpc-dev libxext-dev pkgconf rsync
- Ubuntu Server 24.04, 22.04, 20.04, 2025-08-30
apt-get install build-essential cmake git libdb5.3-dev libhwloc-dev libncurses-dev libpam0g-dev libssl-dev libsystemd-dev libtirpc-dev libxext-dev pkgconf
- openSUSE Leap, 2025-08-30
zypper -n addrepo http://download.opensuse.org/distribution/leap/15.6/repo/oss/ oss
zypper -n install cmake gcc gcc-c++ git hwloc-devel libdb-4_8-devel libtirpc-devel libXext-devel m4 ncurses-devel openssl-devel pam-devel pkgconf rsync systemd-devel wget
- 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.
- Legacy SGE installation on modern Linux distributions
make
sudo make install
Please check the original source/README.BUILD for detail
- Legacy SGE installation on Arch Linux
cp PKGBUILD.in PKGBUILD
makepkg
sudo pacman -U sge-r*.pkg.tar.zst
- step 1, as root.
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
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
ping master
ping node-XX
useradd -u <UID> -r -d /opt/sge sge
sge UID should be identical on all machines.
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
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
source /opt/sge/default/common/settings.sh
echo hostname | qsub -cwd
watch qstat
cat STDIN.*
Contributions are always welcome!
Written by Manhong Dai Copyright © 2002-2022 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.
This fork will be free in both "gratis" and "libre". For other active forks that have commercial support, please look into
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