不平衡页面缓存有利于写入活动

不平衡页面缓存有利于写入活动

我使用的是 SMR(叠瓦式磁记录)磁盘。众所周知,该技术在非顺序写入操作上表现不佳。

顺序写入操作的速度相当快:

fio --name TEST --eta-newline=5s --filename=temp.file --rw=write --size=2g --io_size=10g --blocksize=1024k --ioengine^Cibaio --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting
...
WRITE: bw=121MiB/s (127MB/s), 121MiB/s-121MiB/s (127MB/s-127MB/s), io=7276MiB (7629MB), run=60217-60217msec

非顺序写入操作很慢:

fio --name TEST --eta-newline=5s --filename=temp.file --rw=randwrite --size=2g --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1 --direct=1 --numjobs=32 --runtime=60 --group_reporting
...
WRITE: bw=510KiB/s (522kB/s), 510KiB/s-510KiB/s (522kB/s-522kB/s), io=30.1MiB (31.6MB), run=60427-60427msec

比率为237。

我在用着:

echo 30 > /proc/sys/vm/vfs_cache_pressure
echo 100 > /proc/sys/vm/dirty_ratio
echo 100 > /proc/sys/vm/dirty_background_ratio
echo 360000 > /proc/sys/vm/dirty_writeback_centisecs
echo 360000 > /proc/sys/vm/dirty_expire_centisecs
mount -o noatime,nodiratime

在剧烈rsync活动中我观察到:

  1. 阅读collectl质量好,写作质量差;
  2. dirty field/proc/meminfo不超过3G,buff/cache约12G。

我想不平衡页面缓存以支持写入操作,并防止读取操作从缓存中刷新写入的页面。我希望rsync通过写入序列的缓存分组来看到执行方面的改进。

有什么办法可以做到这样的不平衡吗?我知道这不是很好的调整,只是为了测试。

相关内容