- kind 0.22.0 -> 0.27.0 - test with k8s 1.32.2 instead of 1.29.2 to ensure compatibility with latest k8s release - default helm version 3.14.4 -> 3.16.4 - chart releaser 1.6.0 -> 1.7.0 - ubuntu 22.04 -> 24.04 - chart testing 3.11.0 -> 3.12.0 - yamllint 1.33.0 -> 1.35.1 - yamale 4.0.4 -> 6.0.0
97 lines
4.7 KiB
YAML
97 lines
4.7 KiB
YAML
#
|
|
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
#
|
|
|
|
name: Tune Runner VM performance
|
|
description: tunes the GitHub Runner VM operation system
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- run: |
|
|
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|
echo "::group::Configure and tune OS"
|
|
# Ensure that reverse lookups for current hostname are handled properly
|
|
# Add the current IP address, long hostname and short hostname record to /etc/hosts file
|
|
echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
|
|
|
|
# The default vm.swappiness setting is 60 which has a tendency to start swapping when memory
|
|
# consumption is high.
|
|
# Set vm.swappiness=1 to avoid swapping and allow high RAM usage
|
|
echo 1 | sudo tee /proc/sys/vm/swappiness
|
|
(
|
|
shopt -s nullglob
|
|
# Set swappiness to 1 for all cgroups and sub-groups
|
|
for swappiness_file in /sys/fs/cgroup/memory/*/memory.swappiness /sys/fs/cgroup/memory/*/*/memory.swappiness; do
|
|
echo 1 | sudo tee $swappiness_file > /dev/null
|
|
done
|
|
) || true
|
|
|
|
# use "madvise" Linux Transparent HugePages (THP) setting
|
|
# https://www.kernel.org/doc/html/latest/admin-guide/mm/transhuge.html
|
|
# "madvise" is generally a better option than the default "always" setting
|
|
# Based on Azul instructions from https://docs.azul.com/prime/Enable-Huge-Pages#transparent-huge-pages-thp
|
|
echo madvise | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
|
|
echo advise | sudo tee /sys/kernel/mm/transparent_hugepage/shmem_enabled
|
|
echo defer+madvise | sudo tee /sys/kernel/mm/transparent_hugepage/defrag
|
|
echo 1 | sudo tee /sys/kernel/mm/transparent_hugepage/khugepaged/defrag
|
|
|
|
# tune filesystem mount options, https://www.kernel.org/doc/Documentation/filesystems/ext4.txt
|
|
# commit=999999, effectively disables automatic syncing to disk (default is every 5 seconds)
|
|
# nobarrier/barrier=0, loosen data consistency on system crash (no negative impact to empheral CI nodes)
|
|
sudo mount -o remount,nodiscard,commit=999999,barrier=0 / || true
|
|
sudo mount -o remount,nodiscard,commit=999999,barrier=0 /mnt || true
|
|
# disable discard/trim at device level since remount with nodiscard doesn't seem to be effective
|
|
# https://www.spinics.net/lists/linux-ide/msg52562.html
|
|
for i in /sys/block/sd*/queue/discard_max_bytes; do
|
|
echo 0 | sudo tee $i
|
|
done
|
|
# disable any background jobs that run SSD discard/trim
|
|
sudo systemctl disable fstrim.timer || true
|
|
sudo systemctl stop fstrim.timer || true
|
|
sudo systemctl disable fstrim.service || true
|
|
sudo systemctl stop fstrim.service || true
|
|
|
|
# stop php-fpm
|
|
sudo systemctl stop php8.0-fpm.service || true
|
|
sudo systemctl stop php7.4-fpm.service || true
|
|
# stop mono-xsp4
|
|
sudo systemctl disable mono-xsp4.service || true
|
|
sudo systemctl stop mono-xsp4.service || true
|
|
sudo killall mono || true
|
|
|
|
# stop Azure Linux agent to save RAM
|
|
sudo systemctl stop walinuxagent.service || true
|
|
|
|
echo '::endgroup::'
|
|
|
|
# show memory
|
|
echo "::group::Available Memory"
|
|
free -m
|
|
echo '::endgroup::'
|
|
# show disk
|
|
echo "::group::Available diskspace"
|
|
df -BM
|
|
echo "::endgroup::"
|
|
# show cggroup
|
|
echo "::group::Cgroup settings for current cgroup $CURRENT_CGGROUP"
|
|
CURRENT_CGGROUP=$(cat /proc/self/cgroup | grep '0::' | awk -F: '{ print $3 }')
|
|
sudo cgget -a $CURRENT_CGGROUP || true
|
|
echo '::endgroup::'
|
|
fi
|
|
shell: bash
|