我正在尝试设置 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 在刷新?我原本以为文件会保留在脏页中,因为它比可用空间小(这个测试系统没有做任何其他事情)。
有什么想法吗?谢谢。