Bukan hal yang aneh bagi aplikasi atau basis data untuk menyimpan state persisten dalam
bentuk berkas dan direktori. Memiliki salinan direktori pada mesin lain dapat digunakan
untuk mendukung recovery. Pada umumnya, alat sinkronisasi yang tersedia masih bergantung
pada aplikasi tertentu, jenis filesystem tertentu, atau melakukan pemindahan ulang
data yang tidak berubah. adalah alat yang tidak memiliki masalah-masalah tersebut.
Akan tetapi, perlu memindai dan membaca kembali direktori untuk menentukan
perubahan. Penelitian ini membahas mekanisme sinkronisasi direktori inkremental yang
dapat menentukan perubahan tanpa melakukan pemindaian ulang, penerapannya pada aplikasi
nyata, biaya tambahan terhadap kinerja aplikasi, dan kondisi ketika mekanisme tersebut
lebih unggul dibandingkan .
Solusi yang dibangun adalah alat sinkronisasi direktori berbasis eBPF yang melakukan perekaman
perubahan data ketika operasi filesystem berlangsung. Program eBPF tersebut ditautkan
pada lapisan Virtual File System di dalam kernel. Rekaman yang diperoleh kemudian
disusun menjadi artefak perubahan dan diterapkan pada direktori replika tanpa memindai
ulang direktori.
Alat sinkronisasi direktori berbasis eBPF lebih unggul ketika ukuran state besar dan perubahan
yang terjadi relatif kecil. Sebaliknya, lebih unggul ketika sinkronisasi dilakukan
setelah rentang yang sama pada direktori ditulis berulang kali oleh operasi I/O. Untuk perubahan
sebesar 4 KB, waktu sinkronisasi meningkat dari 75,8 milidetik pada berkas
berukuran 10 MB menjadi 1.988,2 milidetik pada berkas berukuran 1000 MB. Pada kondisi
yang sama, waktu sinkronisasi mekanisme berbasis eBPF tetap berada pada kisaran 10
milidetik. Oleh karena program eBPF dijalankan pada jalur eksekusi aplikasi, proses perekaman
menimbulkan biaya tambahan. Pada pengujian operasi yang menulis 4
KB data pada berkas biasa, biaya tambahan pada persentil ke-50 mencapai 3,0 mikrodetik.
Pada pengujian aplikasi berbasis SQLite, biaya tambahan pada persentil ke-50 sebesar 12,7
mikrodetik untuk satu permintaan HTTP tulis.
Perpustakaan Digital ITB