为什么将大量文件复制到 USB 驱动器时桌面会锁定?

Aar*_*lla 12 linux kde btrfs

我的桌面通常反应灵敏,即使在重负载下也是如此。但是当我将文件复制到 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
Run Code Online (Sandbox Code Playgroud)

如您所见,只有外部硬盘处于活动状态。这是完整的日志:http : //pastebin.com/YNWTAkh4

挂起从 20:38:01 开始,到 20:40:19 结束。

软件信息:

  • openSUSE 12.1
  • KDE 4.7.x
  • 文件系统:内部硬盘上的 reiserfs 和 btrfs,USB 驱动器上的 btrfs

Aar*_*lla 4

我的第一个猜测是btrfs因为该文件系统的 I/O 进程有时会接管。但这并不能解释为什么 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
Run Code Online (Sandbox Code Playgroud)

嗯,呃。USB 驱动程序使用与显卡相同的 IRQ,并且它位于链中的第一个。如果它锁定了(因为文件系统执行了一些昂贵的操作),显卡就会陷入饥饿(网络也同样如此)。