c++ - 为什么同一台服务器的两个版本表现不同?

标签 c++ linux memory-management virtual-memory

<分区>

我用 C++ 编写了一个小型 geoip 查找 linux 守护进程,我得到了两个不同的结果,我想知道为什么。

这是源代码:https://github.com/homer6/geoipd 我已经用 valgrind 检查了它是否有内存泄漏,没有任何泄漏。

我有两台网络服务器,它们都在 Amazon EC2 上运行相同的 Ubuntu 镜像,并且都在一个负载均衡器后面,以确保它们各自获得大致相同的流量。我在两台服务器上都安装了守护进程,现在我已经让它们在生产环境中运行了几天。

一切都按预期工作,但两个实例的“ps aux”输出略有不同。

服务器 1:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME
1004     28889  0.0  6.7 640288 517692 ?       Ss   Nov09   0:03

服务器 2:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME
1004     16587  0.0  6.7 574752 517688 ?       Ss   Nov09   0:02

我的问题分为两部分:

  1. 为什么虚拟内存使用有这么大的差异?
  2. 为什么常驻内存使用率有差异?

提前致谢...

更新: 我记得我第一次启动进程时检查了 VM 大小。它们都为 574752(或略低于 575 MB)并且它们具有相同的值。

最佳答案

VSZ大小无意义,可以忽略。它可能是由许多奇怪的事情引起的。 (如果您想尝试追踪它,请比较两台机器上 cat/proc/pid/maps 的输出。

至于为什么RSS有几个字节不同,它太小了我不会担心。这可能只是由于堆栈随机化。

关于c++ - 为什么同一台服务器的两个版本表现不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8108387/

相关文章:

linux - openssl 签名校验失败 : "RSA_padding_check_PKCS1_type_1:block type is not 01"

c++ - 在堆栈上创建 C++ 对象,努力不分配

android - 减少我的应用程序分配的堆

python - 使用 Boost.Python 将 numpy 数组传递给 C++

c++ - OpenGL实例化绘图如何处理顶点输入限制

python - 不小心修改了linux下的python

memory-management - 如何在 Python 中创建空列表的列表或元组?

c++ - 在 C++ 中递归使用数组

c++ - 在 Windows 上使用 C++ 删除文件

linux 按日期列分组并显示计数