Je me suis acheté, il y a un bon moment l’odroid h2+ pour me faire un serveur multimédia et NAS.
Une partie du hardware n’était pas encore achetée comme les disques durs (2 x hdd/ssd en 2.5" en 4to pour le NAS et un disque nvme pour le /home et les données qui demandent énormément de lecture écriture sur la mémoire eMMC).
Je me suis acheté un micro onduleur « Eaton 3s mini » pour une puissance max de 36 w, mais il n’y a pas de signal entre l’onduleur et le serveur en cas de coupure de courant.
À l’heure actuelle, j’ai fait plusieurs tests de décharge pour créer un micro script afin de mettre en veille le serveur s’il ne détecte plus le réseau via /sys/class/net/enp3s0/carrier.
l’onduleur a pleine charge tient 25 minutes de 100 à 25%, en test à vide (sans réseau, écran et stress du cpu) il tient 1h30 de 100 à 25% et en veille, j’ai dû arrêter, car il tient minimum 5h sur le voyant > 75%.
Super petite bête, je trouve pour un serveur multimédia/NAS non fini.
Mais voilà pour éviter la surcharge avant que l’onduleur se coupe totalement même en veille (une grosse coupure qui prend plus de temps et que je ne peux venir intervenir manuellement sur serveur) je voudrais faire en sort que si le réseau est arrêté puisse consommer le moins possible exemple à éteindre les disques SSD ou HDD, le DVD s’il était en cours d’exécution, et même mettre en pause des programmes qui sont gourmands (Firefox, des services, …), Voir même si possible réduire le nombre de CPU pour réduire sa consommation.
Avez-vous des pistes sur ce que je peux ajouter au script afin de faire un gain d’énergie durant une coupure de courant dans les 15 premières minutes (5 minutes pour chaque cycle et 10 minutes où il vérifie l’interface avant la mise en veille effective de l’appareil) ?
Comme je n’ai pas de disque dur je verrai quand je les ajouterais plus tard car je connait juste hdparm.
Sinon sur le script que j’ai je viens de rajouté les deux dernière commande qui sont
killall -CONT et -STOP pour mettre en pause les processus les plus gourmands et
echo « 0 » > /sys/devices/system/cpu/cpu[1-3]/online l’arrête temporairement et avec echo « 1 » pour le relancé.
Mais je ne sais pas
- quoi arrête a part Firefox et Molotov et aussi les service qui me sert et consomme que j’ai installé
- s’il est possible de réduire au minimum la fréquence comme indiqué dans lscpu (max 2500 mini 800 mhz)
- et surtout comment stoppé le lecteur dvd
Si vous avez d’autre technique pour réduire la consommation je vous remercie .
J’ajouterais que pour un PC bureautique ce genre de manipulation est inutile, étant donné qu’un utilisateur est dessus, et peu donc intervenir.
Il ne faut pas oublier qu’un onduleur, sa première fonction est d’isoler les alimentations reliées de perturbations électriques, de pouvoir permettre une sauvegarde des travaux en cours avant arrêt et le cas échéant un arrêt propre d’une machine (je ne parle pas de systèmes embarqués de quelque type que ce soit).
Il existe des système de maintien en conditions opérationnelles sur de longue durée mais elles sont plus complexes et imposantes qu’un simple onduleur.
Je cherche vraiment a désactivé tout ce qui est possible et inutile durant les 15-30 première minutes sans affecté le système ou les programme car quand je reviens à l’état initiale tout dois refonctionné comme si de rien était au retour du courant ou sortie de veille.
Une espèce de grosse stases pour économiser le plus la batterie de l’onduleur avant que j’estime que ça dure trop longtemps .
C’est un serveur multimedia /NAS. Il me permet de joué a des jeux, regardé la tv, netflix, ou dvd.
Plus tard j’ajouterais en plus un NAS avec une partie DLNA pour visualisé des musique, vidéo, photo via la tv et la possibilité de visualisé partout dans le monde ( quand j’aurais acheté les disques) et comme il as des GPIO je vais en faire le serveur de domotique (quand j’aurais la capacité de le faire).
Alors j’ai réussie à réduire grâce
-
la kill j’ai stopper les programme firefox, molotov, bind9 et ngnix. je suis passé de killall a kill car soit j’ai pas compris mais tout n’est pas correctement en stase.
en stoppant 3 des 4 mais pas la fréquence du processeur car je ne trouve pas d’information pour réduire la fréquence à chaud pourtant je voie bien le processeur varié tout seul en mhz via la commande ‹ lscpu ›
Déjà avec ça j’ai gagné 40 minute d’autonomie max 2h05 de 100% à 25% sur l’onduleur.
Oui j’imagine sauf que la c’est un simple serveur. Si en cas de coupure et que je ne suis pas la je ne pourrais pas le coupé manuellement. Personne n’intervient dessus sauf quand on regarde la tv ou joue a des jeux ou si on y accède via le réseau or en cas de coupure plus de réseau internet ni local ni même tv.
C’est pour ça que j’ai pris cette onduleur en particulier et car le serveur au max peux consommé jusqu’à 22w a pleine charge (25 minute d’autonomie). En cas ou il n’y une micro coupure max 10 minute.
Mais si jamais ça dure trop longtemps, ici 15 à 30 minute en fonction de l’economie de la stass, le serveur va passé tout seul en veille ou il peux duré plus longtemps (+ de 5h de 100% à 75% je n’ai pas continué le teste a 0.6w comme dit dans la donc ça risque de prendre une eternité).
Après oui le serveur pourra être rallumé ou éteins manuellement en fonction de l’état du courant quand je rentre du taff.
Après je pense que j’ai pas besoin d’un réacteur nucléaire pour cette appareil juste un moyen de réduire suffisamment la consommation de la stase du système pour gagné en autonomie.
Dont réduire la conso processeur, mettre en arrête les programme gourmand et stopper les disque et lecteur dvd au moment qu’il détecte une coupure réseau après c’est du chipotage sur 0.1w ça sera inutile.
si j’arrive a réduire a 3h l’autonomie quand le serveur est stase ça me feras gagné + en veille car pour l’instant je pense gardé un stase minimum 15 et un max 30 minute avant la veille. vue que je suis déjà a 2h05 d’autonomie de 100% a 25%.
Si mes calcule sont bon entre le début de mon scripte et maintenant quand le serveur sera en veille j’aurais consommé juste 19 % après 30 minute en stase.
donc si on prends que 5h pour chaque palier de 25 %, j’ai 10h pour les palier de 75% à 25% et entre la mise en veille ~80% à 75% j’ai une 1h. donc un minimum de 11h pour réagir et l’éteindre si le courant et coupé.
Alors je voie pour udisksctl que j’avais déjà mis des disques pour faire des teste mais je ne les utilise pas car j’en cherche des plus gros pour faire mon NAS avec la section DLNA.
~# udisksctl status
MODEL REVISION SERIAL DEVICE
--------------------------------------------------------------------------
CJTD4R 0xd0fbba76 mmcblk0 mmcblk0boot0 mmcblk0boot1
ST9250410AS 0006HPM1 5VG90TQY sda
ST500VT000-1DK142 0002SDC2 WBYGATSP sdb
TSSTcorp CDDVDW SE-S084D TS00 0k468KMO sr0
On voie bien les 2 disque hdd en 2.5" le lecteur dvd et mon systeme qui est dans le eMMC
Comme c’est le eMMC est qui contient le système je vais pas l’éteindre un peu comme le 4eme core (bien que je sais pas ce qu’il se passe si je le fait sur le core… mais bon même si je ne suis pas neuneu et que je pense a 99% que plus rien ne tourne si je le fait).
le DVD et les 2 disque je veux bien les éteindre
Si le lecteur DVD s’éteint d’un coup vue que ça sera 99.99999… % des films ce n’est pas dérangeant.
mais j’ai plus peur par rapport au disque en car de lecture/écriture ou utilisation via sauvegarde en cours ou autre. j’ai peur de perdre des donnée et être sur que l’arrête se fait dans de bonne condition.
La solution cherchée me semble compliquée, d’autant qu’il y aura toujours une durée au delà de laquelle ton serveur ne sera plus alimenté.
Pourquoi ne pas simplement arrêter le serveur après une durée à définir de coupure de courant puis le relancer par le réveiller par le réseau (wol). Cela me semble plus simple à mettre en oeuvre et couvrir tous les cas …
Je n’ai pas encore trouvé le moyen avec ma box de faire en sorte d’envoyé un réveille via WoL.
Sinon je ne me serait pas cassé la tête un petit suspend 1 minute après la détection d’une perte de réseau et quand tout est revenue une impulsion avec un WoL et j’aurais eu un script simple d’une boucle vérification du carrier de enp2s0 si état 0 suspends et fini ^^
Je reviens pour dire que je n’ai pas trouve le moyen de crée un WoL automatique sur ma box et je n’avais pas l’intention d’ajouté un appareil en plus à mon réseau ou crée grâce au GPIO de mon Odroid H2+ pour détecté le courant.
Mais après plusieurs recherche sur internet et chatGPT, j’ai decouvert qu’il n’y avais pas que la fonction « paquet magique » dans un WoL.
ils sont en grand nombre est il y a :
p : Wake-on-phy (réveil par détection physique)
u : Wake-on-unicast (réveil par paquet unicast)
m : Wake-on-multicast (réveil par paquet multicast)
b : Wake-on-broadcast (réveil par paquet broadcast)
g : Wake-on-magicpacket (réveil par un « paquet magique »)
Pour dire même chatGTP n’as pas réussie à m’expliquer qu’un signal physique était tous simple une simple mise en tension de l’interface réseau et sur internet j’ai trouve personne jusqu’à présent qui utilise ces fonctions.
Du coup, j’ai passé mon interface en WoL p avec la commande
ethtool -s enp2s0 wol p
et puis j’ai simulé une coupure qui envoie va jusqu’à la mise en veille puis le retour du courant au niveau du switch qui va grâce au « Wake on phy » réveiller mon serveur. et ça fonctionne
Donc mon script pour l’onduleur ne me sert plus a rien je vais voir comment faire via une simple tache cron pour vérifier tout les minute si le réseau est en CARRIER 1 et s’il est en CARRIER 0 tu te mets en veille.
Mais j’ai une question en cas de mise en veille de mon serveur au même moment que le courant reviens va le relancé ? il me semble que oui car une simple impulsion électrique pour alimenté la carte ou un mouvement réseau est considéré comme physique
Bon je ne vais pas abandonnée le scripte pour autant car je vais voir pour réduire la consommation des disque et des programme graphique (firefox, molotov, vlc,…) lorsque la tv est éteins car de nos jours l’électricité coute cherro
heureusement qu’il n’a pas la science infuse, il n’est capable de répondre de façon pertinente qu’à une question pertinente
Et plutôt que d’essayer de réinventer la roue tu regardais du coté de NUT?
# apt info nut
Package: nut
Version: 2.8.0-7
Priority: optional
Section: metapackages
Maintainer: Laurent Bigonville <bigon@debian.org>
Installed-Size: 450 kB
Depends: nut-client, nut-server
Homepage: https://networkupstools.org/
Tag: admin::monitoring, hardware::power, hardware::power:ups,
interface::daemon, network::server, role::program, scope::utility
Download-Size: 427 kB
APT-Sources: http://ftp.fr.debian.org/debian bookworm/main amd64 Packages
Description: outils UPS pour réseau – métapaquet
Network UPS Tools (NUT) est un système de surveillance client/serveur
permettant à des ordinateurs de partager une alimentation électrique sans
interruption (UPS) et une unité matérielle de distribution d’énergie (PDU).
Les clients ont accès au matériel grâce au serveur, et reçoivent des
annonces sur toutes modifications de l’état de l’alimentation.
.
Ce paquet est un métapaquet qui installe à la fois nut-server et nut-client.
Dans la plupart de cas, il est suffisant pour un système de surveillance
d'onduleurs basique.
Avec
nut/stable 2.8.0-7 all
outils UPS pour réseau – métapaquet
nut-cgi/stable 2.8.0-7 amd64
outils réseau UPS – interface web
nut-client/stable 2.8.0-7 amd64
Outils UPS pour réseau - clients
nut-doc/stable 2.8.0-7 all
network UPS tools - documentation
nut-i2c/stable 2.8.0-7 amd64
network UPS tools - I2C driver
nut-ipmi/stable 2.8.0-7 amd64
network UPS tools - IPMI driver
nut-modbus/stable 2.8.0-7 amd64
network UPS tools - Modbus driver
nut-monitor/stable 2.8.0-7 all
network UPS tools - GUI application to monitor UPS status
nut-powerman-pdu/stable 2.8.0-7 amd64
network UPS tools - PowerMan PDU driver
nut-server/stable 2.8.0-7 amd64
outils réseau pour alimentation sans interruption – système central
nut-snmp/stable 2.8.0-7 amd64
outils UPS pour réseau – pilote SNMP
nut-xml/stable 2.8.0-7 amd64
network UPS tools - XML/HTTP driver
Euh… si je comprends bien c’est un paquet qui permet de communiqué entre l’onduleur et le serveur
ça m’aurais intéressé mais je n’ai aucun moyen de communiqué avec l’onduleur c’est un simple eaton 3S mini qui est pas grand mais suffisant pour un odroid h2+.
Il sert peux être a d’autre chose et si je comprends bien c’est pas adapté à ma situation
Ah effectivement je viens de voir que c’est un onduleur pour assurer 1h de box ou pour des repeteurs wifi ou des camera ip
Avec 11 minutes à 36W si on considère la courbe d’autonomie du constructeur:
Considérant un ampérage maxi de 3A à 9V, et de 1,89 à 19V
c’est pour ça qu’au début, je cherchai un moyen de garde le plus de batterie, en attendant de trouver un moyen qu’il se mets en veille et puis se réveille automatiquement. Ce que j’ai trouvé avec le Wake on phy .
Si on regarde la consomation max et minimal de l’odroid h2+ il valait mieux que j’économise la batterie.
Maintenant, je peux juste faire un simple systemctl suspend au moment ou il ne détecte plus le réseau (99% de chance que le chat est passé sur la prise ou qu’il y a une coupure d’électricité).
Je ne comprends pas la commande que j’ai fait ne fonctionne pas.
## Perte de courant
*/1 * * * * root if [[$(cat /sys/class/net/enp2s0/carrier) -eq 0]]; then echo "carrier 0" >> /root/test.test; fi
J’ai beau avoir retiré le câble rj45 du serveur je n’ai jamais de « carrier 0 » dans le fichier /root/test.test
Je me suis dit j’ai du mal faire quelque chose j’ai remplacé par :
if [[$(cat /sys/class/net/enp2s0/carrier) -eq 0]]; then echo "carrier 0" >> /root/test.test; else echo "carrier 1" >> /root/test.test; fi
Et je n’ai que des « carrier 1 » qui s’affiche dans le fichier
Pourtant j’ai bien le /sys/class/net/enp2s0/carrier qui passe du 0 à 1 et inversement quand je branche/débranche le câble.
Oui, j’ai lue plusieurs article à ce sujet j’ai vue qu’effectivement il y a plusieurs utilitaire mais a par passé le CPU en mode dans les différent mode ( ondemand, powersave,…)
J’ai cette impression que la modification lui en touche une sans faire bougé l’autre…
Mais j’avoue que quand je fait un cpufreq-infoça fonctionne. J’ai juste l’impression que l’utilitaire est inefficace . mais faut bien voir que j’ai les processeur qui son réduit même inférieur à la limitation matériel.
analyse du CPU 0 :
pilote : intel_cpufreq
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 20.0 us.
limitation matérielle : 800 MHz - 2.50 GHz
régulateurs disponibles : ondemand, powersave, userspace, conservative, performance, schedutil
tactique actuelle : la fréquence doit être comprise entre 800 MHz et 2.50 GHz.
Le régulateur "powersave" est libre de choisir la vitesse
dans cette plage de fréquences.
la fréquence actuelle de ce CPU est 735 MHz.
analyse du CPU 1 :
pilote : intel_cpufreq
CPUs which run at the same hardware frequency: 1
CPUs which need to have their frequency coordinated by software: 1
maximum transition latency: 20.0 us.
limitation matérielle : 800 MHz - 2.50 GHz
régulateurs disponibles : ondemand, powersave, userspace, conservative, performance, schedutil
tactique actuelle : la fréquence doit être comprise entre 800 MHz et 2.50 GHz.
Le régulateur "powersave" est libre de choisir la vitesse
dans cette plage de fréquences.
la fréquence actuelle de ce CPU est 770 MHz.
analyse du CPU 2 :
pilote : intel_cpufreq
CPUs which run at the same hardware frequency: 2
CPUs which need to have their frequency coordinated by software: 2
maximum transition latency: 20.0 us.
limitation matérielle : 800 MHz - 2.50 GHz
régulateurs disponibles : ondemand, powersave, userspace, conservative, performance, schedutil
tactique actuelle : la fréquence doit être comprise entre 800 MHz et 2.50 GHz.
Le régulateur "powersave" est libre de choisir la vitesse
dans cette plage de fréquences.
la fréquence actuelle de ce CPU est 777 MHz.
analyse du CPU 3 :
pilote : intel_cpufreq
CPUs which run at the same hardware frequency: 3
CPUs which need to have their frequency coordinated by software: 3
maximum transition latency: 20.0 us.
limitation matérielle : 800 MHz - 2.50 GHz
régulateurs disponibles : ondemand, powersave, userspace, conservative, performance, schedutil
tactique actuelle : la fréquence doit être comprise entre 800 MHz et 2.50 GHz.
Le régulateur "powersave" est libre de choisir la vitesse
dans cette plage de fréquences.
la fréquence actuelle de ce CPU est 552 MHz.
Après plusieurs teste avec ce que j’ai actuellement en CRON j’ai au minimum 12h d’autonomie. car j’ai < 1 minute avant que le serveur se mets en veille. c’est mieux que les 2h avec mon script
Bon à l’heure actuel je suis plus sur chercher le moyen de faire en sorte que quand la tv est éteins ou cuivre allumé ça démarre mon script pour baissé/augmenté la conso des processeur et activé désactivé les programme …
J’ai deux choix qui je pense fonctionnera :
un qui est facile a trouvé et mais surtout a mettre en place car ça fonctionne avec la détection du matériel via le réseau. ( en cours de recherche )
l’autre c’est via la détection par le câble HDMI mais je ne sais pas si c’est possible. Et si c’est possible, j’aurais bien voulue savoir s’il est aussi possible de lancé la tv quand je bouge la souris ça serait une épine que je cherche depuis un moment sans résultat
Une autre question concernant les disque et hdparm -S. Vue qu’il seront utilisé par le future NAS et quand on les sollicitera sur nos pc respective et/ou en regardant via DLNA ou via VLC .
est ce que hdparm -S 1 /dev/sdX c’est pas un peu abusé ?
et surtout est ce que ça fonction sur un ssd ?
Car je sais et j’ai beaucoup entendu des gens qui on tué leurs disque a chose hdparm.
je ne pourrais pas lancé l’écran car Ordoid h2+ ne prends pas en charge le HDMI-cec (ça aurais été sympas) car j’avais trouvé justement le paquet cec-utils pour faire ça.
Je vais oublie la vérification via le réseau car j’ai une énorme latence entre l’allumage de la tv et la connexion au réseau de la tv. Alors que via xrandr il trouve facilement le moniteur.
Mais j’ai un soucis quand j’utilise la commande en root il m’écrit
DISPLAY=:0 xrandr | grep -Ec '\bconnected\b'
No protocol specified
Can't open display :0
0
J’ai vue que je pouvais lancé la commande qu’en user et ça ne m’arrange pas