Чому мій робочий стіл блокується, коли я копіюю багато файлів на USB-накопичувач?


11

Мій робочий стіл зазвичай дуже чуйний, навіть під великим навантаженням. Але коли я копіюю файли на USB-накопичувач, він завжди блокується через деякий час. Під «замком» я маю на увазі:

  • Переміщення фокусу від одного вікна до іншого може зайняти 10-20 секунд
  • Перемикання робочих столів може зайняти 10-20 секунд
  • Відео більше не оновлюється (на YouTube звук продовжує відтворюватися, лише відео застигає)

Навантаження системи не є надзвичайно високим, коли це відбувається. Іноді на xosview я бачу багато білого кольору, що вказує на те, що ядро ​​десь зайняте.

На перший погляд, схоже, що копіювання файлів на USB-накопичувач якось заважатиме compiz, але я не можу уявити, яким може бути з'єднання.

Ось результат htop:

Вихід htop незабаром після зависання

Ось висновок iostat -c -z -t -x -d 1під час 2-хвилинної розвішування:

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

Як бачите, активний лише зовнішній жорсткий диск. Ось повний журнал: http://pastebin.com/YNWTAkh4

Зачіп розпочався о 20:38:01 і закінчився о 20:40:19.

Інформація про програмне забезпечення:

  • openSUSE 12.1
  • KDE 4.7.x
  • Файлові системи: reiserfs та btrfs на моєму внутрішньому жорсткому диску, btrfs на USB-накопичувачі

1
Ви спробували встановити USB-накопичувач, syncщоб побачити, який ефект (якщо такий є) має?
Олексій

2
Недоліком USB є той факт, що він сильно покладається на процесор для IO. Який ЦП має ваша система? Будь ласка, додайте висновок grep name /proc/cpuinfoдо свого питання.
jippie

1
Ви перетягуєте файли за допомогою дельфіна? Якщо так, спробуйте cpз командного рядка виключити можливі помилки дельфінів.
Ярі Лааманен

@JariLaamanen: Я використовую rsyncз командного рядка.
Аарон Дігулла

1
@jippie: Не дуже тому, що користувальницький інтерфейс блокується, коли це відбувається, тому я не можу зробити скріншот. Спробую створити журнал за допомогоюiostat -c -z -d 1
Аарон Дігулла

Відповіді:


4

Моя перша здогадка була btrfsз моменту, коли процеси вводу / виводу цієї файлової системи іноді переймають. Але це не пояснює, чому X замикається.

Дивлячись на переривання, я бачу таке:

# 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

Ну, да. USB-драйвер використовує той же IRQ, що і відеокарта, і він перший у ланцюзі. Якщо вона заблокується (оскільки файлова система робить щось дороге), відеокарта голодує (і мережу теж).


2

Я бачив подібні проблеми з ядром linux-3.1 openSUSE 12.1 і виявив, що відключення великих прозорих сторінок допомогло:

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

Основна проблема полягає в тому, що якщо програма виділяє 4 Мб або більше, ядро ​​спробує надати їй величезну сторінку, для якої їй потрібна ціла суміжна 4 Мб оперативна пам'ять. Тепер, якщо навколо є багато брудних сторінок, які ще потрібно записати на повільний USB-пристрій, він чекає закінчення IO, перш ніж продовжувати розподіл пам'яті.


1

Як вже згадувалося, це, мабуть, має відношення до налаштування величезних сторінок ядра. Я знаю кількох людей з цією проблемою. Ви можете знайти декілька документацій про це в Інтернеті, наприклад

Я повністю виправив проблему в налаштуваннях, зробивши наступне. Зауважте, YMMV, не всі виправлення, викладені нижче, можуть знадобитися, а можливо, їх буде недостатньо. Я, можливо, забув щось чесне. Так чи інакше, це моя установка, і вона працює.

  • Використовуйте ядро ​​linux-ck
  • echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
  • echo never > /sys/kernel/mm/transparent_hugepage/defrag

-2

Замініть кабель. Видаліть оксид з порту / кабелів USB.


Це потрібно бути трохи більш детальним. Будь ласка, дивіться FAQ
Карлсон,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.