Free Cooling

From air
Revision as of 19:11, 16 June 2011 by BaptisteMorin (talk | contribs)
Jump to navigation Jump to search
  • 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

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 :
  • Materiel.jpg
  • 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)

Monitoring des températures (aide mémoire Bruno)

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