From bb4fe9fcfa00ce22ccb520574fd600fc577800f1 Mon Sep 17 00:00:00 2001
From: Sheogorath <sheogorath@shivering-isles.com>
Date: Fri, 4 Feb 2022 15:56:32 +0100
Subject: [PATCH] feat(system-upgrades): Disable agressive CPU overclocking

This patch installs a systemd unit, that will disable CPU overclocking
5 minutes after start of the system. The idea is to keep systems more
  quiet and stable from a temprature perspective.
---
 .../fedora-temperature-management.yaml        | 68 +++++++++++++++++++
 .../fedora-temperature-monitoring.yaml        | 41 -----------
 2 files changed, 68 insertions(+), 41 deletions(-)
 create mode 100644 infrastructure/system-upgrades/fedora-temperature-management.yaml
 delete mode 100644 infrastructure/system-upgrades/fedora-temperature-monitoring.yaml

diff --git a/infrastructure/system-upgrades/fedora-temperature-management.yaml b/infrastructure/system-upgrades/fedora-temperature-management.yaml
new file mode 100644
index 000000000..fcf755e7f
--- /dev/null
+++ b/infrastructure/system-upgrades/fedora-temperature-management.yaml
@@ -0,0 +1,68 @@
+---
+apiVersion: v1
+kind: Secret
+metadata:
+  name: fedora-install-temperature-management
+  namespace: system-upgrade
+type: Opaque
+stringData:
+  cpu-boost-disable.service: |
+    [Unit]
+    Description=Disable overclocking on CPU
+
+    [Service]
+    Type=oneshot
+    WorkingDirectory=/opt/letsencrypt/
+    ExecStart=/bin/sh -c "echo 0 > /sys/devices/system/cpu/cpufreq/boost"
+  cpu-boost-disable.timer: |
+    [Unit]
+    Description=Disable overclocking on CPU on boot after 5 minutes
+
+    [Timer]
+    OnBootSec=5min
+    Unit=cpu-boost-disable.service
+
+    [Install]
+    WantedBy=basic.target
+  install.sh: |
+    #!/bin/sh
+    set -e
+    set -x
+    secrets="$(dirname $0)"
+
+    install -m 0644 -T "$secrets/cpu-boost-disable.service" /etc/systemd/system/cpu-boost-disable.service
+    install -m 0644 -T "$secrets/cpu-boost-disable.timer" /etc/systemd/system/cpu-boost-disable.timer
+
+    systemctl daemon-reload
+    systemctl start cpu-boost-disable.service
+    systemctl enable cpu-boost-disable.timer
+
+    systemd-run --same-dir --wait --collect --service-type=exec dnf install -y lm_sensors
+    sensors-detect --auto
+---
+apiVersion: upgrade.cattle.io/v1
+kind: Plan
+metadata:
+  name: fedora-temperature-management
+  namespace: system-upgrade
+spec:
+  concurrency: 1
+  nodeSelector:
+    matchExpressions:
+      - key: feature.node.kubernetes.io/system-os_release.ID
+        operator: In
+        values:
+          - fedora
+      - key: feature.node.kubernetes.io/system-os_release.VERSION_ID.major
+        operator: In
+        values:
+          - "35"
+  serviceAccountName: system-upgrade
+  secrets:
+    - name: fedora-install-temperature-management
+      path: /host/run/system-upgrade/secrets/fedora
+  version: 1.0.0
+  upgrade:
+    image: registry.fedoraproject.org/fedora:35
+    command: ["chroot", "/host"]
+    args: ["sh", "/run/system-upgrade/secrets/fedora/install.sh"]
diff --git a/infrastructure/system-upgrades/fedora-temperature-monitoring.yaml b/infrastructure/system-upgrades/fedora-temperature-monitoring.yaml
deleted file mode 100644
index 269f5aee2..000000000
--- a/infrastructure/system-upgrades/fedora-temperature-monitoring.yaml
+++ /dev/null
@@ -1,41 +0,0 @@
----
-apiVersion: v1
-kind: Secret
-metadata:
-  name: fedora-install-temperature-monitoring
-  namespace: system-upgrade
-type: Opaque
-stringData:
-  install.sh: |
-    #!/bin/sh
-    set -e
-    set -x
-    systemd-run --same-dir --wait --collect --service-type=exec dnf install -y lm_sensors
-    sensors-detect --auto
----
-apiVersion: upgrade.cattle.io/v1
-kind: Plan
-metadata:
-  name: fedora-temperature-monitoring
-  namespace: system-upgrade
-spec:
-  concurrency: 1
-  nodeSelector:
-    matchExpressions:
-      - key: feature.node.kubernetes.io/system-os_release.ID
-        operator: In
-        values:
-          - fedora
-      - key: feature.node.kubernetes.io/system-os_release.VERSION_ID.major
-        operator: In
-        values:
-          - "35"
-  serviceAccountName: system-upgrade
-  secrets:
-    - name: fedora-install-temperature-monitoring
-      path: /host/run/system-upgrade/secrets/fedora
-  version: 1.0.0
-  upgrade:
-    image: registry.fedoraproject.org/fedora:35
-    command: ["chroot", "/host"]
-    args: ["sh", "/run/system-upgrade/secrets/fedora/install.sh"]
-- 
GitLab