现实世界Perl:测量工作集大小

欢迎来到现实世界Perl,这是一系列旨在展示Perl在野外应用的新系列。每一篇文章都将突出展示某人用Perl所做的一些有趣或有趣的事情。您有关于现实世界Perl示例的建议吗?给我发邮件

今天的例子来自Brendan Gregg,他的新博客帖子解释了如何在Linux中测量应用程序需要多少内存来保持工作(“工作集大小”)。增加的工作集大小是Linux KPTI修复Meltdown降低应用程序性能的一个原因。

Brendan开发的一个用于测量这个的工具是wss.pl,这是一个Perl脚本,它接受PID和持续时间秒参数来测量该进程的工作集大小。例如,要测量我的浏览器60秒,我输入浏览器PID和60

$ ./wss.pl 3479 60
Watching PID 3479 page references during 60 seconds...
Est(s)     RSS(MB)    PSS(MB)    Ref(MB)
60.068       52.28      14.68       4.59

这表明我的浏览器进程在测试期间引用了4.59 MB的内存。

Brendan解释了脚本的工作原理

我的wss.pl工具通过重置内存页上的“引用”标志,然后稍后检查有多少页的这个标志返回。我想起了旧的Unix页面扫描器,它会使用类似的方法来查找适合交换到交换设备的非近期使用页面。引用标志实际上是页面表条目(PTE)中的“访问”位,处理器通常也会更新,并且可以被内核读取和清除(在Linux中是_PAGE_ACCESSED)。

如果您想了解更多关于工作集大小估计的信息,Brendan在这里讨论了


封面图片来自pixabay

标签

David Farrell

David是一位专业程序员,他经常推文博客关于代码和编程艺术。

浏览他们的文章

反馈

这篇文章有什么问题吗?请在GitHub上打开一个问题或拉取请求来帮助我们。