Naar aanleiding van mijn
eerdere post ben ik alvast wel aan het meten geslagen met mijn NAS. Aangezien ik die niet wil vervangen. Het is een
QNAP TS-351 met de volgende specs:
Als OS gebruik ik QTS 5.0.1 en er draait Container Station (Docker) op met de volgende apps:
Ik heb dit systeem aangesloten op een
TP-Link Tapo P115 zodat ik stroommeting kon doen. Daar kwam uit dat dit systeem zo rond de
30W trok in 'idle'. Ik wist zeker dat dit beter kon.
Powertop
De eerste actie was om
PowerTOP uit te voeren, maar helaas is PowerTOP niet beschikbaar voor dit systeem. Ik heb geprobeerd PowerTOP via
entware te installeren, aangezien die wel beschikbaar is voor QNAP apparaten, maar dit was een verloren missie. De een na de andere foutmelding bleef maar komen en na veel aanmodderen heb ik dit opgegeven.
Daarop heb ik besloten om te kijken of ik PowerTOP via Docker aan de praat kon krijgen en dit bleek mogelijk en zelfs kinderlijk eenvoudig. Het werkt niet 100% omdat ik volgens mij nog steeds ergens een mount mis, maar auto-tune lijkt te werken.
Bash:
1
2
3
4
5
6
| docker run --rm -it --privileged \
-v /lib/modules:/lib/modules \
-v /proc/:/proc/ \
-v /sys/:/sys \
debian \
bash -c 'apt update && apt install -yq powertop && powertop --auto-tune' |
Het gemiddelde verbruik lijkt hierdoor zo'n
2W-3W te zijn gedaald. Geen enorm verbetering, maar voor een gratis ingreep toch mooi meegenomen.
Harddisk spindown
Even kort door de bocht, harddisk spindown op QTS is gewoon stuk. Het werkt niet / slecht / matig en dat kost gewoon onnodig veel stroom. Wat QNAP namelijk doet zijn de instellingen en een swappartitie in een RAID1 array zetten die gemirrord wordt over alle schijven in het systeem. Dit is natuurlijk onhandig en met mijn 2 NVMe disks eigenlijk gewoon dom. Het is echter mogelijk om dit onklaar te maken.
Let wel op dat je genoeg geheugen hebt en weet waar je mee bezig bent. Alhoewel de verandering bij een boot weer worden teruggezet, kan dit tot onverwacht gedrag en eventueel gegevensverlies leiden! Kijk ook of de partitienummers kloppen zoals ik die heb.
Als eerste gaan we, zoals ik op mijn (oude) wiki
heb beschreven de
md9 en
md13 RAID1 arrays degraden. In deze arrays staat de QTS configuratie. Wel raad ik je aan deze array minimaal eenmaal per dag te rebuilden zodat je geen gegevensverlies hebt bij disk problemen. Dit staat ook allemaal in de eerdergenoemde documentatie beschreven, maar kort door de bocht:
Bash:
1
2
3
4
5
6
7
| mdadm /dev/md9 --fail /dev/sda1
mdadm /dev/md9 --fail /dev/sdb1
mdadm /dev/md9 --fail /dev/sdc1
mdadm /dev/md13 --fail /dev/sda4
mdadm /dev/md13 --fail /dev/sdb4
mdadm /dev/md13 --fail /dev/sdc4 |
Daarna doe ik een
swapoff -a, waardoor de swap partitie niet meer gebruikt wordt. QNAP maakte echter zelf weer een swapfile aan. Dit vond ik echter niet zo erg, aangezien dit bestand alleen op mijn (eerste) NVMe disk staat. Dit kun je controleren met
cat /proc/swaps. Eventueel zou je zelfs ook nog handmatig een swapfile aan kunnen maken en deze toewijzen. Wel kunnen we nu de swappartities stoppen, die hebben we immers niet meer nodig:
Bash:
1
2
| mdadm -S /dev/md256
mdadm -S /dev/md322 |
Nu worden de spinnende disks niet meer gebruikt voor systeem taken. Dit heeft de grootste impact en bracht mijn verbruik met gemiddeld
10W terug.
HD-Idle
Om op bovenstaande verder te borduren, kunnen we
HD-Idle toepassen. Deze applicatie spint de disks geforceerd down bij geen gebruik. Ik gebruikte hiervoor het Docker image van
hotio/hdidle maar deze bestaat helaas niet meer. Ik wil binnenkort daarom zelf een repo opzetten met een nieuwe versie.
CPU Governer
Standaard staat de CPU governer op Performance, maar deze heb ik naar Powersave gezet:
Bash:
1
2
| echo 'powersave' > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 'powersave' > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor |
Ik kon niet precies de impact hiervan meten.
Ik ben nu een aantal dagen aan het meten en het gehele verbruik van mijn systeem ligt nu op het laagste op
12.5W, maar gemiddeld over de dag op
19.1W. Met 6 draaiende disks ben ik daar erg tevreden over. Vooral als ik het verbruik van anderen zie.
Als ik mijn nieuwe homelab heb gebouwd wil ik echter de Docker containers zoveel mogelijk verplaatsen naar dit nieuwe systeem. Daar is mijn huidig systeem namelijk niet capabel genoeg voor. Echter kan ik dan ook gaan testen met sleep / hibernate en Wake on LAN. Dat wordt namelijk ondersteund met het eenvoudige commando
echo "mem" > /sys/power/state.
In het verleden heb ik dit namelijk ook op deze manier gedaan, toen mijn server nog 90W idle trok

. Ik scripte toen namelijk sleep en Wake on LAN op basis van gebruik (bijvoorbeeld Plex, pre-backup, etc.). Maar dat is voor in de toekomst.