51学通信论坛2017新版

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2653|回复: 0
打印 上一主题 下一主题

ps_mem:一个用于精确报告 Linux 核心内存用量的简单 Python 脚本

[复制链接]

 成长值: 15613

  • TA的每日心情
    开心
    2022-7-17 17:50
  • 2444

    主题

    2544

    帖子

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    74104
    跳转到指定楼层
    楼主
    发表于 2017-11-15 15:22:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


    ps_mem 是一个可以帮助我们精确获取 Linux 中各个程序核心内存使用情况的简单 python 脚本。这个工具和其它的区别在于其精确显示核心内存使用情况。 -- 2daygeek
    本文导航

      -通过包管理器安装 ps_mem …… 21%
      -通过 pip 安装 ps_mem …… 33%
      -直接运行 ps_mem.py 脚本 …… 50%
      -ps_mem 使用方法 …… 55%
    编译自: http://www.2daygeek.com/ps_mem-report-core-memory-usage-accurately-in-linux/
    作者: 2daygeek
    译者: xllc

    ps_mem[1] 是一个可以帮助我们精确获取 Linux 中各个程序核心内存使用情况的简单 python 脚本。虽然在 Linux 上有很多可用于查看内存使用情况的工具,比如 free、vmstat、smem、top 等,但这个工具和其它的区别在于其精确显示核心内存使用情况。
    它会分别计算一个程序私有内存总量和共享内存总量,并以更准确的方式给出了总的内存使用量。很明显的,它将帮助大家知道系统中哪个程序正在占用更多的内存。
    你可以通过包管理器、pip 、或直接运行 ps_mem.py 脚本等多种方式来安装 ps_mem 工具。需要注意的是:需要有 root 权限。
    另外,推荐阅读以下内存工具:

      free – 一个在 Linux 上查看内存用量统计(可用和已用)的标准工具[2]
      smem – Linux 内存报告/统计工具[3]
      vmstat – 一个好用的用于虚拟内存统计的标准工具[4]

    通过包管理器安装 ps_mem

    基于 RHEL 的系统默认仓库就包含 ps_mem 工具,所以我们可以简单地通过包管理器进行安装。
    对于 RHEL/CentOS ,使用 yum 包管理器[5] 安装 ps_mem 包:
    $ sudo yum install ps_mem

    对于Fedora ,使用 dnf 包管理器[6] 安装 ps_mem 包:
    $ sudo dnf install ps_mem

    对于 Arch Linux ,使用 pacman 包管理器[7] 安装 ps_mem 包:
    $ sudo pacman -S ps_mem

    通过 pip 安装 ps_mem

    pip 是在 Linux 上推荐使用的一种安装 Python 包的工具。可以使用 pip 命令而不是包管理器去获取最新的版本。使用 pip 包前,请确保你的系统上已安装过 pip 包。否则,先使用发行版本的包管理器安装 python-pip 包。
    对于基于 Debian 的系统:
    $ sudo apt-get install python-pip

    对于基于 RHEL/CentOS 的系统:
    $ sudo yum install python-pip

    对于 Fedora
    $ sudo dnf install python-pip

    对于 openSUSE
    $ sudo zypper install python-pip

    对于基于 Arch Linux 的系统:
    $ sudo pacman -S python-pip

    最后,在 Linux 上运行 pip 工具安装 ps_mem :
    $ sudo pip install ps_mem

    直接运行 ps_mem.py 脚本

    我们也可以从开发者 github 页面下载文件,并直接运行 ps_mem.py 脚本。
    $ git clone https://github.com/pixelb/ps_mem.git && cd ps_mem
    $ sudo python ps_mem.py

    ps_mem 使用方法

    不带任何参数直接运行 ps_mem 以精确获取每个程序的的核心内存使用情况。
    $ sudo ps_mem
    Private + Shared = RAM used Program
    1.6 MiB + 438.5 KiB = 2.1 MiB packagekitd
    1.7 MiB + 498.0 KiB = 2.1 MiB indicator-application-service
    912.0 KiB + 1.3 MiB = 2.2 MiB window-stack-bridge
    2.0 MiB + 350.5 KiB = 2.3 MiB gnome-keyring-daemon
    1.8 MiB + 575.0 KiB = 2.3 MiB whoopsie
    2.4 MiB + 304.5 KiB = 2.7 MiB systemd-journald
    2.7 MiB + 157.5 KiB = 2.8 MiB ibus-engine-simple
    2.7 MiB + 182.0 KiB = 2.9 MiB ibus-dconf
    2.7 MiB + 332.5 KiB = 3.0 MiB NetworkManager
    3.1 MiB + 169.5 KiB = 3.2 MiB polkitd
    1.9 MiB + 1.7 MiB = 3.6 MiB systemd (2)
    3.4 MiB + 172.5 KiB = 3.6 MiB deja-dup-monitor
    2.9 MiB + 685.0 KiB = 3.6 MiB zeitgeist-datahub
    2.9 MiB + 848.0 KiB = 3.7 MiB python2.7
    . . . . . .
    222.1 MiB + 9.4 MiB = 231.5 MiB compiz
    286.2 MiB + 11.8 MiB = 298.0 MiB firefox
    ---------------------------------
    1.3 GiB
    =================================

    输出中打印出全路径:
    $ sudo ps_mem -s
    Private + Shared = RAM used Program
    3.2 MiB + 951.0 KiB = 4.1 MiB /usr/lib/evolution/evolution-addressbook-factory
    3.7 MiB + 826.5 KiB = 4.5 MiB /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
    3.7 MiB + 853.0 KiB = 4.6 MiB /usr/lib/unity-settings-daemon/unity-fallback-mount-helper
    . . . . . .
    131.9 MiB + 168.0 KiB = 132.1 MiB /usr/sbin/mysqld
    222.1 MiB + 9.4 MiB = 231.5 MiB /usr/bin/compiz
    286.2 MiB + 11.8 MiB = 298.1 MiB /usr/lib/firefox/firefox
    ---------------------------------
    1.3 GiB
    =================================

    只显示特定的 PID 列表的内存使用情况:
    $ sudo ps_mem -p 2886,4386
    Private + Shared = RAM used Program
    13.5 MiB + 2.9 MiB = 16.4 MiB gnome-terminal-server
    286.2 MiB + 11.8 MiB = 298.0 MiB firefox
    ---------------------------------
    314.4 MiB
    =================================

    每 N 秒打印进程内存。以下命令每 2 秒报告一次内存使用情况:
    $ sudo ps_mem w 2

    只显示内存总量:
    $ sudo ps_mem -t
    1329884160

    via: http://www.2daygeek.com/ps_mem-report-core-memory-usage-accurately-in-linux/
    作者:2DAYGEEK[8] 译者:xllc 校对:wxy
    本文由 LCTT 原创编译,Linux中国 荣誉推出

      [1]: ps_mem - https://github.com/pixelb/ps_mem
      [2]: free – 一个在 Linux 上查看内存用量统计(可用和已用)的标准工具 - http://www.2daygeek.com/free-command-to-check-memory-usage-statistics-in-linux/
      [3]: smem – Linux 内存报告/统计工具 - http://www.2daygeek.com/smem-linux-memory-usage-statistics-reporting-tool/
      [4]: vmstat – 一个好用的用于虚拟内存统计的标准工具 - http://www.2daygeek.com/linux-vmstat-command-examples-tool-report-virtual-memory-statistics/
      [5]: yum 包管理器 - http://www.2daygeek.com/yum-command-examples/
      [6]: dnf 包管理器 - http://www.2daygeek.com/dnf-command-examples/
      [7]: pacman 包管理器 - http://www.2daygeek.com/pacman-command-examples/
      [8]: 2DAYGEEK - http://www.2daygeek.com/author/2daygeek/


    声明:本文转载自网络。版权归原作者所有,如有侵权请联系删除。
    扫描并关注51学通信微信公众号,获取更多精彩通信课程分享。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|51学通信技术论坛

    GMT+8, 2025-1-31 16:05 , Processed in 0.081047 second(s), 32 queries .

    Powered by Discuz! X3

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表