Bagikan melalui


Pertimbangan Performa untuk NTFS Transaksi

Transactional NTFS (TxF) telah dirancang dengan hati-hati untuk performa dan biasanya akan berkinerja lebih baik daripada alternatif transaksi tujuan umum di bawah skenario serupa. Namun, transaksi sistem file memiliki lebih banyak overhead daripada operasi yang tidak ditransaksikan, dan beberapa pengurangan performa I/O dibandingkan dengan I/O yang tidak ditransaksikan diharapkan. Aplikasi penting performa harus melakukan siklus kualifikasi adopsi teknologi, mengevaluasi dampak performa operasi sistem file yang ditransaksikan.

Gambaran Umum Operasi TxF

TxF menggunakan pembatalan pengelogan untuk merekam perubahan yang diperlukan untuk menempatkan sistem file kembali ke keadaan konsisten, juga disebut sebagai pembatalan, jika transaksi dibatalkan terjadi. Pengelogan undo ini menghasilkan I/O tambahan dan merupakan sumber overhead performa TxF dibandingkan dengan operasi sistem file non-transaksional.

Ringkasan tingkat tinggi tentang bagaimana TxF beroperasi adalah sebagai berikut:

  • Seiring perkembangan transaksi, TxF menulis undo record ke dalam file lognya untuk setiap modifikasi yang dilakukan pada sistem file. Jika pembatalan terjadi, catatan pembatalan ini diurai untuk menempatkan sistem file kembali dalam keadaan sebelum transaksi dimulai.
  • Catatan urungkan perubahan metadata menjelaskan perubahan hanya pada metadata sistem file. Beberapa contohnya adalah pemindahan, penggantian nama, penambahan, dan perubahan atribut. Untuk metadata ubah urungkan rekaman, semua informasi yang diperlukan untuk membatalkan perubahan ada dalam rekaman dan disimpan dalam file log.
  • Catatan urungkan timpa menjelaskan penimpaan sebagian file. Ketika penimpaan file terjadi, konten asli file disimpan dalam file urungkan khusus dalam direktori tersembunyi dan timpa rekaman urungkan menunjuk ke file ini. Ketika pembaruan file akhirnya dihapus dari cache ke disk, konten file undo juga harus dihapus, sehingga penimpaan file yang ditransaksikan dapat menghasilkan hingga dua operasi I/O acak tambahan: satu untuk membaca data lama dan satu untuk menulisnya ke file undo. Operasi I/O tambahan ini adalah biaya performa TxF.
  • Ketika penerapan terjadi, TxF pertama-tama menghapus semua informasi urungkan, lalu menghapus perubahan file yang sebenarnya, lalu menulis dan menghapus rekaman penerapan. Jika tidak ada file urung untuk dibersihkan, satu-satunya overhead TxF tambahan yang relatif terhadap I/O yang tidak ditransaksikan adalah log yang memerah sendiri. Namun, flush log menghasilkan penulisan berurutan besar yang efisien sehingga biaya performa minimal.
  • TxF dioptimalkan untuk penerapan. Diharapkan bahwa sebagian besar transaksi akan berhasil dan tidak perlu memutar kembali, oleh karena itu semua catatan urung untuk transaksi diharapkan tidak digunakan. Dari perspektif performa, operasi penerapan TxF cepat dan pembatalan intensif sumber daya.
  • Putar kembali lebih intensif sumber daya daripada penerapan. Selama pemutaran kembali, semua perubahan yang dilakukan dalam transaksi harus tidak dilakukan. Secara umum, durasi putar kembali bisa kira-kira sama dengan yang diperlukan untuk membuat perubahan pada awalnya. Misalnya, jika perlu waktu 1 detik untuk membuat semua perubahan maka bisa memakan waktu sekitar 1 detik untuk membatalkannya. Untuk transaksi yang sangat panjang, putar kembali dapat menciptakan dampak performa tambahan. Misalnya, waktu boot sistem dapat tertunda jika sistem harus secara otomatis memutar kembali transaksi jika sistem berhenti merespons dan harus melakukan mulai ulang yang tidak terjadwal.

Kesimpulan ringkasan tentang performa yang dapat diambil dari daftar sebelumnya adalah sebagai berikut:

  • Biaya performa TxF untuk transaksi yang melibatkan penimpaan file bisa signifikan.
  • Biaya performa TxF untuk transaksi yang hanya melibatkan operasi metadata dapat relatif rendah, asalkan transaksi besar digunakan. Transaksi besar adalah ketika ada banyak catatan urungkan untuk setiap catatan penerapan.

Rekomendasi Untuk Performa Terbaik

Amortisasi overhead TxF atas transaksi yang lebih besar. Misalnya, jika Anda memiliki N set perubahan untuk dilakukan di mana setiap perubahan memiliki langkah-langkah M dan Anda memiliki opsi untuk melakukan ini sebagai N transaksi langkah M masing-masing atau melakukan semuanya sebagai satu transaksi dengan langkah-langkah M*N , opsi terakhir akan lebih efisien.

Pertimbangkan kemungkinan dampak pada boot transaksi yang sangat besar. Seperti yang dinyatakan sebelumnya, putar kembali bisa lambat dan akan menunda waktu boot jika sistem perlu melakukan putar kembali otomatis sebagai waktu boot. Semakin besar transaksi, semakin lama penundaan.

Simpan transaksi ke sebagian besar operasi metadata. Inilah yang dioptimalkan untuk TxF dan, secara umum, performanya hampir sama dengan I/O file yang tidak ditransaksikan untuk transaksi metadata besar. Contoh fungsi metadata TxF yang efisien adalah MoveFileTransacted, SetFileAttributesTransacted, CopyFileTransacted, DeleteFileTransacted, CreateHardLinkTransacted, dan appended writes (panggilan ke fungsi WriteFile saat penunjuk file seperti pada akhir file, atau EOF). Contoh operasi non-metadata intensif sumber daya adalah panggilan ke fungsi WriteFile ketika penunjuk file tidak berada di EOF.

Ringkasan Ekspektasi Performa TxF

Untuk pembaruan di tempat, menimpa bagian file akan jauh lebih lambat daripada I/O file yang tidak ditransaksikan, sementara performa TxF untuk operasi metadata sistem file (misalnya, membuat, memindahkan, dan menambahkan) sebanding dengan I/O file yang tidak ditransaksikan untuk transaksi besar.