• Aucun résultat trouvé

Plusieurs algorithmes existent [Tho04] ; cependant d’une manière générale, ils appartiennent à l’une de ces 3 catégories :

– First In First Out, les requêtes sont traitées selon leur ordre d’arrivée.

– Seek Time Optimization, les requêtes sont analysées puis réordonnées selon le numéro de

cylindre correspondant et le positionnement actuel du bras.

– Access Time Optimization, les requêtes sont analysées puis réordonnées selon le numéro

de cylindre et le positionnement au sein de la piste. En effet, les temps de latence ne sont pas pris en compte dans la classe d’algorithme précédente. Deux accès peuvent ainsi être situées sur deux cylindres consécutifs mais à l’opposé au niveau des pistes pendant qu’un troisième accès pourrait être situé sur un cylindre plus éloigné mais plus proche de la première requête d’un point de vue piste. Les algorithmes les plus avancés analy-seront pour chaque accès le temps nécessaire au déplacement du bras mais également le temps nécessaire pour que les données se retrouvent sous la tête de lecture/écriture. La mise en œuvre d’un tel algorithme est nettement plus complexe et requiert de la part du micro-contrôleur une bonne appréciation de ses paramètres physiques. En effet, si le délai prévu pour déplacer le bras sur le prochain cylindre est plus long que prévu, la tête de lecture/écriture va manquer le secteur et devra pas conséquent attendre la rotation complète du plateau afin que la zone se représente à nouveau sous la tête.

Les deux dernières classes sont illustrées par la figure 1.4. Les stratégies d’ordonnancement internes aux disques sont connues sont le nom decommand queuing. La longueur de la queue de réception est appelée«profondeur de file». Dans la pratique, la profondeur normale de la file est le plus souvent de 64 commandes.

Depuis 1998, la norme ATA-48 a permis d’intégrer de telles fonctionnalités au sein des disquesIDEs.

1.1.5. L’effetZCAV

Depuis le début des années 1990, la plupart des disques exploitent une technique nommée ZCAV 9 . Ce mécanisme est employé afin d’exploiter l’espace disponible plus conséquent sur les pistes externes que sur les pistes internes aux plateaux, et sauvegarder, ainsi, un plus grand nombre de secteurs. Le ratio généralement mis en œuvre est de 3 pour 2 et peut aller sur cer-taines unités à 2 pour 1. En une révolution, la quantité de données lue ou écrite peut varier par un facteur jusqu’à 2 fois supérieur selon les cylindres accédés. Ainsi, le taux de transfert entre le disque et les tampons temporaires est différent selon les secteurs manipulés.

Si le rapport entre les pistes internes et celles externes est de 2/3, la récupération d’un fichier situé sur les pistes externes prendra 2/3 de temps de moins que s’il etait situé sur les pistes internes. Il est de même pour les déplacements puisque chacune des pistes à l’extérieur des plateaux contient plus de secteurs.

Cet effet bien connu [Van97] [ES03] est cependant rarement mentionné. Dans le cadre de tra-vaux visant à évaluer les performances des systèmes d’E/S, il est primordial d’en tenir compte. 1.1.6.Redundant Array of Independent / Inexpensive Disks

Proposé à la fin des années 80 [PGK88], le conceptRAIDconsiste à offrir un niveau d’abs-traction permettant de regrouper plusieurs disques soit pour assurer un plus haut niveau de fiabilité (redondance des informations) soit pour augmenter les performances (répartition des informations) ou les deux. La nouvelle structure reste complètement invisible à l’utilisateur de l’ordinateur. En effet, quel que soit le nombre de disques physiques utilisés pour construire le RAID, l’utilisateur de la machine ne verra jamais qu’un seul grand disque logique, auquel il accédera de façon tout à fait habituelle.

Cette abstraction est fournie soit par des contrôleurs matériels spécifiques soit par une abs-traction logicielle. Dans le cas de contrôleurs matériels, une carte ou un composant est dédié à la gestion des opérations. Ces cartes additionnelles offrent la possibilité de reconstruire de manière transparente les disques défaillants, de changer les propriétés ou d’étendre la capacité des unitésRAID.

Plusieurs combinaisons ont été proposées selon les objectifs attendus : performance, fiablité et coût associé. Elles dérivent toutes de 8 assemblages principaux numérotés de 0 à 7 [CLG+94]. Nous présentons ici, les plus utilisées :

– LeRAID0a été proposé afin d’améliorer les performances. Il consiste à répartir les don-nées sur plusieurs unités de manière à paralléliser les accès sur les dondon-nées [SGM86]10. Les fichiers sont découpés en blocs (chunk) de taille fixe répartis sur les différentes unités. Cette stratégie permet de décupler en théorie, les débits. Cependant, le gain réel dépend de la corrélation entre la taille de découpage et les modes d’accès.

– LeRAID1répond à des critères de fiabilité. Chaque donnée est dupliquée sur la totalité des disques qui compose la structure. Lors de la défaillance de l’un des disques, le contrô-leur RAID (matériel ou logiciel) désactive instantanément le disque incriminé et bascule dans un mode dégradé où les traitements continuent à s’effectuer mais où la fiabilité n’est potentiellement plus assurée. Il est alors nécessaire de changer l’unité endommagée et de

9Zone Constant Angular Velocity, appelée égalementZone Bit Recording.

synchroniser la nouvelle unité avec les autres disques afin de rebasculer dans le mode normal. Cette combinaison est relativement coûteuse puisqu’elle nécessite deux fois la taille effectivement utilisable.

– LesRAID3 et 4utilisent, en combinaison avec une structureRAID0, un disque supplé-mentaire afin d’y sauvegarder un bit de parité soit par octet (RAID3) soit par blocRAID 4. Si un des disques duRAID0 tombe en panne, il est possible de reconstruire l’informa-tion. Cependant si le disque de parité subit une défaillance. La fiabilité n’est plus assurée et il faut donc intervenir afin de changer l’unité et recalculer l’ensemble des parités. – LeRAID 5consiste à répartir le bit de parité sur l’ensemble des disques composant la

structure (corrigant ainsi le principal défaut desRAID3 et 4).

D’un point de vue pratique les combinaisons duRAID1+0 et duRAID5+0 sont celles les plus déployées dans les centres de calculs. Elles assurent performance et fiabilité :

– Dans leRAID 1+0, les unités sont regroupées deux à deux afin de fournir du RAID1. Par la suite, leRAID0 est appliqué entre les groupes de deux disques. La probabilité de perdre des données est réduite, il faut que deux unités du même groupe tombe en panne pour que l’architecture ne soit plus opérationnelle.

– LeRAID5+0repose sur la même idée, les unités sont groupées par trois disques enRAID 5 et les groupes sont montés entre eux enRAID0.

Un paramètre à ne pas oublier lors de la mise en place d’une structureRAIDest le nombre de cartes d’interface vers les disques (cartes IDE ou SCSI). En effet, si le nombre de disques est important, la carte d’interface à laquelle est connectée la structure deviendra vite un goulet d’étranglement lors des transfert de données entre le système d’exploitation et l’architecture de stockage.

1.1.7. Bilan

Les progrès significatifs réalisés sur la densité de stockage ont permis de proposer aujour-d’hui des disques d’une capacité supérieure à 500 Go. Cette évolution couplée à la baisse des coûts de production a joué un rôle majeur dans le développement de nouveaux systèmes de résolution comme la génomique ou la climatologie ainsi que dans les nouveaux modes d’utili-sations des supports de stockage.

Les applications scientifiques ayant accès à une plus grande puissance de calcul, s’appuient sur une quantité d’information de plus en plus significative. Les données à analyser deviennent de plus en plus conséquentes.

Ainsi, les besoins en stockage des centres de calculs ne cessent de croître [MBR03] (cf. ta-bleau 1.1).

Cependant, si les contraintes d’espace semblent temporairement réglées, les aspects liés aux performances ont été délaissés. Les débits et le temps d’accès moyen aux informations ont par exemple peu évolué depuis ces quinzes dernières années. En 2006, les débits effectifs moyens d’une unité de stockage gravitent entre 45 Mo/s et 65 Mo/s. Pourtant ces aspects sont primordiaux pour les nouvelles applications. A titre d’exemple, l’IN2P311 met actuellement en place des systèmes capables d’enregistrer les résultats émanant des applications de la physique du nucléaire effectuées sur l’accélérateur du CERN 12 en Suisse. Lors de chaque expérience,

11Institut National de Physique Nucléaire et de Physique des Particules.

Année Capacité Architecture

1990 50 à 100Go non-renseigné

1994 1 To Serveur de stockage à base deRAID5

1997 75 To ASCI Mountain Blue - 48 noeuds de 128 processeurs - SGI

2002 700 To ASCI Q

2005 3 Po ASCI Purple - Lustre - 10000 processeurs - 50 To RAM

2006 6 Po NASA RDS

TAB. 1.1 – Évolution des besoins de stockage pour les centres de calcul

ces systèmes devront être capable de supporter un débit soutenu de plus de 1 Go par seconde pour une totalité de plus de 5 Po par an.

Les solutions actuelles consistent à exploiter l’approcheRAID afin d’offrir de tels débits. Cependant, les performances proposées par ces structures dépendent énormément des modes d’accès utilisés par les applications.

Avant de rentrer dans le vif du sujet et d’étudier les modes d’accès propres aux applications parallèles, nous allons tenter de comprendre la manière dont le système d’exploitation interagit avec les unités de stockage. Pour cela, nous allons décrire la pile des E/S en nous appuyant sur le système GNU/Linux. De manière similaire à la présentation du disque, nous allons nous intéresser aux caractéristiques propres à la performance et aborder les différents mécanismes logiciels généralement mis en place pour exploiter de manière efficace les unités de stockage sous-jacentes.

1.2. Système d’exploitation et Entrées/Sorties

Dans cette section, nous présenterons la gestion des E/S au sein d’un système d’exploita-tion. Le but est de mettre en évidence plusieurs concepts sur lesquels nous allons nous appuyer par la suite. Dans un premier temps, nous allons donner une description très succincte de ce qu’est un système de fichiers. Cette vision simplifée va nous permettre de réaliser quelques rap-pels de terminologie. Dans un second temps, nous nous intéressons de manière plus détaillée à l’analyse de la pile des E/S au sein du système d’exploitaionGNU/Linuxet principalement aux différentes techniques mises en place afin d’améliorer les performances.

1.2.1. Préambule

Le travail d’un gestionnaire de fichiers consiste à classer les programmes et les données pour les rendre accessibles à la demande. L’ensemble de la littérature abordant ce sujet s’ap-puie sur une terminologie spécifique [Leb02] permettant de caractériser les diverses notions et techniques employées.

Une proriété fondamentale dans la gestion des données concerne la transparence d’accès. Un usager qui souhaite manipuler des données précises, se réfère à un fichier par un nom textuel. Cette information utilisée pour accéder à «l’information» est communément appelé méta-information. La plupart des personnes est généralement bien habituée à manipuler ce

type d’informations (date, taille du fichier, propriétaire, droit . . .) sans se douter qu’elles sont primordiales pour le bon fonctionnement du système de fichiers. En effet en complément aux méta-informations«utilisateurs»sont associées des méta-informations de plus bas niveau qui permettent de localiser les données inhérentes au fichier sur les diverses unités de stockage.

Ainsi, un système de fichiers peut être vu comme étant composé de deux entités : un ser-vice de désignation et un serser-vice de gestion des données. Le premier crée et gère les répertoires (ajout, destruction de fichiers ) alors que le second prend en charge les opérations sur les fi-chiers, comme la lecture, l’écriture ou l’ajout.

1.2.2. Pile des E/S au sein d’un système d’exploitation

De manière analogue au modèleOSI13 qui sert de référence aux mises en œuvre des piles réseaux, la gestion des E/S dans les systèmes d’exploitation repose sur un modèle à base de couches. Chaque couche enrichit les couches inférieures en proposant de nouvelles fonctionna-lités. Par défaut, les systèmesUNIX-likeexploitent au moins 4 couches :

Les deux couches de plus bas niveau sont extérieures au système d’exploitation et peuvent être vues comme un seul et même niveau. En effet, la couche la plus basse, la couche « phy-sique», n’est que très rarement accessible. Elle correspond au micro-code de chacune des uni-tés qui peut être spécifique selon les fabricants ou les modèles. La couche vue par le système d’exploitation est la couche«logique». Cette couche permet d’abstraire les différentes unités de stockage autour d’un standard commun (IDEouSCSI). Elle est nécessaire à l’interconnexion et au dialogue entre les contrôleurs disques et les systèmes d’exploitation. Les contrôleursRAID matériels introduits précédemment se situent également à ce niveau.

Les deux couches internes au système d’exploitation sont la couche «bloc» et la couche «système de fichiers». Chacune se décompose en plusieurs sous modules que nous allons trai-ter dans la suite du document. D’un point de vue général, la couche «bloc» offre une vision uniforme de l’espace de stockage et permet de faire correspondre les données situées en mé-moire aux secteurs des différentes unités de stockage. La couche«système de fichiers»fournit la couche utilisable par les applictions. C’est elle qui fait la correspondance entre la tradition-nelle arborescence dossier/fichier et la représentation par bloc utilisée par la majorité des sys-tèmes de fichiers.

Une troisième couche, le gestionnaire decaches, est traditionnellement placé entre la couche «système de fichier» et la couche «bloc». A la manière descaches internes aux disques, elle a pour but de minimiser les interactions avec les couches inférieures et donc les opérations coûteuses sur les disques. Par exemple, un fichier temporaire d’une durée de vie très brève n’a pas d’intérêt à être propagé vers le disque. Cette couche, qui d’un point de vue conceptuel reste facultative, permet d’améliorer considérablement les performances.

La figure 1.5 représente une vue simplifié des différentes couches présentes au sein du noyauLinux[Lov05].

Afin de faciliter la lecture du document, nous avons choisi de décrire les différents compo-sants intervenant dans la gestion des E/S depuis les applications vers les unités de stockage. Nous pensons qu’il sera plus facile pour le lecteur d’apréhender les différentes couches en par-tant d’un niveau généralement connu qui consiste à lire ou écrire au sein d’un fichier pour terminer par la réprésentation de ces données sur un disque.

Couche Réseau RPC XDR Utilisateur Noyau Couche d’appel système

Floppy SCSI IDE IDE

/dev/hda /dev/hdb

RAID /dev/md0

Système de fichiers virtuel VFS

ExtX ReiserFS NFS

/dev/sda /dev/fd

couche «système de fichiers»

couche «bloc»

Pile réseau VFAT

Gestionnaire de caches page cacher / démon pdflush

NBD /dev/nb0 Réseau d’interconnexion Applicationn Application1 Application2