GNU/Linux >> Belajar Linux >  >> Linux

Mengapa Pc Membeku Saat Saya Menyalin File Ke Flashdisk?

Saya memiliki situasi yang sangat aneh di sini. PC saya berfungsi dengan baik, setidaknya dalam banyak kasus, tetapi ada satu hal yang tidak dapat saya tangani. Ketika saya mencoba menyalin file dari flashdisk saya, semuanya baik-baik saja — saya mendapat 16-19M/s , itu bekerja dengan cukup baik. Tetapi ketika saya mencoba menyalin sesuatu ke flashdisk yang sama, PC saya macet. Penunjuk tetikus berhenti bergerak selama satu atau dua detik, lalu bergerak sedikit dan berhenti lagi. Ketika sesuatu diputar, misalnya, di Amarok, suara itu seperti senapan mesin. Kecepatan melompat dari 500K/s ke 15M/s, rata-rata 8M/s. Ini hanya terjadi ketika saya menyalin sesuatu ke flashdisk. Saat proses penyalinan selesai, semuanya kembali normal.

Saya mencoba semuanya — flashdisk lain, port USB yang berbeda di panel depan atau port tersebut dari belakang, saya bahkan mengubah pin USB pada motherboard (panel depan), tetapi di mana pun saya meletakkan stik USB saya, itu selalu sama. Saya mencoba sistem file yang berbeda — fat32 , ext4 . Saya tidak punya masalah dengan perangkat di Windows, di laptop saya. Itu harus PC saya atau sesuatu di sistem saya. Saya tidak tahu apa yang harus dicari. Saya menggunakan pengujian Debian dengan Openbox mandiri. PC saya agak tua — Pentium D 3GHz, 1GiB RAM, 1,5TB WD Green disk. Jika Anda memiliki sesuatu yang dapat membantu saya memecahkan masalah ini, saya akan senang mendengarnya.

Saya tidak tahu info apa lagi yang harus saya berikan, tetapi jika Anda membutuhkan sesuatu, tanyakan saja, saya akan memperbarui posting ini sesegera mungkin.

Saya mencoba mereproduksi masalah ini di live cd ubuntu 13.04. Saya memasang partisi terenkripsi + swap terenkripsi dan menghubungkan flashdisk saya ke port usb. Selanjutnya saya mencoba memulai beberapa aplikasi, dan sekarang saya memiliki ~820MiB di RAM dan sekitar 400MiB di SWAP. Tidak ada masalah dengan penyalinan, tidak ada pembekuan sama sekali, semuanya sebagaimana mestinya. Jadi, sepertinya itu kesalahan sistem, tapi di mana tepatnya? Apa yang menyebabkan perilaku aneh seperti itu?

Jawaban yang Diterima:

Apakah Anda menggunakan Linux versi 64-bit dengan banyak memori? Dalam hal ini masalahnya mungkin karena Linux dapat mengunci selama beberapa menit pada penulisan besar pada perangkat yang lambat seperti untuk
contoh kartu SD atau stik USB. Ini adalah bug yang diketahui yang harus diperbaiki di kernel yang lebih baru.

Lihat http://lwn.net/Articles/572911/

Solusi:sebagai akar masalah:

echo $((16*1024*1024)) > /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) > /proc/sys/vm/dirty_bytes

Saya telah menambahkannya ke /etc/rc.local saya file di mesin 64bit saya.

Terkait:Php:chown — Mengubah pemilik file

TANSTAAFL; perubahan ini dapat (dan mungkin akan) mengurangi throughput Anda ke perangkat ini — ini merupakan kompromi antara latensi dan kecepatan. Untuk kembali ke perilaku sebelumnya, Anda dapat

echo 0 > /proc/sys/vm/dirty_background_bytes
echo 0 > /proc/sys/vm/dirty_bytes

…yang merupakan nilai default, artinya perilaku writeback akan dikontrol oleh parameter dirty_ratio dan dirty_background_ratio .

Catatan untuk orang yang tidak terlalu ahli dengan linux:file di /proc adalah pseudofile — hanya saluran komunikasi antara kernel dan ruang pengguna. Jangan pernah menggunakan editor untuk mengubah atau melihatnya; dapatkan prompt shell — misalnya, dengan sudo -i (Rasa Ubuntu) atau su root dan gunakan echo dan cat ).

Perbarui 2016/04/18 tampaknya, bagaimanapun, masalahnya masih ada di sini. Anda dapat melihatnya di LWN.net, dalam artikel tentang antrian writeback ini.


Linux
  1. Mengapa 'sshpass' bukan cara yang tepat untuk mengotomatisasi transfer file di Linux

  2. Mengapa Skrip Bash Tidak Mengenal Alias?

  3. Basa'?

  1. Apakah Mv Atomic Di Fs?

  2. Mengapa Ls Dan Hexdump Tidak Setuju Tentang Ukuran File?

  3. Apakah Membatalkan Operasi Saat Menyalin File .mkv Membaginya Menjadi 2 Bagian?

  1. pengalihan keluaran on-the-fly, melihat keluaran pengalihan file saat program masih berjalan

  2. Mengapa xargs -L menghasilkan format yang benar, sedangkan xargs -n tidak?

  3. Mengapa fungsi tutup disebut rilis di `struct file_operations` di kernel Linux?