我在我们的服务器上为 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/
答案1
VIRT 列不是实际显示的是总分配的内存。相反,它只显示在进程用户空间中映射了多少内存。换句话说,它有没有什么与交换有关。
作为复查,请看一下swap
如下所示的行top
:它清楚地表明使用的交换位于0 千字节