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


11

即使负载很重,我的桌面也通常反应灵敏。但是,当我将文件复制到USB驱动器时,它总是会在一段时间后锁定。“锁定”是指:

  • 将焦点从一个窗口移到另一个窗口可能需要10到20秒
  • 切换桌面可能需要10到20秒
  • 视频不再更新(在YouTube中,音频继续播放,只有视频冻结)

发生这种情况时,系统负载不会异常高。有时,我在xosview上看到很多白色,表明内核在某个地方很忙。

乍一看,将文件复制到USB驱动器似乎会以某种方式干扰compiz,但我无法想象连接是什么。

这是输出htop

挂起后不久输出htop

这是iostat -c -z -t -x -d 12分钟的挂起期间的输出:

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,USB驱动器上的btrfs

1
您是否尝试安装USB驱动器sync以查看其效果(如果有)?
Alexios 2012年

2
USB的一个缺点是它严重依赖CPU进行IO。您的系统拥有哪种CPU?请附加grep name /proc/cpuinfo到您的问题的输出。
jippie 2012年

1
您是否使用海豚拖放文件?如果是这样,请cp从命令行尝试排除可能的海豚错误。
Jari Laamanen

@JariLaamanen:我rsync从命令行使用。
亚伦·迪古拉

1
@jippie:并不是真的,因为UI会在发生时锁定,所以我无法截屏。我将尝试使用iostat -c -z -d 1
Aaron Digulla

Answers:


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

好吧,嗯 USB驱动程序使用与图形卡相同的IRQ,并且是链中的第一个。如果它锁定了(因为文件系统执行了一些昂贵的操作),则显卡将饿死(网络也将饿死)。


2

我曾经在openSUSE 12.1的linux-3.1内核中看到过类似的问题,并且发现禁用透明大页面有帮助:

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

潜在的问题是,如果应用程序分配了4MB或更多空间,内核将尝试为其分配一个巨大的页面,为此它需要整个连续的4MB RAM。现在,如果周围有许多脏页,仍然需要将它们写入速度较慢的USB设备,它将等待该IO完成,然后再继续进行内存分配。


1

如前所述,这可能与内核大页面设置有关。我认识几个有这个问题的人。您可以在网上找到有关此文档的一些文档,例如

通过执行以下操作,我已完全解决了安装程序中的问题。请注意,YMMV,并非以下所有修复程序都是必要的,并且可能还不够。我可能已经忘记了老实说。无论如何,这是我的设置,并且可以正常工作。

  • 使用linux-ck内核
  • echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
  • echo never > /sys/kernel/mm/transparent_hugepage/defrag

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.