Mengapa desktop saya terkunci ketika saya menyalin banyak file ke drive USB?

11

Desktop saya biasanya sangat responsif, bahkan di bawah beban berat. Tetapi ketika saya menyalin file ke drive USB, selalu terkunci setelah beberapa waktu. Dengan "mengunci", maksud saya:

  • Memindahkan fokus dari satu jendela ke jendela lain memerlukan waktu 10-20 detik
  • Mengalihkan desktop membutuhkan waktu 10-20 detik
  • Video tidak diperbarui lagi (di YouTube, audio terus diputar, hanya video yang dibekukan)

Beban sistem tidak terlalu tinggi ketika ini terjadi. Terkadang, saya melihat banyak warna putih di xosview yang mengindikasikan bahwa kernel sedang sibuk di suatu tempat.

Sekilas, sepertinya menyalin file ke USB drive akan mengganggu entah bagaimana compiz tapi saya tidak bisa membayangkan apa hubungannya.

Ini adalah output dari htop:

Output htop sesaat setelah hang

Berikut ini adalah hasil dari iostat -c -z -t -x -d 1hang selama 2 menit:

19.07.2012 20:38:22
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1,27    0,00    0,38   37,52    0,00   60,84

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdg               0,00     2,00    0,00  216,00     0,00 109248,00  1011,56   247,75  677,69    0,00  677,69   4,63 100,00

Seperti yang Anda lihat, hanya harddisk eksternal yang aktif. Berikut ini log lengkapnya: http://pastebin.com/YNWTAkh4

Gantung dimulai pada 20:38:01 dan berakhir pada 20:40:19.

Informasi perangkat lunak:

  • openSUSE 12.1
  • KDE 4.7.x
  • Filesystem: reiserfs dan btrfs di harddisk internal saya, btrfs di USB drive
Aaron Digulla
sumber
1
Sudahkah Anda mencoba memasang drive USB syncuntuk melihat apa efeknya (jika ada) ini?
Alexios
2
Kelemahan dari USB adalah kenyataan bahwa ia sangat bergantung pada CPU untuk IO. Jenis CPU apa yang dimiliki sistem Anda? grep name /proc/cpuinfoTolong tambahkan output untuk pertanyaan Anda.
jippie
1
Apakah Anda seret dan jatuhkan file menggunakan dolphin? Jika demikian, coba cpdari baris perintah untuk mengecualikan kemungkinan bug lumba-lumba.
Jari Laamanen
@JariLaamanen: Saya menggunakan rsyncdari baris perintah.
Aaron Digulla
1
@ Jippie: Tidak terlalu karena UI terkunci ketika itu terjadi, jadi saya tidak bisa membuat tangkapan layar. Saya akan mencoba membuat log denganiostat -c -z -d 1
Aaron Digulla

Jawaban:

4

Tebakan pertama saya adalah btrfssejak proses I / O dari sistem file ini terkadang mengambil alih. Tapi itu tidak menjelaskan mengapa X terkunci.

Melihat interupsi, saya melihat ini:

# cat /proc/interrupts 
           CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7       
  0:        179          0          0          0          0          0          0          0  IR-IO-APIC-edge      timer
  1:          6          0          0          0          0          0          0          0  IR-IO-APIC-edge      i8042
  8:          1          0          0          0          0          0          0          0  IR-IO-APIC-edge      rtc0
  9:          0          0          0          0          0          0          0          0  IR-IO-APIC-fasteoi   acpi
 12:         10          0          0          0          0          0          0          0  IR-IO-APIC-edge      i8042
 16:    3306384          0          0          0          0          0          0          0  IR-IO-APIC-fasteoi   ehci_hcd:usb1, nvidia, mei, eth1

Baiklah, duh. Driver USB menggunakan IRQ yang sama dengan kartu grafis dan itu yang pertama dalam rantai. Jika terkunci (karena sistem file melakukan sesuatu yang mahal), kartu grafis kelaparan (dan jaringan juga).

Aaron Digulla
sumber
2

Saya telah melihat masalah yang sama dengan kernel linux-3.1 openSUSE 12.1 dan menemukan bahwa menonaktifkan halaman transparan yang besar membantu:

echo never > /sys/kernel/mm/transparent_hugepage/enabled

Masalah mendasarnya adalah bahwa jika suatu aplikasi mengalokasikan 4MB atau lebih, kernel akan mencoba memberikannya halaman yang besar, yang membutuhkan keseluruhan 4MB RAM yang berdekatan. Sekarang, jika ada banyak halaman kotor di sekitar, yang masih perlu ditulis ke perangkat USB yang lambat, itu menunggu IO untuk menyelesaikannya sebelum melanjutkan dengan alokasi memori.

Bernhard M.
sumber
1

Seperti disebutkan, ini mungkin ada hubungannya dengan pengaturan hugepages kernel. Saya kenal beberapa orang dengan masalah ini. Anda dapat menemukan beberapa dokumentasi tentang itu di web, misalnya

Saya telah memperbaiki masalah pada pengaturan saya dengan melakukan hal berikut. Perhatikan YMMV, tidak semua perbaikan di bawah ini mungkin diperlukan, dan mungkin itu tidak cukup. Saya mungkin lupa sesuatu yang jujur. Bagaimanapun itu pengaturan saya dan berfungsi.

  • Gunakan kernel linux-ck
  • echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
  • echo never > /sys/kernel/mm/transparent_hugepage/defrag
AF7
sumber
-2

Ganti kabelnya. Hapus oksida dari port usb / kabel.

luis
sumber
Perlu sedikit lebih rumit. Silakan lihat FAQ
Karlson