尽可能长地写入缓存/延迟

尽可能长地写入缓存/延迟

我正在尝试设置 Linux 以尽可能延迟写入(几分钟)。对于那些想知道为什么的人:这是 Chia 的阴谋。在 SSD/NVMe 中执行写入非常密集,如果系统崩溃,无论如何你都必须从头开始重新启动。

最小化磁盘写入实际上可以增加磁盘的寿命。

也就是说,我设置了一个测试系统(VM Hyper V 中的 20.04.1-Ubuntu LTS - Windows 10)。

我将“脏”标志设置为:

sudo  sysctl -a | grep dirty
vm.dirty_background_bytes = 0
vm.dirty_background_ratio = 75
vm.dirty_bytes = 0
vm.dirty_expire_centisecs = 120000
vm.dirty_ratio = 80
vm.dirty_writeback_centisecs = 180000
vm.dirtytime_expire_seconds = 43200

这给了我大约 3GB 的缓存(我为这台虚拟机使用了 4GB 内存)。

我正在关注这些指示为了测试,改为这样(所以它是随机的并且是 1GB)

 dd if=/dev/random of=testfile.txt bs=1M count=1000

并使用

cat /proc/meminfo | grep Dirty
cat /proc/vmstat | egrep "dirty|writeback"

查看脏页的数量是否随着进程的进展而增加。

脏页数量按预期增加直到dd 完成。当它完成时,脏页数几乎立即变为 0,Windows 开始写入数据(我正在使用资源监视器监视 Windows 端,以查看写入何时真正到达磁盘)。

那么...是因为 Linux 在 dd 关闭文件后立即刷新文件吗?也许是 dd 在刷新?我原本以为文件会保留在脏页中,因为它比可用空间小(这个测试系统没有做任何其他事情)。

有什么想法吗?谢谢。

相关内容