昨天我将一个 8 GB 的文件复制到一个 USB,写入速度很慢,7 MB/s,而我的 RAM 是 3 GB。在复制系统时,我什至无法移动光标。
我设法登录到文本控制台,然后运行iotop
,它显示一个名为的进程kswapd0
占用了 99.99% 的 IO。
是否有解决方法,因此复制大文件不会使我的系统无法使用?
Phi*_*oud 38
根据此错误报告,我解决了添加以下行
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
Run Code Online (Sandbox Code Playgroud)
进入/etc/sysctl.conf
和跑步
sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)
Mah*_*rai 25
我遇到了类似的问题。我的是 64 位 Ubuntu 14.04。所以经过长时间的斗争,我找到了一个解决我问题的答案。为了便于使用,我添加了上面提到的答案中使用的以下命令。检查答案以获取详细说明。
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)
使用上述命令后,系统开始正常复制文件。
感谢@Rmano。
复制到闪存驱动器时,我遇到了类似的系统冻结问题。我提交了一个关于它的错误报告:https : //bugs.launchpad.net/ubuntu/+source/linux/+bug/1267648
作为解决方法,我发现禁用交换可以完全消除问题。
我刚刚在 ubuntu 19.10 上遇到了完全相同的问题(2019 年),同时将大量文件从 USB 磁盘复制到 SATA 磁盘。两个文件系统都是 ext4。当我关闭交换时,问题就消失了。它看起来像是磁盘缓冲区内存分配中的一些错误 - 显然,在这种情况下,内核试图为磁盘缓冲区分配尽可能多的内存,这是没有意义的(在交换中制作磁盘缓冲区......),或者它只是错误地计算了可用于缓存的内存大小......
正如有人指出的那样,将 swappiness 设置为 1 并不能解决问题,这是合乎逻辑的,如果您复制的文件的总大小大于 RAM 大小...
顺便说一句 - 谁能解释一下,为什么不建议关闭交换?如果我有 32GB 的 RAM,那么再添加 4GB 的交换空间有什么区别?我只能想到一些实际期望交换存在的晦涩应用程序。但是我会停止使用这样的应用程序,因为正确编写的应用程序不应该关心交换。交换应该只在操作系统级别进行管理......
归档时间: |
|
查看次数: |
56914 次 |
最近记录: |