2.15.2010

Retour sur ma visite du silo CLUMEQ

Tel que mentionné dans mon article précédent, j'ai eu la chance vendredi dernier de visiter le méga ordinateur du consortium CLUMEQ à l'Université Laval. Ce silo est adjacent au pavillon des sciences et de génie (Vachon). Accessible via un des nombreux sous-terrains du pavillon, il y a eu une légère confusion entre moi et mon contact pour notre point de rencontre. Je croyais qu'on entrait par une des portes extérieures. Moi qui a l'habitude d'être à l'heure :S

C'est donc à 11h35 que j'ai débuté ma visite. Au premier étage, on retrouve essentiellement le système de refroidissement et le UPS. Le UPS ne peut maintenir les machines plus de 5-6 minutes. C'est pourquoi lors d'une panne, le UPS averti les nœuds primaires (machines maîtres) d'arrêter tout travail et de se fermer (shutdown). Denis Gauthier, mon contact de la DTI, m'a expliqué que le système de refroidissement aspire la chaleur (elle monte naturellement...) vers le bas à l'aide de gigantesque ventilateurs. Celle-ci réchauffe une conduite d'eau qui sert entre autre à chauffer la piscine du PEPS. Le système de refroidissement me fait penser à un immense radiateur automobile. La majorité des décibels provient de cet endroit.






















Au 2e étage, nous retrouvons le stockage et les switchs InfiniBand de SUN. Celles-ci ont une vitesse de transmission avoisinant les 40 gigabits/s. Depuis l'acquisition de Sun par Oracle, le modèle de switchs utilisé au silo n'est plus vendus directement par Oracle. Voilà pourquoi la documentation se fait rare. Le système de stockage est un Sun Lustre. Actuellement, le système a plus de 500 téraoctets de données et il atteindra bientôt le pétaoctets (1 millions de gigaoctets).

Enfin, au 3e étage, nous retrouvons le coeur essentiel du centre de données soit les unités de traitement. Ce sont des serveurs Sun Blade X6275 ayant des processeurs Intel® Xeon de la série 5500. Tous les serveurs ont la distribution linux CentOS version 5.x comme système d'exploitation. C'est à cet étage que la chaleur est la plus insoutenable. Il faut dire que d'entrer à l'intérieur du coeur de ce méga ordinateur donne des sueurs. Les décibels était également au rendez-vous (92 décibels exactement). J'imagine le technicien faire ses opérations dans le petit bureau avec des caches oreilles et du Gatorade hihi.

Fait étonnant, nous avons vu un mac mini caché sous les planchers du 3e étage. Il est utilisé pour le réseau de sécurité du silo.

2.06.2010

Vérouiller une table en mode exclusif pour effectuer des opérations spéciales

Hier j'ai eu l'occasion d'utiliser le verrouillage de table pour un problème précis en production. Je devais insérer dans une table X et mettre à jour une table Y en lien avec la table X. Je devais également désactiver un trigger d'insertion et un trigger de mise à jour sur cette table X. J'ai fait ceci dans un bloc pl/sql anonyme.

À la première idée, l'analyste et moi nous nous sommes dit que l'opération durerait une seconde et qu'il faudrait manquer de chance pour qu'une autre personne inscrive un enregistrement dans la table X avec les triggers de désactivés. Toutefois, un doute demeurait. Il y avait une chance que cela se produise si petite soit elle. C'est alors que mon collègue DBA m'a parlé d'une instruction appelé "LOCK TABLE" que Oracle nous offre pour une situation du genre. Il y a plusieurs options pour verrouiller une table. Nous avons choisi le mode exclusif (exclusive mode). Dans ce mode, personne ne peut insérer (insert), mettre à jour (update) ou effacer (delete) des enregistrements de cette table. Seule la lecture (select) est permise. Ce mode est le plus restrictif.

Ainsi, la commande que nous avons utilisé à l'intérieur du bloc pl/sql est la suivante:
lock table schema.table_X in exclusive mode;
Lorsque notre traitement est fini et que nous faisons un commit ou un rollback (dans le cas d'une exception), le verrou sur la table se libère automatiquement. De plus, par défaut, l'instruction de verrou attend que la table soit libre pour en prendre possession. Si une autre transaction est en cours, il va attendre pour l'acquérir. De l'autre côté, pendant que la table est verrouillée par mon bloc pl/sql, les autres utilisateurs sont en mode wait sur cette table. Rien n'est perdu. Un principe similaire aux mutex et sémaphores.

Pour plus d'information:
Documentation officielle de Oracle sur la commande
Détail de la commande

Mes items partagés de Google Reader