![USB I/O 速度非常慢](https://linux22.com/image/1570149/USB%20I%2FO%20%E9%80%9F%E5%BA%A6%E9%9D%9E%E5%B8%B8%E6%85%A2.png)
(免责声明:Linux 新手从 Windows 7 切换到 Linux。)我有一台双启动 PC,配备第三代酷睿 i5 CPU(4 个真实核心)、12GB RAM 和 240GB Samsung EVO850 SSD。这个系统不是最快的,但也不差,通常情况下,一切都很流畅、运行良好,无论是在 Windows 7/64 还是我使用的 Debian 扩展版本下。
但是,我刚刚(使用 rsync -aW)将一个相当大的 .jpg 文件目录(~50GB)从 SSD 复制到 USB3.0 棒。棒被识别为 USB3,我已使用 lsusb 检查,虽然它的标称写入速度约为 90MB/s,但复制速度似乎不会比 25MB/s 快多少。两个分区都是 NTFS 格式,没有压缩。
然而,真正的问题是,在复制过程中,PC 几乎无法使用。几乎任何浏览器活动(Palemoon),例如加载新页面或添加书签,都会导致 30、40、50 秒的完全停滞(我最初以为浏览器死机了,但它完全无法通信了将近一分钟)。我在终端窗口中使用 htop 检查,4 个核心中的任何一个在 10 秒内负载都不超过 5%,内存使用量远低于 1GB。在同一个终端中,df 命令需要 40 多秒才能完成,有时命令行也会停滞 5 或 10 秒。
这看起来像是某个地方出现了严重的 I/O 瓶颈,情况非常糟糕……所以我重试了同样的场景,并让 rsync 进程处于空闲的 ionice 模式,并对其进行了 renice 以使其尽可能好。这在一定程度上有所帮助,但 PC 仍然远远不能使用。
我已经在 Windows 7/64 下使用完全相同的硬件做过并且仍在做同样或非常相似的工作,虽然系统显然不如零负载下那么活泼,但它仍然绝对可用。
我确实希望有更好的方法将 $BIG_DATA 复制到 USB 记忆棒...因为我最好实际启动到 Windows,在那里进行复制,然后重新启动到 Debian。
有人对如何使事情变得更流畅有什么好主意吗?(我不太在意复制是否需要多花几分钟,只要它在后台运行,而我可以在前台或多或少地正常工作。)
答案1
Rsync 将磁盘推至最大速度,您不应期望其他任何东西都能响应。加载程序将与驱动器争夺访问权限,甚至交换也会很慢。
解决方案可能是:
- 使用
--drop-cache
rsync 中的选项(并非所有版本都可用) - 使用无缓存,已在某些发行版中作为软件包提供
- 大页面在 Linux 中可能仍然是一个问题,但可以通过运行
watch -n 5 sync
或更高级的 彻底的解决方案 不适合新手 - 如果你有大量的小文件,使用
noatime
in安装文件系统可以减少时间戳写入/etc/fstab
其他一些也需要良好的知识、理解(和支持)的方法包括:
# hopefully better multitasking I/O performance echo 20 > /proc/sys/vm/dirty_ratio # Try to keep at least 100MB of free RAM at all times echo 100000 > /proc/sys/vm/min_free_kbytes # Default 100 - try more aggressively to reclaim inodes, etc from cache echo 160 > /proc/sys/vm/vfs_cache_pressure