Keuntungan / kerugian dari peningkatan "komit" di fstab


14

Saya telah melakukan banyak optimasi sistem yang tidak jelas di masa lalu, tetapi saya menyingkirkan sebagian besar dari mereka setelah powertopmengatakan kepada saya bahwa saya harus mengatur port USB saya ke autosuspend , yang memaksa mereka untuk tidur abadi, dan juga setelah saya menyadari manfaat dari swappiness yang lebih tinggi. .

Tapi hari ini, sambil melihat /etc/fstab, saya perhatikan saya telah menetapkan opsi commit=60untuk / dan / rumah . Saya ingat bahwa ini adalah pengoptimalan untuk laptop, untuk mengurangi jumlah penulisan ke disk, sehingga menghemat baterai. Tapi kemudian saya menjadi khawatir bahwa ini dapat menyebabkan kehilangan data (kadang-kadang baterai saya terputus, dan kemudian pada saat boot fsckmemberitahu saya tentang beberapa yatim piatu inode).

Saat mencari penjelasan untuk opsi ini, saya sampai pada penjelasan berikut (yang kedua tampaknya bertentangan dengan pemahaman saya sebelumnya):

$ man mount | awk '/commit=/,/^$/'
commit=nrsec
    Sync all data and metadata every nrsec seconds. The default value is 5 seconds.
    Zero means default.

https://forums.gentoo.org/viewtopic-p-4088752.html

komit = 60 menghentikan prioritas "segera" (default 5 detik) dari penulisan lebih dari baca, caching penulisan untuk beberapa detik kemudian. Ini bagus dalam situasi membaca dan menulis yang berat bercampur menjadi satu, di mana pengguna ingin agar membaca dibaca sebagai prioritas, sehingga prosesor dapat tetap sibuk daripada berhenti sementara menunggu penulisan selesai sebelum dapat melanjutkan membaca.

Contoh dunia nyata yang saya lihat adalah menunggu beberapa detik untuk menu pull-down Gnome muncul, tanpa alasan. Alasannya adalah bahwa disk sedang sibuk menulis, jadi CPU harus menunggu penulisan selesai sebelum bisa mendapatkan semua data dari disk untuk dapat menampilkan menu.

Apa yang sebenarnya dilakukan komit ? Apakah benar-benar ada keuntungan meningkatkannya (seperti daya tanggap dan penghematan daya)? Bisakah itu benar-benar menyebabkan kehilangan data?

Jawaban:


12

Apa yang sebenarnya dilakukan komit ?

Saya pikir salah satu penjelasan terbaik diberikan di sini oleh allquixotic .

Apakah benar-benar ada keuntungan meningkatkannya (seperti daya tanggap dan penghematan daya)? Bisakah itu benar-benar menyebabkan kehilangan data?

Sesuai dokumentasi resmi ext4 :

Ext4 dapat diperintahkan untuk menyinkronkan semua data dan metadata setiap detik 'nrsec'. Nilai default adalah 5 detik. Ini berarti bahwa jika Anda kehilangan kekuatan Anda, Anda akan kehilangan sebanyak 5 detik kerja terbaru (sistem file Anda tidak akan rusak, terima kasih untuk penjurnalan). Nilai default ini (atau nilai rendah apa pun) akan merusak kinerja, tetapi bagus untuk keamanan data . Mengaturnya ke 0 akan memiliki efek yang sama dengan membiarkannya pada pengaturan default (5 detik). Menetapkannya ke nilai yang sangat besar akan meningkatkan kinerja .

commitNilai yang meningkat berarti Anda mungkin kehilangan sebanyak N detik kerja terakhir (di mana N = komit interval) meskipun sebagian besar waktu ini tidak akan terjadi karena perangkat lunak masih dapat memanggil fsync () dan mendapatkan data tertulis ke disk, menimpa pengaturan komit. Anda bisa melihatnya sebagai "tulis semuanya ke disk setidaknya ini sering" . 1
Di sisi lain, ini berarti lebih sedikit penulisan (yang membuatnya cukup populer di kalangan pengguna SSD) dan kinerja yang lebih baik (banyak penulisan digabung menjadi satu penulisan yang lebih besar, pembaruan pada penulisan sebelumnya dalam kerangka waktu komit dibatalkan).
Mengenai penghematan daya, menurut halaman ini , ternyata peningkatan commitnilai saat ini tidak menghemat daya.


1
Saya pikir beberapa penghematan daya terjadi karena perpanjangan + alokasi yang tertunda jauh lebih baik mengoptimalkan HDD. Tapi itu mungkin tidak signifikan.
peterh
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.