dd 的 /proc/meminfo 中存在脏信息

Ram*_*esh 3 memory io proc

我从这里读到以下命令为我提供了需要写入磁盘的数据量。

\n\n
grep ^Dirty /proc/meminfo\n
Run Code Online (Sandbox Code Playgroud)\n\n

它特别提到,曾经问自己“如果我按下重置按钮,会丢失多少数据?”

\n\n

我想测试上面的命令,所以我做了以下操作。

\n\n
dd if=/dev/urandom of=sample.txt bs=1G count=1\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在,在另一个 shell 中我运行了上述命令。

\n\n
grep ^Dirty /proc/meminfo\nDirty:                44 kB\ngrep ^Dirty /proc/meminfo\nDirty:                36 kB\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,如果我使用它的报告进行文件复制cp

\n\n
grep Dirty /proc/meminfo\nDirty:            387680 kB\ngrep Dirty /proc/meminfo\nDirty:            609172 kB\n
Run Code Online (Sandbox Code Playgroud)\n\n

我从这个页面看到Dirty 做了什么。

\n\n
\n

脏 \xe2\x80\x94 等待写回磁盘的内存总量(以千字节为单位)。

\n
\n\n

为什么Dirty不报告任何尺寸dd

\n

sla*_*ere 5

尝试使用此命令代替:

dd if=/dev/urandom of=sample.txt bs=1M count=1024
Run Code Online (Sandbox Code Playgroud)

dd只有当它获得内存中的所有大小时,才会将要写入磁盘的数据写入分配bs

以下是将输出写入磁盘之前psfor a of 128mb的输出:dd

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND    
root      4465  100 12.8 236260 129784 pts/1   R+   17:15   0:13 dd if=/dev/urandom of=sample.txt bs=128M count=1
Run Code Online (Sandbox Code Playgroud)

您可以看到该进程正在使用大约 130mb 的内存(RSS 专栏)