ext4 commit = mount选项和dirty_writeback_centisecs

时间:2015-09-04 08:27:30

标签: performance io linux-kernel disk ext4

我想了解字节从write()到phisical disk plate的方式,以调整我的图片服务器性能。

我不明白这两者之间有什么区别: commit = mount选项和 dirty_writeback_centisecs 。看起来它们与更改存储设备的过程相同,但仍然不同。

我不清楚哪一个在通往磁盘的路上首先触发我的字节。

2 个答案:

答案 0 :(得分:1)

是的,我刚刚在ARM Chromebook上遇到了SDCard Ubuntu安装的调查安装选项。这是我能告诉你的...... 以下是查看脏和回写金额的方法:

user@chrubuntu:~$ cat /proc/meminfo | grep "Dirty" -A1
Dirty:             14232 kB
Writeback:          4608 kB

(编辑:这个脏和回写相当高,我运行时运行了编译。)

因此要写出的数据很脏。仍然可以消除脏数据(如果在写回之前创建,使用和删除临时文件,则永远不必写出来)。当脏数据被转移到回写时,内核会尝试将较小的脏请求组合成单个较大的I / O请求,这就是为什么dirty_expire_centisecs通常设置得太低的一个原因。当a)足够的数据被缓存以达到vm.dirty_background_ratio时,通常会将脏数据写入回写。 b)当数据变为vm.dirty_writeback_centisecs厘秒(3000默认为30秒)时,它将被置于回写中。 vm.dirty_writeback_centisecs,默认情况下每500厘秒(5秒)运行一个回写守护进程,以实际清除回写中的任何内容。

fsync将刷新一个单独的文件(强制它从脏到写回并等待它被刷回写回),并且sync会对所有内容执行此操作。据我所知,它尽快做到这一点,绕过任何尝试平衡磁盘读写的尝试,它会使设备停止100%写入,直到同步完成。

commit = 5默认的ext4 mount选项实际上会在该文件系统上每隔5秒强制执行一次sync()。这是为了确保如果读取活动繁重,写入不会被过度延迟(如果断电或者其他什么,理想情况下最多会丢失5秒的数据。)我在SDCard(在Chromebook中)安装Ubuntu时发现的是这实际上只是导致大量的文件系统停顿,如果你写了很多卡,ChromeOS使用commit = 600,我应用Ubuntu方面效果很好。

答案 1 :(得分:0)

dirty_writeback_centisecs,配置与虚拟内存相关的内核Linux守护进程(这就是vm的原因)。其中负责从RAM内存写回所有存储设备,因此如果配置dirty_writeback_centisecs并且系统上安装了25个不同的存储设备,则所有25个存储设备的写回时间相同。存储系统。 虽然每个存储设备(实际上是每个文件系统)完成提交,但它与同步进程相关,而不是与虚拟内存中的守护进程相关。 所以你可以看作:

dirty_writeback_centisecs 从RAM写入所有文件系统

提交 每个文件系统从RAM中获取