• Aucun résultat trouvé

ThrashingFichiers“mapp´es”enm´emoireAllocationdem´emoiredunoyau frames PaginationsurdemandeCopy-on-WriteRemplacementdepagesAllocationde M´emoirevirtuelle

N/A
N/A
Protected

Academic year: 2022

Partager "ThrashingFichiers“mapp´es”enm´emoireAllocationdem´emoiredunoyau frames PaginationsurdemandeCopy-on-WriteRemplacementdepagesAllocationde M´emoirevirtuelle"

Copied!
47
0
0

Texte intégral

(1)

M ´emoire virtuelle

Pagination sur demande Copy-on-Write

Remplacement de pages Allocation de frames

Thrashing

Fichiers “mapp ´es” en m ´emoire Allocation de m ´emoire du noyau

(2)

Sch ´ema de m ´emoire virtuelle

(3)

Pourquoi virtuelle?

Donner l’illusion d’une m ´emoire infinie M ´emoire centrale est toujours trop petite

Certaines parties du code ne sont jamais ex ´ecut ´ees Certaines donn ´ees/code momentan ´ement inutiles Maximiser l’utilit ´e des donn ´ees en m ´emoire centrale Pas besoin de pr ˆeter attention `a la taille m ´emoire

(4)

Espace d’adressage virtuel

Espace d’adressage avec des trous Trous pour faciliter allocations futures:

Grandir la pile

Libraires li ´ees dynamiquement

Pages partag ´ees avec d’autres processus

(5)

Librairie partag ´ee

(6)

Pagination `a la demande

Ne pas charger tout le programme au d ´emarrage

Amener les pages en m ´emoire centrale de mani `ere paresseuse

Moins d’entr ´ees/sorties, moins de m ´emoire utilis ´ee

R ´eponse plus rapide, plus de processus en m ´emoire Acc `es m ´emoire:

1. En m ´emoire

= ⇒

le CPU se charge de tout 2. Sinon, trap vers le SE

3. Le SE v ´erifie si la page existe: si non

= ⇒

coredump 4. Si oui, charger la page du disque et ressayer

(7)

Transfert du/vers le disque

(8)

Table de pages avec pages manquantes

(9)

Page fault

1. Le CPU utilise table des pages pour trouver l’adresse physique 2. Si la table des pages indique une entr ´ee invalide: page fault!

3. Le CPU passe en mode noyau et appelle le SE 4. Le SE cherche dans sa propre table

5. Si l’adresse logique est vraiment invalide: coredump!

6. Sinon, trouver une frame libre

7. Transf ´erer la page depuis le disque vers cette frame 8. Mettre `a jour la table des pages

(10)

Sch ´ema d’une page fault

(11)

Besoins de la pagination sur demande

MMU avec des bits valide/invalide par page Une m ´emoire secondaire

La capacit ´e de r ´eex ´ecuter une instruction

Instructions atomiques

Garder trace de la partie d ´ej `a ex ´ecut ´ee

(12)

Co ˆ ut d’un page fault

Trap vers le SE

Trouver une frame libre

Potentiellement ´evincer une frame

Envoyer la commande au disque

Context switch `a un autre processus en attendant

Interruption vers le SE

Autre Context switch pour revenir au processus

Corriger la table des pages

Relancer l’ex ´ecution

(13)

Temps d’acc `es effectif

ρ

: miss rate de la m ´emoire centrale

M

: Temps d’acc `es `a la m ´emoire centrale

D

: Temps de service d’un page fault

EAT = (1 − ρ)M + ρ(M + D) = M + ρD D

est principalement d ´etermin ´e par le temps d’acc `es au disque

D ≥

latence-disque

+

acc `es-disque

(14)

Optimisations

Garder des frames libres

Charger plusieurs pages d’un coup

Un acc `es disque pour 4KB n’est pas plus rapide que pour 64KB Prefetching

(15)

Copy-on-Write (CoW)

Copie paresseuse via la table des pages

La copie partage la m ˆeme m ´emoire physique que l’original 1. Pages marqu ´ees read-only

2. En cas de store, la page affect ´ee est copi ´ee

3. La table des pages est ajust ´ee et marqu ´ee read-write 4. Et ensuite seulement le store est relanc ´e

Indispensable pour

fork

Utilis ´e aussi pour l’initialisation `a 0

(16)

Sch ´ema de Copy-on-Write

(17)

Plus de frame libre

Que faire s’il n’y a plus de frame libre?

Tuer un ou des processus

Swap out un processus

Evincer une page´

Pour ´evincer, il est tr `es important de trouver un bon condidat

(18)

Remplacement de page

Pour ´evincer une page il faut la remettre sur le disque

On utilise un dirty bit pour savoir si la page a ´et ´e modifi ´ee

Si elle n’a pas ´et ´e modifi ´ee, pas besoin de la r ´e ´ecrire sur le disque Besoin de statistiques sur l’usage de chaque page pour un bon choix Note: une page fault peut maintenant faire 2 transferts de page

Le temps d’acc `es effectif en est augment ´e en cons ´equence

(19)

Esquisse de remplacement de page

(20)

Algorithmes de remplacement de page

Minimiser le nombre de page faults futures

Soit globalement

Soit par processus ou utilisateur ou groupe de processus Evalu ´e sur une s ´equence de pages´

E.g.:

7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1

(21)

Remplacement par Random

On choisit une frame au hasard Facile `a impl ´ementer

Pas tr `es bon en g ´en ´eral

Mais, dans le pire des cas n’est pas pire que les autres

(22)

Remplacement par FIFO

On choisit toujours la frame suivant la pr ´ec ´edente:

Dans cet exemple, on a donc 15 page faults Facile `a impl ´ementer

Pas id ´eal. Mais, dans le pire des cas n’est pas mauvais Anomalie de Belady: plus de faults avec plus de frames!

(23)

Remplacement Optimal

Remplacer la page qui restera inutilis ´ee plus longtemps

Seulement 9 page faults

Malheureusement, il faut connaˆıtre le futur

(24)

Remplacement par LRU

Remplace la frame inutilis ´ee depuis le plus de temps

12 page faults, dans notre exemple

G ´en ´eralement un des meilleurs algorithmes Ne souffre pas de l’anomalie de Belady

LRU est OPT `a l’envers

´equivalents si le futur reproduit le pass ´e

(25)

Talon d’Achille de LRU

Longs acc `es s ´equentiels

Sans r ´ep ´etition: le futur ne ressemble pas du tout au pass ´e Avec r ´ep ´etition: acc `es `a N+1 pages

Lorsqu’on arrive `a N+1, on ´evince 0

Lorsqu’on arrive `a 0, on ´evince 1

Random fonctionnerait beaucoup mieux (

e1 fault par boucle)

(26)

Impl ´ementation de LRU

Horloge:

Chaque frame garde l’“heure” du dernier acc `es

L’horloge est incr ´ement ´ee `a chaque acc `es

Lors du remplacement, cherche la frame avec la plus vieille “heure”

Liste (g ´en ´eralement appel ´ee pile):

Garde une liste ordonn ´ee de toutes les frames

A chaque acc `es, d ´eplace la frame en premi `ere position`

Lors du remplacement, prend la derni `ere frame de la liste

(27)

Approximation de LRU: referenced bit

LRU requiert trop de travail `a chaque acc `es Certains CPU donnent une approximation Un bit referenced dans la table de page

Lors de l’acc `es `a une page, le CPU met ce bit `a 1

P ´eriodiquement, le SE collecte tous ces bits et les remet `a 0

Le SE ne peut plus distinguer l’ordre d’acc `es dans une m ˆeme p ´eriode Parmi les frames d’une m ˆeme p ´eriode on peut utiliser FIFO

(28)

Approximation de LRU: Clock

Aussi appel ´e algorithme de la deuxi `eme chance

Comme FIFO, prend la frame suivante, mais v ´erifie son referenced bit:

Si referenced est 0, alors remplace cette page

Si referenced est 1, alors remet referenced `a 0 et passe `a la frame suivante

D ´eg ´en `ere `a FIFO si les referenced sont tous `a 0 (ou tous `a 1)

(29)

Exemple de Clock

(30)

Impl ´ementation de referenced bit

Certains CPU impl ´ementent les bits referenced et dirty Sinon, on peut le faire `a la main:

Pour mettre referenced `a 0, marquer la page comme invalide

Lors d’un page fault, mettre referenced `a 1 De m ˆeme pour dirty

Pour mettre dirty `a 0, marquer la page comme read-only

Lors d’un page fault en ´ecriture, mettre dirty `a 1 Parfois plus efficace et pratique de le faire `a la main

(31)

Algorithmes de page-buffering

D ´ecoupler les op ´erations pour r ´epondre plus vite `a un page-fault Garder des frames libres

Choisir `a l’avance les victimes futures

Si elle est dirty, ´ecrire le contenu dans le disque

Marquer invalide. Mais si acc ´ed ´ee, on peut la ressusciter `a bon prix Ne pas laisser les pages dirty trop longtemps

Quand le disque est inactif, ´ecrire le contenu des pages dirty

Ainsi la page peut ˆetre ´evinc ´ee plus rapidement

(32)

Allocation de frames

Combien de frames allouer `a chaque processus

Evincer une page qui appartient `a un autre processus?´ Allocation globale: oui sans ´equivoque

Temps d’ex ´ecution d’un processus d ´epend beaucoup des autres

Populaire: g ´en ´eralement meilleur throughput Allocation locale: non, (voire: oui mais)

Performance d’un processus plus pr ´evisible

Risque de sous-utiliser la m ´emoire

Populaire quand on partitionne une machine

(33)

NUMA (Non-Uniform Memory Access)

Le temps d’acc `es `a la m ´emoire peut d ´ependre de la distance E.g. plusieurs nœuds (CPU+m ´emoire) interconnect ´es

Meilleure performance avec allocation proche Affecte l’ordonnanceur, bien s ˆur

Lors du remplacement de page, choisir une frame proche

(34)

Thrashing

S’il y a trop peu de m ´emoire physique

Chaque page-fault ´evince une page dont aura bient ˆot besoin CPU sous-utilis ´e

Sous utilisation du CPU peut inciter `a lancer plus de programmes!

Le syst `eme peut paraˆıtre fig ´e pendant plusieurs minutes

(35)

Pagination et thrashing

Pagination marche parce que:

Ex ´ecution migre de “localit ´e” `a

“localit ´e”

Localit ´es peuvent se chevaucher

On peut revenir `a une localit ´e Thrashing

Taille de localit ´e

>

m ´emoire

Peut se limiter aux processus coupables

(36)

Mod `ele du working-set

= fen ˆetre du working-set: un certain intervalle de temps

Un

trop petit ne couvre pas toute la localit ´e

Un

trop grand sera pessimiste

• ∆

d ´epend typiquement du temps d’acc `es au disque Peut se mesurer en instructions ou en acc `es m ´emoire

W SS

i = Nombre de pages r ´ef ´erenc ´ees par

P

i pendant

∆ D = ΣW SS

i : Taille totale des localit ´es courantes

D >

M ´emoire

thrashing: il faut suspendre des processus

(37)

Fr ´equence de page-fault

Autre approche, plus directe, bas ´ee sur un remplacement local D ´ecide d’une fr ´equence acceptable de page-faults

Mesure fr ´equence de page faults pour chaque processus

Fr ´equence trop basse: diminuer la m ´emoire allou ´ee au processus

Fr ´equence trop ´elev ´ee: augmenter la m ´emoire allou ´ee

Se fr ´equence trop ´elev ´ee, mais plus de m ´emoire disponible: suspendre

(38)

Working-set et fr ´equence de page-faults

(39)

Fichiers memory-mapped

Rendre un fichier accessible comme une partie de la m ´emoire R ´eutilise la pagination sur demande

Modifications ´ecrites sur le disque par le code de pagination Partage efficace d’un fichier via

mmap

entre processus

Peut acc ´el ´erer ex ´ecution en ´evitant appels syst `emes

read

et

write

Moins de contr ˆole sur les acc `es disque; pas d’acc `es asynchrone

(40)

Exemple de memory mapping

(41)

Allocation de m ´emoire noyau

La m ´emoire du noyau est trait ´ee diff ´eremment M ´emoire des processus g ´er ´ee par page

M ´emoire du noyau g ´er ´ee par objet, comme avec

malloc

Certaines adresses sont sp ´eciales

Certaines parties doivent ˆetre contigu ¨es

(42)

Allocation style buddy

Utilise une zone m ´emoire contigu ¨e de taille fixe Cette zone est divis ´ee successivement par 2 Chaque chunk occupe un espace de taille

2

n

objet

<

1

/

2 chunk

divise Avantage: facile de re-r ´eunir des petits blocs (coalesce)

Inconv ´enient: fragmentation, interne et externe

(43)

Allocation style Slab

Slab: une ou plusieurs pages, physiquement contigu ¨es

Cache: ensemble de slabs

Chaque cache d ´edi ´e `a un type (ou une taille) d’objets

Cache grandi par slab, divis ´ee en objets (initialement libres)

Utilise le fait que les tailles d’objets ne sont pas al ´eatoires Peu de fragmentation, en pratique

(44)

Taille des pages

La taille des pages est parfois impos ´ee, mais pas toujours Facteurs de choix:

Fragmentation: mieux vaut des petites pages

Taille de la table: mieux vaut de grosses pages

Efficacit ´e du TLB: mieux vaut de grosses pages

Localit ´e: mieux vaut des petites pages

R ´esolution: mieux vaut des petites pages

Co ˆut I/O et page-faults: mieux vaut de grosses pages En g ´en ´eral, les tailles devraient augmenter peu `a peu

(45)

Pr ´epagination

Charger certaines pages d’un processus `a l’avance

Pour ´eviter page-faults au d ´emarrage

Gaspillage si ces pages ne sont pas utilis ´ees

Gaspillage d’I/O peut ˆetre mineur (acc `es s ´equentiel)

Minimiser le gaspillage de m ´emoire: candidats `a l’ ´eviction Clustering: lors d’un page fault, amener tout un cluster

Forme de prefetching

Simule des pages plus grandes, sans les inconv ´enients

(46)

TLB reach

TLB reach: quantit ´e de m ´emoire accessible depuis le TLB

TLB reach = taille TLB

×

taille de page Si trop petit, beaucoup de TLB-misses

Utiliser des superpages l `a o `u c’est possibles

(47)

G ´erer la localit ´e

int data[128][128];

Quel acc `es choisir:

for (i = 0; i < 128; i++)

for (j = 0; j < 128; j++) data[i, j] = 0;

ou:

for (j = 0; j < 128; j++)

for (i = 0; i < 128; i++)

data[i, j] = 0;

Références

Documents relatifs

A veteran dirty trickster named Michael Mertz has something good to say about the Internal Revenue Service -- it can be used to furnish a hard time for your mark.. Mertz knows his

En utilisant l’éditeur de texte (blocnote ou sublimtext) mettre en forme vos pages web avec une ou des feuilles de style css.... Page 1 sur 1 Une ligne

PDF (Portable Document Format) est devenu le format standard de visualisation, de protection et d'échange des documents. Lorsque vous confierez votre tapuscrit à

Julie et son frère ont mangé une pomme... Julie avait mangé

4) Dans une loterie il y a 400 billets et 2 prix. Une personne achete 4 billets. Quelle est la probabilite qu'elle gagne au moins un prix?. 5) Pour le debut de ses etudes a l'Ecole

Dans une première séance, vous ferez la première colonne de tous les exercices.. Dans une première séance, vous ferez la première colonne de tous

Mettre au point une charte graphique générale, pour le poster entier, avec sa personnalité (le ton graphique : sérieux / sympa, vif / terne, etc.) :. Gamme de couleurs

Nous souhaitons mettre en page un document en utilisant les CSS, et sans modifier le document XHTML (autant que possible).. Deux versions d’affichage doivent être prévues : Une