lundi mars 14, 2011

Les détails qui fond la différence : l'importance d'une bonne gestion de la mémoire

Translate in English

La semaine dernière, William Roche a clôturé son intervention sur la gestion de la mémoire, dans le cadre du Groupe des Utilisateurs Solaris. Le sujet était tellement riche, qu'il a fallu 2 sessions à William pour expliciter les avancées apportées au niveau de Solaris pour exploiter au mieux la mémoire.

Tout utilisateur manipulant de gros volumes de données, ou cherchant à consolider ses applications ou des machines virtuelles, connait l'importance de la mémoire. En effet, face à l'évolution des processeurs vers les multi-coeurs avec en plus plusieurs unités d'exécution par coeur, la mémoire prend une place prépondérante pour pouvoir les alimenter comme il se doit. Pour que cela soit efficace, il faut à la fois concevoir des serveurs sans goulot d'étranglement matériel avec une architecture homogène permettant de mettre en oeuvre suffisamment de mémoire en face des processeurs. Mais aussi disposer d'un système d'exploitation capable de tirer partie de l'infrastructure à disposition et d'en rendre la pleine puissance aux applications.

La mémoire se cache partout, pas uniquement la RAM, mais aussi dans les disques (SWAP, SSD), et pour Solaris c'est beaucoup beaucoup plus que cela : y compris les registres et le cache du CPU (le plus rapide, mais le plus cher).

Quelques chiffres de temps d'accès

  • Registres CPUS : < 1 ns d'accès.
  • Les caches L1, L2 : 1 à 20 ns
  • La RAM : 80ns à 500ns
  • SSD : 25 us à 250 us
  • Disques : 5ms - 20ms
  • DVD : 100ms

...mis en perspective

 Type de Cache
 Taille  Temps d'accès
 Perspective
 Registes CPU
 1 Koctets
 1 cycle
 1 seconde
 L1 CPU
 100 Ko
 2 cycles
 2 secondes
 L2 CPU
 8-16 Mo
 19 cycles
 10 secondes
 mémoire principale
 128 Mo à 512 Go (et plus)
 50 - 300 cycles
 50 secondes à 5 minutes
 Disques  40 Go à plusieurs To
 11 M cycles
 4.24 mois !
 Réseau  Pas de limite
 80 M cycles
 2.57 années !!

Garder les données actives proches du processeur est critique !

Et c'est là où, la conception des serveurs et Solaris rentrent en action.

Lors du démarrage, Solaris prend connaissance du système sous-jacent : processeurs, bancs mémoires, temps d'accès entre chacun des processeurs avec les différents bancs mémoires, etc... Cela lui sert non seulement dans l'optimisation de l'allocation des processus vis à vis de l'accès à la mémoire, mais aussi pour sécuriser le système, en pouvant par exemple "black lister" des coeurs ou des bancs mémoires défaillant sans impacter les applications.

En outre, grâce aux fonctions de "Large Page Support", Solaris adapte dynamiquement  la taille des pages mémoires en fonction du comportement de l'application pour éviter des cycles d'accès inutiles, qui comme illustré dans le tableau précédent coûtent cher !

Ces points ne représentent que quelques unes des nombreuses optimisations nous permettant de tirer parti des évolutions technologiques, et de répondre à l'évolution des besoins des applications, sans que vous, utilisateur, n'ayez à y penser. Si vous souhaitez approfondir le sujet, je vous renvoie à l'excellente présentation de William, ainsi qu'à l'article suivant : "Understanding Memory Allocation and File System Caching in OpenSolaris"

Vous pourrez même échanger directement avec William, ainsi que plusieurs experts Oracle Solaris, comme Clive King, Thierry Manfé ou Claude Teissedre,  lors du Solaris Tech Day, qui se tiendra le 5 avril prochain.

Translate in English
About

Eric Bezille

Search

Archives
« avril 2014
lun.mar.mer.jeu.ven.sam.dim.
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    
       
Today