Make builder nice to it's host

StarlingX build tools consume excessive cpu and io which can starve
non-build services, including kubernetes and calico. This results in
timeouts, restarts, and general instability of calico and kubernetes
which in turn can the build to fail. This affect is observed on the
main StarlingX build server.

The major build steps should employ 'nice' and 'ionice' to ensure
that critical services on the build host are not starved for cpu or io.

Closes-bug: 2095512
Change-Id: I9f9fd3c6cb3daef40c90299184ca09bc5a0d2415
Signed-off-by: Scott Little <scott.little@windriver.com>
This commit is contained in:
Scott Little 2025-01-21 14:49:07 -05:00
parent 7362b9d63d
commit 6e16428c26
4 changed files with 73 additions and 63 deletions

@ -41,10 +41,13 @@ RUN apt-get -q update && apt-get -y install gnupg2 && \
echo "deb http://nginx.org/packages/debian/ bullseye nginx" > /etc/apt/sources.list.d/nginx.list && \
apt-key add ./nginx_signing.key && \
apt-get -q update && apt-get -y install \
aptly \
supervisor \
gettext-base \
nginx && \
aptly \
coreutils \
gettext-base \
nginx \
supervisor \
util-linux \
&& \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /usr/share/man && \
@ -82,4 +85,4 @@ RUN chmod 0644 /etc/vim/vimrc.local
# Configure startup
COPY stx/toCOPY/aptly/entrypoint.sh /bin/entrypoint.sh
ENTRYPOINT [ "/bin/entrypoint.sh" ]
ENTRYPOINT [ "ionice", "-c", "3", "nice", "-n", "15", "/bin/entrypoint.sh" ]

@ -27,6 +27,7 @@ RUN apt-get -y update && apt-get -y install --no-install-recommends ca-certifica
# Download required dependencies by mirror/build processes.
RUN apt-get update && apt-get install --no-install-recommends -y \
bzip2 \
coreutils \
cpio \
curl \
debian-keyring \
@ -37,9 +38,11 @@ RUN apt-get update && apt-get install --no-install-recommends -y \
file \
git \
git-buildpackage \
isomd5sum \
less \
libdistro-info-perl \
locales-all \
mkisofs \
pristine-tar \
proxychains \
python3 \
@ -51,15 +54,14 @@ RUN apt-get update && apt-get install --no-install-recommends -y \
rpm2cpio \
ssh \
sudo \
syslinux-utils \
tini \
unzip \
util-linux \
vim \
wget \
xz-utils \
mkisofs \
isomd5sum \
syslinux-utils \
&& \
&& \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
@ -105,5 +107,5 @@ RUN mkdir -p /etc/vim
COPY stx/toCOPY/common/vimrc.local /etc/vim/vimrc.local
RUN chmod 0644 /etc/vim/vimrc.local
ENTRYPOINT ["/usr/bin/tini", "-g", "--"]
ENTRYPOINT ["ionice", "-c", "3", "nice", "-n", "15", "/usr/bin/tini", "-g", "--"]
CMD ["/bin/bash", "-i", "-c", "exec /bin/sleep infinity" ]

@ -24,20 +24,22 @@ RUN apt-get -y update && apt-get -y install --no-install-recommends ca-certifica
# Install necessary packages
RUN apt-get -y update && apt-get --no-install-recommends -y install \
openssh-client \
python3 \
python3-pip \
xz-utils \
file \
bzip2 \
procps \
tini \
wget \
locales-all \
python3-yaml \
rsync \
cpio \
vim \
bzip2 \
coreutils \
cpio \
file \
locales-all \
openssh-client \
procps \
python3 \
python3-pip \
python3-yaml \
rsync \
tini \
util-linux \
vim \
wget \
xz-utils \
&& \
apt-get clean && \
mkdir -p /opt/LAT/SDK && \
@ -45,21 +47,21 @@ RUN apt-get -y update && apt-get --no-install-recommends -y install \
# Packages for pre-patched iso creation support
RUN apt-get -y install \
isomd5sum \
syslinux-utils \
bubblewrap \
git \
python3-apt \
python3-gi \
python3-gi-cairo \
python3-systemd \
gir1.2-ostree-1.0 \
reprepro \
dosfstools \
xfsprogs \
debos \
mmdebstrap \
p7zip-full \
bubblewrap \
debos \
dosfstools \
gir1.2-ostree-1.0 \
git \
isomd5sum \
mmdebstrap \
p7zip-full \
python3-apt \
python3-gi \
python3-gi-cairo \
python3-systemd \
reprepro \
syslinux-utils \
xfsprogs \
&& \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
@ -92,4 +94,4 @@ COPY stx/toCOPY/common/vimrc.local /etc/vim/vimrc.local
RUN chmod 0644 /etc/vim/vimrc.local
ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["/opt/LAT/lat/latd"]
CMD ["ionice", "-c", "3", "nice", "-n", "15", "/opt/LAT/lat/latd"]

@ -22,28 +22,31 @@ RUN apt-get -y update && apt-get -y install --no-install-recommends ca-certifica
# Download required dependencies by mirror/build processes.
RUN apt-get update && apt-get install --no-install-recommends -y \
build-essential \
live-build \
pbuilder \
debootstrap \
devscripts \
schroot \
debmake \
dpkg-dev \
apt-utils \
sbuild \
osc \
python3-fs \
python3-pip \
python3-psutil \
git \
wget \
curl \
vim \
sudo \
emacs \
tini \
procps && \
apt-utils \
build-essential \
coreutils \
curl \
debmake \
debootstrap \
devscripts \
dpkg-dev \
emacs \
git \
live-build \
osc \
pbuilder \
procps \
python3-fs \
python3-pip \
python3-psutil \
sbuild \
schroot \
sudo \
tini \
util-linux \
vim \
wget \
&& \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
pip3 install Flask && \
@ -76,4 +79,4 @@ RUN chmod 0644 /etc/vim/vimrc.local
ENTRYPOINT ["/usr/bin/tini", "--"]
WORKDIR /opt
CMD ["python3", "app.py"]
CMD [ "ionice", "-c", "3", "nice", "-n", "15", "python3", "app.py"]