digilib@itb.ac.id +62 812 2508 8800

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.