2024-06-05 12:45:53 +02:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
set -eu
|
|
|
|
|
|
|
|
LOG_LEVEL="${IMMICH_LOG_LEVEL:='info'}"
|
|
|
|
|
|
|
|
logDebug() {
|
|
|
|
if [ "$LOG_LEVEL" = "debug" ] || [ "$LOG_LEVEL" = "verbose" ]; then
|
|
|
|
echo "DEBUG: $1" >&2
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
if [ -f /sys/fs/cgroup/cgroup.controllers ]; then
|
|
|
|
logDebug "cgroup v2 detected."
|
|
|
|
if [ -f /sys/fs/cgroup/cpu.max ]; then
|
|
|
|
read -r quota period </sys/fs/cgroup/cpu.max
|
|
|
|
if [ "$quota" = "max" ]; then
|
|
|
|
logDebug "No CPU limits set."
|
|
|
|
unset quota period
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
logDebug "/sys/fs/cgroup/cpu.max not found."
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
logDebug "cgroup v1 detected."
|
|
|
|
|
|
|
|
if [ -f /sys/fs/cgroup/cpu/cpu.cfs_quota_us ] && [ -f /sys/fs/cgroup/cpu/cpu.cfs_period_us ]; then
|
|
|
|
quota=$(cat /sys/fs/cgroup/cpu/cpu.cfs_quota_us)
|
|
|
|
period=$(cat /sys/fs/cgroup/cpu/cpu.cfs_period_us)
|
|
|
|
|
|
|
|
if [ "$quota" = "-1" ]; then
|
|
|
|
logDebug "No CPU limits set."
|
|
|
|
unset quota period
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
logDebug "/sys/fs/cgroup/cpu/cpu.cfs_quota_us or /sys/fs/cgroup/cpu/cpu.cfs_period_us not found."
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -n "${quota:-}" ] && [ -n "${period:-}" ]; then
|
|
|
|
cpus=$((quota / period))
|
|
|
|
if [ "$cpus" -eq 0 ]; then
|
|
|
|
cpus=1
|
|
|
|
fi
|
|
|
|
else
|
2024-06-12 15:49:20 +02:00
|
|
|
cpus=$(grep -c ^processor /proc/cpuinfo)
|
2024-06-05 12:45:53 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
echo "$cpus"
|