我在我们的服务器上允许 Postgres 30GB 的 RAM。在运行密集任务时,我认为它正在交换。
据我了解:
- VIRT - 虚拟内存(即:交换到磁盘)
- RES - 完整的内存使用情况
- SHR - 共享内存 - 我不清楚这是什么
见附件
我认为这是在说:
- Postgres 的完整内存使用量约为 60GB,其中 30GB 被交换
- Ruby 的完整内存使用量 ~40GB
如果是这种情况,给 Postgres 再提供 30 或 40GB RAM 似乎是个好主意吗?
参考
http://mugurel.sumanariu.ro/linux/the-difference-among-virt-res-and-shr-in-top-output/
VIRT 列并没有真正显示分配的总内存。相反,它只显示在进程用户空间中映射了多少内存。换句话说,它与交换无关。
作为仔细检查,请查看
swap
如下所示的行top
:它清楚地表明使用的交换为0 KB