我正在尝试在Linux x86的小二进制文件中追踪不需要的脏页面。整个二进制文件小于4k页(没有使用glibc编译)。在我的笔记本电脑上运行2.6.32内核时,
.text
在/proc/$pid/smaps
中显示为Private_Clean: 4
和Private_Dirty: 0
,与预期相符。但是,在我的服务器上运行2.6.36时,.text
是Private_Dirty: 4
。有什么想法是什么原因造成这种情况?据我所知,没有启用任何地址布局随机化或类似功能(我已禁用所有相关设置)。有什么想法是什么导致程序的.text
变脏?$ strace ~/em2
execve("/home/R/em2", ["/home/R/em2"], [/* 28 vars */]) = 0
nanosleep({100000, 0}, ^C <unfinished ...>
现在 smaps
显示 .text
为 Private_Clean: 4
。这很奇怪,因为我实际上有两个不同的二进制文件,在不同的机器上编译,当它们在我的服务器上运行时都显示脏页,现在它们都是干净的了。对不起浪费大家的时间。如果问题不再出现,我会关闭/删除这个问题或采取适当的措施,因为我无法再现它。
smaps
的摘录(显示您程序文件名的所有条目 - 通常至少有三个)添加到您的帖子中。 - user562374ldd {yourapp}
和strace {yourapp} 2>&1|grep "^mmap\|mprotect"
的输出结果。 - Raphael Bossek