linux下读取进程内存后出现的内存使用增加

新手上路,请多包涵

在linux下基于process_vm_readv写了一个扫描进程各个段内存的demo,demo中限定了只扫描已存在于物理内存中的页(/proc/$pid/pagemappage present flag为1),执行后发现/proc/$pid/smaps_rollup中展示的进程内存发生了比较明显的变化,特别是Private_DirtyAnonymous
按理说只是读内存的话不应该出现private_dirty大量增加,想请教下各位师傅们是什么原因Orz。

下面是扫描前后两个日志文件的内容对比,被扫描程序是自己起的一个tail -f /dev/null,但经测试,其它被扫描进程也会稳定复现相同的内存变化:

root@xdw:~# diff -Nur /tmp/before.log /tmp/after.log
--- /tmp/before.log    2022-02-28 21:12:56.561946045 +0800
+++ /tmp/after.log    2022-02-28 21:13:15.970092817 +0800
@@ -1,15 +1,15 @@
 55e03941e000-7ffe63dad000 ---p 00000000 00:00 0                          [rollup]
 Rss:                2188 kB
-Pss:                 205 kB
-Pss_Anon:            108 kB
-Pss_File:             97 kB
+Pss:                2188 kB
+Pss_Anon:           2188 kB
+Pss_File:              0 kB
 Pss_Shmem:             0 kB
-Shared_Clean:       2012 kB
+Shared_Clean:          0 kB
 Shared_Dirty:          0 kB
-Private_Clean:        68 kB
-Private_Dirty:       108 kB
+Private_Clean:         0 kB
+Private_Dirty:      2188 kB
 Referenced:         2188 kB
-Anonymous:           108 kB
+Anonymous:          2188 kB
 LazyFree:              0 kB
 AnonHugePages:         0 kB
 ShmemPmdMapped:        0 kB
阅读 1.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题