Deg*_*gru 9 performance hard-drive io
当我将大文件从外部 USB3 硬盘驱动器传输到内部硬盘驱动器(反之亦然)时,无论是通过 Nautilus 还是通过终端,Ubuntu (Unity) 几乎都会完全锁定。文件传输运行时,alt-tab 之类的操作需要 20 秒或更长时间才能完成。当对磁盘进行大量随机读/写时,情况并非如此,例如在安装软件包时。
当我运行 Windows 时,我可以在后台运行文件传输,并且仍然可以执行某些操作,尽管在需要访问磁盘时速度会变慢。我仍然可以使用 alt-tab 就好了。
似乎 Ubuntu 将文件传输优先于所有其他磁盘 I/O,这就是它锁定的原因。在 Windows 中,文件传输的优先级似乎较低,这意味着系统可以在磁盘饱和时保持响应。
我怎样才能解决这个问题?这很烦人,因为在复制文件时计算机完全无法使用。此问题发生在 14.04 和 15.10 中。我被迫将硬盘插入 USB2 端口以防止出现此问题,这导致传输时间更长。
Cha*_*een 10
我在我的笔记本电脑上遇到了同样的问题,与计算机的其余部分相比,它的磁盘系统相当慢。
通过更改用于磁盘传输的调度算法,我能够做得更好。默认情况下,Ubuntu 使用 Deadline,但我发现当我使用 cfq 时,我的系统响应更快。
要查看您使用的调度程序,请发出命令
cat /sys/class/block/sda/queue/scheduler
Run Code Online (Sandbox Code Playgroud)
要进行一次性更改(直到重新启动),请发出命令
echo cfq | sudo tee /sys/class/block/sda/queue/scheduler
Run Code Online (Sandbox Code Playgroud)
请注意,重要的是要对外部硬盘驱动器的任何内容进行更改;我的通常加载为 sdb。所以我会发出命令echo cfq | sudo tee /sys/class/block/sdb/queue/scheduler
通过elevator=cfq
在我的 grub 文件中添加内核参数,我对连接到我的计算机的所有驱动器进行了永久更改,如下所示:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash noautogroup elevator=cfq"
Run Code Online (Sandbox Code Playgroud)