仅在没有读取活动时刷新写入缓存

仅在没有读取活动时刷新写入缓存

通常,如果超出指定时间限制或缓存已满,Linux 内核会刷新写入缓存。这会导致 HDD 停滞,因为写入过程会使读取过程变慢很多。

这就是为什么我希望在只有少量读取活动时避免刷新写入缓存。由于我有 40 GB 的 RAM,所以这应该不是问题。我的想法是将时间限制设置为五分钟,根据需要调整写入缓存大小,并编写一个脚本,仅在读取活动为 0 时刷新缓存。我不知道该怎么做,shell 命令是否能sync提供足够好的性能?

我的目标是拥有一个大小为 1、2 GB 的写入缓存。刷新这个缓存需要很长时间。有什么可以在再次出现读取活动或更高的磁盘 PSI 时停止的吗(这会反应得足够快吗??)

我有两个 Seagate(非 smr?)硬盘:ST1000DM010-2EP102 - 但我想不需要这些信息。

dirty_ratio当前设置了一个动态缓存大小。

echo 360000 > /proc/sys/vm/dirty_expire_centisecs
echo 360000 > /proc/sys/vm/dirty_writeback_centisecs

这会将开始刷新写入缓存的最大时间设置为 1 小时。

参考:https://unix.stackexchange.com/questions/30286/can-i-configure-my-linux-system-for-more-aggressive-file-system-caching

有用的命令:

使用以下命令,您可以查看写入缓存中有多少内容:

cat /proc/meminfo | grep Dirty

输出:

Dirty:               104 kB

但这不是很重要。

我被困在哪儿了?

我希望能够几乎立即取消同步命令(这可能吗),并且我想知道是否有进程正在读取。这就是我编写脚本所需要的全部内容。

我发现了一个能够监控读取活动的旧脚本:awk '{print $1}' /sys/block/sdb/stat

如何使用它?

if [ $old-value -lt $new-value ];then COMMAND;fi

答案1

使用来源: https://askubuntu.com/questions/184204/how-do-i-fetch-only-numbers-in-grep https://www.kernel.org/doc/html/latest/block/stat.html https://askubuntu.com/questions/184204/how-do-i-fetch-only-numbers-in-grep

我编写的脚本:

#!/bin/bash                                                                                                                                                                                                

oldreads=0
killed=True
while (true)
do
    reads=`awk '{print $1}' /sys/block/sdb/stat`
    if [ "$oldreads" == "$reads" ]
    then
        if [ $(grep -o '[[:digit:]]*'<<<$(cat /proc/meminfo | grep Dirty)) -gt 10240 ]
        then
            echo "sync"
            sync&
            syncPid="$!"
            oldreads="$reads"
            killed=False
        else
            echo "There's not more than a 10 MB in the write buffer, not syncing."
        fi
    elif [ $killed == False ]
    then
         echo "kill"
         kill "$syncPid"
         killed=True
    else
        echo "$oldreads => $reads"
        oldreads="$reads"
    fi
    sleep 1
done

相关内容