今天,我正在学习linux文件系统。我了解了
.dirty
内核参数。当我想测试dirty_writeback_centisecs
参数时,发现dirty_writeback_centisecs
没有任何作用。
我将
dirty_writeback_centisecs
内核参数设置为值 5000。
理论上来说,内存中的脏数据可能会被flush到磁盘上。但我用Python打开一个文件
hello
,然后用文件句柄将“hello world”写入内存。我等了 500 秒,文件hello
还是空的。
测试前,文件
hello
为空:
linux-4gcq:/tmp # cat hello
linux-4gcq:/tmp #
使用python写入文件:
f = open('/tmp/hello','w')
f.write('hello world')
等了很久,文件还是空的。
Python 使用
f.write
缓冲输出。您需要使用f.flush
。
与内核参数无关。无论这些内核参数如何,您都会看到文件内容,它们仅在某些内容到达媒体时产生影响,而不会在您在文件系统中看到它时产生影响。
根据https://docs.kernel.org/admin-guide/sysctl/vm.html
看起来
dirty_writeback_centisecs
是为了设置脏检查的周期,看看是否有东西需要冲洗。您可能还需要设置 dirty_expire_centisecs
以便清除符合条件的旧数据