Free Cooling
- Enseignant: Olivier Richard
- Public: 1 3I4, 2 RICM4 (Option Réseau)
- Etudiants 2010/2011
- Nabil Kaced
- Alban Moreau
- Baptiste Morin
Etude et réalisation d'une solution de contrôle free-cooling pour baie de serveurs de calcul
Introduction
L'évolution du matériel et de leur coût dans le domaine des serveurs informatiques pour le calcul scientifique est telle que les problémes lié à la consommation énergétique deviennent de plus en plus aïgus.
Un levier possible pour limiter le problème est de considérer un mode de climatisation alternatif. Un système intéressant est l'approche du Free-Cooling qui consiste simplement à injecter assez d'air extérieur pour permettre un refroidissement suffisant. Il est important de noter qu'il est nécessaire de disposer d'un asservisement en témpérature pour compenser des températures extérieurs trop faible.
Réalisation
Il s'agit de à participer à la réalisation d'une solution de Free-Cooling pour l'installation de 20 à 25 Kw (correspondant de une à deux baies de serveurs). Il s'agira notamment de co-réaliser la solution d'asservisement et de sécurité et qui dialogera avec l'insfrastructure de calcul global.
- Asservissement et sécurisation utilisant la kit Stellaris Luminary Lm3s6965
- Maquettage et simulation d'une installation de calcul climatisé
- Couplage de l'asservissement avec le logiciel de gestion de tâche et ressource OAR.
- Prévision / optimisation des zones de disponibilité des ressources
- Interface web de contrôle et de gestion
Ressources
- Document global sur le projet de Free Cooling: File:Free cooling lig projet.pdf.
- Un autre projet sur Grenoble: FreeCooling au LPLC.
- Gestionnaire de tâche et de ressource: OAR et wiki OAR.
- Le portail web utilise ExtJS pour la partie navigateur.
Carnet de bord
- Lundi 7/02 : soutenance commerciale puis début du simulateur via Processing.
- Installation du JDK Sun pour le faire fonctionner, tutoriel et apprentissage à partir d'exemple.
- Derrière ce simulateur, pour l'implémentation de celui-ci, recherche des facteurs thermiques pour la déperdition.
- La variation de température entre avant/arrière est de l'ordre de 8 à 10°. Plusieurs hypothèses retenues pour l'arrêt d'un ou plusieurs châssis (il y en aura 7 au départ).
- Le simulateur n'a pas été terminé car l'affichage en temps réel de l'évolution des températures sous Processing n'a pas été réussi, nous avons préféré le mettre de côté pour avancer dans le projet.
- Communication SNMP (get & set) fonctionne avec un serveur SNMP fictif sous linux, donc à priori peu de difficultés à le mettre en route sur place. Au niveau de la communication, la carte et les différents PDU (connexion Eth) seront rassemblés sur un petit hub ethernet. Ce sera une réseau interne donc pas besoin de créer une connexion SSH.
- Pour la carte, elle doit être autonome (c'est elle qui prendra les "décisions" et rendra les informations dans des fichiers logs souvent mis à jour. L'organe centrale sera simplement informé, de par ces fichiers, de l'état du système global.
- Pour l'instant, elle ne communique pas encore avec les thermomètres (quasi fait, voir avec Nabil), reste la communication avec les servomoteurs (reçus récemment). Cette partie sera faite par Nabil, quand au programme général sur la carte, il sera commencé cette semaine. Beaucoup de retard par déplacements de cours et de nombreux projet en parallèles.
- L'algorithme principal est établi, il faut intégrer à celui-ci la partie communication avec capteurs (getteurs de température et humidité) mais aussi l'actionneur des registres.
- Voici l'ensemble du matériel retenu pour le projet :
- Quelques photos de l'installation sur le site de Montbonnot : [1]
- Le flyer et le poster pour la présentation du projet, même s'il n'est pour l'instant pas possible de faire de démonstration (projet sur 2ans)
Aide-mémoire Bruno
Monitoring des températures
Script de collecte des températures
- /usr/local/sbin/poll_temps.sh
- Ce script stock les infos de température dans des bases rrd
(/var/lib/rrdtool) et aussi un fichiers brut (monitor_temps.raw)
Scripts de monotoring des températures
Ces scripts déclenchent des actions en fonction des valeurs courantes des températures.
- /usr/local/sbin/monitor_temps.sh
- Ce script est responsable de l'arrêt/redémarrage complet du cluster en
cas de dépassement de la température max des noeuds et/ou de la salle (valeurs de consigne à fixer au début du script)
- /usr/local/sbin/monitor_temps_fan.sh
- Ce script coupe le ventilateur quand il fait trop froid
- /usr/local/sbin/monitor_recycle.sh
- Ce script ouvre/ferme la vane de recyclage d'air chaud pour réguler la
température en face avant (contôle de l'arduino)
Lancement des scripts
Dans /etc/rc.local:
# Run rrdtool pollers nohup /usr/local/sbin/poll_temps.sh > /dev/null& nohup /usr/local/sbin/poll_pdus.bash&
# Monitoring script that shudown nodes when temperature is too high nohup /usr/local/sbin/monitor_temps.sh >> /var/log/monitor_temps.log 2>&1 &
# Thermostat du ventilo nohup /usr/local/sbin/monitor_temps_fan.sh >> /var/log/monitor_fan.log
2>&1 &
# Vane de régulation par recyclage nohup /usr/local/sbin/monitor_recycle.sh >>
/var/log/monitor_recycle.log 2>&1 &
Passage en mode powersave
Manuel pour le moment, via le script: /root/energy_saving.sh
Logs des températures
Les fichiers de log sont archivés tous les mois, via logrotate, sur 10 ans
- /var/log/monitor_temps.raw
- Ce fichier est renseigné directement par le poller. Il contient les
données brutes des températures pour un timestamp donné. D'abord pour chaque noeud, et ensuite les 4 senseurs ambiants:
- ExtSensor1: à l'arrière des machines
- ExtSensor2: à l'avant des machines
- ExtSensor3: température ambiante de la salle, hors du freecooling (la
sonde a été déplacée le 10/05/2011 car elle était trop près de la sortie d'un climatiseur de la salle et donnait des valeurs pas assez représentatives. Elle a été placée entre les 2 climatiseurs, moins dans le flux d'air des bouches de sortie)
- ExtSensor4: température à l'extérieur du batiment. Par contre, la
sonde est placée assez près de la bouche de sortie du freecooling, donc la température est biaisée par la chaleur évacuée par les machines.
- /var/log/monitor_temps.log
- Ce fichier enregistre les températures max des noeuds et température
ambiante de la salle machine. Il log les évènements d'extinction et de rallumage du cluster (évènements qui dépendent des 2 températures citées: actuellement, on arrete le cluster si la température des noeuds dépasse 45 OU si la température de la salle dépasse 31, on remet en marche quand ces températures tombent en dessous de 25 pour les noeuds ET en dessous de 28 pour la salle)
- /var/log/monitor_recycle.log
- Ce fichier enregistre les évènements d'ouverture/fermeture de la vane
de recyclage d'air chaud qui sert à réguler la température en face avant (20 degrés)
- /var/log/monitor_fan.log
- Ce fichier enregistre les évènements d'extinction du ventilateur.
Cette extinction est provoquée lorsque la température des noeuds devient dangereusement basse (12 degrés) et sert quand la vanne de recyclage d'air de permet plus le réchauffement suffisant de l'air envoyé en face avant.
Historique des réétalonnages de sonde:
- 10/05/2011, sonde "room" déplacée
- 23/05/2011 16h, sonde "room" réétalonnée (fausse depuis le
déplacement) +6 degrés
- 24/05/2011 14h45, sonde "room" réétalonnée -1 degrés
Notes
- Lien wiki de la réalisation technique hébergée sur le wiki OAR : Go_Free!
- Possibilité d'extension en stage et participation éventuel au Google Summer Of Code