3

我在托管服务器中使用 php 创建一个站点,所以我没有 root 权限。我必须获得由 GCC 编译的进程的最大内存使用量。我搜索了所有可能的解决方案:

top, vmstat, ps, proc/$pid$/status, valgrind- 没有权限

pmap- 它什么也没做

如何在没有root权限的情况下获取进程的内存使用情况?请给我一些想法。谢谢。:)

4

1 回答 1

1

我不确定您到底在寻找什么——您想知道进程当前正在使用的内存量吗?如果是这样,请查看/proc/<pid>/status并检查 VmRSS 行。这就是您想要的数字(在这种情况下,如果您好奇的话,RSS 的意思是“驻留集大小”)。该行应该可以用 PHP 等高级语言进行解析。但是,对于像 C 这样的低级语言,应该更容易解析/proc/<pid>/stat具有相同值但每个值由空格分隔且没有标签的值。

如果您没有读取该文件的权限,这意味着服务器进程在与您登录的用户不同的用户下运行。您将需要与托管服务提供商合作来解决这个问题,或者弄清楚如何让服务器进程查询它自己的进程(PHP 脚本?)。

这是否回答你的问题?或者您是否有兴趣了解“最大内存使用量”,例如“进程在被内核杀死之前可能使用的最大内存量”?对于 Linux,这实际上是一个敏感的哲学问题。由于没有硬性限制,您将找不到任何关于此类最大值的可靠信息。阅读“Linux 内存过度使用”以获取更多详细信息。

于 2013-06-07T07:16:59.203 回答