假设我想将一个大文件(或一堆文件)放入 TMPFS,无论出于何种原因。使用和标志dd
的各种组合,无论是从磁盘复制文件还是通过读取 创建一个空白文件,写入的数据仍会被塞入文件系统缓存中。这显然有点多余,因为文件已经在内存中的文件系统中,因此缓存它是没有意义的,对吧?也就是说,我的内存使用量会增加大约文件大小,这是预期的,但缓存使用量也会增加相同的量。direct
nocache
/dev/zero
我使用的命令几乎是以下命令的变体(/tmp
作为 TMPFS 安装)。
# Testing copying a file from disk to a TMPFS.
dd bs=4M iflag=fullblock,nocache oflag=nocache if=foo of=/tmp/foo
# Testing spawning a file from /dev/zero to a TMPFS.
dd bs=4M iflag=fullblock,nocache oflag=nocache if=/dev/zero of=/tmp/bar
# (also tried vith "direct", and combinations thereof)
由于某种原因,尝试vmtouch -e
从缓存中清除文件也不起作用。当然,我有“足够”的 RAM,所以这种“双倍”的内存使用量不会造成太大问题,但它确实让我有点烦恼。如果我在磁盘上执行相同的操作,似乎不会出现此问题ext4
。