Mik*_*kov 71 cp file-copy usb-drive freeze
我这里有一个非常奇怪的情况。我的电脑工作正常,至少在大多数情况下,但有一件事情我无法处理。当我尝试从我的 Pendrive 复制文件时,一切正常——我得到了 16-19M/s ,它运行得很好。但是当我尝试将某些内容复制到同一个 Pendrive 时,我的 PC 死机了。鼠标指针停止移动一两秒钟,然后移动一点,然后再次停止。例如,在 Amarok 中播放某些东西时,声音就像机关枪。速度从500K/s跃升到15M/s,平均8M/s。仅当我将某些内容复制到 Pendrive 时才会发生这种情况。当复制过程完成后,一切恢复正常。
我尝试了一切——其他的随身碟、前面板上的不同 USB 端口或后面的那些端口,我什至更改了主板(前面板)上的 USB 引脚,但无论我把 USB 记忆棒放在哪里,它总是一样的。我尝试了不同的文件系统 - fat32
, ext4
. 我的笔记本电脑上的 Windows 设备没有问题。它必须是我的 PC 或系统中的某些东西。我不知道该找什么。我在独立的 Openbox 中使用 Debian 测试。我的电脑有点旧——Pentium D 3GHz、1GiB 内存、1.5TB WD Green 磁盘。如果您有什么可以帮助我解决这个问题的东西,我会很高兴听到这个消息。
我不知道我还应该提供什么信息,但是如果您需要什么,尽管问,我会尽快更新这篇文章。
我试图在 ubuntu 13.04 live cd 上重现这个问题。我安装了我的加密分区 + 加密交换并将我的 Pendrive 连接到 USB 端口。接下来我尝试启动一些应用程序,现在我有大约 820MiB 的 RAM 和大约 400MiB 的 SWAP。复制没有问题,根本没有冻结,一切都应该如此。所以,看起来是系统的故障,但究竟在哪里?什么会导致这种奇怪的行为?
Rma*_*ano 102
您是否使用具有大量内存的 64 位版本的 Linux?在这种情况下,问题可能是 Linux 可以在慢速设备(例如 SD 卡或 USB 记忆棒)上进行大量写入时锁定几分钟。这是一个已知的错误,应该在较新的内核中修复。
见http://lwn.net/Articles/572911/
解决方法:作为根问题:
echo $((16*1024*1024)) > /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) > /proc/sys/vm/dirty_bytes
Run Code Online (Sandbox Code Playgroud)
我已将它添加到/etc/rc.local
我的 64 位机器中的文件中。
坦斯塔夫; 此更改可以(并且可能会)降低您对这些设备的吞吐量——这是延迟和速度之间的折衷。要回到以前的行为,您可以
echo 0 > /proc/sys/vm/dirty_background_bytes
echo 0 > /proc/sys/vm/dirty_bytes
Run Code Online (Sandbox Code Playgroud)
...这是默认值,这意味着写回行为将由参数dirty_ratio
和控制dirty_background_ratio
。
不太熟悉 linux 的人请注意:其中的文件/proc
是伪文件--- 只是内核和用户空间之间的通信渠道。切勿使用编辑器更改或查看它们;而是得到一个 shell 提示——例如,使用sudo -i
(Ubuntu 风格)或su root
并使用echo
和cat
)。
更新 2016/04/18看来,毕竟问题还是在这里。你可以看一下它在LWN.net,在这篇关于写回队列。