![从本地 cp 到 USB 驱动器会影响桌面性能](https://linux22.com/image/528598/%E4%BB%8E%E6%9C%AC%E5%9C%B0%20cp%20%E5%88%B0%20USB%20%E9%A9%B1%E5%8A%A8%E5%99%A8%E4%BC%9A%E5%BD%B1%E5%93%8D%E6%A1%8C%E9%9D%A2%E6%80%A7%E8%83%BD.png)
背景
在复制大量数兆字节的声音文件时,Kubuntu 桌面会间歇性地无响应(鼠标指针可以移动,但 Firefox、Konsole 和 KDE 本身会暂时忽略键盘按下、鼠标点击和网络 I/O)。
$ uname -a
Linux jaguar 2.6.32-22-generic #36-Ubuntu SMP Thu Jun 3 19:31:57 UTC 2010 x86_64 GNU/Linux
$ cp -Rnv /home/user/music/flac/* .
PID 是 11544,我随后尝试:
$ renice -n 19 -p 11544
$ ionice -c 3 -p 11544
奇怪的是,当我远程访问本地网络上的笔记本电脑(通过 TightVNC)时,远程屏幕会不断更新(如果我正在使用笔记本电脑)。同样,播放 USB 驱动器上的音乐文件(即使文件尚未完全复制)也不会受到间歇性无响应问题的影响。
按下 Control-Z 暂停复制过程会立即导致正常行为(一旦按键最终被 Konsole 接受)。
我想要实现的目标如下:
- 将 CD 翻录到桌面(Linux)计算机。
- 将 USB 驱动器插入笔记本电脑。
- 在笔记本电脑上运行 WinSCP。
- 使用 WinSCP 将音乐文件从台式计算机复制到笔记本电脑上的 USB 驱动器。
但是,无论我使用什么软件(WinSCP、Tunnelier 或 Cygwin 上的 rsync),复制都会以 2 MB/s 的速度开始,然后在几秒钟后降至 60 KB/s。实际上,安全复制会停滞。
谷歌
搜索发现有几个人遇到过类似的问题。大多数人通过切换到 Tunnelier 解决了问题。这对我来说不起作用。其他人切换到 FreeBSD 来解决问题。目前这不是一个选择。还有一些人从 SSH 协议 2 切换到 SSH 协议 1。这对我来说也不起作用。
日志文件
在 Windows 上使用时,USB 驱动器检查无误chkdsk /f
。 的任何日志文件中均无相关错误消息/var/log
。
表现
当出现“暂停”时,使用监控系统top
没有任何可疑之处。(top
在没有响应的瞬间继续刷新。)程序hald-addon-storage
显示它/dev/sr0
每 2 秒轮询一次。不管那是什么意思。
硬件
四核处理器,8GB RAM。/tmp
驱动器为空,/
显示使用率为 72%。RAM 有 2GB 可用,即使在暂停期间,也没有一个 CPU 的使用率超过 1%。
问题
有谁知道可能会发生什么事,或者有谁可以探索途径来尝试了解系统发生了什么事?
答案1
答案2
看了你提供的 cp/renice/ionice 示例后,我有点迷茫了。:) 在这些示例中,USB 驱动器是否连接到了您的桌面(因此不需要桌面和笔记本电脑之间的网络通信),或者您稍后是否尝试了桌面 +(笔记本电脑 + USB)组合?当您说“将 CD 翻录到 Linux 桌面”时,您是否将这些文件存储在本地硬盘驱动器或 USB 磁盘上?
在许多 Linux 发行版中,USB 驱动器将默认使用 mount 选项挂载sync
。这意味着写入更安全,但另一方面,对于某些驱动器来说,这可能意味着非常写入性能缓慢,并产生各种其他奇怪的副作用。使用安装驱动器mount -o remount,async /your/usbdrive/mountpoint
可能会大大加快写入操作。
如果您执行 WinSCP 节,但尝试复制到笔记本电脑中的本地驱动器而不是 USB 驱动器,Linux 桌面是否会停转?