Compartir a través de


Áreas de organización de CLFS

Un cliente de Common Log File System (CLFS) agrega registros de registro a un área de agrupamiento en memoria volátil, y CLFS escribe periódicamente esos registros en un almacenamiento estable. Un área de agrupamiento es una colección de búferes de E/S de log, cada uno de los cuales puede contener varios registros de log. Los búferes de E/S de registro contienen registros recientemente escritos en un flujo de datos (pero posiblemente no volcados en almacenamiento estable) y registros leídos recientemente de dicho flujo de datos.

Para crear un área de serialización, llame a ClfsCreateMarshallingArea, en cuyo momento debe especificar el tamaño de los búferes de E/S de registro que usa el área de serialización y si esos búferes están en el grupo paginado o no paginado. Todos los búferes de entrada/salida de registro en un área de organización tienen el mismo tamaño, y CLFS garantiza que dicho tamaño sea un múltiplo del tamaño del sector en el medio de almacenamiento estable subyacente. Es decir, CLFS toma el tamaño solicitado y lo redondea según sea necesario para que los búferes de E/S sean compatibles con el medio de almacenamiento estable.

CLFS asigna y libera búferes de E/S de registro según sea necesario, pero tiene la opción de establecer el número máximo de búferes de E/S que se pueden asignar al mismo tiempo. También tiene la opción de proporcionar sus propias funciones de asignación y desasignación de búferes.

Para especificar el número máximo de búferes de E/S de registro que se pueden asignar al mismo tiempo para escribir registros, establezca el parámetro cMaxWriteBuffers de la función ClfsCreateMarshallingArea. Limitar el número de búferes afecta a la frecuencia de vaciados al almacenamiento estable; con menos búferes, los registros de bitácora deben escribirse a almacenamiento estable con más frecuencia. Si no necesita controlar la frecuencia de vaciado, establezca cMaxWriteBuffers en INFINITE (definido en Winbase.h).

Para especificar el número máximo de búferes de E/S de registro que se pueden asignar al mismo tiempo para leer registros de registro, establezca el parámetro cMaxReadBuffers de la función ClfsCreateMarshallingArea . Si no necesita controlar el número de búferes de lectura asignados, establezca cMaxReadBuffers en INFINITE.

Si desea realizar su propia asignación de memoria para los búferes de E/S de registro, establezca los parámetros pfnAllocBuffer y pfnFreeBuffer de la función ClfsCreateMarshallingArea para que apunte a sus propias funciones de asignación y desasignación. A continuación, CLFS llama a tus funciones para realizar la asignación y liberación de memoria real cada vez que necesite crear o liberar búferes de E/S de registro.

En algunos casos, es posible que quiera reservar espacio en un área de concentración con antelación. Por ejemplo, es posible que sepa que está a punto de escribir un conjunto de 10 registros de registro y desea asegurarse de que hay suficiente espacio en el área de serialización para todo el conjunto. Para reservar espacio para los 10 registros, cree una matriz de 10 elementos que contenga los tamaños de los registros y, a continuación, pase la matriz a la función ClfsReserveAndAppendLog en el parámetro rgcbReservation . ClfsReserveAndAppendLog es una función multiuso que reserva espacio en un área de serialización o anexa registros de registro a una secuencia o realiza ambas cosas de forma atómica. Al establecer los parámetros correctamente, puede llamar a ClfsReserveAndAppendLog para reservar espacio para su uso futuro sin adjuntar ningún registro al flujo de datos.

Consulte también

ClfsCreateMarshallingArea

ClfsReserveAndAppendLog

área de concentración