Sistem terkunci ketika disk I / O jenuh

8

Ketika saya melakukan transfer file besar dari hard drive USB3 eksternal saya ke hard drive internal saya (atau sebaliknya), baik itu melalui Nautilus atau melalui terminal, Ubuntu (Unity) akan hampir sepenuhnya terkunci. Hal-hal seperti alt-tab membutuhkan waktu 20 detik atau lebih untuk diselesaikan saat transfer file sedang berjalan. Ini tidak terjadi ketika ada banyak acak membaca / menulis ke disk, seperti ketika menginstal paket.

Ketika saya menjalankan Windows, saya dapat menjalankan transfer file di latar belakang dan masih dapat melakukan banyak hal, meskipun lebih lambat ketika ada sesuatu yang diperlukan untuk mengakses disk. Saya masih bisa alt-tab dengan baik.

Tampaknya Ubuntu memprioritaskan transfer file di atas semua disk I / O lainnya, yang karenanya terkunci. Di Windows, tampaknya transfer file memiliki prioritas lebih rendah, yang berarti sistem dapat tetap responsif saat disk jenuh.

Bagaimana saya bisa memperbaikinya? Agak menyebalkan, karena komputer menjadi benar-benar tidak dapat digunakan saat menyalin file. Masalah ini terjadi pada 14,04 dan 15,10. Saya terpaksa memasukkan hard drive saya ke port USB2 untuk mencegah masalah ini, dan itu menghasilkan waktu transfer yang lebih lama.

Degru
sumber
Tidak seharusnya, tetapi periksa apakah unix.stackexchange.com/questions/107703/… membantu
Rmano

Jawaban:

10

Saya memiliki masalah yang sama pada laptop saya, yang memiliki sistem disk yang cukup lambat dibandingkan dengan sisa komputer.

Saya bisa membuat ini lebih baik, dengan mengubah algoritma penjadwalan yang digunakan untuk transfer disk. Secara default Ubuntu menggunakan Tenggat, tetapi saya menemukan sistem saya merespons lebih cepat ketika saya menggunakan cfq.

Untuk melihat penjadwal apa yang Anda gunakan, keluarkan perintah

cat /sys/class/block/sda/queue/scheduler    

Untuk melakukan perubahan satu kali (sampai reboot) berikan perintah

echo cfq | sudo tee /sys/class/block/sda/queue/scheduler

Perhatikan bahwa penting agar perubahan dilakukan untuk apa pun yang Anda miliki untuk hard drive eksternal Anda; Milik saya biasanya memuat sebagai sdb. jadi saya akan mengeluarkan perintahecho cfq | sudo tee /sys/class/block/sdb/queue/scheduler

Saya membuat perubahan saya permanen untuk semua drive yang terpasang pada komputer saya, dengan menambahkan parameter kernel elevator=cfqdi file grub saya, yang terlihat seperti ini:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash noautogroup elevator=cfq"
Charles Green
sumber
Wow, ini berhasil. Terima kasih! Sistem saya sekarang jauh lebih responsif saat mentransfer, dan sebenarnya lebih cepat memuat semuanya.
Degru
Senang mendengarnya membantu.
Charles Green
1
> Secara default Ubuntu menggunakan Tenggat, tetapi saya menemukan sistem saya merespons lebih cepat ketika saya menggunakan tenggat waktu. Saya menduga Anda ingin frasa ini diakhiri dengan '... ketika saya menggunakan cfq'.
markus_b
Saya tidak pernah mencari solusi untuk ini karena suatu alasan atau yang lain. Saya memutakhirkan jawaban ini ketika diposting beberapa hari yang lalu, sekarang saya memiliki kesempatan untuk mengujinya (saya harus memigrasi banyak torrent dari Deluge kembali ke Transmission, yang mengharuskan memeriksa ulang setiap torrent tunggal) dan mengubah penjadwal memang perbaikan. Sistem ini masih gagap, terutama saat berganti ruang kerja, tapi yang pasti itu tidak sepenuhnya menggantung seperti dulu. Terima kasih! Jawaban ini sangat berguna sehingga IMO layak mendapatkan hadiah (dan saya menetapkan satu).
kos
@kos Ini bukan solusi yang lengkap, atau saya sendiri pasti akan jauh lebih bahagia - saya masih gagap juga kadang-kadang, dan merasa ini sangat membuat frustrasi.
Charles Green