Bagikan melalui


Area Marsekal CLFS

Klien Common Log File System (CLFS) menambahkan catatan log ke area marshalling dalam memori volatil, dan CLFS secara berkala menulis rekaman tersebut ke penyimpanan yang stabil. Area marsekal adalah kumpulan buffer I/O log, yang masing-masing dapat menyimpan beberapa rekaman log. Buffer I/O log menyimpan rekaman yang baru-baru ini ditulis ke aliran (tetapi mungkin tidak dibersihkan ke penyimpanan yang stabil) serta rekaman yang baru-baru ini dibaca dari aliran.

Anda membuat area marsekal dengan memanggil ClfsCreateMarshallingArea, pada saat itu Anda harus menentukan ukuran buffer I/O log yang akan digunakan area marsekal dan apakah buffer tersebut akan berada di kumpulan halaman atau non-halaman. Semua buffer I/O log di area marshalling berukuran sama, dan CLFS memastikan bahwa ukurannya adalah kelipatan ukuran sektor pada media penyimpanan stabil yang mendasar. Artinya, CLFS mengambil ukuran yang Anda minta dan membulatkannya seperlunya untuk membuat buffer I/O Anda kompatibel dengan media penyimpanan yang stabil.

CLFS mengalokasikan dan membebaskan buffer I/O log sesuai kebutuhan, tetapi Anda memiliki opsi untuk mengatur jumlah maksimum buffer I/O yang dapat dialokasikan pada satu waktu. Anda juga memiliki opsi untuk menyediakan fungsi alokasi dan dealokasi buffer Anda sendiri.

Untuk menentukan jumlah maksimum buffer I/O log yang dapat dialokasikan pada satu waktu untuk menulis rekaman log, atur parameter cMaxWriteBuffers dari fungsi ClfsCreateMarshallingArea . Membatasi jumlah buffer memengaruhi frekuensi flush ke penyimpanan yang stabil; dengan lebih sedikit buffer, rekaman log harus ditulis ke penyimpanan yang stabil lebih sering. Jika Anda tidak perlu mengontrol frekuensi flush, atur cMaxWriteBuffers ke INFINITE (didefinisikan dalam Winbase.h).

Untuk menentukan jumlah maksimum buffer I/O log yang dapat dialokasikan pada satu waktu untuk membaca rekaman log, atur parameter cMaxReadBuffers dari fungsi ClfsCreateMarshallingArea . Jika Anda tidak perlu mengontrol jumlah buffer baca yang dialokasikan, atur cMaxReadBuffers ke INFINITE.

Jika Anda ingin melakukan alokasi memori Anda sendiri untuk buffer I/O log, atur parameter pfnAllocBuffer dan pfnFreeBuffer dari fungsi ClfsCreateMarshallingArea untuk menunjuk ke fungsi alokasi dan dealokasi Anda sendiri. Kemudian CLFS akan memanggil fungsi Anda untuk melakukan alokasi memori aktual dan pembatalan alokasi setiap kali perlu membuat atau membebaskan buffer I/O log.

Dalam beberapa kasus, Anda mungkin ingin memesan ruang di area marshalling sebelumnya. Misalnya, Anda mungkin tahu bahwa Anda akan menulis sekumpulan sepuluh rekaman log, dan Anda ingin memastikan bahwa ada cukup ruang di area marshalling untuk seluruh set. Untuk memesan ruang untuk sepuluh rekaman, buat array sepuluh elemen yang menyimpan ukuran rekaman, lalu teruskan array ke fungsi ClfsReserveAndAppendLog dalam parameter rgcbReservation . ClfsReserveAndAppendLog adalah fungsi multi-tujuan yang mencadangkan ruang di area marsekal atau menambahkan catatan log ke aliran atau melakukan kedua hal tersebut secara atomik. Dengan mengatur parameter dengan tepat, Anda dapat memanggil ClfsReserveAndAppendLog untuk memesan ruang untuk digunakan di masa mendatang tanpa benar-benar menambahkan rekaman apa pun ke aliran.