PostgreSQL 内存消耗从LINUX 系统层次看
PostgreSQL 查看内存使用的方法比较多, 大部分都是进入到POSTGRESQL 中进行查看的,今天从PostgreSQL 外部来查看内存的使用方式和方法.
本次主要使用的命令就是ps命令
通过ps 命令中的附带参数, 对当前的PG运行的线程进行一个展示,其中每个线程使用的CPU的Memory 的比率也会清晰的展示在屏幕中.
ps -u postgres o pid,rss:8,cmd | awk 'NR>1 {A+=$2} {print} END{print "Total RSS: " A}'
通过PS 和AWK 的组合,可以对当前POSTGRESQL 的当前得到的与postgresql有关的进程使用的内存数,以及总体使用的内存数据量.
首先我们要确认RSS 到底是什么
RSS是当前映射到进程中的页面总数。他分为两部分, 第一部分是Shared_Clean + Shared_Dirty中RSS的共享部分,Private_Clean + Private_Dirty是RSS中对这个进程的独享。
在LINUX 中proc目录中有所有相关的进程的信息, PSS 通过下面的预计获得,所以RSS - PSS 等于的就是进程独享的内存
ps -u postgres o pid= | sed 's#.*#/proc/&/smaps#'|sed s/[[:space:]]//g | xargs sudo grep ^Pss: | awk '{A+=$2} END{print A}'
实际上在知道进程号,在配合上面的语句稍加改造,就可以获得,你想知道的线程的使用的PSS 是的多少, 通过下图两个值的比较, 就可以知道 postgres 主进程中 16848 - 10737 就是这个进程与其他进程共享的内存是多少.
当然有没有更简单的方式来获取这些信息, 目前直接可以通过命令来显示RSS PSS USS 信息的 smem工具可以满足相关的需求,另外还可以显示那些进程已经开始使用了 SWAP
所以当有人问,POSTGRESQL 到底使用了多少内存,并且在这之后,你可以告诉他共享内存使用了多少, 进程独占使用了多少, 有那些进程已经开始使用了SWAP, 这对解决某些关于内存方面的问题,是有帮助的,尤其对于某些访问的进程的内存使用的分析.
VSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS- Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PSS- Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS- Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
本文分享自微信公众号 - AustinDatabases(AustinDatabases)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
- 如何在无响应的 Linux 系统中杀掉内存消耗最大的进程
- 如何在无响应的 Linux 系统中杀掉内存消耗最大的进程
- 如何在无响应的 Linux 系统中杀掉内存消耗最大的进程 | Linux 中国
- linux系统内存大小和起始地址的解析与修改
- 如何在 Linux 中找出内存消耗最大的进程
- linux 如何查看硬盘大小,内存大小等系统信息及硬件信息
- linux查看文件系统块大小与内存页大小的简单方法
- 记一次Linux系统内存占用较高得排查
- Shell脚本监控Linux系统内存使用率
- linux_ linux下查看最消耗CPU、内存的进程 20
- Linux系统下查看cpu、内存、进程、硬盘、网卡
- 获取linux系统的cup信息,内存信息c代码
- [linux内存]伙伴系统学习笔记(三)--分配器API
- [linux]服务器Cache占用过多内存导致系统内存不足问题的排查解决
- Cache占用过多内存导致Linux系统内存不足问题排查
- Cache占用过多内存导致Linux系统内存不足问题排查
- 更改linux系统共享内存最大值
- linux内存文件系统
- 利用shell脚本来监控linux系统的内存
- [linux内存]系统启动过程中的内存管理