From 0410e95557980dff34103fdf91d99a7a845c17f7 Mon Sep 17 00:00:00 2001 From: user Date: Sun, 30 Mar 2025 21:19:17 +0200 Subject: new article - Docker optimizing idle CPU usage --- .../After CPU breakdown.webp | Bin 0 -> 24678 bytes .../Before CPU breakdown.webp | Bin 0 -> 35602 bytes Docker optimizing idle CPU usage/Thumbnail.webp | Bin 0 -> 1684 bytes Docker optimizing idle CPU usage/index.md | 112 +++++++++++++++++++++ 4 files changed, 112 insertions(+) create mode 100644 Docker optimizing idle CPU usage/After CPU breakdown.webp create mode 100644 Docker optimizing idle CPU usage/Before CPU breakdown.webp create mode 100644 Docker optimizing idle CPU usage/Thumbnail.webp create mode 100644 Docker optimizing idle CPU usage/index.md diff --git a/Docker optimizing idle CPU usage/After CPU breakdown.webp b/Docker optimizing idle CPU usage/After CPU breakdown.webp new file mode 100644 index 0000000..7526e23 Binary files /dev/null and b/Docker optimizing idle CPU usage/After CPU breakdown.webp differ diff --git a/Docker optimizing idle CPU usage/Before CPU breakdown.webp b/Docker optimizing idle CPU usage/Before CPU breakdown.webp new file mode 100644 index 0000000..62e1aed Binary files /dev/null and b/Docker optimizing idle CPU usage/Before CPU breakdown.webp differ diff --git a/Docker optimizing idle CPU usage/Thumbnail.webp b/Docker optimizing idle CPU usage/Thumbnail.webp new file mode 100644 index 0000000..13ec3c4 Binary files /dev/null and b/Docker optimizing idle CPU usage/Thumbnail.webp differ diff --git a/Docker optimizing idle CPU usage/index.md b/Docker optimizing idle CPU usage/index.md new file mode 100644 index 0000000..0992bfc --- /dev/null +++ b/Docker optimizing idle CPU usage/index.md @@ -0,0 +1,112 @@ +--- +description: Docker homelab energy conception +created: 2025-03-30 +--- + +## TLDR + +Add this to your docker-compose.yml + +``` +healthcheck: + disable: true +``` + +To check which services need it, use: [Beszel](https://www.beszel.dev/) + +--- + +## Prelude + +I self host a bunch of services on my home server. +And i care about the [energy usage](https://www.youtube.com/watch?v=OOK5xkFijPc). +Hence i chose a new enough computer to have a somewhat efficient CPU. (specs below) + +
+       _,met$$$$$gg.
+    ,g$$$$$$$$$$$$$$$P.
+  ,g$$P"     """Y$$.".
+ ,$$P'              `$$$.
+',$$P       ,ggs.     `$$b:
+`d$$'     ,$P"'   .    $$$
+ $$P      d$'     ,    $$P
+ $$:      $$.   -    ,d$$'
+ $$;      Y$b._   _,d$P'
+ Y$$.    `.`"Y$$$$P"'
+ `$$b      "-.__
+  `Y$$
+   `Y$$.
+     `$$b.
+       `Y$$b.
+          `"Y$b._
+              `"""
+user@home-server
+----------------
+OS: Debian GNU/Linux 12 (bookworm) x86_64
+Host: HP EliteDesk 800 G3 SFF
+Kernel: 6.1.0-32-amd64
+Uptime: 10 days, 19 hours, 29 mins
+Packages: 2537 (dpkg), 7 (flatpak)
+Shell: bash 5.2.15
+Terminal: /dev/pts/1
+CPU: Intel i5-7500 (4) @ 3.800GHz
+GPU: Intel HD Graphics 630
+Memory: 3124MiB / 15400MiB
+
+                        
+                        
+
+ +I chose to run it using docker, which has been great, since it allows me to self host many services easily. +They even update themselves using [Watchtower](https://github.com/containrrr/watchtower). + +--- + +## Observability + +However, i lacked [Observability](https://en.wikipedia.org/wiki/Observability_(software)) into resource usage. + +### cAdvisor + +At first i tried a stack consisting of [Grafana](https://grafana.com/) [Prometheus](https://prometheus.io/), and [cAdvisor](https://github.com/google/cadvisor) +How ever the only conclusion i came to running this stack was that my CPU load now was ≈ 30% higher (if memory serves me) + +This defeats the purpose for usage... +I'm sure cAdvisor has it's place, but it's suitable for my home lab usage. + +### Beszel + +Then i found [Beszel](https://www.beszel.dev/) which is docker / system monitoring in a box. +Using a minimum of system resources. + +Running this for a month gave me insights into my resource usage. With averages, and a breakdown per container. + +--- + +## Resource usage BEFORE + +![Before CPU breakdown](Before CPU breakdown.webp) + +--- + +## Optimizing + +Beszels CPU usage breakdown per container helps you drill down which container is weighing down your system. +Stoping the ones you don't need and, searching the respective projects github issues helps you find solutions. + +As per this github issue: +[High CPU (5-20%) consumption even when not being used](https://github.com/filebrowser/filebrowser/issues/2676#issuecomment-1708201927) + +Adding the following segment to you docker compose files helps lower their CPU usage. + +``` +healthcheck: + disable: true +``` + +--- + +## Resource usage after + +![After CPU breakdown](After CPU breakdown.webp) + -- cgit 1.4.1