美文网首页
统计zabbix_server及其子进程实际使用总内存

统计zabbix_server及其子进程实际使用总内存

作者: 不羁鱼 | 来源:发表于2019-04-02 15:15 被阅读0次

统计zabbix_server及其子进程实际使用总内存


背景

扩容当前zabbix监控服务器,需要事先统计zabbix_server进程使用总内存。

解决方案

for pid in `ps -C zabbix_server -o pid --no-heading`; do grep Pss /proc/$pid/smaps;done|awk '{sum+=$2};END{print sum/1024/1024"G"}'
  1. 用ps命令统计所有zabbix_server进程的rss值进行累加得出占用总内存,此种方法不对,会导致结果偏大。如下图,我本机总内存20G,但使用该方法算出来有24G。
  2. 正确方法是累计/proc/$zabbixpid/smaps中的Pss值。


    zabbix进程总内存统计.png

解释(引用大牛原文)

很多人通过累加 “ps aux” 命令显示的 RSS 列来统计全部进程总共占用的物理内存大小,这是不对的。RSS(resident set size)表示常驻内存的大小,但是由于不同的进程之间会共享内存,所以把所有进程RSS进行累加的方法会重复计算共享内存,得到的结果是偏大的。

正确的方法是累加 /proc/[1-9]*/smaps 中的 Pss 。/proc/<pid>/smaps 包含了进程的每一个内存映射的统计值,详见proc(5)的手册页。Pss(Proportional Set Size)把共享内存的Rss进行了平均分摊,比如某一块100MB的内存被10个进程共享,那么每个进程就摊到10MB。这样,累加Pss就不会导致共享内存被重复计算了。

参考: 怎样统计所有进程总共占用多少内存?

相关文章

  • 统计zabbix_server及其子进程实际使用总内存

    统计zabbix_server及其子进程实际使用总内存 背景 扩容当前zabbix监控服务器,需要事先统计zabb...

  • Android adb: 内存使用情况

    内存,主要是统计pss值(实际使用的物理内存(比例分配共享库占用的内存) adb命令: 完整的脚本如下:

  • [mydocker]---Linux Cgroup

    前言 Linux Cgroups提供了对一组进程及将来子进程的资源限制、控制和统计的能力,这些资源包括CPU、内存...

  • zabbix原理

    zabbi程序组件: zabbix_server:服务进程 zabbix_agent:agent客户端进程 zab...

  • fork 进程测试 copy-on-write

    父进程 fork 子进程后,子进程通过 copy-on-write 模式获得父进程内存,也就是子进程共用了大部分父...

  • swoole--Task&&Timer

    一。进程: 1.子进程会复制父进程的内存空间和上下文环境2.修改某个子进程的内存空间,不会修改父进程或其他子进程中...

  • 系统性能分析与诊断工具

    一、CPU占用最高的10个进程 二、内存占用最高的10个进程 三、虚拟内存使用最多的前10个进程 四、统计当前连接...

  • iOS开发:深入理解GCD(一)

    本文参考《iOS与OS X多线程和内存管理》以及其他博客。进程: 进程是资源(CPU、内存等)分配的基本单位,它是...

  • Flink基础概念理解

    1、背景 降本增效大背景下,统计分析实时任务资源使用情况,核心关注任务配置的CPU、内存、 实际使用的CPU、内存...

  • Linux Shell脚本经典案例(二)

    11.统计 /proc 目类下 Linux 进程相关数量信息,输出总进程数,running 进程数,stoped ...

网友评论

      本文标题:统计zabbix_server及其子进程实际使用总内存

      本文链接:https://www.haomeiwen.com/subject/yslgbqtx.html