EXT4文件系统dioread_nolock + nodelalloc 挂载选项异步写性能问题
目前在Ext4文件系统中,如果使用了 dioread_nolock + nodelalloc 挂载选项,则执行缓存IO写操作,性能极差。
发现问题是在 kernel-4.19 环境,实际不同内核可能都存在这个问题,目前社区还没有确定最终解决方案。
临时解决方法,去除 nodelalloc 挂载参数(默认实际上就是 delalloc ),通过以下命令可以直接在线修改存储挂载参数:
sudo mount -o remount,delalloc <device> <mnt_point>原因:
dioread_nolock + nodelalloc挂载选项组合下,Buffer IO写分配的是unwritten extents,这些unwritten extents大小全部是 4KB,不会进行合并,从而导致回写时每次从dirty pages中查找到的2048个脏页,但每次只能写一个 4K 的extent,效率很低。
参考
Last updated
Was this helpful?