Partager via


Zones de mise en file CLFS

Un client CLFS (Common Log File System) ajoute des enregistrements de journal à une zone de marshaling en mémoire volatile, et CLFS écrit régulièrement ces enregistrements dans un stockage stable. Une zone de regroupement est une collection de mémoires tampons d’E/S de journal, chacune pouvant contenir plusieurs entrées de journal. Les mémoires tampons d’E/S de journal contiennent des enregistrements récemment écrits dans un flux (mais éventuellement pas vidés dans un stockage stable) et les enregistrements lus récemment à partir du flux.

Vous créez une zone de marshaling en appelant ClfsCreateMarshallingArea, à ce moment-là vous devez spécifier la taille des buffers d'E/S du journal que la zone de marshaling utilise et si ces buffers se trouvent dans le pool paginé ou non paginé. Toutes les mémoires tampons d’E/S de journal dans une zone de mise en correspondance ont la même taille, et CLFS garantit que cette taille est un multiple de la taille du secteur sur le support de stockage stable sous-jacent. Autrement dit, CLFS prend votre taille demandée et l’arrondit si nécessaire pour rendre vos mémoires tampons d’E/S compatibles avec le support de stockage stable.

CLFS alloue et libère les mémoires tampons d'E/S de journal au besoin, mais vous avez la possibilité de définir le nombre maximal de mémoires tampons d'E/S qui peuvent être allouées simultanément. Vous avez également la possibilité de fournir vos propres fonctions d’allocation de mémoire tampon et de désallocation.

Pour spécifier le nombre maximal de mémoires tampons d’E/S de journal qui peuvent être allouées à la fois pour écrire des enregistrements de journal, définissez le paramètre cMaxWriteBuffers de la fonction ClfsCreateMarshallingArea . La limitation du nombre de mémoires tampons affecte la fréquence des vidages au stockage stable ; avec moins de mémoires tampons, les enregistrements de journal doivent être écrits dans un stockage stable plus souvent. Si vous n’avez pas besoin de contrôler la fréquence de vidage, définissez cMaxWriteBuffers sur INFINITE (défini dans Winbase.h).

Pour spécifier le nombre maximal de mémoires tampons d’E/S de journal qui peuvent être allouées à la fois pour la lecture des enregistrements de journal, définissez le paramètre cMaxReadBuffers de la fonction ClfsCreateMarshallingArea . Si vous n’avez pas besoin de contrôler le nombre de mémoires tampons de lecture allouées, définissez cMaxReadBuffers sur INFINITE.

Si vous souhaitez effectuer votre propre allocation de mémoire pour les mémoires tampons d’E/S de journal, définissez les paramètres pfnAllocBuffer et pfnFreeBuffer de la fonction ClfsCreateMarshallingArea pour pointer vers vos propres fonctions d’allocation et de désallocation. Ensuite, CLFS appelle vos fonctions pour effectuer l’allocation et la désallocation de mémoire chaque fois qu’il doit créer ou libérer des buffers d’E/S de journal.

Dans certains cas, vous voudrez peut-être réserver de l’espace dans une zone de marshalling à l’avance. Par exemple, vous savez peut-être que vous êtes sur le point d’écrire un ensemble complet de 10 enregistrements de log, et vous souhaitez vous assurer qu’il y a suffisamment d’espace dans la zone de gestion de la mémoire pour l’ensemble complet. Pour réserver de l’espace pour les 10 enregistrements, créez un tableau de 10 éléments qui contient les tailles des enregistrements, puis passez le tableau à la fonction ClfsReserveAndAppendLog dans le paramètre rgcbReservation . ClfsReserveAndAppendLog est une fonction polyvalente qui réserve de l'espace dans une zone d'assemblage ou ajoute des enregistrements de journal à un flux, ou effectue ces deux opérations de manière atomique. En définissant les paramètres de manière appropriée, vous pouvez appeler ClfsReserveAndAppendLog pour réserver de l’espace pour une utilisation ultérieure sans ajouter d’enregistrements au flux.

Voir aussi

ClfsCreateMarshallingArea

ClfsReserveAndAppendLog

zone de regroupement