Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 46 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,23 @@ jobs:
run: |
docker exec spindlenode bash -c 'cd Spindle-build/testsuite && ./runTests'

- name: Configure host core_pattern for coredumps
if: ${{ !env.ACT }}
run: |
sudo sysctl -w kernel.core_pattern='core.%p'

- name: Run spindle-serial-ubuntu crash tests
run: |
docker exec spindlenode bash -c 'cd Spindle-build/testsuite && ./run_crash_tests.sh --launcher=serial --scratch=/tmp/spindle_crash_test'

- name: Bring spindle-serial-ubuntu down
id: serial-ubuntu-down
if: ${{ always() }}
continue-on-error: true
run: |
cd containers/spindle-serial-ubuntu
docker compose down

spindle-serial-ubuntu_arm64:
name: Testsuite (Serial, Ubuntu, arm64)
environment: Spindle CI
Expand Down Expand Up @@ -98,6 +107,15 @@ jobs:
run: |
docker exec spindlenode bash -c 'cd Spindle-build/testsuite && ./runTests'

- name: Configure host core_pattern for coredumps
if: ${{ !env.ACT }}
run: |
sudo sysctl -w kernel.core_pattern='core.%p'

- name: Run spindle-serial-ubuntu crash tests
run: |
docker exec spindlenode bash -c 'cd Spindle-build/testsuite && ./run_crash_tests.sh --launcher=serial --scratch=/tmp/spindle_crash_test'

- name: Bring spindle-serial-ubuntu down
id: serial-ubuntu-down
if: ${{ always() }}
Expand Down Expand Up @@ -142,6 +160,15 @@ jobs:
run: |
docker exec node-1 bash -c 'cd Spindle-build/testsuite && flux alloc --nodes=${workers} ./runTests --nodes=${workers} --tasks-per-node=3'

- name: Configure host core_pattern for coredumps
if: ${{ !env.ACT }}
run: |
sudo sysctl -w kernel.core_pattern='core.%p'

- name: Run spindle-flux-ubuntu crash tests
run: |
docker exec node-1 bash -c 'cd Spindle-build/testsuite && flux alloc --nodes=${workers} ./run_crash_tests.sh --launcher=flux --nodes=${workers} --scratch=/shared/spindle_crash_test'

- name: Bring spindle-flux-ubuntu down
id: flux-ubuntu-down
if: ${{ always() }}
Expand Down Expand Up @@ -200,6 +227,15 @@ jobs:
run: |
docker exec slurm-head bash -c 'cd Spindle-build/testsuite && salloc -n${workers} -N${workers} ./runTests ${workers}'

- name: Configure host core_pattern for coredumps
if: ${{ !env.ACT }}
run: |
sudo sysctl -w kernel.core_pattern='core.%p'

- name: Run spindle-slurm-ubuntu crash tests
run: |
docker exec slurm-head bash -c 'cd Spindle-build/testsuite && ./run_crash_tests.sh --launcher=slurm --nodes=${workers} --scratch=/shared/spindle_crash_test'

- name: Bring spindle-slurm-ubuntu down
id: slurm-ubuntu-down
if: ${{ always() }}
Expand Down Expand Up @@ -321,6 +357,15 @@ jobs:
run: |
docker exec slurm-plugin-head bash -c 'cd Spindle-build/testsuite && salloc -n${workers} -N${workers} --spindle-session ./runTests ${workers}'

- name: Configure host core_pattern for coredumps
if: ${{ !env.ACT }}
run: |
sudo sysctl -w kernel.core_pattern='core.%p'

- name: Run spindle-slurm-plugin-ubuntu crash tests
run: |
docker exec slurm-plugin-head bash -c 'cd Spindle-build/testsuite && ./run_crash_tests.sh --launcher=slurm-plugin --nodes=${workers} --scratch=/shared/spindle_crash_test'

- name: Bring spindle-slurm-plugin-ubuntu down
id: slurm-ubuntu-down
if: ${{ always() }}
Expand Down
3 changes: 3 additions & 0 deletions config.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@
/* Define if were using sockets for client/server communication */
#undef COMM_SOCKET

/* Enable --crash-dedup by default */
#undef CRASH_DEDUP_ENABLED_BY_DEFAULT

/* Defined if GLIBC has an allocation bug */
#undef DTV_ALLOCATION_BUG

Expand Down
16 changes: 16 additions & 0 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -879,6 +879,7 @@ enable_sec_munge
enable_sec_keydir
enable_sec_launchmon
enable_sec_none
enable_crash_dedup
with_gcrypt_dir
with_munge_dir
with_glibc_be_dir
Expand Down Expand Up @@ -1576,6 +1577,7 @@ Optional Features:
--enable-sec-launchmon Enable LaunchmMON to propagate authentication key
for connections
--enable-sec-none Disable security authentication of connections
--enable-crash-dedup Enable --crash-dedup by default (default: disabled)
--enable-remap-pageone Controls mmap behavior when replacing executables.
Should be false on older linux systems
--enable-testsuite Chooses whether to build the Spindle testsuite.
Expand Down Expand Up @@ -17658,6 +17660,20 @@ if test "${enable_sec_none+set}" = set; then :
fi


# Check whether --enable-crash-dedup was given.
if test "${enable_crash_dedup+set}" = set; then :
enableval=$enable_crash_dedup; enable_crash_dedup=$enableval
else
enable_crash_dedup=no
fi


if test "x$enable_crash_dedup" = xyes; then :

$as_echo "#define CRASH_DEDUP_ENABLED_BY_DEFAULT 1" >>confdefs.h

fi


# Check whether --with-gcrypt-dir was given.
if test "${with_gcrypt_dir+set}" = set; then :
Expand Down
10 changes: 10 additions & 0 deletions configure.common.ac
Original file line number Diff line number Diff line change
Expand Up @@ -427,6 +427,16 @@ AC_ARG_ENABLE(sec-none,
[AS_HELP_STRING([--enable-sec-none],[Disable security authentication of connections])],
[WANT_NOSEC="true";EXPLICIT_SEC="true"],)

AC_ARG_ENABLE([crash-dedup],
[AS_HELP_STRING([--enable-crash-dedup],
[Enable --crash-dedup by default (default: disabled)])],
[enable_crash_dedup=$enableval],
[enable_crash_dedup=no])

AS_IF([test "x$enable_crash_dedup" = xyes],
[AC_DEFINE([CRASH_DEDUP_ENABLED_BY_DEFAULT], [1],
[Enable --crash-dedup by default])])

AC_ARG_WITH(gcrypt-dir,
[AS_HELP_STRING([--with-gcrypt-dir=DIR],[Look in DIR for gcrypt installation])],
[GCRYPT_CFLAGS="-I${withval}/include";GCRYPT_LIBS="-L${withval}/lib"],)
Expand Down
2 changes: 2 additions & 0 deletions containers/spindle-flux-ubuntu/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ ENV workers=${replicas}
USER root
ENV TMPDIR=/tmp
RUN echo 'TMPDIR="/tmp"' >> /etc/environment
ENV SPINDLE_TEST_CONTAINER=1

RUN DEBIAN_FRONTEND="noninteractive" apt-get update \
&& apt-get -qq install -y --no-install-recommends \
Expand All @@ -26,6 +27,7 @@ RUN DEBIAN_FRONTEND="noninteractive" apt-get update \
libgcrypt20 \
libgcrypt20-dev \
gdb \
libc6-dbg \
software-properties-common

ARG USER=fluxuser
Expand Down
7 changes: 7 additions & 0 deletions containers/spindle-flux-ubuntu/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,19 @@ networks:
flux:
driver: bridge

# Shared scratch volume so run_crash_tests.sh can count coredumps
# produced by any rank on any node from a single location.
volumes:
crash_scratch:

# Common parameters for all nodes.
x-shared-node-parameters: &shared-node-parameters
build: *shared-build-context
networks:
- flux
environment: *shared-environment
volumes:
- crash_scratch:/shared
cap_add:
- SYS_NICE # Required for libnuma

Expand Down
2 changes: 1 addition & 1 deletion containers/spindle-flux-ubuntu/scripts/build_spindle.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ set -euxo pipefail

mkdir -p /home/${USER}/Spindle-build
cd /home/${USER}/Spindle-build
/home/${USER}/Spindle/configure --prefix=/home/${USER}/Spindle-inst --enable-sec-munge --with-rm=flux --enable-flux-plugin --with-cachepaths=/tmp/commpath/cachepath --with-commpath=/tmp/commpath CFLAGS="-O2 -g" CXXFLAGS="-O2 -g"
/home/${USER}/Spindle/configure --prefix=/home/${USER}/Spindle-inst --enable-sec-munge --with-rm=flux --enable-flux-plugin --with-cachepaths=/tmp/commpath/cachepath --with-commpath=/tmp/commpath --enable-crash-dedup CFLAGS="-O2 -g" CXXFLAGS="-O2 -g"
make -j$(nproc)
make install

5 changes: 5 additions & 0 deletions containers/spindle-flux-ubuntu/scripts/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ thisHost=${thisHost[0]}
echo $thisHost
export FLUX_FAKE_HOSTNAME=$thisHost

if [ -d /shared ]; then
sudo chown -R "$(id -un):$(id -gn)" /shared
sudo chmod 755 /shared
fi

# Start munged
sudo -u munge /usr/sbin/munged

Expand Down
3 changes: 3 additions & 0 deletions containers/spindle-serial-ubuntu/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ FROM ubuntu:${ubuntu_version}
USER root
ENV TMPDIR=/tmp
RUN echo 'TMPDIR="/tmp"' >> /etc/environment
ENV SPINDLE_TEST_CONTAINER=1

RUN DEBIAN_FRONTEND="noninteractive" apt-get update \
# install latest pkg utils:
Expand All @@ -26,6 +27,8 @@ RUN DEBIAN_FRONTEND="noninteractive" apt-get -qq install -y --no-install-recomme
gfortran-13 \
gcc-13 \
g++-13 \
gdb \
libc6-dbg \
munge \
libmunge-dev \
libhwloc-dev \
Expand Down
2 changes: 1 addition & 1 deletion containers/spindle-serial-ubuntu/scripts/build_spindle.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ set -euxo pipefail

mkdir -p /home/${USER}/Spindle-build
cd /home/${USER}/Spindle-build
/home/${USER}/Spindle/configure --prefix=/home/${USER}/Spindle-inst --enable-sec-munge --with-rm=serial --with-cachepaths=/tmp/commpath/cachepath --with-commpath=/tmp/commpath CFLAGS="-O2 -g" CXXFLAGS="-O2 -g"
/home/${USER}/Spindle/configure --prefix=/home/${USER}/Spindle-inst --enable-sec-munge --with-rm=serial --with-cachepaths=/tmp/commpath/cachepath --with-commpath=/tmp/commpath --enable-crash-dedup CFLAGS="-O2 -g" CXXFLAGS="-O2 -g"
make -j$(nproc)
make install

1 change: 1 addition & 0 deletions containers/spindle-slurm-ubuntu/base/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ RUN apt-get update \
gfortran-13 \
gcc-13 \
g++-13 \
gdb \
munge \
libmunge-dev \
libhwloc-dev \
Expand Down
6 changes: 6 additions & 0 deletions containers/spindle-slurm-ubuntu/testing-plugin/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,15 @@ ARG replicas=4
ENV workers=${replicas}
ENV TMPDIR=/tmp
RUN echo 'TMPDIR="/tmp"' >> /etc/environment
ENV SPINDLE_TEST_CONTAINER=1

ARG BUILD_ROOT=containers/spindle-slurm-ubuntu/testing-plugin

RUN apt-get update \
&& DEBIAN_FRONTEND="noninteractive" apt-get -qq install -y --no-install-recommends \
gdb \
libc6-dbg

# Slurm daemons run as $SLURM_USER
ARG SLURM_USER=slurm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,21 @@ networks:
slurm:
driver: bridge

# Shared scratch volume so run_crash_tests.sh can count coredumps
# written by ranks on any node from the head node.
volumes:
crash_scratch:

# Common parameters for all nodes.
x-shared-node-parameters: &shared-node-parameters
build: *shared-build-context
networks:
- slurm
volumes:
- crash_scratch:/shared
cap_add:
- SYS_NICE # Required for libnuma
- SYS_RESOURCE # Allow changing ulimit

x-healthcheck-parameters: &healthcheck-parameters
start_period: 3s
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ set -euxo pipefail

mkdir -p /home/${USER}/Spindle-build
cd /home/${USER}/Spindle-build
/home/${USER}/Spindle/configure --prefix=/home/${USER}/Spindle-inst --enable-sec-munge --with-rm=slurm-plugin --enable-slurm-plugin --with-cachepaths=/tmp/commpath/cachepath --with-commpath=/tmp/commpath CFLAGS="-O2 -g" CXXFLAGS="-O2 -g"
/home/${USER}/Spindle/configure --prefix=/home/${USER}/Spindle-inst --enable-sec-munge --with-rm=slurm-plugin --enable-slurm-plugin --with-cachepaths=/tmp/commpath/cachepath --with-commpath=/tmp/commpath --enable-crash-dedup CFLAGS="-O2 -g" CXXFLAGS="-O2 -g"
make -j$(nproc)
make install

Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,14 @@
echo "SLURM_ROLE: ${SLURM_ROLE}"

echo "Starting sshd..."
sudo service ssh start
sudo bash -c 'ulimit -c unlimited; service ssh start'
echo "Starting munged..."
sudo -u munge /usr/sbin/munged
sudo -u munge /usr/sbin/munged

if [ -d /shared ]; then
sudo chown -R "$(id -un):$(id -gn)" /shared
sudo chmod 755 /shared
fi

if [ "${SLURM_ROLE}" = "db" ]; then
echo "Starting slurmdbd..."
Expand All @@ -15,7 +20,7 @@ elif [ "${SLURM_ROLE}" = "ctl" ] ; then
sudo -u slurm /usr/sbin/slurmctld -i -Dvvv
elif [ "${SLURM_ROLE}" = "worker" ] ; then
echo "Starting slurmd..."
sudo /usr/sbin/slurmd -Dvvv
sudo bash -c 'ulimit -c unlimited; exec env -u PWD /usr/sbin/slurmd -Dvvv'
fi

sleep inf
6 changes: 6 additions & 0 deletions containers/spindle-slurm-ubuntu/testing/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,15 @@ ARG replicas=4
ENV workers=${replicas}
ENV TMPDIR=/tmp
RUN echo 'TMPDIR="/tmp"' >> /etc/environment
ENV SPINDLE_TEST_CONTAINER=1

ARG BUILD_ROOT=containers/spindle-slurm-ubuntu/testing

RUN apt-get update \
&& DEBIAN_FRONTEND="noninteractive" apt-get -qq install -y --no-install-recommends \
gdb \
libc6-dbg

# Slurm daemons run as $SLURM_USER
ARG SLURM_USER=slurm

Expand Down
8 changes: 8 additions & 0 deletions containers/spindle-slurm-ubuntu/testing/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,21 @@ networks:
slurm:
driver: bridge

# Shared scratch volume so run_crash_tests.sh can count coredumps
# written by ranks on any node from the head node.
volumes:
crash_scratch:

# Common parameters for all nodes.
x-shared-node-parameters: &shared-node-parameters
build: *shared-build-context
networks:
- slurm
volumes:
- crash_scratch:/shared
cap_add:
- SYS_NICE # Required for libnuma
- SYS_RESOURCE # Allow changing ulimit

x-healthcheck-parameters: &healthcheck-parameters
start_period: 3s
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ set -euxo pipefail

mkdir -p /home/${USER}/Spindle-build
cd /home/${USER}/Spindle-build
/home/${USER}/Spindle/configure --prefix=/home/${USER}/Spindle-inst --enable-sec-munge --with-rm=slurm --with-rsh-launch --with-rsh-cmd=/usr/bin/ssh --with-cachepaths=/tmp/commpath/cachepath --with-commpath=/tmp/commpath CFLAGS="-O2 -g" CXXFLAGS="-O2 -g"
/home/${USER}/Spindle/configure --prefix=/home/${USER}/Spindle-inst --enable-sec-munge --with-rm=slurm --with-rsh-launch --with-rsh-cmd=/usr/bin/ssh --with-cachepaths=/tmp/commpath/cachepath --with-commpath=/tmp/commpath --enable-crash-dedup CFLAGS="-O2 -g" CXXFLAGS="-O2 -g"
make -j$(nproc)
make install

11 changes: 8 additions & 3 deletions containers/spindle-slurm-ubuntu/testing/scripts/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,14 @@
echo "SLURM_ROLE: ${SLURM_ROLE}"

echo "Starting sshd..."
sudo service ssh start
sudo bash -c 'ulimit -c unlimited; service ssh start'
echo "Starting munged..."
sudo -u munge /usr/sbin/munged
sudo -u munge /usr/sbin/munged

if [ -d /shared ]; then
sudo chown -R "$(id -un):$(id -gn)" /shared
sudo chmod 755 /shared
fi

if [ "${SLURM_ROLE}" = "db" ]; then
echo "Starting slurmdbd..."
Expand All @@ -15,7 +20,7 @@ elif [ "${SLURM_ROLE}" = "ctl" ] ; then
sudo -u slurm /usr/sbin/slurmctld -i -Dvvv
elif [ "${SLURM_ROLE}" = "worker" ] ; then
echo "Starting slurmd..."
sudo /usr/sbin/slurmd -Dvvv
sudo bash -c 'ulimit -c unlimited; exec /usr/sbin/slurmd -Dvvv'
fi

sleep inf
Loading