Condividi tramite


Aree di smistamento CLFS

Un client CLFS (Common Log File System) aggiunge record di log a un'area di marshalling in memoria volatile e CLFS scrive periodicamente tali record in una memoria di archiviazione stabile. Un'area di marshalling è una raccolta di buffer di I/O del log, ognuno dei quali può contenere diversi record di log. I buffer di I/O dei log contengono record scritti di recente in un flusso (ma probabilmente non scaricati in una risorsa di archiviazione stabile) e i record letti di recente dal flusso.

Si crea un'area di marshalling chiamando ClfsCreateMarshallingArea, e in quel momento è necessario specificare le dimensioni dei buffer di I/O del log utilizzati dall'area di marshalling e se tali buffer si trovano nel pool paginato o non paginato. Tutti i buffer di I/O del log in un'area di marshalling sono della stessa dimensione e CLFS garantisce che la dimensione sia un multiplo della dimensione del settore sul supporto di archiviazione stabile sottostante. Ovvero, CLFS accetta le dimensioni richieste e lo arrotonda in base alle esigenze per rendere i buffer di I/O compatibili con il supporto di archiviazione stabile.

CLFS alloca e libera i buffer di I/O del log in base alle esigenze, ma è possibile impostare il numero massimo di buffer di I/O che possono essere allocati contemporaneamente. È anche possibile fornire funzioni di allocazione e deallocazione del buffer personalizzate.

Per specificare il numero massimo di buffer I/O di log che possono essere allocati simultaneamente per la scrittura dei record di log, impostare il parametro cMaxWriteBuffers della funzione ClfsCreateMarshallingArea. La limitazione del numero di buffer influisce sulla frequenza degli scaricamenti allo spazio di archiviazione stabile; con meno buffer, i record di log devono essere scritti in una risorsa di archiviazione stabile più spesso. Se non è necessario controllare la frequenza di scaricamento, impostare cMaxWriteBuffers su INFINITE (definito in Winbase.h).

Per specificare il numero massimo di buffer di I/O del log allocabili contemporaneamente per la lettura dei record di log, impostare il parametro cMaxReadBuffers della funzione ClfsCreateMarshallingArea. Se non è necessario controllare il numero di buffer di lettura allocati, impostare cMaxReadBuffers su INFINITE.

Se desideri effettuare un'allocazione di memoria personalizzata per i buffer di I/O del log, imposta i parametri pfnAllocBuffer e pfnFreeBuffer della funzione ClfsCreateMarshallingArea in modo che puntino alle tue funzioni di allocazione e deallocazione. CLFS chiama quindi le tue funzioni per eseguire l'allocazione e la deallocazione effettive della memoria ogni volta che deve creare o liberare i buffer di I/O del log.

In alcuni casi, potrebbe essere necessario riservare spazio in un'area di marshalling anticipatamente. Ad esempio, si potrebbe sapere che si sta per scrivere un set di 10 record di log e si vuole essere sicuri che ci sia spazio sufficiente nell'area di marshalling per l'intero set. Per riservare spazio per i 10 record, creare una matrice di 10 elementi contenente le dimensioni dei record e quindi passare la matrice alla funzione ClfsReserveAndAppendLog nel parametro rgcbReservation . ClfsReserveAndAppendLog è una funzione polivalente che riserva spazio in un'area di assemblaggio o aggiunge record di log a un flusso o esegue entrambe le operazioni in modo atomico. Impostando i parametri in modo appropriato, è possibile chiamare ClfsReserveAndAppendLog per riservare spazio per un uso futuro senza aggiungere effettivamente alcun record al flusso.

Vedere anche

ClfsCreateMarshallingArea

ClfsReserveAndAppendLog

area di smistamento