缓冲区/缓存使用的变化

缓冲区/缓存使用的变化

我试图查看读取操作期间使用的缓冲区/缓存的变化。

free -m
truncate -s 10M /home/andy/Downloads/10_Mb_File.txt
cat 10_Mb_File.txt  > /dev/null; free -m

#andy@7 ~/Downloads> Create_10_Mb_File.sh
#total used free shared buff/cache available
#Mem: 6894 1414 2529 24 2951 5162
#Swap: 0 0 0
#total used free shared buff/cache available
#Mem: 6894 1414 2518 24 2961 5161
#Swap: 0 0 0

为什么在 10 Mb 读取过程中会有这么小的变化?

这确实创建了一个包含实际字符的文件。但缓冲区/缓存的使用没有变化。

 </dev/urandom tr -dc A-Za-z0-9 | head -c1000000 > /home/andy/Downloads/random.txt 
cat /home/andy/Downloads/random.txt > /dev/null; free -m 

答案1

因为你的操作系统知道你正在读取 0 个字节,它不需要缓冲。

甚至阅读,因为它们从未被写下来。在您的通话过程中,物理上发生的所有事情truncate是,文件系统现在包含一条注释“这里有 10 MB 的零。”。这就是稀疏文件的魔力!

相关内容