有害的 U 盘停顿问题。恢复解决方法修复?

bec*_*cko 8 linux usb proc sysctl

Ubuntu 存在一个尚未修复的问题,当它复制到 U 盘时,PC 会死机或变得非常慢(请参阅为什么我的 PC 在我将文件复制到 Pendrive 时会死机?http: //lwn.net/Articles/572911/https://askubuntu.com/q/508108/234374)。

一种解决方法是以 root 身份执行以下命令(请参阅此处的说明)以 root身份执行以下命令:

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)

如何还原这些更改?当我重新启动我的 PC 时,它会回滚到默认值吗?

Gil*_*il' 6

这些是sysctl参数。您可以通过写入或调用带有参数的命令来设置它们。这些设置影响正在运行的内核,它们不是持久的。/proc/sys/CATEGORY/ENTRYsysctlCATEGORY.ENTRY=VALUE

如果您想让这些设置持久化,您需要在启动时设置它们。在 Ubuntu 上,在/etc/sysctl.d名为becko-vm-dirty.confcontains的目录中创建一个文件

# Shrink the disk buffers to a more reasonable size. See http://lwn.net/Articles/572911/
vm.dirty_background_bytes = 16777216
vm.dirty_bytes = 50331648
Run Code Online (Sandbox Code Playgroud)

要恢复更改,请写回旧值。没有“恢复默认值”命令。

请注意,这些参数有点特殊:还有称为vm.dirty_ratioand 的参数vm.dirty_background_ratio,它们控制相同的设置,但将大小表示为总内存的百分比而不是字节数。对于这两个设置中的每一个,以最后设置ratiobytes最后设置的为准。

  • @IwillnotexistIdonotexist AFAIK 这个设置是全局的,因为内核不会为不同块设备上的脏缓冲区维护单独的总数,但我不是 I/O 调整专家。 (3认同)