Sam uel Thibault Runtim e, INRIA LaBRI Université Bordeaux I



Documents pareils
Runtime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

ERESI : une plate-forme d'analyse binaire au niveau noyau. The ERESI team

Installation et prise en main

THÈSE DE DOCTORAT DE L UNIVERSITÉ PIERRE ET MARIE CURIE

THÈSE. Pour obtenir le grade de. Spécialité : Informatique. Arrêté ministériel : 7 août Présentée et soutenue publiquement par.

GCOS 7 sur microprocesseur standard Diane Daniel POIRSON 14 octobre 2004 Matériels 64 / DPS 7 / DPS 7000 Architecture & Evolution - Daniel POIRSON 1

Rapport d activité. Mathieu Souchaud Juin 2007

Segmentation d'images à l'aide d'agents sociaux : applications GPU

Exécutif temps réel Pierre-Yves Duval (cppm)

La Forge INRIA : bilan et perspectives. Hervé MATHIEU - 11 mai 2010

Équilibrage Dynamique de Charge pour des Calculs Parallèles sur Cluster Linux - Une Évaluation de l Environnement AMPI.

Communications performantes par passage de message entre machines virtuelles co-hébergées

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

Initiation au HPC - Généralités

Cours A7 : Temps Réel

Sauvegarde des données au LAAS

Chapitre 2 : Abstraction et Virtualisation

Chapitre I Notions de base et outils de travail

Virtualisation sous Linux L'age de raison. Daniel Veillard

La technologie Java Card TM

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Introduction aux Bases de Données Relationnelles Conclusion - 1

Windows Server Chapitre 1: Découvrir Windows Server 2008

Exercices Active Directory (Correction)

Virtualisation open source État de l'art

Génération de code binaire pour application multimedia : une approche au vol

Rencontre sur la thématique du Calcul Haute Performance - 13 juin Better Match, Faster Innovation

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

Parallélisme et Répartition

Systèmes en réseau : Linux 1ère partie : Introduction

Pour obtenir le grade de. Arrêté ministériel : 7 août Sylvain Genevès

REALISATION d'un. ORDONNANCEUR à ECHEANCES

LOG4430 : Architecture et conception avancée

Visite de presse. Le supercalculateur Tera - 10

Introduction à la Programmation Parallèle: MPI

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Catalogue des stages Ercom 2013

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Alexandre Buge Epitech 5 Promo Soutenance de stage du 01/03/2004 au 31/08/2004

Ajouter de la mémoire à son ordinateur

BULK SMS Envoi en masse d un message texte moyennant un téléphone mobile (GSM)

CH.3 SYSTÈMES D'EXPLOITATION

INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1

I00 Éléments d architecture

SPECIFICATION ET DESCRIPTION DU MULTICAST FIABLE DANS ETOILE

Chapitre 01 Généralités

DAns un système multi-utilisateurs à temps partagé, plusieurs processus

Rapport de stage en Master Recherche Informatique

L informatique en BCPST

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

ORDONNANCEMENT CONJOINT DE TÂCHES ET DE MESSAGES DANS LES RÉSEAUX TEMPS RÉELS 4. QUELQUES EXEMPLES DU DYNAMISME ACTUEL DU TEMPS RÉEL

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

Refonte front-office / back-office - Architecture & Conception -

Équilibrage de charge pour systèmes temps-réel asymétriques sur multi-processeurs

VMWare Infrastructure 3

Contributions aux techniques d ordonnancement sur plates-formes parallèles ou distribuées

Les environnements de calcul distribué

Qu est ce qu un un serveur?

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

SPT Lean m anufacturing

Multiprogrammation parallèle générique des méthodes de décomposition de domaine

WEA Un Gérant d'objets Persistants pour des environnements distribués

Une bibliothèque de templates pour CUDA

Analyse de performance, monitoring

en version SAN ou NAS

Equilibrage de charge (Load

Extension d'un outil de trace pour système embarqué temps réel. Encadrants : Laurent Pautet, Jérôme Hugues

Cours 2: Exclusion Mutuelle entre processus (lourds, ou légers -- threads)

Ordonnancement sous contraintes de Qualité de Service dans les Clouds

La solution de GTB complète avec BACnet. La compétence reconnue de SAUTER.

I. Introduction aux fonctions : les fonctions standards

. Plan du cours. . Architecture: Fermi ( ), Kepler (12-?)

INGÉNIEUR - DÉVELOPPEUR SENIOR PHP. 28 ans - 8 ans d'expérience

THÈSE. pour obtenir le grade de. Spécialité : "Informatique : Systèmes et Communications"

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Analyse de sécurité de logiciels système par typage statique

Solution de Mobilité SAP SUP & AFARIA. Meltz Jérôme

Windows 2000: W2K: Architecture. Introduction. W2K: amélioration du noyau. Gamme windows W2K pro: configuration.

Red Hat Enterprise Virtualization 3.0 Instructions d'installation et informations importantes

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Thème 3 Conception et vérification d architectures de systèmes sur puce

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

Conception des systèmes répartis

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

Sommaire. Systèmes d Exploitation Intégration Sage 100 Sage CRM Disponibilité Client Bases de données... 3

Comment reproduire les résultats de l article : POP-Java : Parallélisme et distribution orienté objet

Vulgarisation Java EE Java EE, c est quoi?

PHP et le Cloud. All rights reserved. Zend Technologies, Inc.

Système de Gestion de Fichiers

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Tests de performance du matériel

Fiche Technique Windows Azure

Architecture distribuée

Une méthode de conception de systèmes sur puce

Performances de la programmation multi-thread

Transcription:

Une plate- forme d'expérimentation pour ordonnanceurs sur machines hiérarchiques Sam uel Thibault Runtim e, INRIA LaBRI Université Bordeaux I

Vers une hiérarchisation accrue des ordinateurs P P M P P M M NUMA MultiCore HyperThreading P P M P P M M P P M P P M M

Machines SMP Jux taposition de processeurs Partage bande passante m ém oire Ne passe pas à l'échelle P P M

Machines NUMA Mém oire distribuée sur différents nœuds Latence des accès mémoire «distants» plus grande: facteur «NUMA» ~ 1.3, 2, 10,... Les multiprocesseurs Opteron par exemple Facteur NUMA ~ 1.1-1.5 P P M M P P P P M M P P

Processeurs multicore Quand on ne sait plus quoi faire de la place sur la puce... Deux processeurs sur une même puce Partage de niveaux de cache P P P P M

Processeurs HyperThreadés Pour occuper les unités de calcul... Exécuter plusieurs threads au sein d'un même processeur Partage des ressources de calcul Partage de tous les niveaux de cache P P M

Vers une hiérarchisation accrue des ordinateurs P P M P P M M NUMA MultiCore HyperThreading P P M P P M M P P M P P M M Comment les exploiter efficacement?

Le challenge : ordonnancer efficacement les applications Perform ances Prendre en compte les affinités entre threads et mémoire Flex ibilité Pouvoir contrôler facilem ent l ex écution Portabilité Ne pas avoir à adapter les applications à chaque m achine

Stratégies actuelles d exploitation des machines hiérarchisées Approches: Prédéterminée Opportuniste Négociée

Ordonnancement prédéterminé Deux phases Prétraitem ent: calcul du placement mémoire de l ordonnancement Exécution: threads et données fixés selon ce prétraitem ent Exemple: PaStiX Performances excellentes pour des problèm es réguliers Inadapté aux problèmes fortement irréguliers

Ordonnancement opportuniste Divers algorithm es gloutons Une, plusieurs, une hiérarchie de listes de tâches Utilisés par les systèm es d ex ploitation Linux, BSD, Solaris, Windows, Portabilité : passe bien à l échelle Performances : n a pas connaissance directe des affinités

Ordonnancement négocié Ex tensions de langages OpenMP, HPF, UPC, Performances : s adapte à la machine Flexibilité : peu générique Ex tensions du systèm e d ex ploitation NSG, liblgroup, libnum a, com pteurs de perf. Liberté du program m eur Flexibilité : nécessite la réécriture d un ordonnanceur

Difficultés Quelles stratégies d'ordonnancem ent? Préem ption? Gang scheduling? Round- Robin?... Selon quels critères prendre des décisions? Affinités entre threads? Occupation mémoire? Consommation bande passante mémoire?... Pas de solution miracle

Et pourtant Le programmeur de l'application en a souvent une assez bonne idée Comment lui «donner le volant» tout en lui épargnant les difficultés d'im plém entations? Manipulation de flots d'ex écution Synchronisation Efficacité Portabilité

Proposition: laisser l'application guider l'ordonnanceur Une approche à la fois précalculée, opportuniste et négociée

Structure de l'application Affinités entre threads exprimées sous forme de bulles Partage de données Opérations collectives...

API utilisateur marcel_t thread1, thread2; marcel_bubble_t bubble; marcel_bubble_init(&bubble); thread1 thread2 bubble marcel_create_dontsched(&thread1,null,f1,param1); marcel_create_dontsched(&thread2,null,f2,param2); marcel_bubble_inserttask(&bubble,&thread1); marcel_wake_up_bubble(&bubble); marcel_bubble_inserttask(&bubble,&thread2);

Structure de la puissance de calcul Une hiérarchie de listes de tâches: P P M M P P P P M M P P P0 P1 P2 P3 P4 P5 P6 P7

Ordonnancement à bulles Ex em ple d'ordonnanceur Les processeurs «tirent» les bulles et threads vers eux. Les affinités sont prises en compte bulles_evolution.swf

API ordonnanceur ma_runqueue_t ma_main_rq, ma_node_rq[], ma_cpu_rq[]; ma_runqueue_lock(ma_runqueue_t *rq); ma_runqueue_unlock(ma_runqueue_t *rq); runqueue_for_each_entry(ma_runqueue_t *rq, marcel_entity_t **e) int ma_runqueue_empty(ma_runqueue_t *rq); marcel_entity_t *ma_runqueue_entry(ma_runqueue_t *rq); enum marcel_entity ma_entity_type(marcel_entity_t *e); ma_deactivate_entity(marcel_entity_t *e, ma_runqueue_t *rq); ma_activate_entity(marcel_entity_t *e, ma_runqueue_t *rq);

Un exemple simple Gang Scheduling à l'aide de bulles Chaque bulle contient un gang Elles sont placées tour à tour pour exécution bulles-gang.swf

Implémentation du Gang scheduling while(1) { } marcel_delay(1); ma_runqueue_lock(&ma_main_rq); ma_runqueue_lock(&ma_nosched_rq); runqueue_for_each_entry(&ma_main_rq, &e) { ma_deactivate_entity(e, &ma_main_rq); ma_activate_entity(e, &ma_nosched_rq); } if (!ma_runqueue_empty(&ma_nosched_rq)) { e = ma_runqueue_entry(&ma_nosched_rq); ma_deactivate_entity(e, &ma_nosched_rq); ma_activate_entity(e, &ma_main_rq); } ma_runqueue_unlock(&ma_main_rq); ma_runqueue_unlock(&ma_nosched_rq);

Outils d'analyse post- mortem Enregistrement efficace d'une trace des évènem ents élém entaires Analyse post- m ortem Observer à volonté ce qui s'est passé Intégrer dans les présentations

Implémentation : au sein de Marcel Bibliothèque de threads utilisateurs de l environnement d exécution PM2 développé au sein du projet Runtime Portable Modulaire Perform ante Ex tensible

Difficultés d'implémentation Sont épargnées au programmeur d'applications (c'est le but!) La gestion du placem ent d'une entité Son conteneur logique Son placem ent voulu Son placem ent actuel La préem ption Le verrouillage Le réveil

Un exemple d'application: simulation de conduction Simulation de conduction de chaleur dans un m atériau (CEA/ DAM) Maillage découpé en bandes selon le nombre de processeurs, communications hiérarchisées entre bandes Machine cible: NovaScale 5160 (Bull) 4 nœuds NUMA com prenant chacun 4 processeurs Itanium II 16 Go de mémoire

Comment ordonnancer la simulation de conduction? Trois approches Marcel sim ple: ordonnancem ent opportuniste Marcel fixé: fixation manuelle des threads sur les processeurs Marcel bulles: stratégie de bulles récursives, réparties autom atiquem ent sur la m achine

Simulation de conduction: résultats sur 16 processeurs Tem ps(s) Speedup Séquentiel 250,2 Marcel Sim ple 23,65 10,58 Marcel Fixé 15,82 15,82 Marcel Bulles 15,84 15,80

Conclusion Machines de plus en plus hiérarchisées Ex ploitation difficile Laisser le programmeur d'application guider l'ordonnancement Ex prim er la structure de l'application Ordonnancer des bulles à haut niveau Portable, flex ible et perform ant Se concentrer sur l'algorithmie plutôt que sur les détails techniques

Perspective Informations attachées aux bulles et threads Allocations m ém oire Charge de calcul estim ée Bande passante m ém oire nécessaire Décisions de placem ent plus raffinées Étudier différents ordonnanceurs pour différentes applications Intégrer dans le noyau

Ordonnancement de bulle basé sur le vol Encore en réflex ion... vol-enaction.swf