Changes between Version 15 and Version 16 of page_tables


Ignore:
Timestamp:
Sep 17, 2018, 4:49:59 PM (6 years ago)
Author:
phan
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • page_tables

    v15 v16  
    1717== __2) Page tables and vseg lists__ ==
    1818
    19 The various information associated to a process P can be found in the process descriptor (process_t structure). This process descriptor and the structures within are - partly - replicated in all clusters contaning at least one thread of process P, these clusters are called "active" clusters.
     19The various information associated to a process P can be found in the process descriptor (process_t structure). This process descriptor and the structures within are - partly - replicated in all clusters containing at least one thread of process P, these clusters are called "active" clusters.
    2020
    2121The page table is used by the kernel to store the mapping for each page of each vseg of a process. The page table belongs to these - partly - replicated information, we will call PT(P,K) the page table of process P in cluster K.
     
    8080This type of vseg is registered in the VSL(P,A) of all A clusters containing at least one thread of P, it is registered when a thread of P executes mmap(file, size) in a cluster K.
    8181The kernel instance running in cluster K sends a VSEG_REQUEST_RPC to the Z cluster, owner of process P. The arguments are the PID, the vseg type, the file descriptor and the size.
    82 The kernel instance in clsuter Z broadcasts a VSEG_REGISTER_RPC to all the other active cluster of P.
     82The kernel instance in cluster Z broadcasts a VSEG_REGISTER_RPC to all the other active cluster of P.
    8383Te vseg length is defined by the size argument of mmap().
    8484The mapping cluster is defined by the file argument, and it can be any cluster since a file cache can be placed on any cluster (uniform dispatching policy).
     
    171171The handling of a page fault is the same as for a HEAP vseg.
    172172
    173 == __5) Invalidation d’une entrée de la table des pages__ ==
     173== __5) Invalidation of an entry in the page table__ ==
    174174
    175 Dans un cluster Z, propriétaire d’un processus P, le noyau peut décider d’invalider une entrée d’une PT(P,Z).
    176 Cela peut se produire par exemple en cas de pénurie de mémoire dans le cluster Z, ou simplement en cas de munmap().
    177 Sauf si le vseg concerné est de type STACK, l’entrée invalidée dans la PT(P,Z) doit aussi être invalidée
    178 dans les PT(P,K) des autre clusters.
    179 Pour ce faire, le noyau du cluster Z doit broadcaster une PT_INVAL_BCRPC vers tous les autres clusters actifs de P.
     175In a cluster Z, owner of process P, the kernel can invalidate an entry of PT(P,Z).
     176It can occur in case of a lack of memory in cluster Z for example, or more simply in case of a munmap().
     177If the vseg concerned is a STACK vseg, the invalidated entry in PT(P,Z) must also be invalidated in the PT(P,K) of all other clusters.
     178To do so, the kernel of cluster Z has to broadcast a PT_INVAL_BCRPC to all other active clusters of P.
    180179
    181 == __6) Optimisation des RPC broadcast__ ==
     180== __6) RPC broadcasts optimization__ ==
    182181
    183 Dans une RPC broadcast, tous les clusters destinataires doivent signaler la terminaison en incrémentant de façon atomique un compteur de réponses,  qui est scruté par le cluster initiateur.
     182In a broadcast RPC, all recipient clusters have to signal the termination by atomically incrementing a response couner, which is polled by the initiator cluster.
     183To reduce the number of receivers, a process P descriptor of owner cluster Z can keep four variables XMIN, XMAX, YMIN, YMAX defining the minimal rectangle covering all active clusters of P at any time.
     184In this case, a broadcast RPC has to be sent only to (XMAX - XMIN + 1) * (YMAX - YMIN +1) recipients.
     185These variables are updated upon each thread creation.
    184186
    185 Pour réduire le nombre de destinatiares, le descripteur du processus P du cluster propriétaire Z peut maintenir quatre variables
    186 XMIN, XMAX, YMIN, YMAX définissant le rectangle minimal recouvrant tous les clusters actifs de P à tout instant.
    187 Dans ce cas une RPC broadcast ne doit être envoyée qu’a (XMAX - XMIN + 1) * (YMAX - YMIN +1) destinataires.
    188 Ces variables sont mises à jour à chaque création de thread.
     187== __7 ) Page fault handling optimization__ ==
    189188
    190 == __7 ) Optimisation du traitement des défauts de page__ ==
    191 
    192 Pour réduire le nombre de RPC causés par les défauts de page, le noyau d’un cluster X qui détecte un défaut de page peut utiliser un remote_read() dans la table PT(P,Z) du cluster de référence au lieu d’une PT_MISS_RPC. Ceci impose cependant d’utiliser un lock multi-lecteurs pour éviter un état incohérent dans le cas d’une transaction PT_INVAL_BC_RPC simultanée initiée par le cluster Z : Ce lock doit être pris systématiquement par le cluster propriétaire avant un PT_INVAL_BC_RPC, et par les autres clusters avant  un remote_read(). Il garantit que le PT_INVAL_RPC  ne sera lancé qu’après la fin de tous les remote_read() en cours. Il garantit qu’aucun nouveau remote_read() ne sera plus accepté avant la completion du PT_INVAL_RPC.
    193 
     189To reduce the number of RPC triggered by page faults, the kernel of a cluster X detecting a page fault can use a remote_read() in the PT(P,Z) table of the reference cluster insteadof a PT_MISS_RPC.
     190In this case, however, a multi-reader lock must be used in order to avoid an inconsistent state in cas of a PT_INVAL_BC_RPC simultaneous transaction initiated by cluster Z.
     191This lock must be systematically taken by the owner cluster before a PT_INVAL_BC_RPC and by the other clusters before a remote_read().
     192It ensures that a PT_INVAL_RPC should be launched only after the termination of all current remote_read().
     193It guarantees that no new remote_read() will be accepted before the completion of the PT_INVAL_RPC.